Version 2.2.0 RC-1

This commit is contained in:
Neo committed 2025-12-19 00:22:37 -08:00
1 parent f73f8bff6d
commit 22f1b963ee
1034 files changed
+178610 -70897

No files matched your search

+28
View File
@@ -0,0 +1,28 @@
<?php
/**
* Invision Power Board
* Action controller for done page
*/
class action_done
{
var $install;
function action_done( & $install )
{
$this->install =& $install;
}
function run()
{
//-----------------------------------------
// Show page
//-----------------------------------------
$this->install->template->append( $this->install->template->install_done( $this->install->ipsclass->vars['board_url'].'/index.php' ) );
$this->install->template->next_action = '';
$this->install->template->hide_next = 1;
}
}
?>
+24
View File
@@ -0,0 +1,24 @@
<?php
/**
* Invision Power Board
* Action controller for EULA page
*/
class action_eula
{
var $install;
function action_eula( & $install )
{
$this->install =& $install;
}
function run()
{
/* Page Output */
$this->install->template->append( $this->install->template->eula_page( nl2br($this->install->product_license) ) );
$this->install->template->next_action = '?p=install';
}
}
?>
+888
View File
@@ -0,0 +1,888 @@
<?php
/**
* Invision Power Board
* Action controller for install page
*/
class action_install
{
var $install;
var $helpfiles = 0;
function action_install( & $install )
{
$this->install =& $install;
}
// SQL > FINAL > SETTINGS > ACPPERMS / HELP FILE > DB CHECKER
// After all sets have run: SKIN REVERT > TEMPLATES > OTHER [ Email Templates? ] > Build Caches > DB Check
function run()
{
$this->install->get_version_latest();
$this->install->saved_data['helpfile'] = intval($this->install->ipsclass->input['helpfile']) ? intval($this->install->ipsclass->input['helpfile']) : $this->install->saved_data['helpfile'];
$this->install->saved_data['man'] = intval($this->install->ipsclass->input['man']) ? intval($this->install->ipsclass->input['man']) : $this->install->saved_data['man'];
/* Switch */
switch( $this->install->ipsclass->input['sub'] )
{
case 'sql':
$this->install_sql();
break;
case 'settings':
$this->install_settings();
break;
case 'acpperms':
$this->install_acpperms();
break;
case 'finish':
$this->install_finish();
break;
case 'checkdb':
$this->install_checkdb();
break;
case 'skinrevert':
$this->install_skinrevert();
break;
case 'templates':
$this->install_templates();
break;
case 'caches':
$this->install_caches();
break;
default:
/* Output */
$this->install->template->append( $this->install->template->install_page() );
$this->install->template->next_action = '?p=install&sub=sql';
$this->install->template->hide_next = 1;
break;
}
//----------------------------------------------
// Log errors for tech support
//----------------------------------------------
if( count($this->install->error) > 0 )
{
$file_name = ROOT_PATH . 'cache/sql_upgrade_log_'.date('m_d_y').'.cgi';
$_error_string = "\n===================================================";
$_error_string .= "\n Date: ". date( 'r' );
$_error_string .= "\n IP Address: " . $_SERVER['REMOTE_ADDR'];
$_error_string .= "\n Member ID: " . $this->install->ipsclass->member['id'];
$_error_string .= "\n Version Folder: " .$this->install->current_upgrade;
$_error_string .= "\n Current Sub Step: " .$this->install->ipsclass->input['sub'];
$_error_string .= "\n Current workact: " .$this->install->saved_data['workact'];
$_error_string .= "\n\n\n ".$this->install->ipsclass->my_br2nl(implode( "\n", $this->install->error ));
$fh = fopen( $file_name, "a" );
fwrite( $fh, $_error_string, strlen( $_error_string ) );
fclose( $fh );
}
}
/*-------------------------------------------------------------------------*/
// Installs the SQL
/*-------------------------------------------------------------------------*/
/**
* Installs SQL schematic
*
* @return void
*/
function install_sql()
{
if ( $this->install->current_upgrade AND $this->install->current_upgrade < 20000 )
{
// Jump right to the finish routine for 1.x
$this->install_finish();
return;
}
$output = "";
$message = array();
$this->install->error = array();
$SQL = array();
$cnt = 0;
if ( file_exists( INS_ROOT_PATH.'installfiles/upg_'.$this->install->current_upgrade.'/'.strtolower($this->install->ipsclass->vars['sql_driver']).'_updates.php' ) )
{
require_once ( INS_ROOT_PATH.'installfiles/upg_'.$this->install->current_upgrade.'/'.strtolower($this->install->ipsclass->vars['sql_driver']).'_updates.php' );
}
// Create/Alter tables
if ( count( $SQL ) > 0 )
{
$this->sqlcount = 0;
$this->install->ipsclass->DB->return_die = 1;
foreach( $SQL as $q )
{
$this->install->ipsclass->DB->allow_sub_select = 1;
$this->install->ipsclass->DB->error = '';
$q = str_replace( "<%time%>", time(), $q );
if( $this->install->saved_data['man'] )
{
$output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $q ) )."\n\n";
}
else
{
$this->install->ipsclass->DB->query( $q );
if ( $this->install->ipsclass->DB->error )
{
$this->install->error[] = $q."<br /><br />".$this->install->ipsclass->DB->error;
}
else
{
$this->sqlcount++;
}
}
}
$message[] = $this->sqlcount." queries run...";
}
else
{
// If there are no SQL queries to run, jump to settings
$this->install_finish();
return;
}
if ( count( $this->install->error ) > 0 )
{
$this->install->message = count($message) ? implode( "<br />", $message ) : "Proceeding with update";
$this->install->template->warning( array_merge( array( $this->install->message ),
array( 'Error in upgrade '.$this->install->versions[ $this->install->current_upgrade ]. ' (' . $this->install->current_upgrade . ')' ),
array( "<span style='color:red'>".count($this->install->error).' errors found</span>' ),
$this->install->error ) );
$this->install->template->in_error = 1;
$this->install->template->next_action = '?p=install&sub=finish';
return;
}
if( $this->install->saved_data['man'] AND $output )
{
$output = "<h3><b>Please run these queries in your MySQL database before continuing..</b></h3><br />".nl2br(htmlspecialchars($output));
$this->install->template->next_action = '?p=install&sub=finish';
$this->install->template->append( $output );
}
else
{
$output[] = count($message) ? implode( "<br />", $message ) : "No queries, settings, or permissions to import...<br /><br />Proceeding with update";
$this->install->template->next_action = '?p=install&sub=finish';
$this->install->template->append( $this->install->template->install_page_refresh( $output ) );
$this->install->template->hide_next = 1;
}
}
/*-------------------------------------------------------------------------*/
// Installs the Settings
/*-------------------------------------------------------------------------*/
/**
* Installs Partial Settings
*
* @return void
*/
function install_settings()
{
if ( $this->install->current_upgrade AND $this->install->current_upgrade < 20000 )
{
// Jump right to the finish routine for 1.x
// Reorganized - should never hit here
$this->install_finish();
return;
}
$message = array();
$this->install->error = array();
//-------------------------------
// Load module...
//-------------------------------
require_once( ROOT_PATH . 'sources/action_admin/settings.php' );
$settings = new ad_settings();
$settings->ipsclass =& $this->install->ipsclass;
//-------------------------------
// Set location
//-------------------------------
$this->install->ipsclass->input['file_location'] = 'resources/settings.xml';
//-------------------------------
// Run it
//-------------------------------
$settings->settings_do_import( 1 );
$message[] = $this->install->ipsclass->main_msg;
if ( count( $this->install->error ) > 0 )
{
$this->install->message = count($message) ? implode( "<br />", $message ) : "Proceeding with update";
$this->install->template->warning( array_merge( array( $this->install->message ),
array( 'Error in upgrade '.$this->install->versions[ $this->install->current_upgrade ]. ' (' . $this->install->current_upgrade . ')' ),
array( "<span style='color:red'>".count($this->install->error).' errors found</span>' ),
$this->install->error ) );
$this->install->template->in_error = 1;
$this->install->template->next_action = '?p=install&sub=acpperms';
return;
}
$output[] = count($message) ? implode( "<br />", $message ) : "No settings to import...<br /><br />Proceeding with update";
$this->install->template->next_action = '?p=install&sub=acpperms';
$this->install->template->append( $this->install->template->install_page_refresh( $output ) );
$this->install->template->hide_next = 1;
}
/*-------------------------------------------------------------------------*/
// Installs the ACP Permissions
/*-------------------------------------------------------------------------*/
/**
* Installs ACP Permissions
*
* @return void
*/
function install_acpperms()
{
if( $this->install->current_upgrade AND $this->install->current_upgrade < 20000 )
{
// Jump right to the finish routine for 1.x
// Reorganized - should never hit here
$this->install_finish();
return;
}
$message = array();
$this->install->error = array();
//-------------------------------
// Load module...
//-------------------------------
require_once( ROOT_PATH . 'sources/action_admin/acppermissions.php' );
$settings = new ad_acppermissions();
$settings->ipsclass =& $this->install->ipsclass;
//-------------------------------
// Set location
//-------------------------------
$this->install->ipsclass->input['file_location'] = 'resources/acpperms.xml';
//-------------------------------
// Run it
//-------------------------------
$settings->acpperms_xml_import( 1 );
$message[] = $this->install->ipsclass->main_msg;
//-----------------------------------------
// Install FAQ
//-----------------------------------------
$message[] = "Updating FAQ information...";
$xml = new class_xml();
$xml->lite_parser = 1;
$updatehelp = ( isset( $this->install->saved_data['helpfile'] ) && $this->install->saved_data['helpfile'] ) ? 1 : 0;
$content = implode( "", file( ROOT_PATH . 'resources/faq.xml' ) );
if ( $content )
{
$xml->xml_parse_document( $content );
foreach( $xml->xml_array['export']['group']['row'] as $id => $entry )
{
$newrow = array();
foreach( $entry as $f => $data )
{
if ( $f == 'VALUE' or $f == 'id' )
{
continue;
}
$newrow[$f] = $entry[ $f ]['VALUE'];
}
if ( $newrow['title'] )
{
$cur_faq = $this->install->ipsclass->DB->build_and_exec_query( array( 'select' => 'id', 'from' => 'faq', 'where' => "title = '".$this->install->ipsclass->DB->add_slashes( $newrow['title'] )."'" ) );
if ( $cur_faq['id'] )
{
if ( $updatehelp )
{
$this->install->ipsclass->DB->do_update( 'faq', $newrow, "id = ".$cur_faq['id'] );
}
}
else
{
$this->install->ipsclass->DB->do_insert( 'faq', $newrow );
}
}
}
}
if ( count( $this->install->error ) > 0 )
{
$this->install->message = count($message) ? implode( "<br />", $message ) : "Proceeding with update";
$this->install->template->warning( array_merge( array( $this->install->message ),
array( 'Error in upgrade '.$this->install->versions[ $this->install->current_upgrade ]. ' (' . $this->install->current_upgrade . ')' ),
array( "<span style='color:red'>".count($this->install->error).' errors found</span>' ),
$this->install->error ) );
$this->install->template->in_error = 1;
$this->install->template->next_action = '?p=install&sub=finish';
return;
}
$output[] = count($message) ? implode( "<br />", $message ) : "No acp permissions to import...<br /><br />Proceeding with update";
$this->install->template->next_action = '?p=install&sub=checkdb';
$this->install->template->append( $this->install->template->install_page_refresh( $output ) );
$this->install->template->hide_next = 1;
}
/*-------------------------------------------------------------------------*/
// Finishes the version
/*-------------------------------------------------------------------------*/
/**
* Runs version upgrade script and finishes the version
*
* @return void
*/
function install_finish()
{
$continue = 0;
$upg_file = INS_ROOT_PATH.'installfiles/upg_'.$this->install->current_upgrade.'/version_upgrade.php';
if ( file_exists( $upg_file ) )
{
require_once( $upg_file );
$upgrade = new version_upgrade( $this->install );
$result = $upgrade->auto_run();
if ( count( $this->install->error ) > 0 )
{
$this->install->template->warning( array_merge( array( $this->install->message ),
array( 'Error in upgrade '.$this->install->versions[ $this->install->current_upgrade ]. ' (' . $this->install->current_upgrade . ')' ),
array( "<span style='color:red'>".count($this->install->error).' errors found</span>' ),
$this->install->error ) );
$this->install->template->in_error = 1;
if ( ! $result )
{
$this->install->template->next_action = '?p=install&sub=finish';
}
elseif ( $this->install->current_upgrade >= $this->install->last_poss_id || $this->install->current_upgrade == 0 )
{
$this->install->template->next_action = '?p=install&sub=settings';
}
else
{
$this->install->template->next_action = '?p=install&sub=sql';
}
$in_error = 1;
}
//-----------------------------------------
// 'version_upgrade.php' is now done
//-----------------------------------------
if ( $result )
{
// The individual upgrade files all shoot you to 2.0...
if ( $this->install->current_upgrade < 20000 )
{
$this->install->current_upgrade = '10004';
unset($this->install->saved_data['vid']);
}
//------------------------------------------
// Update DB
//------------------------------------------
$this->install->ipsclass->DB->do_insert( 'upgrade_history', array( 'upgrade_version_id' => $this->install->current_upgrade,
'upgrade_version_human' => $this->install->versions[ $this->install->current_upgrade ],
'upgrade_date' => time(),
'upgrade_mid' => $this->install->saved_data['mid'],
'upgrade_notes' => implode( "\n", $this->install->error ),
) );
if ( $in_error == 1 )
{
return;
}
if ( $this->install->message )
{
$output[] = $this->install->message;
}
$output[] = "Succesfully upgraded to version {$this->install->versions[ $this->install->current_upgrade ]}";
}
else
{
if ( $in_error == 1 )
{
return;
}
if ( $this->install->message )
{
$output[] = $this->install->message;
}
else
{
$output[] = "Proceeding with update...";
}
$continue = 1;
}
}
else
{
//------------------------------------------
// Update DB
//------------------------------------------
if ( $this->install->current_upgrade )
{
$this->install->ipsclass->DB->do_insert( 'upgrade_history', array( 'upgrade_version_id' => $this->install->current_upgrade,
'upgrade_version_human' => $this->install->versions[ $this->install->current_upgrade ],
'upgrade_date' => time(),
'upgrade_mid' => $this->install->saved_data['mid']
) );
$output[] = "Succesfully upgraded to version {$this->install->versions[ $this->install->current_upgrade ]}";
}
}
//-----------------------------------------
// Next...
//-----------------------------------------
if ( $continue )
{
//-----------------------------------------
// More to do?
//-----------------------------------------
$this->install->template->next_action = '?p=install&sub=finish';
}
elseif ( $this->install->current_upgrade >= $this->install->last_poss_id || $this->install->current_upgrade == 0 )
{
//-----------------------------------------
// Last update?
//-----------------------------------------
$this->install->template->next_action = '?p=install&sub=settings';
}
else
{
//-----------------------------------------
// Do SQL
//-----------------------------------------
$this->install->template->next_action = '?p=install&sub=sql';
}
if ( $this->install->do_man )
{
$this->install->template->append( implode( "<br />", $output ) );
}
else
{
$this->install->template->append( $this->install->template->install_page_refresh( $output ) );
$this->install->template->hide_next = 1;
}
}
/*-------------------------------------------------------------------------*/
// Runs the DB Checker after install
/*-------------------------------------------------------------------------*/
/**
* Checks DB for errors
*
* @return void
*/
function install_checkdb()
{
$message = array();
$this->install->error = array();
if ( @file_exists( ROOT_PATH."/install/sql/{$this->install->ipsclass->vars['sql_driver']}_tables.php" ) )
{
//-------------------------------
// Load ACP Skin...
//-------------------------------
require_once( ROOT_PATH . "sources/lib/admin_skin.php" );
$this->install->ipsclass->skin_acp = 'IPB2_Standard';
$this->install->ipsclass->skin_acp_url = $this->install->ipsclass->vars['board_url']."/skin_acp/".$this->install->ipsclass->skin_acp;
$this->install->ipsclass->adskin = new admin_skin();
$this->install->ipsclass->adskin->ipsclass =& $this->install->ipsclass;
$this->install->ipsclass->adskin->init_admin_skin();
//-------------------------------
// Load module...
//-------------------------------
require_once( ROOT_PATH."sources/action_admin/sql_{$this->install->ipsclass->vars['sql_driver']}.php" );
$this->sql_driver = new ad_sql_module();
$this->sql_driver->ipsclass =& $this->install->ipsclass;
$output = array();
$output = $this->sql_driver->db_table_diag( 0 );
$our_output = " <style type='text/css' media='all'>
@import url('{$this->install->ipsclass->skin_acp_url}/acp_css.css');
@import url('install.css');
</style>
<script type='text/javascript' src='dbchecker.js'></script>
";
if( $this->sql_driver->db_has_issues )
{
$this->install->ipsclass->adskin->td_header[] = array( "{none}" , "50%" );
$this->install->ipsclass->adskin->td_header[] = array( "{none}" , "50%" );
$our_output .= $this->install->ipsclass->adskin->start_table( "WARNING: ERRORS FOUND" );
$our_output .= $this->install->ipsclass->adskin->add_td_row( array( array( "<script type='text/javascript'>var save_data = '".serialize($this->install->saved_data)."';</script><span class='rss-feed-invalid'>There were errors found with your database. Please review them below, or click <a href='#' onclick='fix_all_dberrors();'>here</a> to correct these errors.", 2 ) ) );
$our_output .= $this->install->ipsclass->adskin->end_table();
}
else
{
$this->install->ipsclass->adskin->td_header[] = array( "{none}" , "50%" );
$this->install->ipsclass->adskin->td_header[] = array( "{none}" , "50%" );
$our_output .= $this->install->ipsclass->adskin->start_table( "No Errors Found" );
$our_output .= $this->install->ipsclass->adskin->add_td_row( array( array( "<span class='rss-feed-valid'>There were no errors found with your database.", 2 ) ) );
$our_output .= $this->install->ipsclass->adskin->end_table();
}
$this->install->ipsclass->adskin->td_header[] = array( "Table" , "30%" );
$this->install->ipsclass->adskin->td_header[] = array( "Status" , "20%" );
$this->install->ipsclass->adskin->td_header[] = array( "Fix" , "50%" );
$our_output .= $this->install->ipsclass->adskin->start_table( "Database Table Results" );
foreach( $output as $html_row )
{
$html_row = preg_replace( "#'&amp;section=help&amp;act=diag&amp;code=dbchecker&amp;query=(.*?)'#i", "'index.php?p=install&sub=checkdb&saved_data=".serialize($this->install->saved_data)."&query=$1'", $html_row );
$our_output .= $html_row;
}
$our_output .= $this->install->ipsclass->adskin->end_table();
}
else
{
// Can't run db checker as table def isn't there
$this->install_skinrevert();
return;
}
$this->install->template->next_action = '?p=install&sub=skinrevert';
$this->install->template->append( $our_output );
}
/*-------------------------------------------------------------------------*/
// Install: Revert Skin Changes
/*-------------------------------------------------------------------------*/
/**
* Install templates
*
* @return void
*/
function install_skinrevert()
{
$message = array();
$this->install->error = array();
// First time around, we won't have this
$this->install->saved_data['do'] = isset($this->install->ipsclass->input['do']) ? $this->install->ipsclass->input['do'] : $this->install->saved_data['do'];
if( $this->install->saved_data['do'] == 'none' )
{
$this->install_templates();
return;
}
if( !$this->install->saved_data['do'] )
{
$id = intval($this->install->saved_data['skinid']) ? intval($this->install->saved_data['skinid']) : 1;
$this->install->saved_data['new_skin'] = intval($this->install->saved_data['new_skin']);
$default = $this->install->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id>{$id}", 'orderby' => 'set_skin_set_id ASC', 'limit' => array(0,1) ) );
if( $default['set_skin_set_id'] == $this->install->saved_data['new_skin'] )
{
$default = $this->install->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id>{$this->install->saved_data['new_skin']}", 'orderby' => 'set_skin_set_id ASC', 'limit' => array(0,1) ) );
}
if( !$default['set_skin_set_id'] )
{
$this->install->template->next_action = '?p=install&sub=templates';
$this->install->template->append( $this->install->template->install_page_refresh( array( 'No further skins to revert' ) ) );
$this->install->template->hide_next = 1;
return;
}
else
{
$this->install->saved_data['skinid'] = $default['set_skin_set_id'];
$this->install->template->next_action = '?p=install&sub=skinrevert';
$this->install->template->append( $this->install->template->install_template_skinrevert( $default['set_name'] ) );
return;
}
}
else
{
$man = intval( $this->install->saved_data['skinid'] );
$cnt = 0;
$default = $this->install->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id=".$man ) );
$this->install->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_templates', 'where' => "set_id=".$man ) );
$outer = $this->install->ipsclass->DB->simple_exec();
if( $this->install->ipsclass->DB->get_num_rows($outer) )
{
while( $r = $this->install->ipsclass->DB->fetch_row($outer) )
{
if( $r['set_id'] == 1 )
{
continue;
}
else
{
$this->install->ipsclass->DB->simple_exec_query( array( 'delete' => 'skin_templates', 'where' => 'suid='.$r['suid'] ) );
$cnt++;
}
}
}
$this->install->ipsclass->DB->do_update( 'skin_sets', array( 'set_css' => '', 'set_wrapper' => '' ), "set_skin_set_id=".$man );
$next = $this->install->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id>".$man, 'orderby' => 'set_skin_set_id ASC', 'limit' => array(0,1) ) );
if( $next['set_skin_set_id'] )
{
if( $this->install->saved_data['do'] == 'all' )
{
$this->install->saved_data['skinid'] = $next['set_skin_set_id'];
$this->install->saved_data['do'] = 'all';
$this->install->template->next_action = '?p=install&sub=skinrevert';
$this->install->template->append( $this->install->template->install_page_refresh( array( "$cnt skin template bits from skin set '{$default['set_name']}' reverted, proceeding to next skin set...." ) ) );
$this->install->template->hide_next = 1;
return;
}
else
{
$this->install->saved_data['skinid'] = $next['set_skin_set_id'];
$this->install->template->next_action = '?p=install&sub=skinrevert';
unset($this->install->saved_data['do']);
$this->install->template->append( $this->install->template->install_page_refresh( array( "$cnt skin template bits from skin set '{$default['set_name']}' reverted, proceeding to next skin set...." ) ) );
$this->install->template->hide_next = 1;
return;
}
}
else
{
$this->install->template->next_action = '?p=install&sub=templates';
$this->install->template->append( $this->install->template->install_page_refresh( array( "$cnt skin template bits from skin set '{$default['set_name']}' reverted, proceeding to rebuild templates...." ) ) );
$this->install->template->hide_next = 1;
return;
}
}
}
/*-------------------------------------------------------------------------*/
// Install: Templates
/*-------------------------------------------------------------------------*/
/**
* Install templates
*
* @return void
*/
function install_templates()
{
//-----------------------------------
// Get XML
//-----------------------------------
$xml = new class_xml();
$xml->lite_parser = 1;
//-----------------------------------
// Get XML file (TEMPLATES)
//-----------------------------------
$xmlfile = ROOT_PATH.'resources/ipb_templates.xml';
$setting_content = implode( "", file($xmlfile) );
//-------------------------------
// Unpack the datafile (TEMPLATES)
//-------------------------------
$xml->xml_parse_document( $setting_content );
//-------------------------------
// (TEMPLATES)
//-------------------------------
if ( ! is_array( $xml->xml_array['templateexport']['templategroup']['template'] ) )
{
$this->install->template->in_error = 1;
$this->install->error[] = "Error with resources/ipb_templates.xml - could not process XML properly";
$this->install->template->warning( $this->install->error );
$this->install->template->next_action = '?p=install&sub=rebuild';
return;
}
else
{
$output[] = "Master templates rebuilt, proceeding to recache templates...";
foreach( $xml->xml_array['templateexport']['templategroup']['template'] as $id => $entry )
{
$row = $this->install->ipsclass->DB->simple_exec_query( array( 'select' => 'suid',
'from' => 'skin_templates',
'where' => "group_name='{$entry[ 'group_name' ]['VALUE']}' AND func_name='{$entry[ 'func_name' ]['VALUE']}' and set_id=1"
) );
$this->install->ipsclass->DB->allow_sub_select = 1;
if ( $row['suid'] )
{
$this->install->ipsclass->DB->do_update( 'skin_templates', array( 'func_data' => $entry[ 'func_data' ]['VALUE'],
'section_content' => $entry[ 'section_content' ]['VALUE'],
'updated' => time()
)
, 'suid='.$row['suid'] );
}
else
{
$this->install->ipsclass->DB->do_insert( 'skin_templates', array( 'func_data' => $entry[ 'func_data' ]['VALUE'],
'func_name' => $entry[ 'func_name' ]['VALUE'],
'section_content' => $entry[ 'section_content' ]['VALUE'],
'group_name' => $entry[ 'group_name' ]['VALUE'],
'updated' => time(),
'set_id' => 1
) );
}
}
}
//-----------------------------------------
// Next...
//-----------------------------------------
unset($xml);
$this->install->template->append( $this->install->template->install_page_refresh( $output ) );
$this->install->template->next_action = '?p=install&sub=caches';
$this->install->template->hide_next = 1;
}
/*-------------------------------------------------------------------------*/
// Install: Caches
/*-------------------------------------------------------------------------*/
/**
* Install Caches
*
* @return void
*/
function install_caches()
{
//-----------------------------------------
// Do Caches
//-----------------------------------------
require_once( ROOT_PATH . 'sources/api/api_skins.php' );
$api = new api_skins();
$api->ipsclass =& $this->install->ipsclass;
$api->api_init();
$this->install->ipsclass->DB->allow_sub_select = 1;
if ( isset( $this->install->ipsclass->input['sid'] ) )
{
if ( $this->install->ipsclass->input['sid'] == 0 )
{
$output = $this->install->cache_and_cleanup();
$this->install->template->next_action = '?p=done';
}
else
{
$messages = $api->skin_rebuild_caches( intval( $this->install->ipsclass->input['sid'] ) );
$output = $messages['messages'];
$this->install->template->next_action = '?p=install&sub=caches&sid='.$messages['completed'];
}
}
else
{
$messages = $api->skin_rebuild_caches( 0 );
$output = $messages['messages'];
$this->install->template->next_action = '?p=install&sub=caches&sid='.$messages['completed'];
}
//-----------------------------------------
// Next...
//-----------------------------------------
$this->install->template->hide_next = 1;
$this->install->template->append( $this->install->template->install_page_refresh( $output ) );
}
}
?>
+25
View File
@@ -0,0 +1,25 @@
<?php
/**
* Invision Power Board
* Action controller for requirements page
*/
class action_login
{
var $install;
function action_login( & $install )
{
$this->install =& $install;
}
function run()
{
/* Page Output */
$this->install->template->append( $this->install->template->login_page( $this->install->template->message ) );
$this->install->template->next_action = '?p=overview';
}
}
?>
+249
View File
@@ -0,0 +1,249 @@
<?php
/**
* Invision Power Board
* Action controller for requirements page
*/
class action_overview
{
var $install;
function action_overview( & $install )
{
$this->install =& $install;
}
function run()
{
//----------------------------------
// We must have submitted the form
// time to check some details.
//----------------------------------
if ( empty($this->install->ipsclass->input['username']) )
{
$this->install->template->append( $this->install->template->login_page( "You must enter a username before proceeding" ) );
$this->install->template->next_action = '?p=overview';
return;
}
if ( empty($this->install->ipsclass->input['password']) )
{
$this->install->template->append( $this->install->template->login_page( "You must enter a password before proceeding" ) );
$this->install->template->next_action = '?p=overview';
return;
}
//----------------------------------
// Attempt to get the details from the
// DB
//----------------------------------
$this->install->ipsclass->DB->query("SELECT m.*, g.* FROM ibf_members m LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) WHERE LOWER(name)='".strtolower($this->install->ipsclass->input['username'])."'");
$mem = $this->install->ipsclass->DB->fetch_row();
//----------------------------------
// Get perms
//----------------------------------
if ( empty($mem['id']) )
{
$this->install->template->append( $this->install->template->login_page( "Could not find a record matching that username, please check the spelling" ) );
$this->install->template->next_action = '?p=overview';
return;
}
//----------------------------------
// Load converge member
//----------------------------------
if( !$this->install->ipsclass->DB->field_exists( 'converge_id', 'members_converge' ) OR
( isset($this->install->saved_data['vid']) AND $this->install->saved_data['vid'] < 10003 ) )
{
$pass = md5( $this->install->ipsclass->input['password'] );
if ( $pass != $mem['password'] AND $pass != $mem['legacy_password'] )
{
$this->install->template->append( $this->install->template->login_page( "The password you entered is not correct" ) );
$this->install->template->next_action = '?p=overview';
return;
}
else
{
if ($mem['g_access_cp'] != 1)
{
$this->install->template->append( $this->install->template->login_page( "You do not have access to the administrative CP" ) );
$this->install->template->next_action = '?p=overview';
return;
}
else
{
$this->install->ipsclass->member = $mem;
$this->install->saved_data['loginkey'] = $mem['password'] ? md5($mem['password']) : md5($mem['legacy_password']);
$this->install->saved_data['securekey'] = $this->install->ipsclass->return_md5_check();
$this->install->saved_data['mid'] = $mem['id'];
}
}
}
else
{
$this->install->ipsclass->converge->converge_load_member($mem['email']);
if ( ! $this->install->ipsclass->converge->member['converge_id'] )
{
$this->install->template->append( $this->install->template->login_page( "Could not find a record matching that username, please check the spelling" ) );
$this->install->template->next_action = '?p=overview';
return;
}
//----------------------------------
// Check converge pass
//----------------------------------
$pass = md5( $this->install->ipsclass->input['password'] );
if ( $this->install->ipsclass->converge->converge_authenticate_member( $pass ) != TRUE )
{
$this->install->template->append( $this->install->template->login_page( "The password you entered is not correct" ) );
$this->install->template->next_action = '?p=overview';
return;
}
else
{
if ($mem['g_access_cp'] != 1)
{
$this->install->template->append( $this->install->template->login_page( "You do not have access to the administrative CP" ) );
$this->install->template->next_action = '?p=overview';
return;
}
else
{
$this->install->ipsclass->member = $mem;
$this->install->saved_data['loginkey'] = $mem['member_login_key'];
$this->install->saved_data['securekey'] = $this->install->ipsclass->return_md5_check();
$this->install->saved_data['mid'] = $mem['id'];
}
}
}
$this->install->get_version_latest();
$error = array();
if ( ! $this->install->last_poss_id )
{
$error[] = "An error has occured, we are unable to determine the current version or if there are any required upgrade files left to run";
}
if ( count($this->install->versions) == 0 )
{
$error[] = "Could not locate the required upgrade script: 'upg_{$this->install->last_poss_id}/version_history.php'";
}
if ( ! $this->install->current_version )
{
$error[] = "An error has occured, we are unable to determine the current version or if there are any required upgrade files left to run";
}
if ( $this->install->last_poss_id <= $this->install->current_version )
{
$error[] = "Your installation is up to date; no upgrade required";
}
$checkfiles = array( ROOT_PATH ."resources/ipb_templates.xml",
ROOT_PATH ."resources/skinsets.xml",
ROOT_PATH ."resources/macro.xml",
ROOT_PATH ."resources/settings.xml",
ROOT_PATH ."resources/acpperms.xml",
ROOT_PATH ."resources/version_history.php",
ROOT_PATH ."sources/sql",
KERNEL_PATH ."class_converge.php",
KERNEL_PATH ."class_xml.php",
KERNEL_PATH ."class_db_".SQL_DRIVER.".php",
ROOT_PATH ."conf_global.php",
);
$timecheck = array(
ROOT_PATH ."resources/ipb_templates.xml",
ROOT_PATH ."resources/skinsets.xml",
ROOT_PATH ."resources/macro.xml",
ROOT_PATH ."resources/settings.xml",
ROOT_PATH ."resources/acpperms.xml",
ROOT_PATH ."resources/version_history.php"
);
$writeable = array( #ROOT_PATH."conf_global.php",
ROOT_PATH."cache/",
ROOT_PATH."cache/skin_cache/",
ROOT_PATH."style_images/"
);
@filemtime( ROOT_PATH . 'sources/ipsclass.php' );
foreach ( $checkfiles as $cf )
{
if ( ! file_exists($cf) )
{
$error[] = "Cannot locate the file '$cf'.";
}
}
foreach ( $writeable as $cf )
{
if ( ! is_writeable($cf) )
{
$error[] = "Cannot write to the file or folder '$cf'. Please CHMOD to 0777.";
}
}
if ( count ( $error ) )
{
$this->install->template->warning( $error );
$this->install->template->next_action = '';
$this->install->template->hide_next = 1;
return;
}
$current_version = $this->install->current_version == '00000' ? 'not installed' : $this->install->versions[ $this->install->current_version ];
if ( $this->install->current_version == '00000' )
{
$this->ipsclass->boink_it( str_replace( 'upgrade', 'install', $this->ipsclass->my_getenv( 'PHP_SELF' ) ) );
}
else
{
$summary .= "Upgrade from ".$this->install->versions[ $this->install->current_version ]." to ".$this->install->versions[ $this->install->last_poss_id ];
}
//-----------------------------------------
// Time check...
//-----------------------------------------
$summary .= "<br /><br /><strong>Checking 'resources' directory files</strong>";
$_flag = 0;
foreach ( $timecheck as $cf )
{
$_time = @filemtime( $cf );
if ( $time_to_check AND $_time AND ( ( $time_to_check - (86400 * 7) ) > $_time ) )
{
$_flag = 1;
$summary .= "<div style='color:red'>&middot;" . str_replace( ROOT_PATH, '', $cf ) . ' may be out of date</div>';
}
}
if ( $_flag )
{
$summary .= "<br /><div>Please check the above files to make sure they have been uploaded from the ".$this->install->versions[ $this->install->last_poss_id ]." download";
}
else
{
$summary .= "<div style='color:green'>All files checked OK</div>";
}
/* Page Output */
$this->install->template->append( $this->install->template->overview_page( $current_version, $summary ) );
$this->install->template->next_action = '?p=eula';
}
}
?>