#!/usr/bin/php copyr($dir, 'standalone/' . $dir); } /** * Copies the contents of a file to the standalone directory * @param string $file File to copy */ function make_file_standalone($file) { global $FS; $FS->mkdirr('standalone/' . dirname($file)); copy_and_remove_includes($file, 'standalone/' . $file); return true; } /** * Copies a file to another location recursively, if it is a PHP file * remove includes * @param string $file Original file * @param string $sfile New location of file */ function copy_and_remove_includes($file, $sfile) { $contents = file_get_contents($file); if (strrchr($file, '.') === '.php') $contents = replace_includes($contents); return file_put_contents($sfile, $contents); } /** * @param $matches preg_replace_callback matches array, where index 1 * is the filename to include */ function replace_includes_callback($matches) { $file = $matches[1]; $preserve = array( // PEAR (external) 'XML/HTMLSax3.php' => 1 ); if (isset($preserve[$file])) { return $matches[0]; } if (isset($GLOBALS['loaded'][$file])) return ''; $GLOBALS['loaded'][$file] = true; return replace_includes(remove_php_tags(file_get_contents($file))); } echo 'Generating includes file... '; shell_exec('php generate-includes.php'); echo "done!\n"; chdir(dirname(__FILE__) . '/../library/'); echo 'Creating full file...'; $contents = replace_includes(file_get_contents('HTMLPurifier.includes.php')); $contents = str_replace( // Note that bootstrap is now inside the standalone file "define('HTMLPURIFIER_PREFIX', realpath(dirname(__FILE__) . '/..'));", "define('HTMLPURIFIER_PREFIX', dirname(__FILE__) . '/standalone'); set_include_path(HTMLPURIFIER_PREFIX . PATH_SEPARATOR . get_include_path());", $contents ); file_put_contents('HTMLPurifier.standalone.php', $contents); echo ' done!' . PHP_EOL; echo 'Creating standalone directory...'; $FS->rmdirr('standalone'); // ensure a clean copy // data files $FS->mkdirr('standalone/HTMLPurifier/DefinitionCache/Serializer'); make_dir_standalone('HTMLPurifier/EntityLookup'); make_file_standalone('HTMLPurifier/ConfigSchema/schema.ser'); // non-standard inclusion setup make_dir_standalone('HTMLPurifier/Language'); make_dir_standalone('HTMLPurifier/Filter'); make_file_standalone('HTMLPurifier/Lexer/PH5P.php'); make_file_standalone('HTMLPurifier/Lexer/PEARSax3.php'); echo ' done!' . PHP_EOL;