From 435c94f585cad0c7073139f6eeceaf82ec408edb Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 3 Feb 2025 15:20:41 +0100 Subject: [PATCH] add export of folder list --- inc/inc.ClassDownloadMgr.php | 72 +++++++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/inc/inc.ClassDownloadMgr.php b/inc/inc.ClassDownloadMgr.php index 97b5020c3..3ca87c849 100644 --- a/inc/inc.ClassDownloadMgr.php +++ b/inc/inc.ClassDownloadMgr.php @@ -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);