| 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 $config Instance of HTMLPurifier_Config |
|---|
| 21 | * @param $context Instance of HTMLPurifier_Context |
|---|
| 22 | * @return Fully initialized HTMLPurifier_IDAccumulator |
|---|
| 23 | */ |
|---|
| 24 | public static function build($config, $context) { |
|---|
| 25 | $id_accumulator = new HTMLPurifier_IDAccumulator(); |
|---|
| 26 | $id_accumulator->load($config->get('Attr', 'IDBlacklist')); |
|---|
| 27 | return $id_accumulator; |
|---|
| 28 | } |
|---|
| 29 | |
|---|
| 30 | /** |
|---|
| 31 | * Add an ID to the lookup table. |
|---|
| 32 | * @param $id ID to be added. |
|---|
| 33 | * @return Bool status, true if success, false if there's a dupe |
|---|
| 34 | */ |
|---|
| 35 | public function add($id) { |
|---|
| 36 | if (isset($this->ids[$id])) return false; |
|---|
| 37 | return $this->ids[$id] = true; |
|---|
| 38 | } |
|---|
| 39 | |
|---|
| 40 | /** |
|---|
| 41 | * Load a list of IDs into the lookup table |
|---|
| 42 | * @param $array_of_ids Array of IDs to load |
|---|
| 43 | * @note This function doesn't care about duplicates |
|---|
| 44 | */ |
|---|
| 45 | public function load($array_of_ids) { |
|---|
| 46 | foreach ($array_of_ids as $id) { |
|---|
| 47 | $this->ids[$id] = true; |
|---|
| 48 | } |
|---|
| 49 | } |
|---|
| 50 | |
|---|
| 51 | } |
|---|
| 52 | |
|---|