add export of folder list

This commit is contained in:
Uwe Steinmann 2025-02-03 15:20:41 +01:00
parent 665deb0595
commit 435c94f585

View File

@ -39,24 +39,48 @@ class SeedDMS_Download_Mgr {
*/
protected $items;
/**
* @var array $folder_items list of folder content items
* @access protected
*/
protected $folder_items;
/**
* @var array $extracols list of arrays with extra columns per item
* @access protected
*/
protected $extracols;
/**
* @var array $folder_extracols list of arrays with extra columns per folder item
* @access protected
*/
protected $folder_extracols;
/**
* @var array $header list of entries in header (first line)
* @access protected
*/
protected $header;
/**
* @var array $folder_header list of entries in header (first line)
* @access protected
*/
protected $folder_header;
/**
* @var array $extraheader list of extra entries in header
* @access protected
*/
protected $extraheader;
/**
* @var array $folder_extraheader list of extra entries in header
* @access protected
*/
protected $folder_extraheader;
/**
* @var array $rawcontents list of content used instead of document content
* @access protected
@ -72,10 +96,14 @@ class SeedDMS_Download_Mgr {
function __construct($tmpdir = '') {
$this->tmpdir = $tmpdir;
$this->items = array();
$this->folder_items = array();
$this->header = array(getMLText('download_header_document_no'), getMLText('download_header_document_name'), getMLText('download_header_filename'), getMLText('download_header_state'), getMLText('download_header_internal_version'), getMLText('download_header_reviewer'), getMLText('download_header_review_date'), getMLText('download_header_review_comment'), getMLText('download_header_review_state'), getMLText('download_header_approver'), getMLText('download_header_approval_date'), getMLText('download_header_approval_comment'), getMLText('download_header_approval_state'));
$this->folder_header = array(getMLText('download_header_folder_no'), getMLText('download_header_folder_name'));
$this->extracols = array();
$this->folder_extracols = array();
$this->rawcontents = array();
$this->extraheader = array();
$this->folder_extraheader = array();
$this->filenames = array();
}
@ -83,6 +111,10 @@ class SeedDMS_Download_Mgr {
$this->extraheader = $extraheader;
} /* }}} */
public function addFolderHeader($extraheader) { /* {{{ */
$this->folder_extraheader = $extraheader;
} /* }}} */
public function addItem($item, $extracols=array(), $rawcontent='', $filename='') { /* {{{ */
$this->items[$item->getID()] = $item;
$this->extracols[$item->getID()] = $extracols;
@ -90,10 +122,15 @@ class SeedDMS_Download_Mgr {
$this->filenames[$item->getID()] = $filename;
} /* }}} */
public function addFolderItem($item, $extracols=array()) { /* {{{ */
$this->folder_items[$item->getID()] = $item;
$this->folder_extracols[$item->getID()] = $extracols;
} /* }}} */
public function createToc($file) { /* {{{ */
$items = $this->items;
$objPHPExcel = new PhpOffice\PhpSpreadsheet\Spreadsheet();
$objPHPExcel->getProperties()->setCreator("SeedDMS")->setTitle("Metadata");
if($items = $this->items) {
$sheet = $objPHPExcel->setActiveSheetIndex(0);
$sheet->setTitle(getMLText('documents'));
@ -190,6 +227,39 @@ class SeedDMS_Download_Mgr {
$i++;
}
}
}
if($items = $this->folder_items) {
if($this->items)
$sheet = $objPHPExcel->createSheet($i);
else
$sheet = $objPHPExcel->setActiveSheetIndex(0);
$sheet->setTitle(getMLText('folders'));
$i = 1;
$col = 1;
foreach($this->folder_header as $h)
$sheet->setCellValueByColumnAndRow($col++, $i, $h);
foreach($this->folder_extraheader as $h)
$sheet->setCellValueByColumnAndRow($col++, $i, $h);
$i++;
$items = $this->folder_items;
foreach($items as $item) {
if($item->isType('folder')) {
$folder = $item;
$dms = $folder->_dms;
$col = 1;
$sheet->setCellValueByColumnAndRow($col++, $i, $folder->getID());
$sheet->setCellValueByColumnAndRow($col++, $i, $folder->getName());
if(isset($this->folder_extracols[$item->getID()]) && $this->folder_extracols[$item->getID()]) {
foreach($this->folder_extracols[$item->getID()] as $column)
$sheet->setCellValueByColumnAndRow($col++, $i, is_array($column) ? implode("\n", $column) : $column );
}
$i++;
}
}
}
$objWriter = new PhpOffice\PhpSpreadsheet\Writer\Xlsx($objPHPExcel);
$objWriter->save($file);