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\Cell;

> use DateTimeInterface; use PhpOffice\PhpSpreadsheet\Shared\StringHelper; > use PhpOffice\PhpSpreadsheet\RichText\RichText;
class StringValueBinder implements IValueBinder { /**
> * @var bool * Bind value to a cell. > */ * > protected $convertNull = true; * @param Cell $cell Cell to bind value to > * @param mixed $value Value to bind in cell > /** * > * @var bool * @return bool > */ */ > protected $convertBoolean = true; public function bindValue(Cell $cell, $value) > { > /** // sanitize UTF-8 strings > * @var bool if (is_string($value)) { > */ $value = StringHelper::sanitizeUTF8($value); > protected $convertNumeric = true; } > > /** $cell->setValueExplicit((string) $value, DataType::TYPE_STRING); > * @var bool > */ // Done! > protected $convertFormula = true; return true; > } > public function setNullConversion(bool $suppressConversion = false): self } > { > $this->convertNull = $suppressConversion; > > return $this; > } > > public function setBooleanConversion(bool $suppressConversion = false): self > { > $this->convertBoolean = $suppressConversion; > > return $this; > } > > public function getBooleanConversion(): bool > { > return $this->convertBoolean; > } > > public function setNumericConversion(bool $suppressConversion = false): self > { > $this->convertNumeric = $suppressConversion; > > return $this; > } > > public function setFormulaConversion(bool $suppressConversion = false): self > { > $this->convertFormula = $suppressConversion; > > return $this; > } > > public function setConversionForAllValueTypes(bool $suppressConversion = false): self > { > $this->convertNull = $suppressConversion; > $this->convertBoolean = $suppressConversion; > $this->convertNumeric = $suppressConversion; > $this->convertFormula = $suppressConversion; > > return $this; > } > > /**
< * < * @return bool
> if (is_object($value)) { > return $this->bindObjectValue($cell, $value); > } >
> if ($value === null && $this->convertNull === false) { > $cell->setValueExplicit($value, DataType::TYPE_NULL); > } elseif (is_bool($value) && $this->convertBoolean === false) { > $cell->setValueExplicit($value, DataType::TYPE_BOOL); > } elseif ((is_int($value) || is_float($value)) && $this->convertNumeric === false) { > $cell->setValueExplicit($value, DataType::TYPE_NUMERIC); > } elseif (is_string($value) && strlen($value) > 1 && $value[0] === '=' && $this->convertFormula === false) { > $cell->setValueExplicit($value, DataType::TYPE_FORMULA); > } else { > if (is_string($value) && strlen($value) > 1 && $value[0] === '=') { > $cell->getStyle()->setQuotePrefix(true); > }
> } > > return true; > } > > protected function bindObjectValue(Cell $cell, object $value): bool > { > // Handle any objects that might be injected > if ($value instanceof DateTimeInterface) { > $value = $value->format('Y-m-d H:i:s'); > } elseif ($value instanceof RichText) { > $cell->setValueExplicit($value, DataType::TYPE_INLINE); > > return true; > } > > $cell->setValueExplicit((string) $value, DataType::TYPE_STRING); // @phpstan-ignore-line
< // Done!