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.php

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

187 lines 4.4 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;
4
5 use PhpOffice\PhpSpreadsheet\Spreadsheet;
6 use PhpOffice\PhpSpreadsheet\Writer\Exception as WriterException;
7 use PhpOffice\PhpSpreadsheet\Writer\Ods\Content;
8 use PhpOffice\PhpSpreadsheet\Writer\Ods\Meta;
9 use PhpOffice\PhpSpreadsheet\Writer\Ods\MetaInf;
10 use PhpOffice\PhpSpreadsheet\Writer\Ods\Mimetype;
11 use PhpOffice\PhpSpreadsheet\Writer\Ods\Settings;
12 use PhpOffice\PhpSpreadsheet\Writer\Ods\Styles;
13 use PhpOffice\PhpSpreadsheet\Writer\Ods\Thumbnails;
14 use ZipStream\Exception\OverflowException;
15 use ZipStream\ZipStream;
16
17 class Ods extends BaseWriter
18 {
19 /**
20 * Private PhpSpreadsheet.
21 *
22 * @var Spreadsheet
23 */
24 private $spreadSheet;
25
26 /**
27 * @var Content
28 */
29 private $writerPartContent;
30
31 /**
32 * @var Meta
33 */
34 private $writerPartMeta;
35
36 /**
37 * @var MetaInf
38 */
39 private $writerPartMetaInf;
40
41 /**
42 * @var Mimetype
43 */
44 private $writerPartMimetype;
45
46 /**
47 * @var Settings
48 */
49 private $writerPartSettings;
50
51 /**
52 * @var Styles
53 */
54 private $writerPartStyles;
55
56 /**
57 * @var Thumbnails
58 */
59 private $writerPartThumbnails;
60
61 /**
62 * Create a new Ods.
63 */
64 public function __construct(Spreadsheet $spreadsheet)
65 {
66 $this->setSpreadsheet($spreadsheet);
67
68 $this->writerPartContent = new Content($this);
69 $this->writerPartMeta = new Meta($this);
70 $this->writerPartMetaInf = new MetaInf($this);
71 $this->writerPartMimetype = new Mimetype($this);
72 $this->writerPartSettings = new Settings($this);
73 $this->writerPartStyles = new Styles($this);
74 $this->writerPartThumbnails = new Thumbnails($this);
75 }
76
77 public function getWriterPartContent(): Content
78 {
79 return $this->writerPartContent;
80 }
81
82 public function getWriterPartMeta(): Meta
83 {
84 return $this->writerPartMeta;
85 }
86
87 public function getWriterPartMetaInf(): MetaInf
88 {
89 return $this->writerPartMetaInf;
90 }
91
92 public function getWriterPartMimetype(): Mimetype
93 {
94 return $this->writerPartMimetype;
95 }
96
97 public function getWriterPartSettings(): Settings
98 {
99 return $this->writerPartSettings;
100 }
101
102 public function getWriterPartStyles(): Styles
103 {
104 return $this->writerPartStyles;
105 }
106
107 public function getWriterPartThumbnails(): Thumbnails
108 {
109 return $this->writerPartThumbnails;
110 }
111
112 /**
113 * Save PhpSpreadsheet to file.
114 *
115 * @param resource|string $filename
116 */
117 public function save($filename, int $flags = 0): void
118 {
119 $this->processFlags($flags);
120
121 // garbage collect
122 $this->spreadSheet->garbageCollect();
123
124 $this->openFileHandle($filename);
125
126 $zip = $this->createZip();
127
128 $zip->addFile('META-INF/manifest.xml', $this->getWriterPartMetaInf()->write());
129 $zip->addFile('Thumbnails/thumbnail.png', $this->getWriterPartthumbnails()->write());
130 // Settings always need to be written before Content; Styles after Content
131 $zip->addFile('settings.xml', $this->getWriterPartsettings()->write());
132 $zip->addFile('content.xml', $this->getWriterPartcontent()->write());
133 $zip->addFile('meta.xml', $this->getWriterPartmeta()->write());
134 $zip->addFile('mimetype', $this->getWriterPartmimetype()->write());
135 $zip->addFile('styles.xml', $this->getWriterPartstyles()->write());
136
137 // Close file
138 try {
139 $zip->finish();
140 } catch (OverflowException $e) {
141 throw new WriterException('Could not close resource.');
142 }
143
144 $this->maybeCloseFileHandle();
145 }
146
147 /**
148 * Create zip object.
149 *
150 * @return ZipStream
151 */
152 private function createZip()
153 {
154 // Try opening the ZIP file
155 if (!is_resource($this->fileHandle)) {
156 throw new WriterException('Could not open resource for writing.');
157 }
158
159 // Create new ZIP stream
160 return ZipStream0::newZipStream($this->fileHandle);
161 }
162
163 /**
164 * Get Spreadsheet object.
165 *
166 * @return Spreadsheet
167 */
168 public function getSpreadsheet()
169 {
170 return $this->spreadSheet;
171 }
172
173 /**
174 * Set Spreadsheet object.
175 *
176 * @param Spreadsheet $spreadsheet PhpSpreadsheet object
177 *
178 * @return $this
179 */
180 public function setSpreadsheet(Spreadsheet $spreadsheet)
181 {
182 $this->spreadSheet = $spreadsheet;
183
184 return $this;
185 }
186 }
187