546 lines
12 KiB
PHP
546 lines
12 KiB
PHP
<?php
|
|
|
|
/**
|
|
* <pre>
|
|
* Invision Power Services
|
|
* IP.Board v3.4.8
|
|
* INIT File - Sets up globals
|
|
* Last Updated: $Date: 2013-05-20 16:38:23 -0400 (Mon, 20 May 2013) $
|
|
* </pre>
|
|
*
|
|
* @author $Author: bfarber $
|
|
* @copyright (c) 2001 - 2008 Invision Power Services, Inc.
|
|
* @license http://www.invisionpower.com/company/standards.php#license
|
|
* @package IP.Board
|
|
* @link http://www.invisionpower.com
|
|
* @version $Rev: 12261 $
|
|
*
|
|
*/
|
|
|
|
// Get constants.php if it exists - this can be used to
|
|
// override any of the constants defined in this file without
|
|
// being overwritten when IP.Board is updated
|
|
|
|
if ( is_file( dirname( __FILE__ ) . '/constants.php' ) )
|
|
{
|
|
require_once( dirname( __FILE__ ) . '/constants.php' );/*noLibHook*/
|
|
}
|
|
|
|
if ( @function_exists( 'memory_get_usage' ) )
|
|
{
|
|
define( 'IPS_MEMORY_START', memory_get_usage() );
|
|
}
|
|
|
|
//--------------------------------------------------------------------------
|
|
// USER CONFIGURABLE ELEMENTS: FOLDER AND FILE NAMES
|
|
//--------------------------------------------------------------------------
|
|
|
|
/**
|
|
* CP_DIRECTORY
|
|
*
|
|
* The name of the CP directory
|
|
* @since 2.0.0.2005-01-01
|
|
*/
|
|
if ( !defined( 'CP_DIRECTORY' ) )
|
|
{
|
|
define( 'CP_DIRECTORY', 'admin' );
|
|
}
|
|
|
|
/**
|
|
* PUBLIC_DIRECTORY
|
|
*
|
|
* The name of the public directory
|
|
*/
|
|
if ( !defined( 'PUBLIC_DIRECTORY' ) )
|
|
{
|
|
define( 'PUBLIC_DIRECTORY', 'public' );
|
|
}
|
|
|
|
/**
|
|
* Default app name
|
|
* You can set this in your own scripts before 'initdata.php' is required.
|
|
*/
|
|
if ( ! defined( 'IPS_DEFAULT_PUBLIC_APP' ) )
|
|
{
|
|
define( 'IPS_DEFAULT_PUBLIC_APP', 'forums' );
|
|
}
|
|
|
|
/**
|
|
* Set is-shell if sapi name is cli
|
|
*/
|
|
if( php_sapi_name() == "cli" && !defined('IPS_IS_SHELL') )
|
|
{
|
|
define( 'IPS_IS_SHELL', true );
|
|
}
|
|
|
|
/**
|
|
* PUBLIC SCRIPT
|
|
*/
|
|
if ( ! defined( 'IPS_PUBLIC_SCRIPT' ) )
|
|
{
|
|
if ( defined( 'IPS_IS_SHELL' ) and IPS_IS_SHELL === TRUE )
|
|
{
|
|
define( 'IPS_PUBLIC_SCRIPT', 'index.php' );
|
|
}
|
|
else
|
|
{
|
|
define( 'IPS_PUBLIC_SCRIPT', strtolower( basename( $_SERVER['SCRIPT_NAME'] ) ) );
|
|
}
|
|
}
|
|
|
|
//--------------------------------------------------------------------------
|
|
// USER CONFIGURABLE ELEMENTS: MAIN PATHS
|
|
//--------------------------------------------------------------------------
|
|
|
|
/**
|
|
* "PUBLIC" ROOT PATH
|
|
*/
|
|
if ( !defined( 'DOC_IPS_ROOT_PATH' ) )
|
|
{
|
|
define( 'DOC_IPS_ROOT_PATH', str_replace( "\\", "/", dirname( __FILE__ ) ) . '/' );
|
|
}
|
|
|
|
/**
|
|
* "ADMIN" ROOT PATH
|
|
*/
|
|
if ( !defined( 'IPS_ROOT_PATH' ) )
|
|
{
|
|
define( 'IPS_ROOT_PATH', DOC_IPS_ROOT_PATH . CP_DIRECTORY . "/" );
|
|
}
|
|
|
|
//--------------------------------------------------------------------------
|
|
// USER CONFIGURABLE ELEMENTS: OTHER PATHS
|
|
//--------------------------------------------------------------------------
|
|
|
|
/**
|
|
* PUBLIC PATH
|
|
*/
|
|
if ( !defined( 'IPS_PUBLIC_PATH' ) )
|
|
{
|
|
define( 'IPS_PUBLIC_PATH', DOC_IPS_ROOT_PATH . PUBLIC_DIRECTORY . '/' );
|
|
}
|
|
|
|
/**
|
|
* IPS KERNEL PATH
|
|
*/
|
|
if ( !defined( 'IPS_KERNEL_PATH' ) )
|
|
{
|
|
define( 'IPS_KERNEL_PATH', DOC_IPS_ROOT_PATH . 'ips_kernel/' );
|
|
}
|
|
|
|
/**
|
|
* Custom log in path
|
|
*/
|
|
if ( !defined( 'IPS_PATH_CUSTOM_LOGIN' ) )
|
|
{
|
|
define( 'IPS_PATH_CUSTOM_LOGIN' , IPS_ROOT_PATH . 'sources/loginauth' );
|
|
}
|
|
|
|
/**
|
|
* HOOKS PATH
|
|
*/
|
|
if ( !defined( 'IPS_HOOKS_PATH' ) )
|
|
{
|
|
define( 'IPS_HOOKS_PATH' , DOC_IPS_ROOT_PATH . 'hooks/' );
|
|
}
|
|
|
|
/**
|
|
* Cache path before settings are loaded
|
|
*/
|
|
if( !defined( 'IPS_TEMP_CACHE_PATH' ) )
|
|
{
|
|
define( 'IPS_TEMP_CACHE_PATH', DOC_IPS_ROOT_PATH );
|
|
}
|
|
|
|
# Allow to override path for furlCache.php and globalCaches.php
|
|
if( !defined( 'FURL_CACHE_PATH' ) )
|
|
{
|
|
define( 'FURL_CACHE_PATH', DOC_IPS_ROOT_PATH . 'cache/furlCache.php' );
|
|
}
|
|
|
|
if( !defined( 'GLOBAL_CACHE_PATH' ) )
|
|
{
|
|
define( 'GLOBAL_CACHE_PATH', DOC_IPS_ROOT_PATH . 'cache/globalCaches.php' );
|
|
}
|
|
|
|
@set_include_path( @get_include_path() . PATH_SEPARATOR . IPS_KERNEL_PATH );
|
|
|
|
//--------------------------------------------------------------------------
|
|
// USER CONFIGURABLE ELEMENTS: USER LOCATION
|
|
//--------------------------------------------------------------------------
|
|
|
|
if( preg_match( "#/" . CP_DIRECTORY . "(/|$)#", $_SERVER['PHP_SELF'] ) AND defined('IPB_THIS_SCRIPT') AND IPB_THIS_SCRIPT == 'admin' )
|
|
{
|
|
define( 'IPS_AREA', 'admin' );
|
|
}
|
|
else
|
|
{
|
|
define( 'IPS_AREA', 'public' );
|
|
}
|
|
|
|
if ( !defined( 'IN_ACP' ) )
|
|
{
|
|
define( 'IN_ACP', IPS_AREA == 'public' ? 0 : 1 );
|
|
}
|
|
|
|
/**
|
|
* Default Application if one is not specified in the URL / POST, etc
|
|
*
|
|
*/
|
|
if ( ! defined( 'IPS_DEFAULT_APP' ) )
|
|
{
|
|
define( 'IPS_DEFAULT_APP', ( IPS_AREA == 'public' ) ? IPS_DEFAULT_PUBLIC_APP : 'core' );
|
|
}
|
|
|
|
//--------------------------------------------------------------------------
|
|
// ADVANCED CONFIGURATION: DEBUG
|
|
//--------------------------------------------------------------------------
|
|
|
|
/**
|
|
* E_NOTICE / E_ALL Debug mode
|
|
* Can capture and / or log php errors to a file (cache/phpNotices.cgi)
|
|
* use 'TRUE' to capture all or enter comma sep. list of classes to capture, like
|
|
* define( 'IPS_ERROR_CAPTURE', 'classItemMarking,publicSessions' );
|
|
* Set to 'FALSE' for off
|
|
*/
|
|
if ( ! defined( 'IPS_ERROR_CAPTURE' ) )
|
|
{
|
|
define( 'IPS_ERROR_CAPTURE', false );//'classItemMarking,publicSessions' );
|
|
}
|
|
|
|
/**
|
|
* SQL DEBUG MODE
|
|
*
|
|
* Turns on SQL debugging mode to review queries on the board. This is NOT recommended
|
|
* as it opens your board up to potential security risks
|
|
* @since 2.2.0.2006-11-06
|
|
*/
|
|
if ( ! defined( 'IPS_SQL_DEBUG_MODE' ) )
|
|
{
|
|
define( 'IPS_SQL_DEBUG_MODE', 0 );
|
|
}
|
|
|
|
/**
|
|
* SQL DEBUG MODE LOGGING
|
|
*
|
|
* Turns on SQL debugging mode which logs all SQL to cache/. This is NOT recommended
|
|
* as it opens your board up to potential security risks
|
|
* @since 2.2.0.2006-11-06
|
|
*/
|
|
if ( ! defined( 'IPS_SQL_DEBUG_LOG' ) )
|
|
{
|
|
define( 'IPS_SQL_DEBUG_LOG', 0 );
|
|
}
|
|
|
|
/**
|
|
* SQL LOG FILESORT or TEMP TABLES MODE
|
|
*
|
|
* Logs all queries using filesort and/or temp tables
|
|
*/
|
|
if ( ! defined( 'IPS_SQL_FIND_EVIL_MODE' ) )
|
|
{
|
|
define( 'IPS_SQL_FIND_EVIL_MODE', false );
|
|
}
|
|
|
|
/**
|
|
* SQL FIND SLOW QUERIES MODE
|
|
*
|
|
* Logs all queries that take longer than X seconds (0.1), etc
|
|
*/
|
|
if ( ! defined( 'IPS_SQL_FIND_SLOW_MODE' ) )
|
|
{
|
|
define( 'IPS_SQL_FIND_SLOW_MODE', false );
|
|
}
|
|
|
|
/**
|
|
* MEMORY DEBUG MODE
|
|
*
|
|
* Turns on MEMORY debugging mode. This is NOT recommended
|
|
* as it opens your board up to potential security risks
|
|
* @since 2.2.0.2006-11-06
|
|
*/
|
|
if ( ! defined( 'IPS_MEMORY_DEBUG_MODE' ) )
|
|
{
|
|
define( 'IPS_MEMORY_DEBUG_MODE', 0 );
|
|
}
|
|
|
|
/*
|
|
* Write to a general debug file?
|
|
* IP.Board has debug messages that are sent to the log.
|
|
* The log file will fill VERY quickly, so leave this off unless you
|
|
* are debugging, etc
|
|
*/
|
|
if ( ! defined( 'IPS_LOG_ALL' ) )
|
|
{
|
|
define( 'IPS_LOG_ALL', FALSE );
|
|
}
|
|
|
|
if ( ! defined( 'IPS_XML_RPC_DEBUG_ON' ) )
|
|
{
|
|
/**
|
|
* Write to debug file?
|
|
* Enter relative / full path into the constant below
|
|
* Remove contents to turn off debugging.
|
|
* WARNING: If you are passing passwords and such via XML_RPC
|
|
* AND wish to debug, ensure that the debug file ends with .php
|
|
* to prevent it loading as plain text via HTTP which would show
|
|
* the entire contents of the file.
|
|
* @since 2.2.0.2006-11-06
|
|
*/
|
|
define( 'IPS_XML_RPC_DEBUG_ON' , 0 );
|
|
define( 'IPS_XML_RPC_DEBUG_FILE', str_replace( "\\", "/", dirname( __FILE__ ) ) ."/" . 'cache/xmlrpc_debug_ipboard.cgi' );
|
|
}
|
|
|
|
//--------------------------------------------------------------------------
|
|
// ADVANCED CONFIGURATION: ACP
|
|
//--------------------------------------------------------------------------
|
|
|
|
/**
|
|
* Allow IP address matching when dealing with ACP sessions
|
|
* @since 2.2.0.2006-06-30
|
|
*/
|
|
if ( ! defined( 'IPB_ACP_IP_MATCH' ) )
|
|
{
|
|
define( 'IPB_ACP_IP_MATCH', 1 );
|
|
}
|
|
|
|
/**
|
|
* Number of minutes of inactivity in ACP before you are timed out
|
|
* @since 3.0.0
|
|
*/
|
|
if ( ! defined( 'IPB_ACP_SESSION_TIME_OUT' ) )
|
|
{
|
|
define( 'IPB_ACP_SESSION_TIME_OUT', 60 );
|
|
}
|
|
|
|
/**
|
|
* Use GZIP page compression in the ACP
|
|
* @since 2.2.0.2006-06-30
|
|
*/
|
|
if( !@ini_get('zlib.output_compression') )
|
|
{
|
|
define( 'IPB_ACP_USE_GZIP', 1 );
|
|
}
|
|
else
|
|
{
|
|
define( 'IPB_ACP_USE_GZIP', 0 );
|
|
}
|
|
|
|
//--------------------------------------------------------------------------
|
|
// ADVANCED CONFIGURATION: MISC
|
|
//--------------------------------------------------------------------------
|
|
|
|
/**
|
|
* USE SHUT DOWN
|
|
*
|
|
* Enable shut down features?
|
|
* Uses PHPs register_shutdown_function to save
|
|
* low priority tasks until end of exec
|
|
* @since 2.0.0.2005-01-01
|
|
*/
|
|
if ( ! defined( 'IPS_USE_SHUTDOWN' ) )
|
|
{
|
|
define( 'IPS_USE_SHUTDOWN', IPS_AREA == 'public' ? 1 : 0 );
|
|
}
|
|
|
|
/**
|
|
* Allow UNICODE
|
|
*/
|
|
if ( ! defined( 'IPS_ALLOW_UNICODE' ) )
|
|
{
|
|
define( 'IPS_ALLOW_UNICODE', 1 );
|
|
}
|
|
|
|
/**
|
|
* File and folder permissions
|
|
*/
|
|
if ( ! defined( 'IPS_FILE_PERMISSION' ) )
|
|
{
|
|
define( 'IPS_FILE_PERMISSION', 0777 );
|
|
}
|
|
if ( ! defined( 'IPS_FOLDER_PERMISSION' ) )
|
|
{
|
|
define( 'IPS_FOLDER_PERMISSION', 0777 );
|
|
}
|
|
|
|
/**
|
|
* Time now stamp
|
|
*/
|
|
if ( ! defined( 'IPS_UNIX_TIME_NOW' ) )
|
|
{
|
|
define( 'IPS_UNIX_TIME_NOW', time() );
|
|
}
|
|
|
|
/* Min PHP version number */
|
|
if ( ! defined( 'MIN_PHP_VERS' ) )
|
|
{
|
|
define( 'MIN_PHP_VERS', '5.2.0' );
|
|
}
|
|
//--------------------------------------------------------------------------
|
|
// ADVANCED CONFIGURATION: MAGIC QUOTES
|
|
//--------------------------------------------------------------------------
|
|
|
|
@set_magic_quotes_runtime(0);
|
|
|
|
if ( ! defined( 'IPS_MAGIC_QUOTES' ) )
|
|
{
|
|
define( 'IPS_MAGIC_QUOTES', @get_magic_quotes_gpc() );
|
|
}
|
|
|
|
//--------------------------------------------------------------------------
|
|
// ADVANCED CONFIGURATION: ERROR REPORTING
|
|
//--------------------------------------------------------------------------
|
|
|
|
error_reporting( E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_RECOVERABLE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_USER_WARNING );
|
|
|
|
//--------------------------------------------------------------------------
|
|
// XX NOTHING USER CONFIGURABLE XX NOTHING USER CONFIGURABLE XX
|
|
//--------------------------------------------------------------------------
|
|
|
|
/**
|
|
* IN IPB
|
|
*/
|
|
define( 'IN_IPB', 1 );
|
|
|
|
/**
|
|
* SAFE MODE
|
|
*/
|
|
if ( IPS_AREA != 'public' )
|
|
{
|
|
if ( function_exists('ini_get') )
|
|
{
|
|
$test = @ini_get("safe_mode");
|
|
|
|
define( 'SAFE_MODE_ON', ( $test === TRUE OR $test == 1 OR $test == 'on' ) ? 1 : 0 );
|
|
}
|
|
else
|
|
{
|
|
define( 'SAFE_MODE_ON', 1 );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
define( 'SAFE_MODE_ON', 0 );
|
|
}
|
|
|
|
//--------------------------------------------------------------------------
|
|
// NON-CONFIGURABLE: Attempt to sort out some defaults
|
|
//--------------------------------------------------------------------------
|
|
|
|
define( 'ORIGINAL_TIME_LIMIT', @ini_get('max_execution_time') ? @ini_get('max_execution_time') : 0 );
|
|
|
|
if ( @function_exists("set_time_limit") == 1 and SAFE_MODE_ON == 0 )
|
|
{
|
|
if ( ( defined('IPS_IS_SHELL') AND IPS_IS_SHELL ) OR ( IPS_AREA != 'public' ) )
|
|
{
|
|
@set_time_limit(0);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Fix for PHP 5.1.x warning
|
|
*
|
|
* Sets default time zone to server time zone
|
|
* @since 2.2.0.2006-05-19
|
|
*/
|
|
if ( function_exists( 'date_default_timezone_set' ) and !defined( 'DO_NOT_SET_TIMEZONE' ) ) // bug report 25566
|
|
{
|
|
if ( ! @date_default_timezone_get() )
|
|
{
|
|
date_default_timezone_set( @ini_get('date.timezone') ? ini_get('date.timezone') : 'UTC' );
|
|
}
|
|
else
|
|
{
|
|
date_default_timezone_set( 'UTC' );
|
|
}
|
|
}
|
|
|
|
//--------------------------------------------------------------------------
|
|
// NON-CONFIGURABLE: Global Functions
|
|
//--------------------------------------------------------------------------
|
|
|
|
/**
|
|
* Get an environment variable value
|
|
*
|
|
* Abstract layer allows us to user $_SERVER or getenv()
|
|
*
|
|
* @param string Env. Variable key
|
|
* @return string
|
|
* @since 2.2
|
|
*/
|
|
function my_getenv($key)
|
|
{
|
|
$return = array();
|
|
|
|
if ( is_array( $_SERVER ) AND count( $_SERVER ) )
|
|
{
|
|
if( isset( $_SERVER[$key] ) )
|
|
{
|
|
$return = $_SERVER[$key];
|
|
}
|
|
}
|
|
|
|
if ( ! $return )
|
|
{
|
|
$return = getenv($key);
|
|
}
|
|
|
|
return $return;
|
|
}
|
|
|
|
/**
|
|
* json_encode function if not available in PHP
|
|
*
|
|
* @param mixed Anything, really
|
|
* @return string
|
|
* @since 3.0
|
|
*/
|
|
if (!function_exists('json_encode'))
|
|
{
|
|
function json_encode( $a, $flag=null )
|
|
{
|
|
require_once( IPS_KERNEL_PATH . 'PEAR/JSON/JSON.php' );/*noLibHook*/
|
|
|
|
$json = new Services_JSON();
|
|
|
|
return $json->encode( $a );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* json_encode function if not available in PHP
|
|
*
|
|
* @param mixed Anything, really
|
|
* @return string
|
|
* @since 3.0
|
|
*/
|
|
if (!function_exists('json_decode'))
|
|
{
|
|
function json_decode( $a, $assoc=false )
|
|
{
|
|
require_once( IPS_KERNEL_PATH . 'PEAR/JSON/JSON.php' );/*noLibHook*/
|
|
|
|
if ( $assoc === TRUE )
|
|
{
|
|
$json = new Services_JSON( SERVICES_JSON_LOOSE_TYPE );
|
|
}
|
|
else
|
|
{
|
|
$json = new Services_JSON();
|
|
}
|
|
|
|
return $json->decode( $a );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Exception error handler
|
|
*/
|
|
function IPS_exception_error( $error )
|
|
{
|
|
@header( "Content-type: text/plain" );
|
|
print $error;
|
|
exit();
|
|
}
|
|
|
|
?>
|