%PDF- %PDF-
Direktori : /home/silvzytp/ccd-ind-code/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Gnumeric/ |
Current File : //home/silvzytp/ccd-ind-code/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Gnumeric/Properties.php |
<?php namespace PhpOffice\PhpSpreadsheet\Reader\Gnumeric; use PhpOffice\PhpSpreadsheet\Reader\Gnumeric; use PhpOffice\PhpSpreadsheet\Spreadsheet; use SimpleXMLElement; class Properties { /** * @var Spreadsheet */ protected $spreadsheet; public function __construct(Spreadsheet $spreadsheet) { $this->spreadsheet = $spreadsheet; } private function docPropertiesOld(SimpleXMLElement $gnmXML): void { $docProps = $this->spreadsheet->getProperties(); foreach ($gnmXML->Summary->Item as $summaryItem) { $propertyName = $summaryItem->name; $propertyValue = $summaryItem->{'val-string'}; switch ($propertyName) { case 'title': $docProps->setTitle(trim($propertyValue)); break; case 'comments': $docProps->setDescription(trim($propertyValue)); break; case 'keywords': $docProps->setKeywords(trim($propertyValue)); break; case 'category': $docProps->setCategory(trim($propertyValue)); break; case 'manager': $docProps->setManager(trim($propertyValue)); break; case 'author': $docProps->setCreator(trim($propertyValue)); $docProps->setLastModifiedBy(trim($propertyValue)); break; case 'company': $docProps->setCompany(trim($propertyValue)); break; } } } private function docPropertiesDC(SimpleXMLElement $officePropertyDC): void { $docProps = $this->spreadsheet->getProperties(); foreach ($officePropertyDC as $propertyName => $propertyValue) { $propertyValue = trim((string) $propertyValue); switch ($propertyName) { case 'title': $docProps->setTitle($propertyValue); break; case 'subject': $docProps->setSubject($propertyValue); break; case 'creator': $docProps->setCreator($propertyValue); $docProps->setLastModifiedBy($propertyValue); break; case 'date': $creationDate = $propertyValue; $docProps->setModified($creationDate); break; case 'description': $docProps->setDescription($propertyValue); break; } } } private function docPropertiesMeta(SimpleXMLElement $officePropertyMeta): void { $docProps = $this->spreadsheet->getProperties(); foreach ($officePropertyMeta as $propertyName => $propertyValue) { if ($propertyValue !== null) { $attributes = $propertyValue->attributes(Gnumeric::NAMESPACE_META); $propertyValue = trim((string) $propertyValue); switch ($propertyName) { case 'keyword': $docProps->setKeywords($propertyValue); break; case 'initial-creator': $docProps->setCreator($propertyValue); $docProps->setLastModifiedBy($propertyValue); break; case 'creation-date': $creationDate = $propertyValue; $docProps->setCreated($creationDate); break; case 'user-defined': if ($attributes) { [, $attrName] = explode(':', (string) $attributes['name']); $this->userDefinedProperties($attrName, $propertyValue); } break; } } } } private function userDefinedProperties(string $attrName, string $propertyValue): void { $docProps = $this->spreadsheet->getProperties(); switch ($attrName) { case 'publisher': $docProps->setCompany($propertyValue); break; case 'category': $docProps->setCategory($propertyValue); break; case 'manager': $docProps->setManager($propertyValue); break; } } public function readProperties(SimpleXMLElement $xml, SimpleXMLElement $gnmXML): void { $officeXML = $xml->children(Gnumeric::NAMESPACE_OFFICE); if (!empty($officeXML)) { $officeDocXML = $officeXML->{'document-meta'}; $officeDocMetaXML = $officeDocXML->meta; foreach ($officeDocMetaXML as $officePropertyData) { $officePropertyDC = $officePropertyData->children(Gnumeric::NAMESPACE_DC); $this->docPropertiesDC($officePropertyDC); $officePropertyMeta = $officePropertyData->children(Gnumeric::NAMESPACE_META); $this->docPropertiesMeta($officePropertyMeta); } } elseif (isset($gnmXML->Summary)) { $this->docPropertiesOld($gnmXML); } } }