Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.11.x will end 14 Nov 2022 (12 months plus 6 months extension).
  • Bug fixes for security issues in 3.11.x will end 13 Nov 2023 (18 months plus 12 months extension).
  • PHP version: minimum PHP 7.3.0 Note: minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is supported too.
<?php

namespace PhpOffice\PhpSpreadsheet;

> use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException; use PhpOffice\PhpSpreadsheet\RichText\RichText; > use PhpOffice\PhpSpreadsheet\Helper\Size;
> use PhpOffice\PhpSpreadsheet\Shared\Drawing as SharedDrawing; class Comment implements IComparable > use PhpOffice\PhpSpreadsheet\Style\Alignment; { > use PhpOffice\PhpSpreadsheet\Style\Color; /** > use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
* Author. * * @var string */ private $author; /** * Rich text comment. * * @var RichText */ private $text; /** * Comment width (CSS style, i.e. XXpx or YYpt). * * @var string */ private $width = '96pt'; /** * Left margin (CSS style, i.e. XXpx or YYpt). * * @var string */ private $marginLeft = '59.25pt'; /** * Top margin (CSS style, i.e. XXpx or YYpt). * * @var string */ private $marginTop = '1.5pt'; /** * Visible. * * @var bool */ private $visible = false; /** * Comment height (CSS style, i.e. XXpx or YYpt). * * @var string */ private $height = '55.5pt'; /** * Comment fill color. *
< * @var Style\Color
> * @var Color
*/ private $fillColor; /** * Alignment. * * @var string */ private $alignment; /**
> * Background image in comment. * Create a new Comment. > * */ > * @var Drawing public function __construct() > */ { > private $backgroundImage; // Initialise variables > $this->author = 'Author'; > /**
$this->text = new RichText();
< $this->fillColor = new Style\Color('FFFFFFE1'); < $this->alignment = Style\Alignment::HORIZONTAL_GENERAL;
> $this->fillColor = new Color('FFFFFFE1'); > $this->alignment = Alignment::HORIZONTAL_GENERAL; > $this->backgroundImage = new Drawing();
} /** * Get Author.
< * < * @return string
*/
< public function getAuthor()
> public function getAuthor(): string
{ return $this->author; } /** * Set Author.
< * < * @param string $author < * < * @return $this
*/
< public function setAuthor($author)
> public function setAuthor(string $author): self
{ $this->author = $author; return $this; } /** * Get Rich text comment.
< * < * @return RichText
*/
< public function getText()
> public function getText(): RichText
{ return $this->text; } /** * Set Rich text comment.
< * < * @return $this
*/
< public function setText(RichText $pValue)
> public function setText(RichText $text): self
{
< $this->text = $pValue;
> $this->text = $text;
return $this; } /** * Get comment width (CSS style, i.e. XXpx or YYpt).
< * < * @return string
*/
< public function getWidth()
> public function getWidth(): string
{ return $this->width; } /**
< * Set comment width (CSS style, i.e. XXpx or YYpt). < * < * @param string $width < * < * @return $this
> * Set comment width (CSS style, i.e. XXpx or YYpt). Default unit is pt.
*/
< public function setWidth($width)
> public function setWidth(string $width): self
{
< $this->width = $width;
> $width = new Size($width); > if ($width->valid()) { > $this->width = (string) $width; > }
return $this; } /** * Get comment height (CSS style, i.e. XXpx or YYpt).
< * < * @return string
*/
< public function getHeight()
> public function getHeight(): string
{ return $this->height; } /**
< * Set comment height (CSS style, i.e. XXpx or YYpt). < * < * @param string $value < * < * @return $this
> * Set comment height (CSS style, i.e. XXpx or YYpt). Default unit is pt.
*/
< public function setHeight($value)
> public function setHeight(string $height): self
{
< $this->height = $value;
> $height = new Size($height); > if ($height->valid()) { > $this->height = (string) $height; > }
return $this; } /** * Get left margin (CSS style, i.e. XXpx or YYpt).
< * < * @return string
*/
< public function getMarginLeft()
> public function getMarginLeft(): string
{ return $this->marginLeft; } /**
< * Set left margin (CSS style, i.e. XXpx or YYpt). < * < * @param string $value < * < * @return $this
> * Set left margin (CSS style, i.e. XXpx or YYpt). Default unit is pt.
*/
< public function setMarginLeft($value)
> public function setMarginLeft(string $margin): self
{
< $this->marginLeft = $value;
> $margin = new Size($margin); > if ($margin->valid()) { > $this->marginLeft = (string) $margin; > }
return $this; } /** * Get top margin (CSS style, i.e. XXpx or YYpt).
< * < * @return string
*/
< public function getMarginTop()
> public function getMarginTop(): string
{ return $this->marginTop; } /**
< * Set top margin (CSS style, i.e. XXpx or YYpt). < * < * @param string $value < * < * @return $this
> * Set top margin (CSS style, i.e. XXpx or YYpt). Default unit is pt.
*/
< public function setMarginTop($value)
> public function setMarginTop(string $margin): self
{
< $this->marginTop = $value;
> $margin = new Size($margin); > if ($margin->valid()) { > $this->marginTop = (string) $margin; > }
return $this; } /** * Is the comment visible by default?
< * < * @return bool
*/
< public function getVisible()
> public function getVisible(): bool
{ return $this->visible; } /** * Set comment default visibility.
< * < * @param bool $value < * < * @return $this
*/
< public function setVisible($value)
> public function setVisible(bool $visibility): self > { > $this->visible = $visibility; > > return $this; > } > > /** > * Set fill color. > */ > public function setFillColor(Color $color): self
{
< $this->visible = $value;
> $this->fillColor = $color;
return $this; } /** * Get fill color.
< * < * @return Style\Color
*/
< public function getFillColor()
> public function getFillColor(): Color
{ return $this->fillColor; } /** * Set Alignment.
< * < * @param string $alignment see Style\Alignment::HORIZONTAL_* < * < * @return $this
*/
< public function setAlignment($alignment)
> public function setAlignment(string $alignment): self
{ $this->alignment = $alignment; return $this; } /** * Get Alignment.
< * < * @return string
*/
< public function getAlignment()
> public function getAlignment(): string
{ return $this->alignment; } /** * Get hash code.
< * < * @return string Hash code
*/
< public function getHashCode()
> public function getHashCode(): string
{ return md5( $this->author . $this->text->getHashCode() . $this->width . $this->height . $this->marginLeft . $this->marginTop . ($this->visible ? 1 : 0) . $this->fillColor->getHashCode() . $this->alignment .
> ($this->hasBackgroundImage() ? $this->backgroundImage->getHashCode() : '') .
__CLASS__ ); } /** * Implement PHP __clone to create a deep clone, not just a shallow copy. */ public function __clone() { $vars = get_object_vars($this); foreach ($vars as $key => $value) { if (is_object($value)) { $this->$key = clone $value; } else { $this->$key = $value; } } } /** * Convert to string.
< * < * @return string
*/
< public function __toString()
> public function __toString(): string
{ return $this->text->getPlainText();
> } } > } > /** > * Check is background image exists. > */ > public function hasBackgroundImage(): bool > { > $path = $this->backgroundImage->getPath(); > > if (empty($path)) { > return false; > } > > return getimagesize($path) !== false; > } > > /** > * Returns background image. > */ > public function getBackgroundImage(): Drawing > { > return $this->backgroundImage; > } > > /** > * Sets background image. > */ > public function setBackgroundImage(Drawing $objDrawing): self > { > if (!array_key_exists($objDrawing->getType(), Drawing::IMAGE_TYPES_CONVERTION_MAP)) { > throw new PhpSpreadsheetException('Unsupported image type in comment background. Supported types: PNG, JPEG, BMP, GIF.'); > } > $this->backgroundImage = $objDrawing; > > return $this; > } > > /** > * Sets size of comment as size of background image. > */ > public function setSizeAsBackgroundImage(): self > { > if ($this->hasBackgroundImage()) { > $this->setWidth(SharedDrawing::pixelsToPoints($this->backgroundImage->getWidth()) . 'pt'); > $this->setHeight(SharedDrawing::pixelsToPoints($this->backgroundImage->getHeight()) . 'pt'); > } > > return $this;