PluginProbe
TablePress – Tables in WordPress made easy / 3.4
TablePress – Tables in WordPress made easy v3.4
3.4 3.3.4 3.3.3 3.3.2 3.3.1 trunk 1.12 1.14 1.9.2 2.0.4 2.1.7 2.1.8 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.3 2.3.1 2.3.2 2.4 2.4.1 2.4.2 2.4.3 All 45 releases
tablepress / libraries / vendor / PhpSpreadsheet / Reader / Gnumeric / Properties.php

Properties.php in TablePress – Tables in WordPress made easy 3.4, at libraries/vendor/PhpSpreadsheet/Reader/Gnumeric/Properties.php

160 lines 3.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace TablePress\PhpOffice\PhpSpreadsheet\Reader\Gnumeric;
4
5 use TablePress\PhpOffice\PhpSpreadsheet\Reader\Gnumeric;
6 use TablePress\PhpOffice\PhpSpreadsheet\Spreadsheet;
7 use SimpleXMLElement;
8
9 class Properties
10 {
11 protected Spreadsheet $spreadsheet;
12
13 public function __construct(Spreadsheet $spreadsheet)
14 {
15 $this->spreadsheet = $spreadsheet;
16 }
17
18 private function docPropertiesOld(SimpleXMLElement $gnmXML): void
19 {
20 $docProps = $this->spreadsheet->getProperties();
21 foreach ($gnmXML->Summary->Item as $summaryItem) {
22 $propertyName = $summaryItem->name;
23 $propertyValue = $summaryItem->{'val-string'};
24 switch ($propertyName) {
25 case 'title':
26 $docProps->setTitle(trim($propertyValue));
27
28 break;
29 case 'comments':
30 $docProps->setDescription(trim($propertyValue));
31
32 break;
33 case 'keywords':
34 $docProps->setKeywords(trim($propertyValue));
35
36 break;
37 case 'category':
38 $docProps->setCategory(trim($propertyValue));
39
40 break;
41 case 'manager':
42 $docProps->setManager(trim($propertyValue));
43
44 break;
45 case 'author':
46 $docProps->setCreator(trim($propertyValue));
47 $docProps->setLastModifiedBy(trim($propertyValue));
48
49 break;
50 case 'company':
51 $docProps->setCompany(trim($propertyValue));
52
53 break;
54 }
55 }
56 }
57
58 private function docPropertiesDC(SimpleXMLElement $officePropertyDC): void
59 {
60 $docProps = $this->spreadsheet->getProperties();
61 foreach ($officePropertyDC as $propertyName => $propertyValue) {
62 $propertyValue = trim((string) $propertyValue);
63 switch ($propertyName) {
64 case 'title':
65 $docProps->setTitle($propertyValue);
66
67 break;
68 case 'subject':
69 $docProps->setSubject($propertyValue);
70
71 break;
72 case 'creator':
73 $docProps->setCreator($propertyValue);
74 $docProps->setLastModifiedBy($propertyValue);
75
76 break;
77 case 'date':
78 $creationDate = $propertyValue;
79 $docProps->setModified($creationDate);
80
81 break;
82 case 'description':
83 $docProps->setDescription($propertyValue);
84
85 break;
86 }
87 }
88 }
89
90 private function docPropertiesMeta(SimpleXMLElement $officePropertyMeta): void
91 {
92 $docProps = $this->spreadsheet->getProperties();
93 foreach ($officePropertyMeta as $propertyName => $propertyValue) {
94 $attributes = $propertyValue->attributes(Gnumeric::NAMESPACE_META);
95 $propertyValue = trim((string) $propertyValue);
96 switch ($propertyName) {
97 case 'keyword':
98 $docProps->setKeywords($propertyValue);
99
100 break;
101 case 'initial-creator':
102 $docProps->setCreator($propertyValue);
103 $docProps->setLastModifiedBy($propertyValue);
104
105 break;
106 case 'creation-date':
107 $creationDate = $propertyValue;
108 $docProps->setCreated($creationDate);
109
110 break;
111 case 'user-defined':
112 if ($attributes) {
113 [, $attrName] = explode(':', (string) $attributes['name']);
114 $this->userDefinedProperties($attrName, $propertyValue);
115 }
116
117 break;
118 }
119 }
120 }
121
122 private function userDefinedProperties(string $attrName, string $propertyValue): void
123 {
124 $docProps = $this->spreadsheet->getProperties();
125 switch ($attrName) {
126 case 'publisher':
127 $docProps->setCompany($propertyValue);
128
129 break;
130 case 'category':
131 $docProps->setCategory($propertyValue);
132
133 break;
134 case 'manager':
135 $docProps->setManager($propertyValue);
136
137 break;
138 }
139 }
140
141 public function readProperties(SimpleXMLElement $xml, SimpleXMLElement $gnmXML): void
142 {
143 $officeXML = $xml->children(Gnumeric::NAMESPACE_OFFICE);
144 if (!empty($officeXML)) {
145 $officeDocXML = $officeXML->{'document-meta'};
146 $officeDocMetaXML = $officeDocXML->meta;
147
148 foreach ($officeDocMetaXML as $officePropertyData) {
149 $officePropertyDC = $officePropertyData->children(Gnumeric::NAMESPACE_DC);
150 $this->docPropertiesDC($officePropertyDC);
151
152 $officePropertyMeta = $officePropertyData->children(Gnumeric::NAMESPACE_META);
153 $this->docPropertiesMeta($officePropertyMeta);
154 }
155 } elseif (isset($gnmXML->Summary)) {
156 $this->docPropertiesOld($gnmXML);
157 }
158 }
159 }
160