| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | <?php// constants are slow, so we use as few as possibleif (!defined('HTMLPURIFIER_PREFIX')) {    define('HTMLPURIFIER_PREFIX', realpath(dirname(__FILE__) . '/..'));}// accomodations for versions earlier than 5.0.2// borrowed from PHP_Compat, LGPL licensed, by Aidan Lister <aidan@php.net>if (!defined('PHP_EOL')) {    switch (strtoupper(substr(PHP_OS, 0, 3))) {        case 'WIN':            define('PHP_EOL', "\r\n");            break;        case 'DAR':            define('PHP_EOL', "\r");            break;        default:            define('PHP_EOL', "\n");    }}/** * Bootstrap class that contains meta-functionality for HTML Purifier such as * the autoload function. * * @note *      This class may be used without any other files from HTML Purifier. */class HTMLPurifier_Bootstrap{    /**     * Autoload function for HTML Purifier     * @param string $class Class to load     * @return bool     */    public static function autoload($class)    {        $file = HTMLPurifier_Bootstrap::getPath($class);        if (!$file) {            return false;        }        // Technically speaking, it should be ok and more efficient to        // just do 'require', but Antonio Parraga reports that with        // Zend extensions such as Zend debugger and APC, this invariant        // may be broken.  Since we have efficient alternatives, pay        // the cost here and avoid the bug.        require_once HTMLPURIFIER_PREFIX . '/' . $file;        return true;    }    /**     * Returns the path for a specific class.     * @param string $class Class path to get     * @return string     */    public static function getPath($class)    {        if (strncmp('HTMLPurifier', $class, 12) !== 0) {            return false;        }        // Custom implementations        if (strncmp('HTMLPurifier_Language_', $class, 22) === 0) {            $code = str_replace('_', '-', substr($class, 22));            $file = 'HTMLPurifier/Language/classes/' . $code . '.php';        } else {            $file = str_replace('_', '/', $class) . '.php';        }        if (!file_exists(HTMLPURIFIER_PREFIX . '/' . $file)) {            return false;        }        return $file;    }    /**     * "Pre-registers" our autoloader on the SPL stack.     */    public static function registerAutoload()    {        $autoload = array('HTMLPurifier_Bootstrap', 'autoload');        if (spl_autoload_functions() === false) {            spl_autoload_register($autoload);        } else {            // prepend flag exists, no need for shenanigans            spl_autoload_register($autoload, true, true);        }    }}// vim: et sw=4 sts=4
 |