File indexing completed on 2024-12-22 05:36:21

0001 <?php
0002 
0003 /**
0004  * Component of HTMLPurifier_AttrContext that accumulates IDs to prevent dupes
0005  * @note In Slashdot-speak, dupe means duplicate.
0006  * @note The default constructor does not accept $config or $context objects:
0007  *       use must use the static build() factory method to perform initialization.
0008  */
0009 class HTMLPurifier_IDAccumulator
0010 {
0011 
0012     /**
0013      * Lookup table of IDs we've accumulated.
0014      * @public
0015      */
0016     public $ids = array();
0017 
0018     /**
0019      * Builds an IDAccumulator, also initializing the default blacklist
0020      * @param HTMLPurifier_Config $config Instance of HTMLPurifier_Config
0021      * @param HTMLPurifier_Context $context Instance of HTMLPurifier_Context
0022      * @return HTMLPurifier_IDAccumulator Fully initialized HTMLPurifier_IDAccumulator
0023      */
0024     public static function build($config, $context)
0025     {
0026         $id_accumulator = new HTMLPurifier_IDAccumulator();
0027         $id_accumulator->load($config->get('Attr.IDBlacklist'));
0028         return $id_accumulator;
0029     }
0030 
0031     /**
0032      * Add an ID to the lookup table.
0033      * @param string $id ID to be added.
0034      * @return bool status, true if success, false if there's a dupe
0035      */
0036     public function add($id)
0037     {
0038         if (isset($this->ids[$id])) {
0039             return false;
0040         }
0041         return $this->ids[$id] = true;
0042     }
0043 
0044     /**
0045      * Load a list of IDs into the lookup table
0046      * @param $array_of_ids Array of IDs to load
0047      * @note This function doesn't care about duplicates
0048      */
0049     public function load($array_of_ids)
0050     {
0051         foreach ($array_of_ids as $id) {
0052             $this->ids[$id] = true;
0053         }
0054     }
0055 }
0056 
0057 // vim: et sw=4 sts=4