| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 | 
							- #!/usr/bin/php
 
- <?php
 
- chdir(dirname(__FILE__));
 
- require_once 'common.php';
 
- assertCli();
 
- /**
 
-  * @file
 
-  * Compiles all of HTML Purifier's library files into one big file
 
-  * named HTMLPurifier.standalone.php. This is usually called during the
 
-  * release process.
 
-  */
 
- /**
 
-  * Global hash that tracks already loaded includes
 
-  */
 
- $GLOBALS['loaded'] = array();
 
- /**
 
-  * Custom FSTools for this script that overloads some behavior
 
-  * @warning The overloading of copy() is not necessarily global for
 
-  *          this script. Watch out!
 
-  */
 
- class MergeLibraryFSTools extends FSTools
 
- {
 
-     public function copyable($entry)
 
-     {
 
-         // Skip hidden files
 
-         if ($entry[0] == '.') {
 
-             return false;
 
-         }
 
-         return true;
 
-     }
 
-     public function copy($source, $dest)
 
-     {
 
-         copy_and_remove_includes($source, $dest);
 
-     }
 
- }
 
- $FS = new MergeLibraryFSTools();
 
- /**
 
-  * Replaces the includes inside PHP source code with the corresponding
 
-  * source.
 
-  * @param string $text PHP source code to replace includes from
 
-  */
 
- function replace_includes($text)
 
- {
 
-     // also remove vim modelines
 
-     return preg_replace_callback(
 
-         "/require(?:_once)? ['\"]([^'\"]+)['\"];/",
 
-         'replace_includes_callback',
 
-         $text
 
-     );
 
- }
 
- /**
 
-  * Removes leading PHP tags from included files. Assumes that there is
 
-  * no trailing tag. Also removes vim modelines.
 
-  * @note This is safe for files that have internal <?php
 
-  * @param string $text Text to have leading PHP tag from
 
-  */
 
- function remove_php_tags($text)
 
- {
 
-     $text = preg_replace('#// vim:.+#', '', $text);
 
-     return substr($text, 5);
 
- }
 
- /**
 
-  * Copies the contents of a directory to the standalone directory
 
-  * @param string $dir Directory to copy
 
-  */
 
- function make_dir_standalone($dir)
 
- {
 
-     global $FS;
 
-     return $FS->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_file_standalone('HTMLPurifier/EntityLookup/entities.ser');
 
- make_file_standalone('HTMLPurifier/ConfigSchema/schema.ser');
 
- // non-standard inclusion setup
 
- make_dir_standalone('HTMLPurifier/ConfigSchema');
 
- make_dir_standalone('HTMLPurifier/Language');
 
- make_dir_standalone('HTMLPurifier/Filter');
 
- make_dir_standalone('HTMLPurifier/Printer');
 
- make_file_standalone('HTMLPurifier/Printer.php');
 
- make_file_standalone('HTMLPurifier/Lexer/PH5P.php');
 
- echo ' done!' . PHP_EOL;
 
- // vim: et sw=4 sts=4
 
 
  |