PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.7.4
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.7.4
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.10.1 3.10.10 3.10.11 3.10.12 3.10.13 3.10.14 3.10.15 3.10.2 3.10.3 All 149 releases
visualizer / vendor / phpoffice / phpspreadsheet / src / PhpSpreadsheet / Reader / Ods / Properties.php

Properties.php in Visualizer – Tables & Charts Manager with Built-in AI Generator 3.7.4, at vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Ods/Properties.php

137 lines 4.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace PhpOffice\PhpSpreadsheet\Reader\Ods;
4
5 use PhpOffice\PhpSpreadsheet\Document\Properties as DocumentProperties;
6 use PhpOffice\PhpSpreadsheet\Spreadsheet;
7
8 class Properties
9 {
10 private $spreadsheet;
11
12 public function __construct(Spreadsheet $spreadsheet)
13 {
14 $this->spreadsheet = $spreadsheet;
15 }
16
17 public function load(\SimpleXMLElement $xml, $namespacesMeta)
18 {
19 $docProps = $this->spreadsheet->getProperties();
20 $officeProperty = $xml->children($namespacesMeta['office']);
21 foreach ($officeProperty as $officePropertyData) {
22 /** @var \SimpleXMLElement $officePropertyData */
23 $officePropertiesDC = (object) [];
24 if (isset($namespacesMeta['dc'])) {
25 $officePropertiesDC = $officePropertyData->children($namespacesMeta['dc']);
26 }
27 $this->setCoreProperties($docProps, $officePropertiesDC);
28
29 $officePropertyMeta = (object) [];
30 if (isset($namespacesMeta['dc'])) {
31 $officePropertyMeta = $officePropertyData->children($namespacesMeta['meta']);
32 }
33 foreach ($officePropertyMeta as $propertyName => $propertyValue) {
34 $this->setMetaProperties($namespacesMeta, $propertyValue, $propertyName, $docProps);
35 }
36 }
37 }
38
39 private function setCoreProperties(DocumentProperties $docProps, \SimpleXMLElement $officePropertyDC)
40 {
41 foreach ($officePropertyDC as $propertyName => $propertyValue) {
42 $propertyValue = (string) $propertyValue;
43 switch ($propertyName) {
44 case 'title':
45 $docProps->setTitle($propertyValue);
46
47 break;
48 case 'subject':
49 $docProps->setSubject($propertyValue);
50
51 break;
52 case 'creator':
53 $docProps->setCreator($propertyValue);
54 $docProps->setLastModifiedBy($propertyValue);
55
56 break;
57 case 'creation-date':
58 $creationDate = strtotime($propertyValue);
59 $docProps->setCreated($creationDate);
60 $docProps->setModified($creationDate);
61
62 break;
63 case 'keyword':
64 $docProps->setKeywords($propertyValue);
65
66 break;
67 case 'description':
68 $docProps->setDescription($propertyValue);
69
70 break;
71 }
72 }
73 }
74
75 private function setMetaProperties(
76 $namespacesMeta,
77 \SimpleXMLElement $propertyValue,
78 $propertyName,
79 DocumentProperties $docProps
80 ) {
81 $propertyValueAttributes = $propertyValue->attributes($namespacesMeta['meta']);
82 $propertyValue = (string) $propertyValue;
83 switch ($propertyName) {
84 case 'initial-creator':
85 $docProps->setCreator($propertyValue);
86
87 break;
88 case 'keyword':
89 $docProps->setKeywords($propertyValue);
90
91 break;
92 case 'creation-date':
93 $creationDate = strtotime($propertyValue);
94 $docProps->setCreated($creationDate);
95
96 break;
97 case 'user-defined':
98 $this->setUserDefinedProperty($propertyValueAttributes, $propertyValue, $docProps);
99
100 break;
101 }
102 }
103
104 private function setUserDefinedProperty($propertyValueAttributes, $propertyValue, DocumentProperties $docProps)
105 {
106 $propertyValueName = '';
107 $propertyValueType = DocumentProperties::PROPERTY_TYPE_STRING;
108 foreach ($propertyValueAttributes as $key => $value) {
109 if ($key == 'name') {
110 $propertyValueName = (string) $value;
111 } elseif ($key == 'value-type') {
112 switch ($value) {
113 case 'date':
114 $propertyValue = DocumentProperties::convertProperty($propertyValue, 'date');
115 $propertyValueType = DocumentProperties::PROPERTY_TYPE_DATE;
116
117 break;
118 case 'boolean':
119 $propertyValue = DocumentProperties::convertProperty($propertyValue, 'bool');
120 $propertyValueType = DocumentProperties::PROPERTY_TYPE_BOOLEAN;
121
122 break;
123 case 'float':
124 $propertyValue = DocumentProperties::convertProperty($propertyValue, 'r4');
125 $propertyValueType = DocumentProperties::PROPERTY_TYPE_FLOAT;
126
127 break;
128 default:
129 $propertyValueType = DocumentProperties::PROPERTY_TYPE_STRING;
130 }
131 }
132 }
133
134 $docProps->setCustomProperty($propertyValueName, $propertyValue, $propertyValueType);
135 }
136 }
137