Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 3.9.x will end* 10 May 2021 (12 months).
  • Bug fixes for security issues in 3.9.x will end* 8 May 2023 (36 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are 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 * @throws \PhpOffice\PhpSpreadsheet\Exception > */ * > protected $convertBoolean = true; * @return bool > */ > /** public function bindValue(Cell $cell, $value) > * @var bool { > */ // sanitize UTF-8 strings > protected $convertNumeric = true; if (is_string($value)) { > $value = StringHelper::sanitizeUTF8($value); > /** } > * @var bool > */ $cell->setValueExplicit((string) $value, DataType::TYPE_STRING); > protected $convertFormula = true; > // Done! > public function setNullConversion(bool $suppressConversion = false): self return true; > { } > $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; > } > > /**
< * < * @throws \PhpOffice\PhpSpreadsheet\Exception < * < * @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); > } > $cell->setValueExplicit((string) $value, DataType::TYPE_STRING); > } > > 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; > } >
< // Done!