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 / Writer / Ods / Settings.php

Settings.php in wpDataTables – WordPress Data Table, Dynamic Tables & Table Charts Plugin 6.5.1.7, at lib/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Settings.php

153 lines 6.5 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\Writer\Ods;
4
5 use PhpOffice\PhpSpreadsheet\Cell\CellAddress;
6 use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
7 use PhpOffice\PhpSpreadsheet\Shared\XMLWriter;
8 use PhpOffice\PhpSpreadsheet\Spreadsheet;
9 use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
10
11 class Settings extends WriterPart
12 {
13 /**
14 * Write settings.xml to XML format.
15 *
16 * @return string XML Output
17 */
18 public function write(): string
19 {
20 if ($this->getParentWriter()->getUseDiskCaching()) {
21 $objWriter = new XMLWriter(XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
22 } else {
23 $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
24 }
25
26 // XML header
27 $objWriter->startDocument('1.0', 'UTF-8');
28
29 // Settings
30 $objWriter->startElement('office:document-settings');
31 $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0');
32 $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');
33 $objWriter->writeAttribute('xmlns:config', 'urn:oasis:names:tc:opendocument:xmlns:config:1.0');
34 $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office');
35 $objWriter->writeAttribute('office:version', '1.2');
36
37 $objWriter->startElement('office:settings');
38 $objWriter->startElement('config:config-item-set');
39 $objWriter->writeAttribute('config:name', 'ooo:view-settings');
40 $objWriter->startElement('config:config-item-map-indexed');
41 $objWriter->writeAttribute('config:name', 'Views');
42 $objWriter->startElement('config:config-item-map-entry');
43 $spreadsheet = $this->getParentWriter()->getSpreadsheet();
44
45 $objWriter->startElement('config:config-item');
46 $objWriter->writeAttribute('config:name', 'ViewId');
47 $objWriter->writeAttribute('config:type', 'string');
48 $objWriter->text('view1');
49 $objWriter->endElement(); // ViewId
50 $objWriter->startElement('config:config-item-map-named');
51
52 $this->writeAllWorksheetSettings($objWriter, $spreadsheet);
53
54 $wstitle = $spreadsheet->getActiveSheet()->getTitle();
55 $objWriter->startElement('config:config-item');
56 $objWriter->writeAttribute('config:name', 'ActiveTable');
57 $objWriter->writeAttribute('config:type', 'string');
58 $objWriter->text($wstitle);
59 $objWriter->endElement(); // config:config-item ActiveTable
60
61 $objWriter->endElement(); // config:config-item-map-entry
62 $objWriter->endElement(); // config:config-item-map-indexed Views
63 $objWriter->endElement(); // config:config-item-set ooo:view-settings
64 $objWriter->startElement('config:config-item-set');
65 $objWriter->writeAttribute('config:name', 'ooo:configuration-settings');
66 $objWriter->endElement(); // config:config-item-set ooo:configuration-settings
67 $objWriter->endElement(); // office:settings
68 $objWriter->endElement(); // office:document-settings
69
70 return $objWriter->getData();
71 }
72
73 private function writeAllWorksheetSettings(XMLWriter $objWriter, Spreadsheet $spreadsheet): void
74 {
75 $objWriter->writeAttribute('config:name', 'Tables');
76
77 foreach ($spreadsheet->getWorksheetIterator() as $worksheet) {
78 $this->writeWorksheetSettings($objWriter, $worksheet);
79 }
80
81 $objWriter->endElement(); // config:config-item-map-entry Tables
82 }
83
84 private function writeWorksheetSettings(XMLWriter $objWriter, Worksheet $worksheet): void
85 {
86 $objWriter->startElement('config:config-item-map-entry');
87 $objWriter->writeAttribute('config:name', $worksheet->getTitle());
88
89 $this->writeSelectedCells($objWriter, $worksheet);
90 if ($worksheet->getFreezePane() !== null) {
91 $this->writeFreezePane($objWriter, $worksheet);
92 }
93
94 $objWriter->endElement(); // config:config-item-map-entry Worksheet
95 }
96
97 private function writeSelectedCells(XMLWriter $objWriter, Worksheet $worksheet): void
98 {
99 $selected = $worksheet->getSelectedCells();
100 if (preg_match('/^([a-z]+)([0-9]+)/i', $selected, $matches) === 1) {
101 $colSel = Coordinate::columnIndexFromString($matches[1]) - 1;
102 $rowSel = (int) $matches[2] - 1;
103 $objWriter->startElement('config:config-item');
104 $objWriter->writeAttribute('config:name', 'CursorPositionX');
105 $objWriter->writeAttribute('config:type', 'int');
106 $objWriter->text((string) $colSel);
107 $objWriter->endElement();
108 $objWriter->startElement('config:config-item');
109 $objWriter->writeAttribute('config:name', 'CursorPositionY');
110 $objWriter->writeAttribute('config:type', 'int');
111 $objWriter->text((string) $rowSel);
112 $objWriter->endElement();
113 }
114 }
115
116 private function writeSplitValue(XMLWriter $objWriter, string $splitMode, string $type, string $value): void
117 {
118 $objWriter->startElement('config:config-item');
119 $objWriter->writeAttribute('config:name', $splitMode);
120 $objWriter->writeAttribute('config:type', $type);
121 $objWriter->text($value);
122 $objWriter->endElement();
123 }
124
125 private function writeFreezePane(XMLWriter $objWriter, Worksheet $worksheet): void
126 {
127 $freezePane = CellAddress::fromCellAddress($worksheet->getFreezePane());
128 if ($freezePane->cellAddress() === 'A1') {
129 return;
130 }
131
132 $columnId = $freezePane->columnId();
133 $columnName = $freezePane->columnName();
134 $row = $freezePane->rowId();
135
136 $this->writeSplitValue($objWriter, 'HorizontalSplitMode', 'short', '2');
137 $this->writeSplitValue($objWriter, 'HorizontalSplitPosition', 'int', (string) ($columnId - 1));
138 $this->writeSplitValue($objWriter, 'PositionLeft', 'short', '0');
139 $this->writeSplitValue($objWriter, 'PositionRight', 'short', (string) ($columnId - 1));
140
141 for ($column = 'A'; $column !== $columnName; ++$column) {
142 $worksheet->getColumnDimension($column)->setAutoSize(true);
143 }
144
145 $this->writeSplitValue($objWriter, 'VerticalSplitMode', 'short', '2');
146 $this->writeSplitValue($objWriter, 'VerticalSplitPosition', 'int', (string) ($row - 1));
147 $this->writeSplitValue($objWriter, 'PositionTop', 'short', '0');
148 $this->writeSplitValue($objWriter, 'PositionBottom', 'short', (string) ($row - 1));
149
150 $this->writeSplitValue($objWriter, 'ActiveSplitRange', 'short', '3');
151 }
152 }
153