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 / Xlsx / PageSetup.php

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

182 lines 6.0 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\Xlsx;
4
5 use TablePress\PhpOffice\PhpSpreadsheet\Cell\Coordinate;
6 use TablePress\PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
7 use SimpleXMLElement;
8
9 class PageSetup extends BaseParserClass
10 {
11 private Worksheet $worksheet;
12
13 private ?SimpleXMLElement $worksheetXml;
14
15 public function __construct(Worksheet $workSheet, ?SimpleXMLElement $worksheetXml = null)
16 {
17 $this->worksheet = $workSheet;
18 $this->worksheetXml = $worksheetXml;
19 }
20
21 /**
22 * @param mixed[] $unparsedLoadedData
23 *
24 * @return mixed[]
25 */
26 public function load(array $unparsedLoadedData): array
27 {
28 $worksheetXml = $this->worksheetXml;
29 if ($worksheetXml === null) {
30 return $unparsedLoadedData;
31 }
32
33 $this->margins($worksheetXml, $this->worksheet);
34 $unparsedLoadedData = $this->pageSetup($worksheetXml, $this->worksheet, $unparsedLoadedData);
35 $this->headerFooter($worksheetXml, $this->worksheet);
36 $this->pageBreaks($worksheetXml, $this->worksheet);
37
38 return $unparsedLoadedData;
39 }
40
41 private function margins(SimpleXMLElement $xmlSheet, Worksheet $worksheet): void
42 {
43 if ($xmlSheet->pageMargins) {
44 $docPageMargins = $worksheet->getPageMargins();
45 $docPageMargins->setLeft((float) ($xmlSheet->pageMargins['left']));
46 $docPageMargins->setRight((float) ($xmlSheet->pageMargins['right']));
47 $docPageMargins->setTop((float) ($xmlSheet->pageMargins['top']));
48 $docPageMargins->setBottom((float) ($xmlSheet->pageMargins['bottom']));
49 $docPageMargins->setHeader((float) ($xmlSheet->pageMargins['header']));
50 $docPageMargins->setFooter((float) ($xmlSheet->pageMargins['footer']));
51 }
52 }
53
54 /**
55 * @param mixed[] $unparsedLoadedData
56 *
57 * @return mixed[]
58 */
59 private function pageSetup(SimpleXMLElement $xmlSheet, Worksheet $worksheet, array $unparsedLoadedData): array
60 {
61 if ($xmlSheet->pageSetup) {
62 $docPageSetup = $worksheet->getPageSetup();
63
64 if (isset($xmlSheet->pageSetup['orientation'])) {
65 $docPageSetup->setOrientation((string) $xmlSheet->pageSetup['orientation']);
66 }
67 if (isset($xmlSheet->pageSetup['paperSize'])) {
68 $docPageSetup->setPaperSize((int) ($xmlSheet->pageSetup['paperSize']));
69 }
70 if (isset($xmlSheet->pageSetup['scale'])) {
71 $docPageSetup->setScale((int) ($xmlSheet->pageSetup['scale']), false);
72 }
73 if (isset($xmlSheet->pageSetup['fitToHeight']) && (int) ($xmlSheet->pageSetup['fitToHeight']) >= 0) {
74 $docPageSetup->setFitToHeight((int) ($xmlSheet->pageSetup['fitToHeight']), false);
75 }
76 if (isset($xmlSheet->pageSetup['fitToWidth']) && (int) ($xmlSheet->pageSetup['fitToWidth']) >= 0) {
77 $docPageSetup->setFitToWidth((int) ($xmlSheet->pageSetup['fitToWidth']), false);
78 }
79 if (
80 isset($xmlSheet->pageSetup['firstPageNumber'], $xmlSheet->pageSetup['useFirstPageNumber'])
81 && self::boolean((string) $xmlSheet->pageSetup['useFirstPageNumber'])
82 ) {
83 $docPageSetup->setFirstPageNumber((int) ($xmlSheet->pageSetup['firstPageNumber']));
84 }
85 if (isset($xmlSheet->pageSetup['pageOrder'])) {
86 $docPageSetup->setPageOrder((string) $xmlSheet->pageSetup['pageOrder']);
87 }
88
89 $relAttributes = $xmlSheet->pageSetup->attributes(Namespaces::SCHEMA_OFFICE_DOCUMENT);
90 if (isset($relAttributes['id'])) {
91 $relid = (string) $relAttributes['id'];
92 if (!str_ends_with($relid, 'ps')) {
93 $relid .= 'ps';
94 }
95 /** @var mixed[][][] $unparsedLoadedData */
96 $unparsedLoadedData['sheets'][$worksheet->getCodeName()]['pageSetupRelId'] = $relid;
97 }
98 }
99
100 return $unparsedLoadedData;
101 }
102
103 private function headerFooter(SimpleXMLElement $xmlSheet, Worksheet $worksheet): void
104 {
105 if ($xmlSheet->headerFooter) {
106 $docHeaderFooter = $worksheet->getHeaderFooter();
107
108 if (
109 isset($xmlSheet->headerFooter['differentOddEven'])
110 && self::boolean((string) $xmlSheet->headerFooter['differentOddEven'])
111 ) {
112 $docHeaderFooter->setDifferentOddEven(true);
113 } else {
114 $docHeaderFooter->setDifferentOddEven(false);
115 }
116 if (
117 isset($xmlSheet->headerFooter['differentFirst'])
118 && self::boolean((string) $xmlSheet->headerFooter['differentFirst'])
119 ) {
120 $docHeaderFooter->setDifferentFirst(true);
121 } else {
122 $docHeaderFooter->setDifferentFirst(false);
123 }
124 if (
125 isset($xmlSheet->headerFooter['scaleWithDoc'])
126 && !self::boolean((string) $xmlSheet->headerFooter['scaleWithDoc'])
127 ) {
128 $docHeaderFooter->setScaleWithDocument(false);
129 } else {
130 $docHeaderFooter->setScaleWithDocument(true);
131 }
132 if (
133 isset($xmlSheet->headerFooter['alignWithMargins'])
134 && !self::boolean((string) $xmlSheet->headerFooter['alignWithMargins'])
135 ) {
136 $docHeaderFooter->setAlignWithMargins(false);
137 } else {
138 $docHeaderFooter->setAlignWithMargins(true);
139 }
140
141 $docHeaderFooter->setOddHeader((string) $xmlSheet->headerFooter->oddHeader);
142 $docHeaderFooter->setOddFooter((string) $xmlSheet->headerFooter->oddFooter);
143 $docHeaderFooter->setEvenHeader((string) $xmlSheet->headerFooter->evenHeader);
144 $docHeaderFooter->setEvenFooter((string) $xmlSheet->headerFooter->evenFooter);
145 $docHeaderFooter->setFirstHeader((string) $xmlSheet->headerFooter->firstHeader);
146 $docHeaderFooter->setFirstFooter((string) $xmlSheet->headerFooter->firstFooter);
147 }
148 }
149
150 private function pageBreaks(SimpleXMLElement $xmlSheet, Worksheet $worksheet): void
151 {
152 if ($xmlSheet->rowBreaks && $xmlSheet->rowBreaks->brk) {
153 $this->rowBreaks($xmlSheet, $worksheet);
154 }
155 if ($xmlSheet->colBreaks && $xmlSheet->colBreaks->brk) {
156 $this->columnBreaks($xmlSheet, $worksheet);
157 }
158 }
159
160 private function rowBreaks(SimpleXMLElement $xmlSheet, Worksheet $worksheet): void
161 {
162 foreach ($xmlSheet->rowBreaks->brk as $brk) {
163 $rowBreakMax = /*isset($brk['max']) ? ((int) $brk['max']) :*/ -1;
164 if ($brk['man']) {
165 $worksheet->setBreak("A{$brk['id']}", Worksheet::BREAK_ROW, $rowBreakMax);
166 }
167 }
168 }
169
170 private function columnBreaks(SimpleXMLElement $xmlSheet, Worksheet $worksheet): void
171 {
172 foreach ($xmlSheet->colBreaks->brk as $brk) {
173 if ($brk['man']) {
174 $worksheet->setBreak(
175 Coordinate::stringFromColumnIndex(((int) $brk['id']) + 1) . '1',
176 Worksheet::BREAK_COLUMN
177 );
178 }
179 }
180 }
181 }
182