ok
Direktori : /home/ngwcolle/www/admin/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/ |
Current File : /home/ngwcolle/www/admin/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Title.php |
<?php namespace PhpOffice\PhpSpreadsheet\Chart; use PhpOffice\PhpSpreadsheet\RichText\RichText; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Style\Font; class Title { public const TITLE_CELL_REFERENCE = '/^(.*)!' // beginning of string, everything up to ! is match[1] . '[$]([A-Z]{1,3})' // absolute column string match[2] . '[$](\d{1,7})$/i'; // absolute row string match[3] /** * Title Caption. * * @var array<RichText|string>|RichText|string */ private array|RichText|string $caption; /** * Allow overlay of other elements? */ private bool $overlay = true; /** * Title Layout. */ private ?Layout $layout; private string $cellReference = ''; private ?Font $font = null; /** * Create a new Title. */ public function __construct(array|RichText|string $caption = '', ?Layout $layout = null, bool $overlay = false) { $this->caption = $caption; $this->layout = $layout; $this->setOverlay($overlay); } /** * Get caption. */ public function getCaption(): array|RichText|string { return $this->caption; } public function getCaptionText(?Spreadsheet $spreadsheet = null): string { if ($spreadsheet !== null) { $caption = $this->getCalculatedTitle($spreadsheet); if ($caption !== null) { return $caption; } } $caption = $this->caption; if (is_string($caption)) { return $caption; } if ($caption instanceof RichText) { return $caption->getPlainText(); } $retVal = ''; foreach ($caption as $textx) { /** @var RichText|string $text */ $text = $textx; if ($text instanceof RichText) { $retVal .= $text->getPlainText(); } else { $retVal .= $text; } } return $retVal; } /** * Set caption. * * @return $this */ public function setCaption(array|RichText|string $caption): static { $this->caption = $caption; return $this; } /** * Get allow overlay of other elements? */ public function getOverlay(): bool { return $this->overlay; } /** * Set allow overlay of other elements? */ public function setOverlay(bool $overlay): self { $this->overlay = $overlay; return $this; } public function getLayout(): ?Layout { return $this->layout; } public function setCellReference(string $cellReference): self { $this->cellReference = $cellReference; return $this; } public function getCellReference(): string { return $this->cellReference; } public function getCalculatedTitle(?Spreadsheet $spreadsheet): ?string { preg_match(self::TITLE_CELL_REFERENCE, $this->cellReference, $matches); if (count($matches) === 0 || $spreadsheet === null) { return null; } $sheetName = preg_replace("/^'(.*)'$/", '$1', $matches[1]) ?? ''; return $spreadsheet->getSheetByName($sheetName)?->getCell($matches[2] . $matches[3])?->getFormattedValue(); } public function getFont(): ?Font { return $this->font; } public function setFont(?Font $font): self { $this->font = $font; return $this; } /** * Implement PHP __clone to create a deep clone, not just a shallow copy. */ public function __clone() { $this->layout = ($this->layout === null) ? null : clone $this->layout; $this->font = ($this->font === null) ? null : clone $this->font; if (is_array($this->caption)) { $captions = $this->caption; $this->caption = []; foreach ($captions as $caption) { $this->caption[] = is_object($caption) ? (clone $caption) : $caption; } } else { $this->caption = is_object($this->caption) ? (clone $this->caption) : $this->caption; } } }