Файл: IPBMafia.ru_IPB_3.4.6_Final_Rus _Nulled/board/upload/admin/applications/core/modules_admin/applications/enhancements.php
Строк: 203
<?php
/**
* @file applications.php Community Enhancements
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: mark $
* @since 24 July 2012
* $LastChangedDate: 2012-06-20 10:50:23 +0100 (Wed, 20 Jun 2012) $
* @version v3.4.6
* $Revision: 10952 $
*/
if ( ! defined( 'IN_ACP' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
exit();
}
/**
*
* @class admin_core_applications_enhancements
* @brief Community Enhancements
*/
class admin_core_applications_enhancements extends ipsCommand
{
/**
* Main function executed automatically by the controller
*
* @param object $registry Registry object
* @return @e void
*/
public function doExecute( ipsRegistry $registry )
{
$this->html = $this->registry->output->loadTemplate( 'cp_skin_applications' );
$this->registry->class_localization->loadLanguageFile( array( 'admin_applications' ) );
switch( $this->request['do'] )
{
case 'edit':
$this->edit();
break;
case 'save':
$this->save();
break;
default:
$this->manage();
break;
}
$this->registry->getClass( 'output' )->html_main .= $this->registry->getClass( 'output' )->global_template->global_frame_wrapper();
$this->registry->getClass( 'output' )->sendOutput();
}
/**
* Manage
*/
public function manage()
{
$enhancements = array();
foreach ( IPSLib::getEnabledApplications() as $app )
{
if ( is_dir( IPSLib::getAppDir( $app['app_directory'] ) . '/extensions/enhancements' ) )
{
$dir = new DirectoryIterator( IPSLib::getAppDir( $app['app_directory'] ) . '/extensions/enhancements' );
foreach ( $dir as $file )
{
if ( $file->isFile() and !$file->isDot() and substr( $file, 0, 1 ) !== '.' and substr( $file, -4 ) === '.php' )
{
$className = "enhancements_{$app['app_directory']}_" . str_replace( '.php', '', $file->getFilename() );
/* Backup system isn't ready */
if ( $className == 'enhancements_core_ipsbackup' )
{
continue;
}
$classToLoad = IPSLib::loadLibrary( $file->getPathName(), $className );
$enhancements[ $className ] = new $classToLoad( $this->registry );
}
}
}
}
uasort( $enhancements, create_function( '$a, $b', 'return $a->title > $b->title;' ) );
$this->registry->output->html .= $this->html->communityEnhancements( $enhancements );
}
/**
* Edit
*/
public function edit()
{
$exploded = explode( '_', $this->request['service'] );
if ( !IPSLib::appIsInstalled( $exploded[1] ) or !is_file( IPSLib::getAppDir( $exploded[1] ) . '/extensions/enhancements/' . $exploded[2] . '.php' ) )
{
$this->registry->output->showError( $this->lang->words['err_no_enhancement'], 111800 );
}
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( $exploded[1] ) . '/extensions/enhancements/' . $exploded[2] . '.php', $this->request['service'] );
$class = new $classToLoad( $this->registry );
if ( method_exists( $class, 'check' ) )
{
$class->check();
}
if ( isset( $class->settings ) and !empty( $class->settings ) )
{
$settingsClass = IPSLib::loadActionOverloader( IPSLib::getAppDir('core') . '/modules_admin/settings/settings.php', 'admin_core_settings_settings' );
$settingsClass = new $settingsClass();
$settingsClass->makeRegistryShortcuts( $this->registry );
$settingsClass->html = $this->registry->output->loadTemplate('cp_skin_settings');
$html = '';
$imploded = implode( ', ', array_map( create_function( '$v', 'return "'{$v}'";' ), $class->settings ) );
$settings = array();
$this->DB->build( array( 'select' => '*', 'from' => 'core_sys_conf_settings', 'where' => "conf_key IN( {$imploded} )", 'order' => 'conf_position' ) );
$e = $this->DB->execute();
while ( $row = $this->DB->fetch( $e ) )
{
$html .= $settingsClass->_processSettingEntry( $row );
}
$this->registry->output->html .= $this->html->communityEnhancementsSettings( $class, $html );
}
else
{
$this->registry->output->html .= $class->editSettings();
}
}
/**
* Save
*/
public function save()
{
$exploded = explode( '_', $this->request['service'] );
if ( !IPSLib::appIsInstalled( $exploded[1] ) or !is_file( IPSLib::getAppDir( $exploded[1] ) . '/extensions/enhancements/' . $exploded[2] . '.php' ) )
{
$this->registry->output->showError( $this->lang->words['err_no_enhancement'], 111801 );
}
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( $exploded[1] ) . '/extensions/enhancements/' . $exploded[2] . '.php', $this->request['service'] );
$class = new $classToLoad( $this->registry );
if ( method_exists( $class, 'check' ) )
{
$class->check();
}
if ( isset( $class->settings ) and !empty( $class->settings ) )
{
$toSave = array();
foreach ( $class->settings as $key )
{
$toSave[ $key ] = $_POST[ $key ];
}
IPSLib::updateSettings( $toSave, TRUE );
}
else
{
$output = $class->saveSettings();
if ( $output and is_string( $output ) )
{
$this->registry->output->html .= $output;
return;
}
}
$this->registry->output->redirect( "{$this->settings['base_url']}app=core&module=applications&section=enhancements", $this->lang->words['enhancements_saved'] );
}
}