Version 2.2.0 RC-1
This commit is contained in:
1 parent
f73f8bff6d
commit
22f1b963ee
1034 files changed
+178610
-70897
No files matched your search
@@ -0,0 +1,390 @@
|
||||
<?php
|
||||
/**
|
||||
* Invision Power Board
|
||||
* Invision Installer Framework
|
||||
*/
|
||||
|
||||
class application_installer extends class_installer
|
||||
{
|
||||
/**
|
||||
* application_installer::set_requirements
|
||||
*
|
||||
* Sets the requirements for this app
|
||||
*
|
||||
*/
|
||||
function set_requirements()
|
||||
{
|
||||
//-----------------------------------------
|
||||
// INIT
|
||||
//-----------------------------------------
|
||||
|
||||
$wfiles = array();
|
||||
$wdirs = array( 0 => INS_ROOT_PATH . 'installfiles' );
|
||||
|
||||
//-----------------------------------------
|
||||
// Basics
|
||||
//-----------------------------------------
|
||||
|
||||
$this->version_php_min = '4.3.0';
|
||||
$this->version_mysql_min = '3.23.33';
|
||||
|
||||
//-----------------------------------------
|
||||
// Grab XML file and check
|
||||
//-----------------------------------------
|
||||
|
||||
if ( file_exists( INS_ROOT_PATH . 'installfiles/writeablefiles.xml' ) )
|
||||
{
|
||||
$config = implode( '', file( INS_ROOT_PATH . 'installfiles/writeablefiles.xml' ) );
|
||||
$xml = new class_xml();
|
||||
|
||||
$config = $xml->xml_parse_document( $config );
|
||||
|
||||
//-----------------------------------------
|
||||
// Loop through and sort out settings...
|
||||
//-----------------------------------------
|
||||
|
||||
foreach( $xml->xml_array['installdata']['file'] as $id => $entry )
|
||||
{
|
||||
if ( preg_match( "#\.\w{3,}$#si", $entry['path']['VALUE'] ) )
|
||||
{
|
||||
$wfiles[] = INS_DOC_ROOT_PATH . $entry['path']['VALUE'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$wdirs[] = INS_DOC_ROOT_PATH . $entry['path']['VALUE'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->set_writeable( $wdirs, $wfiles );
|
||||
}
|
||||
|
||||
/**
|
||||
* application_installer::write_configuration
|
||||
*
|
||||
* Writes the configuration files for this app
|
||||
*
|
||||
*/
|
||||
function write_configuration()
|
||||
{
|
||||
//-----------------------------------------
|
||||
// Safe mode?
|
||||
//-----------------------------------------
|
||||
|
||||
$safe_mode = 0;
|
||||
|
||||
if ( @get_cfg_var('safe_mode') )
|
||||
{
|
||||
$safe_mode = @get_cfg_var('safe_mode');
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Set info array
|
||||
//-----------------------------------------
|
||||
|
||||
$INFO = array(
|
||||
'sql_driver' => $this->saved_data['sql_driver'],
|
||||
'sql_host' => $this->saved_data['db_host'],
|
||||
'sql_database' => $this->saved_data['db_name'],
|
||||
'sql_user' => $this->saved_data['db_user'],
|
||||
'sql_pass' => $this->saved_data['db_pass'],
|
||||
'sql_tbl_prefix' => $this->saved_data['db_pre'],
|
||||
'sql_debug' => 1,
|
||||
|
||||
'board_start' => time(),
|
||||
'installed' => 1,
|
||||
|
||||
'php_ext' => 'php',
|
||||
'safe_mode' => $safe_mode,
|
||||
|
||||
'board_url' => $this->saved_data['install_url'],
|
||||
|
||||
'admin_group' => '4',
|
||||
'guest_group' => '2',
|
||||
'member_group' => '3',
|
||||
'auth_group' => '1',
|
||||
);
|
||||
|
||||
//-----------------------------------
|
||||
// Any "extra" configs required for this driver?
|
||||
//-----------------------------------
|
||||
|
||||
foreach( $this->saved_data as $k => $v )
|
||||
{
|
||||
if ( preg_match( "#^__sql__#", $k ) )
|
||||
{
|
||||
$k = str_replace( "__sql__", "", $k );
|
||||
|
||||
$INFO[ $k ] = $v;
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------
|
||||
// Write to disk
|
||||
//-----------------------------------
|
||||
|
||||
$core_conf = "<"."?php\n";
|
||||
|
||||
foreach( $INFO as $k => $v )
|
||||
{
|
||||
$core_conf .= '$INFO['."'".$k."'".']'."\t\t\t=\t'".$v."';\n";
|
||||
}
|
||||
|
||||
$core_conf .= "\n".'?'.'>';
|
||||
|
||||
/* Write Configuration Files */
|
||||
$output[] = 'Writing configuration files...<br />';
|
||||
|
||||
$this->write_file( $this->saved_data['install_dir'] . '/conf_global.php' , $core_conf );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* application_installer::create_admin_account
|
||||
*
|
||||
* Creates the local app admin entry
|
||||
*
|
||||
*/
|
||||
function create_admin_account()
|
||||
{
|
||||
/* Create Converge Entry */
|
||||
$converge_id = $this->create_admin_converge();
|
||||
|
||||
//-----------------------------------
|
||||
// Members...
|
||||
//-----------------------------------
|
||||
|
||||
$member_record = array( 'id' => $converge_id,
|
||||
'name' => $this->saved_data['admin_user'],
|
||||
'members_l_display_name' => strtolower( $this->saved_data['admin_user'] ),
|
||||
'members_l_username' => strtolower( $this->saved_data['admin_user'] ),
|
||||
'members_display_name' => $this->saved_data['admin_user'],
|
||||
'mgroup' => 4,
|
||||
'email' => $this->saved_data['admin_email'],
|
||||
'joined' => time(),
|
||||
'ip_address' => $this->ipsclass->my_getenv('REMOTE_ADDR'),
|
||||
'posts' => 1,
|
||||
'title' => 'Administrator',
|
||||
'last_visit' => time(),
|
||||
'last_activity' => time(),
|
||||
'member_login_key' => md5( uniqid( microtime) ),
|
||||
);
|
||||
|
||||
$this->ipsclass->DB->do_insert( 'members', $member_record );
|
||||
|
||||
//-----------------------------------
|
||||
// Member Extra...
|
||||
//-----------------------------------
|
||||
|
||||
$member_extra_record = array ( 'id' => 1,
|
||||
'signature' => '',
|
||||
'vdirs' => '',
|
||||
);
|
||||
|
||||
$this->ipsclass->DB->do_insert( 'member_extra', $member_extra_record );
|
||||
}
|
||||
|
||||
/**
|
||||
* application_installer::cache_and_cleanup
|
||||
*
|
||||
* Final install step, allows for any remaining app specific functions
|
||||
*
|
||||
*/
|
||||
function cache_and_cleanup()
|
||||
{
|
||||
//-----------------------------------
|
||||
// Get ACP library
|
||||
//-----------------------------------
|
||||
|
||||
if( !defined("CACHE_PATH") )
|
||||
{
|
||||
define( 'CACHE_PATH', INS_ROOT_PATH."../" );
|
||||
}
|
||||
|
||||
$output[] = "Rebuild skin templates...";
|
||||
|
||||
require_once( INS_DOC_ROOT_PATH.'sources/lib/admin_cache_functions.php' );
|
||||
$acp = new admin_cache_functions();
|
||||
$acp->ipsclass =& $this->ipsclass;
|
||||
$acp->_rebuild_all_caches( array(2) );
|
||||
unset( $acp );
|
||||
|
||||
//-------------------------------------------------------------
|
||||
// Forum cache
|
||||
//-------------------------------------------------------------
|
||||
|
||||
$output[] = "Rebuilding forum cache...";
|
||||
|
||||
$ignore_me = array( 'redirect_url', 'redirect_loc', 'rules_text', 'permission_custom_error', 'notify_modq_emails' );
|
||||
|
||||
if ( $this->ipsclass->vars['forum_cache_minimum'] )
|
||||
{
|
||||
$ignore_me[] = 'description';
|
||||
$ignore_me[] = 'rules_title';
|
||||
}
|
||||
|
||||
$this->ipsclass->cache['forum_cache'] = array();
|
||||
|
||||
$this->ipsclass->DB->simple_construct( array( 'select' => '*',
|
||||
'from' => 'forums',
|
||||
'order' => 'parent_id, position'
|
||||
) );
|
||||
$this->ipsclass->DB->simple_exec();
|
||||
|
||||
while( $f = $this->ipsclass->DB->fetch_row() )
|
||||
{
|
||||
$fr = array();
|
||||
|
||||
$perms = unserialize(stripslashes($f['permission_array']));
|
||||
|
||||
//-----------------------------------------
|
||||
// Stuff we don't need...
|
||||
//-----------------------------------------
|
||||
|
||||
foreach( $f as $k => $v )
|
||||
{
|
||||
if ( in_array( $k, $ignore_me ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( $v != "" )
|
||||
{
|
||||
$fr[ $k ] = $v;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$fr['read_perms'] = $perms['read_perms'];
|
||||
$fr['reply_perms'] = $perms['reply_perms'];
|
||||
$fr['start_perms'] = $perms['start_perms'];
|
||||
$fr['upload_perms'] = $perms['upload_perms'];
|
||||
$fr['show_perms'] = $perms['show_perms'];
|
||||
|
||||
unset($fr['permission_array']);
|
||||
|
||||
$this->ipsclass->cache['forum_cache'][ $fr['id'] ] = $fr;
|
||||
}
|
||||
|
||||
$this->ipsclass->update_cache( array( 'name' => 'forum_cache', 'array' => 1, 'deletefirst' => 1, 'donow' => 1 ) );
|
||||
|
||||
//-------------------------------------------------------------
|
||||
// Group Cache
|
||||
//-------------------------------------------------------------
|
||||
|
||||
$output[] = "Rebuilding group cache...";
|
||||
|
||||
require_once( INS_DOC_ROOT_PATH.'sources/action_admin/groups.php' );
|
||||
$lib = new ad_groups();
|
||||
$lib->ipsclass =& $this->ipsclass;
|
||||
$lib->rebuild_group_cache();
|
||||
unset( $lib );
|
||||
|
||||
//-------------------------------------------------------------
|
||||
// Systemvars
|
||||
//-------------------------------------------------------------
|
||||
|
||||
$output[] = "Rebuilding system variables cache...";
|
||||
|
||||
$this->ipsclass->cache['systemvars'] = array();
|
||||
|
||||
$result = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'count(*) as cnt', 'from' => 'mail_queue' ) );
|
||||
|
||||
$this->ipsclass->cache['systemvars']['mail_queue'] = intval( $result['cnt'] );
|
||||
$this->ipsclass->cache['systemvars']['task_next_run'] = time() + 3600;
|
||||
|
||||
$this->ipsclass->update_cache( array( 'name' => 'systemvars', 'array' => 1, 'deletefirst' => 1 ) );
|
||||
|
||||
//-------------------------------------------------------------
|
||||
// Stats
|
||||
//-------------------------------------------------------------
|
||||
|
||||
$output[] = "Rebuilding statistics cache...";
|
||||
|
||||
$this->ipsclass->cache['stats'] = array();
|
||||
|
||||
$this->ipsclass->cache['stats']['total_replies'] = 0;
|
||||
$this->ipsclass->cache['stats']['total_topics'] = 1;
|
||||
$this->ipsclass->cache['stats']['mem_count'] = 1;
|
||||
|
||||
$r = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'id, name',
|
||||
'from' => 'members',
|
||||
'order' => 'id DESC',
|
||||
'limit' => '0,1'
|
||||
) );
|
||||
|
||||
$this->ipsclass->cache['stats']['last_mem_name'] = $r['name'];
|
||||
$this->ipsclass->cache['stats']['last_mem_id'] = $r['id'];
|
||||
|
||||
$this->ipsclass->update_cache( array( 'name' => 'stats', 'array' => 1, 'deletefirst' => 1 ) );
|
||||
|
||||
//-------------------------------------------------------------
|
||||
// Ranks
|
||||
//-------------------------------------------------------------
|
||||
|
||||
$output[] = "Rebuilding member ranks cache...";
|
||||
|
||||
require_once( INS_DOC_ROOT_PATH.'sources/action_admin/member.php' );
|
||||
$lib = new ad_member();
|
||||
$lib->ipsclass =& $this->ipsclass;
|
||||
$lib->titles_recache();
|
||||
unset( $lib );
|
||||
|
||||
//-------------------------------------------------------------
|
||||
// SETTINGS
|
||||
//-------------------------------------------------------------
|
||||
|
||||
$output[] = "Rebuilding settings cache...";
|
||||
|
||||
require_once( INS_DOC_ROOT_PATH.'sources/action_admin/settings.php' );
|
||||
$lib = new ad_settings();
|
||||
$lib->ipsclass =& $this->ipsclass;
|
||||
$lib->setting_rebuildcache();
|
||||
unset( $lib );
|
||||
|
||||
//-------------------------------------------------------------
|
||||
// EMOTICONS
|
||||
//-------------------------------------------------------------
|
||||
|
||||
$output[] = "Rebuilding emoticons cache...";
|
||||
|
||||
require_once( INS_DOC_ROOT_PATH.'sources/action_admin/emoticons.php' );
|
||||
$lib = new ad_emoticons();
|
||||
$lib->ipsclass =& $this->ipsclass;
|
||||
$lib->emoticon_rebuildcache();
|
||||
unset( $lib );
|
||||
|
||||
//-------------------------------------------------------------
|
||||
// LANGUAGES
|
||||
//-------------------------------------------------------------
|
||||
|
||||
$output[] = "Rebuilding languages cache...";
|
||||
|
||||
require_once( INS_DOC_ROOT_PATH.'sources/action_admin/languages.php' );
|
||||
$lib = new ad_languages();
|
||||
$lib->ipsclass =& $this->ipsclass;
|
||||
$lib->rebuild_cache();
|
||||
unset( $lib );
|
||||
|
||||
//-------------------------------------------------------------
|
||||
// ATTACHMENT TYPES
|
||||
//-------------------------------------------------------------
|
||||
|
||||
$output[] = "Rebuilding attachment types cache...";
|
||||
|
||||
require_once( INS_DOC_ROOT_PATH.'sources/action_admin/attachments.php' );
|
||||
$lib = new ad_attachments();
|
||||
$lib->ipsclass =& $this->ipsclass;
|
||||
$lib->attach_type_rebuildcache();
|
||||
unset( $lib );
|
||||
|
||||
$output[] = "All caches rebuilt, click 'Next' below...";
|
||||
|
||||
$this->saved_data['admin_url'] = $this->saved_data['install_url'] . '/index.php';
|
||||
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in new issue
Block a user