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

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

363 lines 7.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;
4
5 use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException;
6 use PhpOffice\PhpSpreadsheet\Helper\Size;
7 use PhpOffice\PhpSpreadsheet\RichText\RichText;
8 use PhpOffice\PhpSpreadsheet\Shared\Drawing as SharedDrawing;
9 use PhpOffice\PhpSpreadsheet\Style\Alignment;
10 use PhpOffice\PhpSpreadsheet\Style\Color;
11 use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
12
13 class Comment implements IComparable
14 {
15 /**
16 * Author.
17 *
18 * @var string
19 */
20 private $author;
21
22 /**
23 * Rich text comment.
24 *
25 * @var RichText
26 */
27 private $text;
28
29 /**
30 * Comment width (CSS style, i.e. XXpx or YYpt).
31 *
32 * @var string
33 */
34 private $width = '96pt';
35
36 /**
37 * Left margin (CSS style, i.e. XXpx or YYpt).
38 *
39 * @var string
40 */
41 private $marginLeft = '59.25pt';
42
43 /**
44 * Top margin (CSS style, i.e. XXpx or YYpt).
45 *
46 * @var string
47 */
48 private $marginTop = '1.5pt';
49
50 /**
51 * Visible.
52 *
53 * @var bool
54 */
55 private $visible = false;
56
57 /**
58 * Comment height (CSS style, i.e. XXpx or YYpt).
59 *
60 * @var string
61 */
62 private $height = '55.5pt';
63
64 /**
65 * Comment fill color.
66 *
67 * @var Color
68 */
69 private $fillColor;
70
71 /**
72 * Alignment.
73 *
74 * @var string
75 */
76 private $alignment;
77
78 /**
79 * Background image in comment.
80 *
81 * @var Drawing
82 */
83 private $backgroundImage;
84
85 /**
86 * Create a new Comment.
87 */
88 public function __construct()
89 {
90 // Initialise variables
91 $this->author = 'Author';
92 $this->text = new RichText();
93 $this->fillColor = new Color('FFFFFFE1');
94 $this->alignment = Alignment::HORIZONTAL_GENERAL;
95 $this->backgroundImage = new Drawing();
96 }
97
98 /**
99 * Get Author.
100 */
101 public function getAuthor(): string
102 {
103 return $this->author;
104 }
105
106 /**
107 * Set Author.
108 */
109 public function setAuthor(string $author): self
110 {
111 $this->author = $author;
112
113 return $this;
114 }
115
116 /**
117 * Get Rich text comment.
118 */
119 public function getText(): RichText
120 {
121 return $this->text;
122 }
123
124 /**
125 * Set Rich text comment.
126 */
127 public function setText(RichText $text): self
128 {
129 $this->text = $text;
130
131 return $this;
132 }
133
134 /**
135 * Get comment width (CSS style, i.e. XXpx or YYpt).
136 */
137 public function getWidth(): string
138 {
139 return $this->width;
140 }
141
142 /**
143 * Set comment width (CSS style, i.e. XXpx or YYpt). Default unit is pt.
144 */
145 public function setWidth(string $width): self
146 {
147 $width = new Size($width);
148 if ($width->valid()) {
149 $this->width = (string) $width;
150 }
151
152 return $this;
153 }
154
155 /**
156 * Get comment height (CSS style, i.e. XXpx or YYpt).
157 */
158 public function getHeight(): string
159 {
160 return $this->height;
161 }
162
163 /**
164 * Set comment height (CSS style, i.e. XXpx or YYpt). Default unit is pt.
165 */
166 public function setHeight(string $height): self
167 {
168 $height = new Size($height);
169 if ($height->valid()) {
170 $this->height = (string) $height;
171 }
172
173 return $this;
174 }
175
176 /**
177 * Get left margin (CSS style, i.e. XXpx or YYpt).
178 */
179 public function getMarginLeft(): string
180 {
181 return $this->marginLeft;
182 }
183
184 /**
185 * Set left margin (CSS style, i.e. XXpx or YYpt). Default unit is pt.
186 */
187 public function setMarginLeft(string $margin): self
188 {
189 $margin = new Size($margin);
190 if ($margin->valid()) {
191 $this->marginLeft = (string) $margin;
192 }
193
194 return $this;
195 }
196
197 /**
198 * Get top margin (CSS style, i.e. XXpx or YYpt).
199 */
200 public function getMarginTop(): string
201 {
202 return $this->marginTop;
203 }
204
205 /**
206 * Set top margin (CSS style, i.e. XXpx or YYpt). Default unit is pt.
207 */
208 public function setMarginTop(string $margin): self
209 {
210 $margin = new Size($margin);
211 if ($margin->valid()) {
212 $this->marginTop = (string) $margin;
213 }
214
215 return $this;
216 }
217
218 /**
219 * Is the comment visible by default?
220 */
221 public function getVisible(): bool
222 {
223 return $this->visible;
224 }
225
226 /**
227 * Set comment default visibility.
228 */
229 public function setVisible(bool $visibility): self
230 {
231 $this->visible = $visibility;
232
233 return $this;
234 }
235
236 /**
237 * Set fill color.
238 */
239 public function setFillColor(Color $color): self
240 {
241 $this->fillColor = $color;
242
243 return $this;
244 }
245
246 /**
247 * Get fill color.
248 */
249 public function getFillColor(): Color
250 {
251 return $this->fillColor;
252 }
253
254 /**
255 * Set Alignment.
256 */
257 public function setAlignment(string $alignment): self
258 {
259 $this->alignment = $alignment;
260
261 return $this;
262 }
263
264 /**
265 * Get Alignment.
266 */
267 public function getAlignment(): string
268 {
269 return $this->alignment;
270 }
271
272 /**
273 * Get hash code.
274 */
275 public function getHashCode(): string
276 {
277 return md5(
278 $this->author .
279 $this->text->getHashCode() .
280 $this->width .
281 $this->height .
282 $this->marginLeft .
283 $this->marginTop .
284 ($this->visible ? 1 : 0) .
285 $this->fillColor->getHashCode() .
286 $this->alignment .
287 ($this->hasBackgroundImage() ? $this->backgroundImage->getHashCode() : '') .
288 __CLASS__
289 );
290 }
291
292 /**
293 * Implement PHP __clone to create a deep clone, not just a shallow copy.
294 */
295 public function __clone()
296 {
297 $vars = get_object_vars($this);
298 foreach ($vars as $key => $value) {
299 if (is_object($value)) {
300 $this->$key = clone $value;
301 } else {
302 $this->$key = $value;
303 }
304 }
305 }
306
307 /**
308 * Convert to string.
309 */
310 public function __toString(): string
311 {
312 return $this->text->getPlainText();
313 }
314
315 /**
316 * Check is background image exists.
317 */
318 public function hasBackgroundImage(): bool
319 {
320 $path = $this->backgroundImage->getPath();
321
322 if (empty($path)) {
323 return false;
324 }
325
326 return getimagesize($path) !== false;
327 }
328
329 /**
330 * Returns background image.
331 */
332 public function getBackgroundImage(): Drawing
333 {
334 return $this->backgroundImage;
335 }
336
337 /**
338 * Sets background image.
339 */
340 public function setBackgroundImage(Drawing $objDrawing): self
341 {
342 if (!array_key_exists($objDrawing->getType(), Drawing::IMAGE_TYPES_CONVERTION_MAP)) {
343 throw new PhpSpreadsheetException('Unsupported image type in comment background. Supported types: PNG, JPEG, BMP, GIF.');
344 }
345 $this->backgroundImage = $objDrawing;
346
347 return $this;
348 }
349
350 /**
351 * Sets size of comment as size of background image.
352 */
353 public function setSizeAsBackgroundImage(): self
354 {
355 if ($this->hasBackgroundImage()) {
356 $this->setWidth(SharedDrawing::pixelsToPoints($this->backgroundImage->getWidth()) . 'pt');
357 $this->setHeight(SharedDrawing::pixelsToPoints($this->backgroundImage->getHeight()) . 'pt');
358 }
359
360 return $this;
361 }
362 }
363