diff options
Diffstat (limited to 'devel-utf8/it_auto_prepend.php')
-rw-r--r-- | devel-utf8/it_auto_prepend.php | 245 |
1 files changed, 0 insertions, 245 deletions
diff --git a/devel-utf8/it_auto_prepend.php b/devel-utf8/it_auto_prepend.php deleted file mode 100644 index 36946ee..0000000 --- a/devel-utf8/it_auto_prepend.php +++ /dev/null @@ -1,245 +0,0 @@ -<?php -/* -** $Id$ -** -** Copyright (C) 1995-2007 by the ITools Authors. -** This file is part of ITools - the Internet Tools Library -** -** ITools is free software; you can redistribute it and/or modify -** it under the terms of the GNU General Public License as published by -** the Free Software Foundation; either version 3 of the License, or -** (at your option) any later version. -** -** ITools is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU General Public License for more details. -** -** You should have received a copy of the GNU General Public License -** along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -$GLOBALS['ULTRATIME'] = gettimeofday(); -unset($GLOBALS['IT_SYNTAXCONVERTER_DIR']); # Security measure for register_globals on - -#$debug_itclassloader = true; -if ($it_convertedmainfile = it_initialize()) -{ - require($it_convertedmainfile); - exit; -} - -function it_initialize() -{ - $result = false; - static $it_initrecursion; - - if (!$it_initrecursion++) - { - register_shutdown_function('it_shutdown'); - $error_reporting = error_reporting(); - error_reporting($error_reporting & ~E_NOTICE); # ITools is not (unpatched) E_NOTICE safe - $it_path = dirname(__FILE__); - - if ($webmode = $_SERVER['REMOTE_ADDR']) # Web? - { - $GLOBALS['ULTRAHOME'] = dirname($_SERVER['DOCUMENT_ROOT']); - umask(0002); # Work around bugs.php.net/bug.php?id=28401 - $_SERVER['HTTP_HOST'] = strtolower($_SERVER['HTTP_HOST']); - } - else # Shell - $GLOBALS['ULTRAHOME'] = dirname(dirname(preg_match('|^/|', $argv[0]) ? $argv[0] : getcwd() . '/' . $argv[0])); - - $include_path = ini_get('include_path'); - - @set_error_handler("it_errorhandler", E_USER_ERROR | E_RECOVERABLE_ERROR | E_WARNING | E_USER_WARNING | E_NOTICE | E_USER_NOTICE); - error_reporting($error_reporting); # Restore user setting once we installed error handler - - if (function_exists('spl_autoload_register') && spl_autoload_register('it_classloader')) - { - ini_set('include_path', $it_path . PATH_SEPARATOR . $include_path); - require_once("$it_path/auto_prepend.php"); - - if (file_exists("$it_path/auto_prepend_local.php")) - require_once("$it_path/auto_prepend_local.php"); - } - else - { - ini_set('include_path', "$it_path/.." . PATH_SEPARATOR . $include_path); - require("itools.lib"); # PHP 4 fallback - } - - # IT_HOME is recommended variable name for applications - $GLOBALS['IT_HOME'] = $GLOBALS['ULTRAHOME'] = it_untaint($GLOBALS['ULTRAHOME'], TC_ALL); - - $needsconvert = $GLOBALS['IT_SYNTAXCONVERTER_DIR'] !== false && !@eval("return is_array(42=>69,);"); # Check if PHP is patched to support our syntax, see http://cschneid.com/php/ - - if ($needsconvert && !$GLOBALS['IT_SYNTAXCONVERTER_DIR']) - { - $GLOBALS['IT_SYNTAXCONVERTER_DIR'] = $GLOBALS['ULTRAHOME'] . "/tmp"; - - if (!is_writeable($GLOBALS['IT_SYNTAXCONVERTER_DIR']) || !function_exists("posix_geteuid") || posix_geteuid() != fileowner($GLOBALS['IT_SYNTAXCONVERTER_DIR'])) - die(($webmode ? "<pre>" : "") . "Seems to be running in shared environment, manually set\n\$GLOBALS['IT_SYNTAXCONVERTER_DIR'] in $it_path/auto_prepend_local.php\nto either:\n a) FALSE (syntax conversion disabled) or\n b) the path to a writeable directory (NOTE: THIS IS UNSAFE!) or\n c) install the PHP patch from http://cschneid.com/php/\n" . ($webmode ? "</pre>" : "")); - } - - ini_set('include_path', ($GLOBALS['IT_SYNTAXCONVERTER_DIR'] ? $GLOBALS['IT_SYNTAXCONVERTER_DIR'] . "/it_syntaxconverter" . PATH_SEPARATOR : '') . $it_path . PATH_SEPARATOR . $include_path); - $user_includes = explode(PATH_SEPARATOR, $include_path); - - # XXX Note: Comment this out if you want system wide include path converted and auto_prepend.php considered - $user_includes = array_diff($user_includes, array_diff(explode(PATH_SEPARATOR, get_cfg_var('include_path')), array("."))); - - foreach (array_reverse($user_includes) as $include) - { - if ($include == ".") - $include = dirname($_SERVER['SCRIPT_FILENAME']); - - if ($needsconvert) - it_convert($include); - - if (@file_exists($autoprepend = "$include/auto_prepend.php")) - { - if ($needsconvert && ($include != $it_path)) - $autoprepend = it_convert($autoprepend); - - require_once($autoprepend); - - if (file_exists("$include/auto_prepend_local.php")) - require_once("$include/auto_prepend_local.php"); - } - } - - if (!isset($GLOBALS['it_html'])) - new it_html; - - if ($needsconvert) - { - # Convert syntax (we will return name of converted script to global context to start it there) - $result = it_convert(it_untaint($_SERVER['SCRIPT_FILENAME'], TC_SELF)); - } - } - - return $result; -} - -function it_convert($source) -{ - $sourcerelpath = it::replace(array('^(/|\w:)' => ""), $source); # Remove leading / or C: - - if (@is_dir($source)) - { - if (!@is_link($source) && !file_exists("$source/.no_it_syntaxconvert")) - { - ini_set('include_path', $GLOBALS['IT_SYNTAXCONVERTER_DIR'] . "/it_syntaxconverter/$sourcerelpath" . PATH_SEPARATOR . ini_get('include_path')); - foreach (glob("$source/*") as $file) - it_convert($file); - } - } - else if (@is_readable($source)) - { - $converted = $GLOBALS['IT_SYNTAXCONVERTER_DIR'] . "/it_syntaxconverter/$sourcerelpath"; - $stat = @lstat($converted); - $mtimeconverted = $stat[9]; - - if ($mtimeconverted < filemtime($source)) - { - if ($changed = filesize($source) < 200000) # Do not attempt to convert anything above 200k to avoid large memory consumption - { - $converter = new it_syntaxconverter(file_get_contents($source)); - $parts = explode("/", dirname($converted)); - - for ($i = 1; $i <= count($parts); $i++) - @mkdir(join("/", array_slice($parts, 0, $i)), 0700); - - if ($changed = $converter->changes) - { - @unlink($converted); - if ($output = fopen($converted, "w")) - { - fputs($output, $converter->output); - fclose($output); - } - } - } - - if (!$changed) # Link to original file if no changes made - { - @unlink($converted); - $symlink = function_exists("symlink") ? "symlink" : "copy"; # symlink() does not exist on Windows - $symlink(realpath($source), $converted); - } - - clearstatcache(); - } - } - - return $converted; -} - -function it_classloader($classname) -{ - if (!preg_match('/:/', $classname) && ($file = @fopen("$classname.class", "r", true))) # Check if file is local (does not contain ':', i.e. no protocol like http:) for file in include path, do not use @include to get failures on inheritance - { - include("$classname.class"); - fclose($file); - } - else - it_dbi::createclass($classname); - - EDC('ultraclassloader', $classname, it_debug::backtrace()); -} - -function it_errorhandler($errno, $errstr, $errfile, $errline, $errcontext) -{ - $error_reporting = error_reporting(0); # Disable error reporting while handling error - - if ($result = $error_reporting & $errno) # Is this error enabled? - { - static $it_errnames = array(); - - if (!$it_errnames) - { - foreach (get_defined_constants() as $name => $no) - { - if (preg_match('/^E_/', $name)) - $it_errnames[$no] = "$name: "; - } - } - - $error = array( - 'title' => $it_errnames[$errno] . $errstr, - 'locals' => $errcontext, - 'file' => $errfile, - 'line' => $errline, - 'backtraceskip' => 1, - ); - - switch ($errno) - { - case E_USER_ERROR: case E_RECOVERABLE_ERROR: - it::fatal($error); - break; - - case E_NOTICE: - if ((dirname($errfile) == dirname(__FILE__)) && preg_match('/undefined|non-object/i', $errstr)) - { - $result = true; # Silence E_NOTICE about undefined stuff in ITools files - break; - } - # FALLTHROUGH - - default: - it::error($error); - break; - } - } - - error_reporting($error_reporting); - - return $result; # True means do not execute standard PHP error handler -} - -function it_shutdown() -{ - if (isset($GLOBALS['debug_timerlog']) && !empty($GLOBALS['ULTRATIMERLOG'])) - it::log('timerlog', $_SERVER['REQUEST_URI'] . "\t" . substr($GLOBALS['ULTRATIMERLOG'], 1)); -} |