diff options
author | Anton Luka Šijanec <anton@sijanec.eu> | 2024-05-27 13:08:29 +0200 |
---|---|---|
committer | Anton Luka Šijanec <anton@sijanec.eu> | 2024-05-27 13:08:29 +0200 |
commit | 75160b12821f7f4299cce7f0b69c83c1502ae071 (patch) | |
tree | 27e25e4ccaef45f0c58b22831164050d1af1d4db /vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Properties.php | |
parent | prvi-commit (diff) | |
download | 1ka-75160b12821f7f4299cce7f0b69c83c1502ae071.tar 1ka-75160b12821f7f4299cce7f0b69c83c1502ae071.tar.gz 1ka-75160b12821f7f4299cce7f0b69c83c1502ae071.tar.bz2 1ka-75160b12821f7f4299cce7f0b69c83c1502ae071.tar.lz 1ka-75160b12821f7f4299cce7f0b69c83c1502ae071.tar.xz 1ka-75160b12821f7f4299cce7f0b69c83c1502ae071.tar.zst 1ka-75160b12821f7f4299cce7f0b69c83c1502ae071.zip |
Diffstat (limited to '')
-rw-r--r-- | vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Properties.php | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Properties.php b/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Properties.php new file mode 100644 index 0000000..07bd076 --- /dev/null +++ b/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Properties.php @@ -0,0 +1,92 @@ +<?php
+
+namespace PhpOffice\PhpSpreadsheet\Reader\Xlsx;
+
+use PhpOffice\PhpSpreadsheet\Document\Properties as DocumentProperties;
+use PhpOffice\PhpSpreadsheet\Reader\Security\XmlScanner;
+use PhpOffice\PhpSpreadsheet\Settings;
+use SimpleXMLElement;
+
+class Properties
+{
+ private $securityScanner;
+
+ private $docProps;
+
+ public function __construct(XmlScanner $securityScanner, DocumentProperties $docProps)
+ {
+ $this->securityScanner = $securityScanner;
+ $this->docProps = $docProps;
+ }
+
+ private function extractPropertyData($propertyData)
+ {
+ return simplexml_load_string(
+ $this->securityScanner->scan($propertyData),
+ 'SimpleXMLElement',
+ Settings::getLibXmlLoaderOptions()
+ );
+ }
+
+ public function readCoreProperties($propertyData): void
+ {
+ $xmlCore = $this->extractPropertyData($propertyData);
+
+ if (is_object($xmlCore)) {
+ $xmlCore->registerXPathNamespace('dc', 'http://purl.org/dc/elements/1.1/');
+ $xmlCore->registerXPathNamespace('dcterms', 'http://purl.org/dc/terms/');
+ $xmlCore->registerXPathNamespace('cp', 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties');
+
+ $this->docProps->setCreator((string) self::getArrayItem($xmlCore->xpath('dc:creator')));
+ $this->docProps->setLastModifiedBy((string) self::getArrayItem($xmlCore->xpath('cp:lastModifiedBy')));
+ $this->docProps->setCreated(strtotime(self::getArrayItem($xmlCore->xpath('dcterms:created')))); //! respect xsi:type
+ $this->docProps->setModified(strtotime(self::getArrayItem($xmlCore->xpath('dcterms:modified')))); //! respect xsi:type
+ $this->docProps->setTitle((string) self::getArrayItem($xmlCore->xpath('dc:title')));
+ $this->docProps->setDescription((string) self::getArrayItem($xmlCore->xpath('dc:description')));
+ $this->docProps->setSubject((string) self::getArrayItem($xmlCore->xpath('dc:subject')));
+ $this->docProps->setKeywords((string) self::getArrayItem($xmlCore->xpath('cp:keywords')));
+ $this->docProps->setCategory((string) self::getArrayItem($xmlCore->xpath('cp:category')));
+ }
+ }
+
+ public function readExtendedProperties($propertyData): void
+ {
+ $xmlCore = $this->extractPropertyData($propertyData);
+
+ if (is_object($xmlCore)) {
+ if (isset($xmlCore->Company)) {
+ $this->docProps->setCompany((string) $xmlCore->Company);
+ }
+ if (isset($xmlCore->Manager)) {
+ $this->docProps->setManager((string) $xmlCore->Manager);
+ }
+ }
+ }
+
+ public function readCustomProperties($propertyData): void
+ {
+ $xmlCore = $this->extractPropertyData($propertyData);
+
+ if (is_object($xmlCore)) {
+ foreach ($xmlCore as $xmlProperty) {
+ /** @var SimpleXMLElement $xmlProperty */
+ $cellDataOfficeAttributes = $xmlProperty->attributes();
+ if (isset($cellDataOfficeAttributes['name'])) {
+ $propertyName = (string) $cellDataOfficeAttributes['name'];
+ $cellDataOfficeChildren = $xmlProperty->children('http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes');
+
+ $attributeType = $cellDataOfficeChildren->getName();
+ $attributeValue = (string) $cellDataOfficeChildren->{$attributeType};
+ $attributeValue = DocumentProperties::convertProperty($attributeValue, $attributeType);
+ $attributeType = DocumentProperties::convertPropertyType($attributeType);
+ $this->docProps->setCustomProperty($propertyName, $attributeValue, $attributeType);
+ }
+ }
+ }
+ }
+
+ private static function getArrayItem(array $array, $key = 0)
+ {
+ return $array[$key] ?? null;
+ }
+}
|