create excel file with meta data for for files in zip archive

This commit is contained in:
Uwe Steinmann 2015-06-08 09:06:59 +02:00
parent 13a977f84f
commit 94744862a5

View File

@ -13,6 +13,8 @@
* @version Release: @package_version@
*/
require_once("PHPExcel.php");
/**
* Class to represent an download manager
*
@ -58,12 +60,103 @@ class SeedDMS_Download_Mgr {
return false;
}
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setCreator("MMK GmbH, Hagen, Germany")->setTitle("Metadata");
$sheet = $objPHPExcel->setActiveSheetIndex(0);
$i = 1;
$sheet->setCellValueByColumnAndRow(0, $i, 'Dokumenten-Nr.');
$sheet->setCellValueByColumnAndRow(1, $i, 'Dateiname');
$sheet->setCellValueByColumnAndRow(2, $i, 'Status');
$sheet->setCellValueByColumnAndRow(3, $i, 'Int. Version');
$sheet->setCellValueByColumnAndRow(4, $i, 'Prüfer');
$sheet->setCellValueByColumnAndRow(5, $i, 'Prüfdatum');
$sheet->setCellValueByColumnAndRow(6, $i, 'Prüfkommentar');
$sheet->setCellValueByColumnAndRow(7, $i, 'Prüfstatus');
$sheet->setCellValueByColumnAndRow(8, $i, 'Freigeber');
$sheet->setCellValueByColumnAndRow(9, $i, 'Freigabedatum');
$sheet->setCellValueByColumnAndRow(10, $i, 'Freigabekommentar');
$sheet->setCellValueByColumnAndRow(11, $i, 'Freigabestatus');
$i++;
foreach($this->items as $item) {
$document = $item->getDocument();
$dms = $document->_dms;
$status = $item->getStatus();
$reviewStatus = $item->getReviewStatus();
$approvalStatus = $item->getApprovalStatus();
$zip->addFile($dms->contentDir.$item->getPath(), $prefixdir."/".$document->getID()."-".$item->getOriginalFileName());
$sheet->setCellValueByColumnAndRow(0, $i, $document->getID());
$sheet->setCellValueByColumnAndRow(1, $i, $document->getID()."-".$item->getOriginalFileName());
$sheet->setCellValueByColumnAndRow(2, $i, getOverallStatusText($status['status']));
$sheet->setCellValueByColumnAndRow(3, $i, $item->getVersion());
$l = $i;
$k = $i;
if($reviewStatus) {
foreach ($reviewStatus as $r) {
switch ($r["type"]) {
case 0: // Reviewer is an individual.
$required = $dms->getUser($r["required"]);
if (!is_object($required)) {
$reqName = getMLText("unknown_user")." '".$r["required"]."'";
} else {
$reqName = htmlspecialchars($required->getFullName()." (".$required->getLogin().")");
}
break;
case 1: // Reviewer is a group.
$required = $dms->getGroup($r["required"]);
if (!is_object($required)) {
$reqName = getMLText("unknown_group")." '".$r["required"]."'";
} else {
$reqName = htmlspecialchars($required->getName());
}
break;
}
$sheet->setCellValueByColumnAndRow(4, $l, $reqName);
$sheet->setCellValueByColumnAndRow(5, $l, $r['date']);
$sheet->setCellValueByColumnAndRow(6, $l, $r['comment']);
$sheet->setCellValueByColumnAndRow(7, $l, getReviewStatusText($r["status"]));
$l++;
}
$l--;
}
if($approvalStatus) {
foreach ($approvalStatus as $r) {
switch ($r["type"]) {
case 0: // Reviewer is an individual.
$required = $dms->getUser($r["required"]);
if (!is_object($required)) {
$reqName = getMLText("unknown_user")." '".$r["required"]."'";
} else {
$reqName = htmlspecialchars($required->getFullName()." (".$required->getLogin().")");
}
break;
case 1: // Reviewer is a group.
$required = $dms->getGroup($r["required"]);
if (!is_object($required)) {
$reqName = getMLText("unknown_group")." '".$r["required"]."'";
} else {
$reqName = htmlspecialchars($required->getName());
}
break;
}
$sheet->setCellValueByColumnAndRow(8, $k, $reqName);
$sheet->setCellValueByColumnAndRow(9, $k, $r['date']);
$sheet->setCellValueByColumnAndRow(10, $k, $r['comment']);
$sheet->setCellValueByColumnAndRow(11, $k, getReviewStatusText($r["status"]));
$k++;
}
$k--;
}
$i = max($l, $k);
$i++;
}
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$file = tempnam("/tmp", "export-list-");
$objWriter->save($file);
$zip->addFile($file, $prefixdir."/metadata.xls");
$zip->close();
unlink($file);
} /* }}} */
}