Admin wrapper script
| > Script written by Matt Mecham
| > Date started: 1st March 2002
|
+--------------------------------------------------------------------------
*/
/**
* Main ACP executable wrapper.
*
* Set-up and load module to run
*
* @package InvisionPowerBoard
* @author Matt Mecham
* @version 2.1
*/
/**
* Script type
*
*/
define( 'IPB_THIS_SCRIPT', 'admin' );
define( 'IPB_LOAD_SQL' , 'admin_queries' );
require_once( './init.php' );
//-----------------------------------------------
// USER CONFIGURABLE ELEMENTS
//-----------------------------------------------
// Check IP address to see if they match?
// this may cause problems for users on proxies
// where the IP address changes during a session
$check_ip = 1;
// Use GZIP content encoding for fast page generation
// in the admin center?
$use_gzip = 1;
//===========================================================================
// NO USER EDITABLE SECTIONS BELOW
//===========================================================================
if (function_exists("set_time_limit") == 1 and SAFE_MODE_ON == 0)
{
@set_time_limit(0);
}
//--------------------------------
// Load up our classes
//--------------------------------
require ROOT_PATH . "sources/ipsclass.php";
require ROOT_PATH . "sources/classes/class_session.php";
require ROOT_PATH . "sources/classes/class_forums.php";
require KERNEL_PATH . "class_converge.php";
require ROOT_PATH . "conf_global.php";
require ROOT_PATH . "sources/lib/admin_functions.php";
require ROOT_PATH . "sources/lib/admin_skin.php";
$ipsclass = new ipsclass();
$ipsclass->vars = $INFO;
//--------------------------------
// The clocks a' tickin'
//--------------------------------
$Debug = new Debug;
$Debug->startTimer();
//--------------------------------
// Additional set up
//--------------------------------
if ( defined($ipsclass->vars['safe_mode_skins']) )
{
define( 'SAFE_MODE_SKINS', $ipsclass->vars['safe_mode_skins'] );
}
else
{
define( 'SAFE_MODE_SKINS', SAFE_MODE_ON );
}
//===========================================================================
// Load up our database library
//===========================================================================
$ipsclass->init_db_connection();
//===========================================================================
// Get cache...
//===========================================================================
$ipsclass->init_load_cache( array('rss_export', 'bbcode', 'badwords', 'emoticons', 'settings', 'group_cache', 'systemvars', 'skin_id_cache', 'forum_cache', 'moderators', 'stats') );
//--------------------------------
// Set up classes
//--------------------------------
$ipsclass->sess = new session();
$ipsclass->sess->ipsclass =& $ipsclass;
$ipsclass->forums = new forum_functions();
$ipsclass->forums->ipsclass =& $ipsclass;
//--------------------------------
// Set up incoming array
//--------------------------------
$ipsclass->parse_incoming();
//--------------------------------
// Initialize the FUNC
//--------------------------------
$ipsclass->initiate_ipsclass();
//--------------------------------
// Set converge
//--------------------------------
$ipsclass->converge = new class_converge( $ipsclass->DB );
//--------------------------------
// Message in a bottle?
//--------------------------------
if ( $ipsclass->input['messageinabottleacp'] )
{
$ipsclass->input['messageinabottleacp'] = $ipsclass->clean_evil_tags( $ipsclass->txt_UNhtmlspecialchars( urldecode($ipsclass->input['messageinabottleacp']) ) );
$ipsclass->main_msg = $ipsclass->input['messageinabottleacp'];
}
//--------------------------------
// Fix up base URLs
//--------------------------------
$ipsclass->skin_acp = 'IPB2_Standard';
$ipsclass->base_url = $ipsclass->vars['board_url']."/admin." .$ipsclass->vars['php_ext'].'?adsess='.$ipsclass->input['adsess'];
$ipsclass->skin_url = $ipsclass->vars['board_url']."/skin_acp/".$ipsclass->skin_acp;
//--------------------------------
// Load global ACP skin
//--------------------------------
$ipsclass->skin_global_acp = $ipsclass->acp_load_template('cp_skin_global');
//--------------------------------
// Import Admin Functions
//--------------------------------
$ipsclass->admin = new admin_functions();
$ipsclass->admin->ipsclass =& $ipsclass;
//------------------------------------------------
// Load skin & lang
//------------------------------------------------
$ipsclass->load_skin();
$ipsclass->skin_id = $ipsclass->skin['_setid'];
$ipsclass->vars['img_url'] = 'style_images/' . $ipsclass->skin['_imagedir'];
$ipsclass->vars['AVATARS_URL'] = 'style_avatars';
$ipsclass->vars['EMOTICONS_URL'] = 'style_emoticons/<#EMO_DIR#>';
$ipsclass->vars['mime_img'] = 'style_images/<#IMG_DIR#>/folder_mime_types';
$ipsclass->load_template( 'skin_global' );
$ipsclass->load_language( 'lang_global' );
//------------------------------------------------
// Import Skinable elements
//------------------------------------------------
$ipsclass->adskin = new admin_skin();
$ipsclass->adskin->ipsclass =& $ipsclass;
$ipsclass->adskin->init_admin_skin();
//------------------------------------------------------
// Require..
//------------------------------------------------------
require_once( ROOT_PATH.'sources/lib/admin_cache_functions.php' );
$ipsclass->cache_func = new admin_cache_functions();
$ipsclass->cache_func->ipsclass =& $ipsclass;
//------------------------------------------------------
// Legacy mode?
//------------------------------------------------------
if ( LEGACY_MODE )
{
$DB =& $ipsclass->DB;
$std =& $ipsclass;
$ibforums =& $ipsclass;
$forums =& $ipsclass->forums;
$print =& $ipsclass->print;
$sess =& $ipsclass->sess;
}
//------------------------------------------------------
// ACP Session-ize the member
//------------------------------------------------------
$ipsclass->admin_session = array( '_session_validated' => 0 );
$ipsclass->admin->acp_session_validation( $check_ip );
//------------------------------------------------------
// What are we doing, then?
//------------------------------------------------------
if ( ( $ipsclass->input['act'] != 'login' ) AND ( ! $ipsclass->admin_session['_session_validated'] ) )
{
//------------------------------
// Force log in
//------------------------------
$ipsclass->input['act'] = 'login';
$ipsclass->input['code'] = 'login';
require_once( ROOT_PATH."sources/action_admin/login.php" );
$runme = new ad_login();
$runme->ipsclass =& $ipsclass;
$runme->auto_run();
exit();
}
else if ( strtolower($ipsclass->input['act']) == 'login' )
{
//------------------------------
// Ok - got a log in, kill section
//------------------------------
$ipsclass->input['section'] = '';
}
//------------------------------------------------------
// Re-define base URL
//------------------------------------------------------
$ipsclass->base_url = $ipsclass->vars['board_url']."/admin.".$ipsclass->vars['php_ext'].'?adsess='.$ipsclass->input['adsess'];
//------------------------------------------------------
// What do you want to require today?
//------------------------------------------------------
$choice = array(
'content' => array( 'acp_content' , 'acp_content' , 'content' ),
'lookandfeel' => array( 'acp_lookandfeel' , 'acp_lookandfeel' , 'lookandfeel' ),
'tools' => array( 'acp_tools' , 'acp_tools' , 'tools' ),
'components' => array( 'acp_components' , 'acp_components' , 'components' ),
'admin' => array( 'acp_admin' , 'acp_admin' , 'admin' ),
# Non CP specific action
'xmlout' => array( "xmlout" , 'xmlout' ),
'prefs' => array( "prefs" , 'prefs' ),
'login' => array( 'login' , 'login' ),
'rtempl' => array( 'remote_template' , 'remote_template' ),
'quickhelp' => array( "quickhelp" , 'quickhelp' ),
);
//---------------------------------------------------
// Check to make sure the array key exits..
//---------------------------------------------------
if ( ( ! isset($choice[ $ipsclass->input['section'] ][0]) ) OR ( ! $ipsclass->input['section'] ) )
{
# Got an act?
if ( $choice[ $ipsclass->input['act'] ][0] )
{
require_once( ROOT_PATH.'sources/action_admin/'.$choice[ $ipsclass->input['act'] ][0].'.php' );
$constructor = 'ad_'.$choice[ $ipsclass->input['act'] ][1];
$runmeagain = new $constructor;
$runmeagain->ipsclass =& $ipsclass;
$runmeagain->auto_run();
}
else
{
$ipsclass->input['section'] = 'admin';
}
}
//---------------------------------------------------
// Menu type
//---------------------------------------------------
$ipsclass->menu_type = $choice[ $ipsclass->input['section'] ][2];
//---------------------------------------------------
// Require and run
//---------------------------------------------------
require ROOT_PATH."sources/acp_loaders/".$choice[ $ipsclass->input['section'] ][0].".php";
$runme = new $choice[ $ipsclass->input['section'] ][1];
$runme->ipsclass =& $ipsclass;
$runme->auto_run();
//+-------------------------------------------------
// Skin emergency mode...
//+-------------------------------------------------
function skin_emergency()
{
global $ipsclass;
if ( $_GET['skinrebuild'] == 1 )
{
print "Attempted to rebuild the skins and failed.
Please contact technical support for more assistance.";
exit();
}
//-----------------------------------------
// Rebuild ID cache..
//-----------------------------------------
require_once( ROOT_PATH.'sources/lib/admin_cache_functions.php' );
$adcache = new admin_cache_functions();
$adcache->ipsclass =& $this->ipsclass;
$ipsclass->cache['skin_id_cache'] = $adcache->_rebuild_skin_id_cache();
//-----------------------------------------
// Attempt to recache the default skin
//-----------------------------------------
foreach( $ipsclass->cache['skin_id_cache'] as $sid => $data )
{
if ( $data['set_default'] )
{
$default_skin = $data['set_skin_set_id'];
}
}
//-----------------------------------------
// Load library
//-----------------------------------------
require_once( ROOT_PATH.'sources/lib/admin_cache_functions.php' );
$ipsclass->cache_func = new admin_cache_functions();
$ipsclass->cache_func->ipsclass =& $this->ipsclass;
$ipsclass->cache_func->_rebuild_all_caches( array($default_skin) );
//-----------------------------------------
// Try to turn on safe mode
//-----------------------------------------
if ( ! @file_exists( CACHE_PATH.'cache/skin_cache/cacheid_'.$default_skin.'/skin_global.php' ) )
{
if ( $ipsclass->vars['safe_mode_skins'] != 1 )
{
$ipsclass->DB->do_update( "conf_settings", array( 'conf_value' => 1 ), "conf_key='safe_mode_skins'" );
require_once( ROOT_PATH.'sources/action_admin/settings.php' );
$adsettings = new ad_settings();
$adsettings->ipsclass =& $this->ipsclass;
$adsettings->setting_rebuildcache();
}
}
//-----------------------------------------
// Update panic message
//-----------------------------------------
$ipsclass->DB->simple_exec_query( array( "delete" => "cache_store", "where" => "cs_key='skinpanic'" ) );
$ipsclass->DB->do_insert( 'cache_store', array( 'cs_value' => 'rebuildemergency', 'cs_key' => 'skinpanic' ) );
$ipsclass->boink_it( $ipsclass->base_url.'&skinrebuild=1' );
}
?>