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.
   1  <?php
   2  
   3  /**

   4   * Component of HTMLPurifier_AttrContext that accumulates IDs to prevent dupes

   5   * @note In Slashdot-speak, dupe means duplicate.

   6   * @note The default constructor does not accept $config or $context objects:

   7   *       use must use the static build() factory method to perform initialization.

   8   */
   9  class HTMLPurifier_IDAccumulator
  10  {
  11  
  12      /**

  13       * Lookup table of IDs we've accumulated.

  14       * @public

  15       */
  16      public $ids = array();
  17  
  18      /**

  19       * Builds an IDAccumulator, also initializing the default blacklist

  20       * @param HTMLPurifier_Config $config Instance of HTMLPurifier_Config

  21       * @param HTMLPurifier_Context $context Instance of HTMLPurifier_Context

  22       * @return HTMLPurifier_IDAccumulator Fully initialized HTMLPurifier_IDAccumulator

  23       */
  24      public static function build($config, $context)
  25      {
  26          $id_accumulator = new HTMLPurifier_IDAccumulator();
  27          $id_accumulator->load($config->get('Attr.IDBlacklist'));
  28          return $id_accumulator;
  29      }
  30  
  31      /**

  32       * Add an ID to the lookup table.

  33       * @param string $id ID to be added.

  34       * @return bool status, true if success, false if there's a dupe

  35       */
  36      public function add($id)
  37      {
  38          if (isset($this->ids[$id])) {
  39              return false;
  40          }
  41          return $this->ids[$id] = true;
  42      }
  43  
  44      /**

  45       * Load a list of IDs into the lookup table

  46       * @param $array_of_ids Array of IDs to load

  47       * @note This function doesn't care about duplicates

  48       */
  49      public function load($array_of_ids)
  50      {
  51          foreach ($array_of_ids as $id) {
  52              $this->ids[$id] = true;
  53          }
  54      }
  55  }
  56  
  57  // vim: et sw=4 sts=4