Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.

Differences Between: [Versions 310 and 401]

   1  <?php
   2  
   3  /*
   4   * This file is part of Mustache.php.
   5   *
   6   * (c) 2010-2017 Justin Hileman
   7   *
   8   * For the full copyright and license information, please view the LICENSE
   9   * file that was distributed with this source code.
  10   */
  11  
  12  /**
  13   * Mustache template Filesystem Source.
  14   *
  15   * This template Source uses stat() to generate the Source key, so that using
  16   * pre-compiled templates doesn't require hitting the disk to read the source.
  17   * It is more suitable for production use, and is used by default in the
  18   * ProductionFilesystemLoader.
  19   */
  20  class Mustache_Source_FilesystemSource implements Mustache_Source
  21  {
  22      private $fileName;
  23      private $statProps;
  24      private $stat;
  25  
  26      /**
  27       * Filesystem Source constructor.
  28       *
  29       * @param string $fileName
  30       * @param array  $statProps
  31       */
  32      public function __construct($fileName, array $statProps)
  33      {
  34          $this->fileName = $fileName;
  35          $this->statProps = $statProps;
  36      }
  37  
  38      /**
  39       * Get the Source key (used to generate the compiled class name).
  40       *
  41       * @throws Mustache_Exception_RuntimeException when a source file cannot be read
  42       *
  43       * @return string
  44       */
  45      public function getKey()
  46      {
  47          $chunks = array(
  48              'fileName' => $this->fileName,
  49          );
  50  
  51          if (!empty($this->statProps)) {
  52              if (!isset($this->stat)) {
  53                  $this->stat = @stat($this->fileName);
  54              }
  55  
  56              if ($this->stat === false) {
  57                  throw new Mustache_Exception_RuntimeException(sprintf('Failed to read source file "%s".', $this->fileName));
  58              }
  59  
  60              foreach ($this->statProps as $prop) {
  61                  $chunks[$prop] = $this->stat[$prop];
  62              }
  63          }
  64  
  65          return json_encode($chunks);
  66      }
  67  
  68      /**
  69       * Get the template Source.
  70       *
  71       * @return string
  72       */
  73      public function getSource()
  74      {
  75          return file_get_contents($this->fileName);
  76      }
  77  }