Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.10.x will end 8 November 2021 (12 months).
  • Bug fixes for security issues in 3.10.x will end 9 May 2022 (18 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\Calculation\Engine;

class Logger
{
    /**
     * Flag to determine whether a debug log should be generated by the calculation engine
     *        If true, then a debug log will be generated
     *        If false, then a debug log will not be generated.
     *
     * @var bool
     */
    private $writeDebugLog = false;

    /**
     * Flag to determine whether a debug log should be echoed by the calculation engine
     *        If true, then a debug log will be echoed
     *        If false, then a debug log will not be echoed
     * A debug log can only be echoed if it is generated.
     *
     * @var bool
     */
    private $echoDebugLog = false;

    /**
     * The debug log generated by the calculation engine.
     *
     * @var string[]
     */
    private $debugLog = [];

    /**
     * The calculation engine cell reference stack.
     *
     * @var CyclicReferenceStack
     */
    private $cellStack;

    /**
     * Instantiate a Calculation engine logger.
< * < * @param CyclicReferenceStack $stack
*/ public function __construct(CyclicReferenceStack $stack) { $this->cellStack = $stack; } /** * Enable/Disable Calculation engine logging. * * @param bool $pValue */
< public function setWriteDebugLog($pValue)
> public function setWriteDebugLog($pValue): void
{ $this->writeDebugLog = $pValue; } /** * Return whether calculation engine logging is enabled or disabled. * * @return bool */ public function getWriteDebugLog() { return $this->writeDebugLog; } /** * Enable/Disable echoing of debug log information. * * @param bool $pValue */
< public function setEchoDebugLog($pValue)
> public function setEchoDebugLog($pValue): void
{ $this->echoDebugLog = $pValue; } /** * Return whether echoing of debug log information is enabled or disabled. * * @return bool */ public function getEchoDebugLog() { return $this->echoDebugLog; } /** * Write an entry to the calculation engine debug log. */
< public function writeDebugLog(...$args)
> public function writeDebugLog(...$args): void
{ // Only write the debug log if logging is enabled if ($this->writeDebugLog) {
< $message = implode($args);
> $message = implode('', $args);
$cellReference = implode(' -> ', $this->cellStack->showStack()); if ($this->echoDebugLog) { echo $cellReference, ($this->cellStack->count() > 0 ? ' => ' : ''), $message, PHP_EOL; } $this->debugLog[] = $cellReference . ($this->cellStack->count() > 0 ? ' => ' : '') . $message; } } /**
> * Write a series of entries to the calculation engine debug log. * Clear the calculation engine debug log. > * */ > * @param string[] $args public function clearLog() > */ { > public function mergeDebugLog(array $args): void $this->debugLog = []; > { } > if ($this->writeDebugLog) { > foreach ($args as $entry) { /** > $this->writeDebugLog($entry); * Return the calculation engine debug log. > } * > } * @return string[] > } */ > public function getLog() > /**
< public function clearLog()
> public function clearLog(): void
return $this->debugLog; } }