96 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			96 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Registry object that contains information about the current context.
							 | 
						||
| 
								 | 
							
								 * @warning Is a bit buggy when variables are set to null: it thinks
							 | 
						||
| 
								 | 
							
								 *          they don't exist! So use false instead, please.
							 | 
						||
| 
								 | 
							
								 * @note Since the variables Context deals with may not be objects,
							 | 
						||
| 
								 | 
							
								 *       references are very important here! Do not remove!
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								class HTMLPurifier_Context
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Private array that stores the references.
							 | 
						||
| 
								 | 
							
								     * @type array
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    private $_storage = array();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Registers a variable into the context.
							 | 
						||
| 
								 | 
							
								     * @param string $name String name
							 | 
						||
| 
								 | 
							
								     * @param mixed $ref Reference to variable to be registered
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function register($name, &$ref)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        if (array_key_exists($name, $this->_storage)) {
							 | 
						||
| 
								 | 
							
								            trigger_error(
							 | 
						||
| 
								 | 
							
								                "Name $name produces collision, cannot re-register",
							 | 
						||
| 
								 | 
							
								                E_USER_ERROR
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								            return;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $this->_storage[$name] =& $ref;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Retrieves a variable reference from the context.
							 | 
						||
| 
								 | 
							
								     * @param string $name String name
							 | 
						||
| 
								 | 
							
								     * @param bool $ignore_error Boolean whether or not to ignore error
							 | 
						||
| 
								 | 
							
								     * @return mixed
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function &get($name, $ignore_error = false)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        if (!array_key_exists($name, $this->_storage)) {
							 | 
						||
| 
								 | 
							
								            if (!$ignore_error) {
							 | 
						||
| 
								 | 
							
								                trigger_error(
							 | 
						||
| 
								 | 
							
								                    "Attempted to retrieve non-existent variable $name",
							 | 
						||
| 
								 | 
							
								                    E_USER_ERROR
							 | 
						||
| 
								 | 
							
								                );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            $var = null; // so we can return by reference
							 | 
						||
| 
								 | 
							
								            return $var;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return $this->_storage[$name];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Destroys a variable in the context.
							 | 
						||
| 
								 | 
							
								     * @param string $name String name
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function destroy($name)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        if (!array_key_exists($name, $this->_storage)) {
							 | 
						||
| 
								 | 
							
								            trigger_error(
							 | 
						||
| 
								 | 
							
								                "Attempted to destroy non-existent variable $name",
							 | 
						||
| 
								 | 
							
								                E_USER_ERROR
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								            return;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        unset($this->_storage[$name]);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Checks whether or not the variable exists.
							 | 
						||
| 
								 | 
							
								     * @param string $name String name
							 | 
						||
| 
								 | 
							
								     * @return bool
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function exists($name)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return array_key_exists($name, $this->_storage);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Loads a series of variables from an associative array
							 | 
						||
| 
								 | 
							
								     * @param array $context_array Assoc array of variables to load
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function loadArray($context_array)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        foreach ($context_array as $key => $discard) {
							 | 
						||
| 
								 | 
							
								            $this->register($key, $context_array[$key]);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// vim: et sw=4 sts=4
							 |