Version 3.3.4
This commit is contained in:
1 parent
78706903a2
commit
fb6b5baabc
2206 files changed
+409828
-382984
No files matched your search
@@ -1,378 +1,379 @@
|
||||
<?php
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.2.3
|
||||
* Installer: EULA file
|
||||
* Last Updated: $LastChangedDate: 2011-05-24 22:52:26 -0400 (Tue, 24 May 2011) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: bfarber $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license This is NULLED!
|
||||
* @package IP.Board
|
||||
* @link http://hatynka.in
|
||||
* @version $Rev: 8886 $
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
class upgrade_apps extends ipsCommand
|
||||
{
|
||||
/**
|
||||
* Execute selected method
|
||||
*
|
||||
* @access public
|
||||
* @param object Registry object
|
||||
* @return @e void
|
||||
*/
|
||||
public function doExecute( ipsRegistry $registry )
|
||||
{
|
||||
/* Delete sessions and continue */
|
||||
if ( $this->request['do'] == 'rsessions' )
|
||||
{
|
||||
IPSSetUp::removePreviousSession();
|
||||
}
|
||||
|
||||
/* Rebuild from last session and continue */
|
||||
if ( $this->request['do'] == 'rcontinue' )
|
||||
{
|
||||
$oldSession = IPSSetUp::checkForPreviousSessions();
|
||||
|
||||
if ( count( $oldSession ) AND $oldSession['_session_get']['section'] AND $oldSession['_sd']['install_apps'] )
|
||||
{
|
||||
IPSSetUp::restorePreviousSession( $oldSession );
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
/* Check for failed upgrade */
|
||||
if ( ! $this->request['do'] OR ( $this->request['do'] != 'rsessions' ) )
|
||||
{
|
||||
$oldSession = IPSSetUp::checkForPreviousSessions();
|
||||
|
||||
if ( count( $oldSession ) AND $oldSession['_session_get']['section'] AND $oldSession['_sd']['install_apps'] )
|
||||
{
|
||||
/* Page Output */
|
||||
$this->registry->output->setTitle( "Applications" );
|
||||
$this->registry->output->setNextAction( 'apps&do=rsessions' );
|
||||
//$this->registry->output->setHideButton( TRUE );
|
||||
$this->registry->output->addContent( $this->registry->output->template()->upgrade_previousSession( $oldSession ) );
|
||||
$this->registry->output->sendOutput();
|
||||
}
|
||||
}
|
||||
|
||||
/* Save data */
|
||||
if ( $this->request['do'] == 'save' )
|
||||
{
|
||||
$apps = explode( ',', IPSSetUp::getSavedData('install_apps') );
|
||||
$toSave = array();
|
||||
$vNums = array();
|
||||
|
||||
if ( is_array( $apps ) and count( $apps ) )
|
||||
{
|
||||
foreach( $apps as $app )
|
||||
{
|
||||
/* Grab version numbers */
|
||||
$numbers = IPSSetUp::fetchAppVersionNumbers( $app );
|
||||
|
||||
/* Grab all numbers */
|
||||
$nums[ $app ] = IPSSetUp::fetchXmlAppVersions( $app );
|
||||
|
||||
/* Grab app data */
|
||||
$appData[ $app ] = IPSSetUp::fetchXmlAppInformation( $app, $this->settings['gb_char_set'] );
|
||||
|
||||
$appClasses[ $app ] = IPSSetUp::fetchVersionClasses( $app, $numbers['current'][0], $numbers['latest'][0] );
|
||||
|
||||
/* Store starting vnums */
|
||||
$vNums[ $app ] = $numbers['current'][0];
|
||||
}
|
||||
|
||||
/* Got anything? */
|
||||
if ( count( $appClasses ) )
|
||||
{
|
||||
foreach( $appClasses as $app => $data )
|
||||
{
|
||||
foreach( $data as $num )
|
||||
{
|
||||
if ( is_file( IPSLib::getAppDir( $app ) . '/setup/versions/upg_' . $num . '/version_class.php' ) )
|
||||
{
|
||||
$_class = 'version_class_' . $app . '_' . $num;
|
||||
require_once( IPSLib::getAppDir( $app ) . '/setup/versions/upg_' . $num . '/version_class.php' );/*noLibHook*/
|
||||
|
||||
$_tmp = new $_class( $this->registry );
|
||||
|
||||
if ( method_exists( $_tmp, 'preInstallOptionsSave' ) )
|
||||
{
|
||||
$_t = $_tmp->preInstallOptionsSave();
|
||||
|
||||
if ( is_array( $_t ) AND count( $_t ) )
|
||||
{
|
||||
$toSave[ $app ][ $num ] = $_t;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Save it */
|
||||
if ( count( $toSave ) )
|
||||
{
|
||||
IPSSetUp::setSavedData('custom_options', $toSave );
|
||||
}
|
||||
|
||||
if ( count( $vNums ) )
|
||||
{
|
||||
IPSSetUp::setSavedData('version_numbers', $vNums );
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/* Next Action */
|
||||
$this->registry->autoLoadNextAction( 'license' );
|
||||
}
|
||||
/* Check input? */
|
||||
else if ( $this->request['do'] == 'check' )
|
||||
{
|
||||
/* Check Directory */
|
||||
if ( ! is_array( $_POST['apps'] ) OR ! count( $_POST['apps'] ) )
|
||||
{
|
||||
$this->registry->output->addWarning( 'Необходмо выбрать приложения для обновления.' );
|
||||
}
|
||||
else
|
||||
{
|
||||
/* If it's lower than 3.0.0, then add in the removed apps */
|
||||
if ( IPSSetUp::is300plus() !== TRUE )
|
||||
{
|
||||
$_POST['apps']['forums'] = 1;
|
||||
$_POST['apps']['members'] = 1;
|
||||
$_POST['apps']['calendar'] = 1;
|
||||
$_POST['apps']['chat'] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( $_POST['apps']['core'] )
|
||||
{
|
||||
$_POST['apps']['forums'] = 1;
|
||||
$_POST['apps']['members'] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Save Form Data */
|
||||
IPSSetUp::setSavedData('install_apps', implode( ',', array_keys( $_POST['apps'] ) ) );
|
||||
|
||||
/* Got any app-version classes? */
|
||||
$appClasses = array();
|
||||
$output = array();
|
||||
$nums = array();
|
||||
$appData = array();
|
||||
|
||||
foreach( $_POST['apps'] as $app => $val )
|
||||
{
|
||||
/* Grab version numbers */
|
||||
$numbers = IPSSetUp::fetchAppVersionNumbers( $app );
|
||||
|
||||
/* Grab all numbers */
|
||||
$nums[ $app ] = IPSSetUp::fetchXmlAppVersions( $app );
|
||||
|
||||
/* Grab app data */
|
||||
$appData[ $app ] = IPSSetUp::fetchXmlAppInformation( $app, $this->settings['gb_char_set'] );
|
||||
|
||||
$appClasses[ $app ] = IPSSetUp::fetchVersionClasses( $app, $numbers['current'][0], $numbers['latest'][0] );
|
||||
}
|
||||
|
||||
/* Got anything? */
|
||||
$error = FALSE;
|
||||
if ( count( $appClasses ) )
|
||||
{
|
||||
foreach( $appClasses as $app => $data )
|
||||
{
|
||||
if ( is_file( IPSLib::getAppDir( $app ) . '/setup/upgradeCheck.php' ) )
|
||||
{
|
||||
$_class = $app . '_upgradeCheck';
|
||||
require_once( IPSLib::getAppDir( $app ) . '/setup/upgradeCheck.php' );/*noLibHook*/
|
||||
$requirements_class = new $_class();
|
||||
|
||||
if ( method_exists( $requirements_class, 'checkForProblems' ) )
|
||||
{
|
||||
$check = $requirements_class->checkForProblems();
|
||||
if ( $check !== TRUE )
|
||||
{
|
||||
$error = TRUE;
|
||||
$this->registry->output->addError( $check );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach( $data as $num )
|
||||
{
|
||||
if ( is_file( IPSLib::getAppDir( $app ) . '/setup/versions/upg_' . $num . '/version_class.php' ) )
|
||||
{
|
||||
$_class = 'version_class_' . $app . '_' . $num;
|
||||
require_once( IPSLib::getAppDir( $app ) . '/setup/versions/upg_' . $num . '/version_class.php' );/*noLibHook*/
|
||||
|
||||
$_tmp = new $_class( $this->registry );
|
||||
|
||||
if ( method_exists( $_tmp, 'preInstallOptionsForm' ) )
|
||||
{
|
||||
$_t = $_tmp->preInstallOptionsForm();
|
||||
|
||||
if ( $_t )
|
||||
{
|
||||
$output[ $app ][ $num ] = array( 'long' => $nums[ $app ][ $num ],
|
||||
'app' => $appData[ $app ],
|
||||
'out' => $_t );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Finally... */
|
||||
if ( count( $output ) or $error === TRUE )
|
||||
{
|
||||
$this->registry->output->setTitle( "Приложения" );
|
||||
$this->registry->output->setNextAction( 'apps&do=save' );
|
||||
//$this->registry->output->setHideButton( TRUE );
|
||||
if ( !$error )
|
||||
{
|
||||
$this->registry->output->addContent( $this->registry->output->template()->upgrade_appsOptions( $output ) );
|
||||
}
|
||||
$this->registry->output->sendOutput();
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Next Action */
|
||||
$this->registry->autoLoadNextAction( 'license' );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Generate apps... */
|
||||
$apps = array( 'core' => array(), 'ips' => array(), 'other' => array() );
|
||||
|
||||
foreach( array( 'applications', 'applications_addon/ips', 'applications_addon/other' ) as $_pBit )
|
||||
{
|
||||
$path = IPS_ROOT_PATH . $_pBit;
|
||||
$handle = opendir( $path );
|
||||
|
||||
while ( ( $file = readdir( $handle ) ) !== FALSE )
|
||||
{
|
||||
if ( ! preg_match( "#^\.#", $file ) )
|
||||
{
|
||||
if ( is_dir( $path . '/' . $file ) )
|
||||
{
|
||||
//-----------------------------------------
|
||||
// Get it!
|
||||
//-----------------------------------------
|
||||
|
||||
if ( ! is_file( IPS_ROOT_PATH . $_pBit . '/' . $file . '/xml/information.xml' ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$data = IPSSetUp::fetchXmlAppInformation( $file, $this->settings['gb_char_set'] );
|
||||
|
||||
switch( $_pBit )
|
||||
{
|
||||
case 'applications':
|
||||
$apps['core'][ $file ] = $data;
|
||||
break;
|
||||
case 'applications_addon/ips':
|
||||
$apps['ips'][ $file ] = $data;
|
||||
break;
|
||||
case 'applications_addon/other':
|
||||
$apps['other'][ $file ] = $data;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
closedir( $handle );
|
||||
}
|
||||
|
||||
/* Reorder the array so that core is first */
|
||||
$new_array = array();
|
||||
$new_array['core'] = $apps['core']['core'];
|
||||
|
||||
foreach( $apps['core'] as $app => $data )
|
||||
{
|
||||
if( $app == 'core' )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$new_array[$app] = $data;
|
||||
}
|
||||
|
||||
$apps['core'] = $new_array;
|
||||
|
||||
/* Now get version numbers */
|
||||
foreach( $apps as $type => $app )
|
||||
{
|
||||
foreach( $apps[ $type ] as $app => $data )
|
||||
{
|
||||
if ( $type == 'core' and ( $app == 'forums' OR $app == 'members' ) )
|
||||
{
|
||||
/* Skip forums and members and just count core for now */
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Grab version numbers */
|
||||
$numbers = IPSSetUp::fetchAppVersionNumbers( $app );
|
||||
|
||||
$appClasses[ $app ] = IPSSetUp::fetchVersionClasses( $app, $numbers['current'][0], $numbers['latest'][0] );
|
||||
|
||||
$apps[ $type ][ $app ]['_vnumbers'] = $numbers;
|
||||
}
|
||||
}
|
||||
|
||||
/* Any notices? */
|
||||
$notices = array();
|
||||
if ( count( $appClasses ) )
|
||||
{
|
||||
foreach( $appClasses as $app => $data )
|
||||
{
|
||||
$notices[ $app ] = array();
|
||||
|
||||
foreach( $data as $num )
|
||||
{
|
||||
if ( is_file( IPSLib::getAppDir( $app ) . '/setup/versions/upg_' . $num . '/version_class.php' ) )
|
||||
{
|
||||
$_class = 'version_class_' . $app . '_' . $num;
|
||||
require_once( IPSLib::getAppDir( $app ) . '/setup/versions/upg_' . $num . '/version_class.php' );/*noLibHook*/
|
||||
|
||||
$_tmp = new $_class( $this->registry );
|
||||
|
||||
if ( method_exists( $_tmp, 'preInstallNotices' ) )
|
||||
{
|
||||
$_t = $_tmp->preInstallNotices();
|
||||
|
||||
if ( $_t )
|
||||
{
|
||||
$notices[ $app ] = array_merge( $_t, $notices[ $app ] );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* If it's lower than 3.0.0, then remove some apps and make them part of 'core' */
|
||||
if ( IPSSetUp::is300plus() !== TRUE )
|
||||
{
|
||||
unset( $apps['ips']['calendar'] );
|
||||
unset( $apps['ips']['chat'] );
|
||||
}
|
||||
|
||||
/* Page Output */
|
||||
$this->registry->output->setTitle( "Приложения" );
|
||||
$this->registry->output->setNextAction( 'apps&do=check' );
|
||||
//$this->registry->output->setHideButton( TRUE );
|
||||
$this->registry->output->addContent( $this->registry->output->template()->upgrade_apps( $apps, $notices ) );
|
||||
$this->registry->output->sendOutput();
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.3.4
|
||||
* Installer: EULA file
|
||||
* Last Updated: $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: bfarber $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/company/standards.php#license
|
||||
* @package IP.Board
|
||||
* @link http://www.invisionpower.com
|
||||
* @version $Rev: 10914 $
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
class upgrade_apps extends ipsCommand
|
||||
{
|
||||
/**
|
||||
* Execute selected method
|
||||
*
|
||||
* @access public
|
||||
* @param object Registry object
|
||||
* @return @e void
|
||||
*/
|
||||
public function doExecute( ipsRegistry $registry )
|
||||
{
|
||||
/* Delete sessions and continue */
|
||||
if ( $this->request['do'] == 'rsessions' )
|
||||
{
|
||||
IPSSetUp::removePreviousSession();
|
||||
}
|
||||
|
||||
/* Rebuild from last session and continue */
|
||||
if ( $this->request['do'] == 'rcontinue' )
|
||||
{
|
||||
$oldSession = IPSSetUp::checkForPreviousSessions();
|
||||
|
||||
if ( count( $oldSession ) AND $oldSession['_session_get']['section'] AND $oldSession['_sd']['install_apps'] )
|
||||
{
|
||||
IPSSetUp::restorePreviousSession( $oldSession );
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
/* Check for failed upgrade */
|
||||
if ( ! $this->request['do'] OR ( $this->request['do'] != 'rsessions' ) )
|
||||
{
|
||||
$oldSession = IPSSetUp::checkForPreviousSessions();
|
||||
|
||||
if ( count( $oldSession ) AND $oldSession['_session_get']['section'] AND $oldSession['_sd']['install_apps'] )
|
||||
{
|
||||
/* Page Output */
|
||||
$this->registry->output->setTitle( "Applications" );
|
||||
$this->registry->output->setNextAction( 'apps&do=rsessions' );
|
||||
//$this->registry->output->setHideButton( TRUE );
|
||||
$this->registry->output->addContent( $this->registry->output->template()->upgrade_previousSession( $oldSession ) );
|
||||
$this->registry->output->sendOutput();
|
||||
}
|
||||
}
|
||||
|
||||
/* Save data */
|
||||
if ( $this->request['do'] == 'save' )
|
||||
{
|
||||
$apps = explode( ',', IPSSetUp::getSavedData('install_apps') );
|
||||
$toSave = array();
|
||||
$vNums = array();
|
||||
|
||||
if ( is_array( $apps ) and count( $apps ) )
|
||||
{
|
||||
foreach( $apps as $app )
|
||||
{
|
||||
/* Grab version numbers */
|
||||
$numbers = IPSSetUp::fetchAppVersionNumbers( $app );
|
||||
|
||||
/* Grab all numbers */
|
||||
$nums[ $app ] = IPSSetUp::fetchXmlAppVersions( $app );
|
||||
|
||||
/* Grab app data */
|
||||
$appData[ $app ] = IPSSetUp::fetchXmlAppInformation( $app, $this->settings['gb_char_set'] );
|
||||
|
||||
$appClasses[ $app ] = IPSSetUp::fetchVersionClasses( $app, $numbers['current'][0], $numbers['latest'][0] );
|
||||
|
||||
/* Store starting vnums */
|
||||
$vNums[ $app ] = $numbers['current'][0];
|
||||
}
|
||||
|
||||
/* Got anything? */
|
||||
if ( count( $appClasses ) )
|
||||
{
|
||||
foreach( $appClasses as $app => $data )
|
||||
{
|
||||
foreach( $data as $num )
|
||||
{
|
||||
if ( is_file( IPSLib::getAppDir( $app ) . '/setup/versions/upg_' . $num . '/version_class.php' ) )
|
||||
{
|
||||
$_class = 'version_class_' . $app . '_' . $num;
|
||||
require_once( IPSLib::getAppDir( $app ) . '/setup/versions/upg_' . $num . '/version_class.php' );/*noLibHook*/
|
||||
|
||||
$_tmp = new $_class( $this->registry );
|
||||
|
||||
if ( method_exists( $_tmp, 'preInstallOptionsSave' ) )
|
||||
{
|
||||
$_t = $_tmp->preInstallOptionsSave();
|
||||
|
||||
if ( is_array( $_t ) AND count( $_t ) )
|
||||
{
|
||||
$toSave[ $app ][ $num ] = $_t;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Save it */
|
||||
if ( count( $toSave ) )
|
||||
{
|
||||
IPSSetUp::setSavedData('custom_options', $toSave );
|
||||
}
|
||||
|
||||
if ( count( $vNums ) )
|
||||
{
|
||||
IPSSetUp::setSavedData('version_numbers', $vNums );
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/* Next Action */
|
||||
$this->registry->autoLoadNextAction( 'license' );
|
||||
}
|
||||
/* Check input? */
|
||||
else if ( $this->request['do'] == 'check' )
|
||||
{
|
||||
/* Check Directory */
|
||||
if ( ! is_array( $_POST['apps'] ) OR ! count( $_POST['apps'] ) )
|
||||
{
|
||||
/* We use 'warning' because it has same effect but does not block the 'next' button (which they'll want to use after selecting an app when page reloads) */
|
||||
$this->registry->output->addWarning( 'You must select to upgrade at least one application' );
|
||||
}
|
||||
else
|
||||
{
|
||||
/* If it's lower than 3.0.0, then add in the removed apps */
|
||||
if ( IPSSetUp::is300plus() !== TRUE )
|
||||
{
|
||||
$_POST['apps']['forums'] = 1;
|
||||
$_POST['apps']['members'] = 1;
|
||||
$_POST['apps']['calendar'] = 1;
|
||||
$_POST['apps']['chat'] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( $_POST['apps']['core'] )
|
||||
{
|
||||
$_POST['apps']['forums'] = 1;
|
||||
$_POST['apps']['members'] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Save Form Data */
|
||||
IPSSetUp::setSavedData('install_apps', implode( ',', array_keys( $_POST['apps'] ) ) );
|
||||
|
||||
/* Got any app-version classes? */
|
||||
$appClasses = array();
|
||||
$output = array();
|
||||
$nums = array();
|
||||
$appData = array();
|
||||
|
||||
foreach( $_POST['apps'] as $app => $val )
|
||||
{
|
||||
/* Grab version numbers */
|
||||
$numbers = IPSSetUp::fetchAppVersionNumbers( $app );
|
||||
|
||||
/* Grab all numbers */
|
||||
$nums[ $app ] = IPSSetUp::fetchXmlAppVersions( $app );
|
||||
|
||||
/* Grab app data */
|
||||
$appData[ $app ] = IPSSetUp::fetchXmlAppInformation( $app, $this->settings['gb_char_set'] );
|
||||
|
||||
$appClasses[ $app ] = IPSSetUp::fetchVersionClasses( $app, $numbers['current'][0], $numbers['latest'][0] );
|
||||
}
|
||||
|
||||
/* Got anything? */
|
||||
$error = FALSE;
|
||||
if ( count( $appClasses ) )
|
||||
{
|
||||
foreach( $appClasses as $app => $data )
|
||||
{
|
||||
if ( is_file( IPSLib::getAppDir( $app ) . '/setup/upgradeCheck.php' ) )
|
||||
{
|
||||
$_class = $app . '_upgradeCheck';
|
||||
require_once( IPSLib::getAppDir( $app ) . '/setup/upgradeCheck.php' );/*noLibHook*/
|
||||
$requirements_class = new $_class();
|
||||
|
||||
if ( method_exists( $requirements_class, 'checkForProblems' ) )
|
||||
{
|
||||
$check = $requirements_class->checkForProblems( $appClasses );
|
||||
if ( $check !== TRUE )
|
||||
{
|
||||
$error = TRUE;
|
||||
$this->registry->output->addError( $check );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach( $data as $num )
|
||||
{
|
||||
if ( is_file( IPSLib::getAppDir( $app ) . '/setup/versions/upg_' . $num . '/version_class.php' ) )
|
||||
{
|
||||
$_class = 'version_class_' . $app . '_' . $num;
|
||||
require_once( IPSLib::getAppDir( $app ) . '/setup/versions/upg_' . $num . '/version_class.php' );/*noLibHook*/
|
||||
|
||||
$_tmp = new $_class( $this->registry );
|
||||
|
||||
if ( method_exists( $_tmp, 'preInstallOptionsForm' ) )
|
||||
{
|
||||
$_t = $_tmp->preInstallOptionsForm();
|
||||
|
||||
if ( $_t )
|
||||
{
|
||||
$output[ $app ][ $num ] = array( 'long' => $nums[ $app ][ $num ],
|
||||
'app' => $appData[ $app ],
|
||||
'out' => $_t );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Finally... */
|
||||
if ( count( $output ) or $error === TRUE )
|
||||
{
|
||||
$this->registry->output->setTitle( "Applications" );
|
||||
$this->registry->output->setNextAction( 'apps&do=save' );
|
||||
//$this->registry->output->setHideButton( TRUE );
|
||||
if ( !$error )
|
||||
{
|
||||
$this->registry->output->addContent( $this->registry->output->template()->upgrade_appsOptions( $output ) );
|
||||
}
|
||||
$this->registry->output->sendOutput();
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Next Action */
|
||||
$this->registry->autoLoadNextAction( 'license' );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Generate apps... */
|
||||
$apps = array( 'core' => array(), 'ips' => array(), 'other' => array() );
|
||||
|
||||
foreach( array( 'applications', 'applications_addon/ips', 'applications_addon/other' ) as $_pBit )
|
||||
{
|
||||
$path = IPS_ROOT_PATH . $_pBit;
|
||||
$handle = opendir( $path );
|
||||
|
||||
while ( ( $file = readdir( $handle ) ) !== FALSE )
|
||||
{
|
||||
if ( ! preg_match( "#^\.#", $file ) )
|
||||
{
|
||||
if ( is_dir( $path . '/' . $file ) )
|
||||
{
|
||||
//-----------------------------------------
|
||||
// Get it!
|
||||
//-----------------------------------------
|
||||
|
||||
if ( ! is_file( IPS_ROOT_PATH . $_pBit . '/' . $file . '/xml/information.xml' ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$data = IPSSetUp::fetchXmlAppInformation( $file, $this->settings['gb_char_set'] );
|
||||
|
||||
switch( $_pBit )
|
||||
{
|
||||
case 'applications':
|
||||
$apps['core'][ $file ] = $data;
|
||||
break;
|
||||
case 'applications_addon/ips':
|
||||
$apps['ips'][ $file ] = $data;
|
||||
break;
|
||||
case 'applications_addon/other':
|
||||
$apps['other'][ $file ] = $data;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
closedir( $handle );
|
||||
}
|
||||
|
||||
/* Reorder the array so that core is first */
|
||||
$new_array = array();
|
||||
$new_array['core'] = $apps['core']['core'];
|
||||
|
||||
foreach( $apps['core'] as $app => $data )
|
||||
{
|
||||
if( $app == 'core' )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$new_array[$app] = $data;
|
||||
}
|
||||
|
||||
$apps['core'] = $new_array;
|
||||
|
||||
/* Now get version numbers */
|
||||
foreach( $apps as $type => $app )
|
||||
{
|
||||
foreach( $apps[ $type ] as $app => $data )
|
||||
{
|
||||
if ( $type == 'core' and ( $app == 'forums' OR $app == 'members' ) )
|
||||
{
|
||||
/* Skip forums and members and just count core for now */
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Grab version numbers */
|
||||
$numbers = IPSSetUp::fetchAppVersionNumbers( $app );
|
||||
|
||||
$appClasses[ $app ] = IPSSetUp::fetchVersionClasses( $app, $numbers['current'][0], $numbers['latest'][0] );
|
||||
|
||||
$apps[ $type ][ $app ]['_vnumbers'] = $numbers;
|
||||
}
|
||||
}
|
||||
|
||||
/* Any notices? */
|
||||
$notices = array();
|
||||
if ( count( $appClasses ) )
|
||||
{
|
||||
foreach( $appClasses as $app => $data )
|
||||
{
|
||||
$notices[ $app ] = array();
|
||||
|
||||
foreach( $data as $num )
|
||||
{
|
||||
if ( is_file( IPSLib::getAppDir( $app ) . '/setup/versions/upg_' . $num . '/version_class.php' ) )
|
||||
{
|
||||
$_class = 'version_class_' . $app . '_' . $num;
|
||||
require_once( IPSLib::getAppDir( $app ) . '/setup/versions/upg_' . $num . '/version_class.php' );/*noLibHook*/
|
||||
|
||||
$_tmp = new $_class( $this->registry );
|
||||
|
||||
if ( method_exists( $_tmp, 'preInstallNotices' ) )
|
||||
{
|
||||
$_t = $_tmp->preInstallNotices();
|
||||
|
||||
if ( $_t )
|
||||
{
|
||||
$notices[ $app ] = array_merge( $_t, $notices[ $app ] );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* If it's lower than 3.0.0, then remove some apps and make them part of 'core' */
|
||||
if ( IPSSetUp::is300plus() !== TRUE )
|
||||
{
|
||||
unset( $apps['ips']['calendar'] );
|
||||
unset( $apps['ips']['chat'] );
|
||||
}
|
||||
|
||||
/* Page Output */
|
||||
$this->registry->output->setTitle( "Applications" );
|
||||
$this->registry->output->setNextAction( 'apps&do=check' );
|
||||
//$this->registry->output->setHideButton( TRUE );
|
||||
$this->registry->output->addContent( $this->registry->output->template()->upgrade_apps( $apps, $notices ) );
|
||||
$this->registry->output->sendOutput();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user