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
> * @param bool $writeDebugLog
*/
< public function setWriteDebugLog($pValue)
> public function setWriteDebugLog($writeDebugLog): void
{
< $this->writeDebugLog = $pValue;
> $this->writeDebugLog = $writeDebugLog;
} /** * 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
> * @param bool $echoDebugLog
*/
< public function setEchoDebugLog($pValue)
> public function setEchoDebugLog($echoDebugLog): void
{
< $this->echoDebugLog = $pValue;
> $this->echoDebugLog = $echoDebugLog;
} /** * 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.
> * */ > * @param mixed $args
< public function writeDebugLog(...$args)
> public function writeDebugLog(string $message, ...$args): void
{ // Only write the debug log if logging is enabled if ($this->writeDebugLog) {
< $message = implode($args);
> $message = sprintf($message, ...$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; } }