Yaffs site version 1.1
[yaffs-website] / vendor / ezyang / htmlpurifier / library / HTMLPurifier / Context.php
1 <?php
2
3 /**
4  * Registry object that contains information about the current context.
5  * @warning Is a bit buggy when variables are set to null: it thinks
6  *          they don't exist! So use false instead, please.
7  * @note Since the variables Context deals with may not be objects,
8  *       references are very important here! Do not remove!
9  */
10 class HTMLPurifier_Context
11 {
12
13     /**
14      * Private array that stores the references.
15      * @type array
16      */
17     private $_storage = array();
18
19     /**
20      * Registers a variable into the context.
21      * @param string $name String name
22      * @param mixed $ref Reference to variable to be registered
23      */
24     public function register($name, &$ref)
25     {
26         if (array_key_exists($name, $this->_storage)) {
27             trigger_error(
28                 "Name $name produces collision, cannot re-register",
29                 E_USER_ERROR
30             );
31             return;
32         }
33         $this->_storage[$name] =& $ref;
34     }
35
36     /**
37      * Retrieves a variable reference from the context.
38      * @param string $name String name
39      * @param bool $ignore_error Boolean whether or not to ignore error
40      * @return mixed
41      */
42     public function &get($name, $ignore_error = false)
43     {
44         if (!array_key_exists($name, $this->_storage)) {
45             if (!$ignore_error) {
46                 trigger_error(
47                     "Attempted to retrieve non-existent variable $name",
48                     E_USER_ERROR
49                 );
50             }
51             $var = null; // so we can return by reference
52             return $var;
53         }
54         return $this->_storage[$name];
55     }
56
57     /**
58      * Destroys a variable in the context.
59      * @param string $name String name
60      */
61     public function destroy($name)
62     {
63         if (!array_key_exists($name, $this->_storage)) {
64             trigger_error(
65                 "Attempted to destroy non-existent variable $name",
66                 E_USER_ERROR
67             );
68             return;
69         }
70         unset($this->_storage[$name]);
71     }
72
73     /**
74      * Checks whether or not the variable exists.
75      * @param string $name String name
76      * @return bool
77      */
78     public function exists($name)
79     {
80         return array_key_exists($name, $this->_storage);
81     }
82
83     /**
84      * Loads a series of variables from an associative array
85      * @param array $context_array Assoc array of variables to load
86      */
87     public function loadArray($context_array)
88     {
89         foreach ($context_array as $key => $discard) {
90             $this->register($key, $context_array[$key]);
91         }
92     }
93 }
94
95 // vim: et sw=4 sts=4