PluginProbe
wpDataTables – WordPress Data Table, Dynamic Tables & Table Charts Plugin / 6.5.1.7
wpDataTables – WordPress Data Table, Dynamic Tables & Table Charts Plugin v6.5.1.7
6.5.1.7 6.5.1.6 6.5.1.5 6.5.1.4 6.5.1.3 6.5.1.2 6.5.1.1 6.5.0.9 6.5.0.8 6.5.0.7 6.5.0.6 trunk 3.4.2.40 3.4.2.41 3.4.2.42 3.4.2.43 3.4.2.44 3.4.2.45 3.4.2.46 3.4.2.47 3.4.2.48 3.4.2.49 3.4.2.50 6.3.2 6.3.3.1 All 47 releases
wpdatatables / lib / phpoffice / phpspreadsheet / src / PhpSpreadsheet / Reader / Xml / PageSettings.php

PageSettings.php in wpDataTables – WordPress Data Table, Dynamic Tables & Table Charts Plugin 6.5.1.7, at lib/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/PageSettings.php

135 lines 5.2 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\Xml;
4
5 use PhpOffice\PhpSpreadsheet\Reader\Xlsx\Namespaces;
6 use PhpOffice\PhpSpreadsheet\Spreadsheet;
7 use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;
8 use SimpleXMLElement;
9 use stdClass;
10
11 class PageSettings
12 {
13 /**
14 * @var stdClass
15 */
16 private $printSettings;
17
18 public function __construct(SimpleXMLElement $xmlX)
19 {
20 $printSettings = $this->pageSetup($xmlX, $this->getPrintDefaults());
21 $this->printSettings = $this->printSetup($xmlX, $printSettings);
22 }
23
24 public function loadPageSettings(Spreadsheet $spreadsheet): void
25 {
26 $spreadsheet->getActiveSheet()->getPageSetup()
27 ->setPaperSize($this->printSettings->paperSize)
28 ->setOrientation($this->printSettings->orientation)
29 ->setScale($this->printSettings->scale)
30 ->setVerticalCentered($this->printSettings->verticalCentered)
31 ->setHorizontalCentered($this->printSettings->horizontalCentered)
32 ->setPageOrder($this->printSettings->printOrder);
33 $spreadsheet->getActiveSheet()->getPageMargins()
34 ->setTop($this->printSettings->topMargin)
35 ->setHeader($this->printSettings->headerMargin)
36 ->setLeft($this->printSettings->leftMargin)
37 ->setRight($this->printSettings->rightMargin)
38 ->setBottom($this->printSettings->bottomMargin)
39 ->setFooter($this->printSettings->footerMargin);
40 }
41
42 private function getPrintDefaults(): stdClass
43 {
44 return (object) [
45 'paperSize' => 9,
46 'orientation' => PageSetup::ORIENTATION_DEFAULT,
47 'scale' => 100,
48 'horizontalCentered' => false,
49 'verticalCentered' => false,
50 'printOrder' => PageSetup::PAGEORDER_DOWN_THEN_OVER,
51 'topMargin' => 0.75,
52 'headerMargin' => 0.3,
53 'leftMargin' => 0.7,
54 'rightMargin' => 0.7,
55 'bottomMargin' => 0.75,
56 'footerMargin' => 0.3,
57 ];
58 }
59
60 private function pageSetup(SimpleXMLElement $xmlX, stdClass $printDefaults): stdClass
61 {
62 if (isset($xmlX->WorksheetOptions->PageSetup)) {
63 foreach ($xmlX->WorksheetOptions->PageSetup as $pageSetupData) {
64 foreach ($pageSetupData as $pageSetupKey => $pageSetupValue) {
65 /** @scrutinizer ignore-call */
66 $pageSetupAttributes = $pageSetupValue->attributes(Namespaces::URN_EXCEL);
67 if ($pageSetupAttributes !== null) {
68 switch ($pageSetupKey) {
69 case 'Layout':
70 $this->setLayout($printDefaults, $pageSetupAttributes);
71
72 break;
73 case 'Header':
74 $printDefaults->headerMargin = (float) $pageSetupAttributes->Margin ?: 1.0;
75
76 break;
77 case 'Footer':
78 $printDefaults->footerMargin = (float) $pageSetupAttributes->Margin ?: 1.0;
79
80 break;
81 case 'PageMargins':
82 $this->setMargins($printDefaults, $pageSetupAttributes);
83
84 break;
85 }
86 }
87 }
88 }
89 }
90
91 return $printDefaults;
92 }
93
94 private function printSetup(SimpleXMLElement $xmlX, stdClass $printDefaults): stdClass
95 {
96 if (isset($xmlX->WorksheetOptions->Print)) {
97 foreach ($xmlX->WorksheetOptions->Print as $printData) {
98 foreach ($printData as $printKey => $printValue) {
99 switch ($printKey) {
100 case 'LeftToRight':
101 $printDefaults->printOrder = PageSetup::PAGEORDER_OVER_THEN_DOWN;
102
103 break;
104 case 'PaperSizeIndex':
105 $printDefaults->paperSize = (int) $printValue ?: 9;
106
107 break;
108 case 'Scale':
109 $printDefaults->scale = (int) $printValue ?: 100;
110
111 break;
112 }
113 }
114 }
115 }
116
117 return $printDefaults;
118 }
119
120 private function setLayout(stdClass $printDefaults, SimpleXMLElement $pageSetupAttributes): void
121 {
122 $printDefaults->orientation = (string) strtolower($pageSetupAttributes->Orientation ?? '') ?: PageSetup::ORIENTATION_PORTRAIT;
123 $printDefaults->horizontalCentered = (bool) $pageSetupAttributes->CenterHorizontal ?: false;
124 $printDefaults->verticalCentered = (bool) $pageSetupAttributes->CenterVertical ?: false;
125 }
126
127 private function setMargins(stdClass $printDefaults, SimpleXMLElement $pageSetupAttributes): void
128 {
129 $printDefaults->leftMargin = (float) $pageSetupAttributes->Left ?: 1.0;
130 $printDefaults->rightMargin = (float) $pageSetupAttributes->Right ?: 1.0;
131 $printDefaults->topMargin = (float) $pageSetupAttributes->Top ?: 1.0;
132 $printDefaults->bottomMargin = (float) $pageSetupAttributes->Bottom ?: 1.0;
133 }
134 }
135