0
0
mirror of https://github.com/ezyang/htmlpurifier.git synced 2024-12-23 00:41:52 +00:00

Add support for autoload. We're not, however, using it by default.

git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@1511 48356398-32a2-884e-a903-53898d9a118a
This commit is contained in:
Edward Z. Yang 2008-01-21 18:43:59 +00:00
parent ff72b2d012
commit 43a5ef3cc6
6 changed files with 29 additions and 7 deletions

3
NEWS
View File

@ -9,7 +9,8 @@ NEWS ( CHANGELOG and HISTORY ) HTMLPurifier
. Internal change . Internal change
========================== ==========================
3.0.1, unknown release date 3.1.0, unknown release date
! Autoload support added
- Autoclose now operates iteratively, i.e. <span><span><div> now has - Autoclose now operates iteratively, i.e. <span><span><div> now has
both span tags closed. both span tags closed.
. Plugins now get their own changelogs according to project conventions. . Plugins now get their own changelogs according to project conventions.

View File

@ -6,4 +6,4 @@
set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path() ); set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path() );
require_once 'HTMLPurifier.php'; require_once 'HTMLPurifier.php';
require_once 'HTMLPurifier.autoload.php';

View File

@ -0,0 +1,7 @@
<?php
if (function_exists('spl_autoload_register')) {
spl_autoload_register(array('HTMLPurifier', 'autoload'));
} elseif (!function_exists('__autoload')) {
function __autoload($class) {return HTMLPurifier::autoload($class);}
}

View File

@ -227,7 +227,21 @@ class HTMLPurifier
return $htmlpurifier; return $htmlpurifier;
} }
/**
* Autoload function for HTML Purifier
* @param $class Class to load
*/
public static function autoload($class) {
if (strncmp('HTMLPurifier', $class, 12) !== 0) return false;
// Language classes have an unusual directory structure
if (strncmp('HTMLPurifier_Language_', $class, 22) === 0) {
$code = str_replace('_', '-', substr($class, 22));
require_once 'HTMLPurifier/Language/classes/' . $code . '.php';
return true;
}
require_once str_replace('_', '/', $class) . '.php';
return true;
}
} }

View File

@ -109,12 +109,12 @@ class HTMLPurifier_LanguageFactory
// PHP5/APC deps bug workaround can go here // PHP5/APC deps bug workaround can go here
// you can bypass the conditional include by loading the // you can bypass the conditional include by loading the
// file yourself // file yourself
if (file_exists($file) && !class_exists($class)) { if (file_exists($file) && !class_exists($class, false)) {
include_once $file; include_once $file;
} }
} }
if (!class_exists($class)) { if (!class_exists($class, false)) {
// go fallback // go fallback
$fallback = HTMLPurifier_LanguageFactory::getFallbackFor($code); $fallback = HTMLPurifier_LanguageFactory::getFallbackFor($code);
$depth++; $depth++;

View File

@ -4,7 +4,7 @@
// a little jumping through hoops to generate them // a little jumping through hoops to generate them
function generate_mock_once($name) { function generate_mock_once($name) {
$mock_name = $name . 'Mock'; $mock_name = $name . 'Mock';
if (class_exists($mock_name)) return false; if (class_exists($mock_name, false)) return false;
Mock::generate($name, $mock_name); Mock::generate($name, $mock_name);
} }