* Invision Power Services * IP.Board v3.4.5 * Setup skin file * Last Updated: $Date: 2013-01-03 20:08:10 -0500 (Thu, 03 Jan 2013) $ * * * @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 * @since Friday 19th May 2006 17:33 * @version $Revision: 11784 $ */ class skin_setup extends output { /** * Show no button * */ private $_showNoButtons = FALSE; public function page_convert(){ $IPBHTML .= <<

Неправильная кодировка базы данных!

Кодировка таблиц базы данных должна быть установлена в utf8(utf8_general_ci).
Продолжение обновления невозможно. Требуется конвертация базы данных.
Выполните запрос "ALTER DATABASE `<Имя БД>` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci" для базы данных
И запрос "ALTER TABLE `Таблица` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci, CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci" для каждой таблицы с нессответствующей кодировкой

EOF; return $IPBHTML; } /** * Prevent our main destructor being called by this class * * @access public * @return @e void */ public function __destruct() { } /** * CSS for the database checker * * @access public * @return @e void */ public function db_checker_css() { $IPBHTML = ""; //--starthtml--// $IPBHTML .= << .section_title { margin-bottom: 10px; } .warning, .information-box { padding: 10px 10px 10px 30px; } .warning { background: #f7e5e8 url( ../skin_cp/images/icons/exclamation.png ) no-repeat 9px 10px; border: 1px solid #f0c1cb; color: #92394d; } .warning h4 { color: #802200; font-weight: bold; } .information-box { background: #f0f6e2 url( ../skin_cp/images/icons/information.png ) no-repeat 9px 10px; border: 1px solid #d7e9a8; color: #5d8005; } .information-box h4 { color: #6c6141; } .acp-box h3 { font-size: 15px; font-weight: bold; } .ipsTable { width: 100%; } .ipsTable th { font-weight: bold; padding: 4px 4px 4px 0px; min-width: 50px; } .ipsTable th:nth-child(2) { text-align: center; } .ipsTable td { padding-top: 3px; padding-bottom: 3px; } .ipsTable td:nth-child(2) { text-align: center; } EOF; return $IPBHTML; } /** * Show install complete page * * @access public * @param array * @return string HTML */ public function upgrade_complete( $options ) { $IPBHTML = ""; //--starthtml--// $_productName = $this->registry->fetchGlobalConfigValue('name'); $IPBHTML .= << EOF; foreach( $options as $app => $_bleh ) { foreach( $options[ $app ] as $num => $data ) { if ( ! $data['out'] ) { continue; } if ( $data['app']['key'] == 'core' ) { $data['app']['name'] = 'IP.Board'; } $IPBHTML .= <<Сообщения

{$data['out']}

EOF; } } $IPBHTML .= <<Поздравляем, ваш форум! обновлен


Обновление завершено! EOF; $IPBHTML .= <<
  • Админ-центр
  • IPBmafia.Ru
  • EOF; return $IPBHTML; } /** * Show the page to manually run log query, with option to prune and run instead * * @access public * @return string HTML */ public function upgrade_manual_queries_logs( $queries, $id=1, $TABLE='' ) { $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<Пожалуйста выполните следующие запросы прежде чем продолжить
    Вы можете нажать здесь чтобы очистить таблицу-журнал '{$TABLE}' и мастер сам внесет изменения в структуру
    ИЛИ
    Запустите следующие запросы сами:
    EOF; return $IPBHTML; } /** * Show the install start page * * @access public * @return string HTML */ public function upgrade_manual_queries( $queries, $sourceFile='' ) { $IPBHTML = ""; //--starthtml--// $or = ''; $IPBHTML .= <<Выполните следующие SQL запросы перед продолжением
    EOF; if ( $sourceFile ) { $or = 'ИЛИ '; $IPBHTML .= <<Запустите этот файл
    EOF; } $IPBHTML .= <<{$or}отдельные запросы
    EOF; return $IPBHTML; } /** * Show the install start page * * @access public * @return string HTML */ public function upgrade_ready( $name, $current, $latest) { $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<$name
    Текущая версия: v{$current}
    Последняя версия: v{$latest}
    Опции обновления
    • Показывать SQL запросы для запуска вручную. ВНИМАНИЕ: Если вы выберите эту опцию, то вам будут показаны SQL запросы, которые необходмо выполнить в командной строке mysql. Если вы не уверены в своих силах, то свяжитесь с нашей службой поддержки.
    • Обновлять разделы помощи, если будут найдены различия

    EOF; return $IPBHTML; } /** * Show the upgrade app options * * @access public * @return string HTML */ public function upgrade_appsOptions( $options ) { $IPBHTML = ""; //--starthtml--// $IPBHTML .= << EOF; foreach( $options as $app => $_bleh ) { foreach( $options[ $app ] as $num => $data ) { if ( $data['app']['key'] == 'core' ) { $data['app']['name'] = 'IP.Board'; } $IPBHTML .= <<{$data['app']['name']} {$data['long']} {$data['out']}
    EOF; } } $IPBHTML .= << EOF; return $IPBHTML; } /** * Show the DB override page * * @access public * @return string HTML */ public function upgrade_previousSession( $session=array() ) { $IPBHTML = ""; //--starthtml--// $url = IPSSetUp::getSavedData('install_url'); $date = gmdate( 'r', $session['session_start_time'] ); $IPBHTML .= <<

    Обнаружено прерванное обновление

    Обнаружено прерванное обновление от {$date} GMT.
    Обновляется секция '{$session['session_section']} - {$session['_session_get']['do']}' приложение '{$session['_sd']['install_apps']}', сейчас обновляется '{$session['_sd']['appdir']}'

    Вы можете продолжить с места остановки нажав здесь или можете нажать кнопку продолжить и обновление будет начато заново.

    EOF; return $IPBHTML; } /** * Show the upgrader applications page * * @access public * @param array Applications * @return string HTML */ public function upgrade_apps( $apps, $notices ) { $IPBHTML = ""; //--starthtml--// $IPBHTML .= << Выберите приложения для обновления. EOF; foreach( array( 'core', 'ips', 'other' ) as $type ) { switch( $type ) { case 'core': $title = "Приложения по-умолчанию"; break; case 'ips': $title = "Приложения IPS"; break; case 'other': $title = "Приложения сторонних разработчиков"; break; } if ( count( $apps[ $type ] ) ) { $IPBHTML .= << {$title} EOF; foreach( $apps[ $type ] as $key => $data ) { if ( $type == 'core' ) { if ( $key == 'core' ) { $data['name'] = 'IP.Board'; } else { continue; } } $_upav = ( $data['_vnumbers']['current'][0] >= $data['_vnumbers']['latest'][0] ) ? 0 : 1; $upgrade = ( ! $_upav ) ? "Обновлено" : "Обновить до {$data['_vnumbers']['latest'][1]}"; $_checked = ( $_upav and $data['_vnumbers']['current'][0] ) ? ' checked="checked"' : ''; $_style = ( ! $data['_vnumbers']['current'][0] OR ( ! $_upav ) ) ? 'display:none' : ''; /* Not installed? */ if ( ! $data['_vnumbers']['current'][0] ) { $upgrade = "Приложение не установлено."; $data['_vnumbers']['current'][1] = ''; } //----------------------------------------- // Yes, I know this wouldn't work for "core" // apps, but we can just use the global folder // for them so it's irrelevant //----------------------------------------- $img = is_file( IPSLib::getAppDir( $key ) . '/skin_cp/appIcon.png' ) ? $this->settings['base_url'] . '/' . CP_DIRECTORY . '/applications_addon/' . $type . '/' . $key . '/skin_cp/appIcon.png' : "../skin_cp/images/applications/{$key}.png"; $IPBHTML .= << {$data['name']} {$data['_vnumbers']['current'][1]} $upgrade EOF; if ( count( $notices[ $key ] ) ) { $IPBHTML .= "
      "; foreach ( $notices[ $key ] as $n ) { $IPBHTML .= "
    • {$n}
    • "; } $IPBHTML .= "
    "; } } $IPBHTML .= << EOF; } } return $IPBHTML; } /** * Show the upgrade overview page * * @access public * @param bool Files ok * @param bool Extensions ok * @param array Extensions * @return string HTML */ public function upgrade_overview( $filesOK, $extensionsOK, $extensions=array()) { $minPHP = IPSSetUp::minPhpVersion; $minSQL = IPSSetUp::minDb_mysql; $prefPHP = IPSSetUp::prefPhpVersion; $prefSQL = IPSSetUp::prefDb_mysql; /* Memory warning */ $_memLimit = null; $_recLimit = 128; if( @ini_get('memory_limit') ) { $_memLimit = @ini_get('memory_limit'); } $_filesOK = ( $filesOK === NULL ) ? "Не проверено" : ( ( $filesOK === FALSE ) ? "Нет" : "Есть" ); $_extensionsOK = ( $extensionsOK === FALSE ) ? "Нет" : "Есть"; $IPBHTML = ""; //--starthtml--// $IPBHTML .= << Системные требования
    PHP: v{$minPHP} или выше
    SQL: MySQL v{$minSQL} ({$prefSQL} или выше предпочтительнее)

    EOF; $_mbstringVar = @ini_get('mbstring.func_overload'); if( $_mbstringVar == '0' ) { $IPBHTML .= <<Конфигурация mbstrings:
    Значение mbstring.func_overload на вашей системе: {$_mbstringVar}


    EOF; } else { $IPBHTML .= <<Конфигурация mbstrings:
    Значение mbstring.func_overload на вашей системе: {$_mbstringVar}
    Продолжение обновления приведет к ошибкам в работе форума!
    Пожалуйста свяжитесь с вашим хостинг-провайдером для утановки этого параметра = 0


    EOF; } if( $_memLimit ) { $_intLimit = $_memLimit; $_intRec = $_recLimit * 1024 * 1024; preg_match( '#^(\d+)(\w+)$#', strtolower($_intLimit), $match ); if( $match[2] == 'g' ) { $_intLimit = intval( $_intLimit ) * 1024 * 1024 * 1024; } else if ( $match[2] == 'm' ) { $_intLimit = intval( $_intLimit ) * 1024 * 1024; } else if ( $match[2] == 'k' ) { $_intLimit = intval( $_intLimit ) * 1024; } else { $_intLimit = intval( $_intLimit ); } if( $_intLimit >= $_intRec ) { $IPBHTML .= <<Memory Limit (конфигурация PHP): рекомендуется {$_recLimit}M или более
    Значение на вашей системе: {$_memLimit} EOF; } else { $IPBHTML .= <<Memory Limit (конфигурация PHP): рекомендуется {$_recLimit}M или более
    Значение на вашей системе: {$_memLimit}.
    Пожалуйста свяжитесь с вашим хостинг-провайдером для увеличения параметра до {$_recLimit}M.
    EOF; } } else { $IPBHTML .= <<Memory Limit (конфигурация PHP): рекомендуется {$_recLimit}M или более
    Внимание: не удалось определить значени параметра на вашей системе. EOF; } //----------------------------------------- // Suhosin //----------------------------------------- if( extension_loaded( 'suhosin' ) ) { $_postMaxVars = @ini_get('suhosin.post.max_vars'); $_reqMaxVars = @ini_get('suhosin.request.max_vars'); $_getMaxLen = @ini_get('suhosin.get.max_value_length'); $_postMaxLen = @ini_get('suhosin.post.max_value_length'); $_reqMaxLen = @ini_get('suhosin.request.max_value_length'); $_reqMaxVar = @ini_get('suhosin.request.max_varname_length'); $_indPMV = $_postMaxVars < 4096 ? "orange; font-weight: bold" : "green"; $_indRMV = $_reqMaxVars < 4096 ? "orange; font-weight: bold" : "green"; $_indGML = $_getMaxLen < 2000 ? "orange; font-weight: bold" : "green"; $_indPML = $_postMaxLen < 1000000 ? "orange; font-weight: bold" : "green"; $_indRML = $_reqMaxLen < 1000000 ? "orange; font-weight: bold" : "green"; $_indRMVL = $_reqMaxVar < 350 ? "orange; font-weight: bold" : "green"; $IPBHTML .= <<
    Suhosin:
    Некоторые значения не удовлетворяют рекомендуемым.
    suhosin.post.max_vars: 4096 или более
    Значение на вашей системе: {$_postMaxVars}.
    Может привести к проблемам при сохранении форм (особенно в админ-центре).

    suhosin.request.max_vars: 4096 или более
    Значение на вашей системе: {$_reqMaxVars}.
    Может привести к проблемам при сохранении форм (особенно в админ-центре).

    suhosin.get.max_value_length: 2000 или более
    Значение на вашей системе: {$_getMaxLen}.
    Может привести к проблемам при работе с длинными URL.

    suhosin.post.max_value_length: 1000000 или более
    Значение на вашей системе: {$_postMaxLen}.
    Может привести к проблемам при сохранении больших сообщений или подобной информации.

    suhosin.request.max_value_length: 1000000 или более
    Значение на вашей системе: {$_reqMaxLen}.
    Может привести к проблемам при сохранении больших сообщений или подобной информации.

    suhosin.request.max_varname_length: 350 или более
    Значение на вашей системе: {$_reqMaxVar}.
    Может привести к проблемам при работе с ЧПУ.

    EOF; } $IPBHTML .= <<
    Проверка перед установкой: Файлы
    Требуемые файлы: {$_filesOK}

    Проверка перед установкой: PHP-расширения
    Обзор PHP-расширений: {$_extensionsOK} EOF; foreach( $extensions as $xt ) { if ( $xt['_ok'] !== TRUE ) { if ( $xt['_ok'] !== 1 ) { $IPBHTML .= "
    {$xt['prettyname']} ({$xt['extensionname']}): Отсутствует (Подробнее)"; } else { $IPBHTML .= "
    {$xt['prettyname']} ({$xt['extensionname']}) Рекомендуется: ВНИМАНИЕ (Подробнее)"; } } else { $IPBHTML .= "
    {$xt['prettyname']} ({$xt['extensionname']}): Есть"; } } $IPBHTML .= << EOF; return $IPBHTML; } /** * Log in page * * @access public * @return string HTML */ public function upgrade_login_200plus( $loginType ) { $IPBHTML = ""; //--starthtml--// $label = ( $loginType == 'username' ) ? 'Имя пользователя' : 'Email адрес'; $IPBHTML .= <<
    Добро пожаловать в систему обновления.

    Мастер обновления проведет вас через все необходимые шаги.


    Авторизация
    {$label}:
    Пароль
    EOF; return $IPBHTML; } /** * Log in page * * @access public * @return string HTML */ public function upgrade_login_300plus( $additional_data, $replace_form, $loginType='username' ) { $IPBHTML = ""; //--starthtml--// switch( $loginType ) { case 'either': $loginString = "Имя пользователя или email"; break; case 'email': $loginString = "Email"; break; default: case 'username': $loginString = "Имя пользователя"; break; } if( $replace_form ) { $IPBHTML .= $additional_data[0]; } else { $IPBHTML .= << EOF; if ( $this->request['_acpRedirect'] ) { $IPBHTML .= << Обнаружена новая версия приложения.
    Вам необходимо запустить мастер обновления, прежде чем вы сможете зайти в админ-центр. EOF; } else { $IPBHTML .= <<Добро пожаловать в систему обновления.

    Мастер обновления проведет вас через все необходимые шаги.

    EOF; } $IPBHTML .= <<
    Авторизация
    EOF; if( count($additional_data) > 0 ) { foreach( $additional_data as $form_html ) { $IPBHTML .= $form_html; } } $IPBHTML .= <<
    EOF; } return $IPBHTML; } /** * Show error page * * @access public * @param string Error message * @return string HTML */ public function page_error($msg) { $IPBHTML = ""; //--starthtml--// $IPBHTML .= << {$msg} EOF; return $IPBHTML; } /** * Show locked page * * @access public * @return string HTML */ public function page_locked() { $IPBHTML = ""; //--starthtml--// $IPBHTML .= << УСТАНОВЩИК ЗАБЛОКИРОВАН
    Для продолжения удалите файл "cache/installer_lock.php". EOF; return $IPBHTML; } /** * Show install complete page * * @access public * @param bool Installer was locked successfully * @return string HTML */ public function page_installComplete( $installLocked ) { $IPBHTML = ""; //--starthtml--// $_productName = $this->registry->fetchGlobalConfigValue('name'); if ( ! $installLocked ) { $extra = "
    УСТАНОВЩИК НЕ ЗАБЛОКИРОВАН
    Немедленно удалите файл 'admin/install/index.php' !
    "; } $IPBHTML .= << Установка завершена!

    Поздравляем, {$_productName} установлен и готов к использованию! Ниже приведено несколько полезных ссылок.


    {$extra} EOF; return $IPBHTML; } /** * Show the install start page * * @access public * @return string HTML */ public function page_install() { $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<Начать для запуска установки!

    EOF; return $IPBHTML; } /** * Show the admin info page * * @access public * @return string HTML */ public function page_admin() { $IPBHTML = ""; //--starthtml--// $username = htmlspecialchars($_REQUEST['username']); $email = htmlspecialchars($_REQUEST['email']); $IPBHTML .= << Внимательно заполните форму.
    Данные введенные здесь используются для доступа к администраторским функциям системы.
    Учетная запись администратора
    Имя пользователя:
    Пароль:
    Подтвердите пароль:
    E-mail адрес:
    EOF; return $IPBHTML; } /** * Show the DB override page * * @access public * @return string HTML */ public function page_dbOverride() { $IPBHTML = ""; //--starthtml--// $url = IPSSetUp::getSavedData('install_url'); $IPBHTML .= << В базе данных ({$this->request['db_name']}) уже есть таблицы с таким же префиксом ({$this->request['db_pre']}).
    Вы можете перезаписать существующие таблицы или вы можете выбрать другую базу данных или префикс.
    Может быть вы хотели запустить обновление ?
    Перезапись таблиц
    Перезаписать существующие в базе данных таблицы

    Изменить данные базы данных
    Хост SQL:
    Название базы данных:
    Имя пользователя:
    Пароль:
    Префикс таблиц:
    EOF; return $IPBHTML; } /** * Collect DB info * * @access public * @return string HTML */ public function page_db() { $IPBHTML = ""; //--starthtml--// /* 'lil hack here */ if ( is_file( DOC_IPS_ROOT_PATH . "conf_global.php" ) ) { $INFO = array(); require( DOC_IPS_ROOT_PATH . 'conf_global.php' );/*noLibHook*/ if ( is_array( $INFO ) && count($INFO) ) { $this->request['db_host'] = ( $this->request['db_host'] ) ? ( $this->request['db_host'] == 'localhost' ? ( $INFO['sql_host'] ? $INFO['sql_host'] : 'localhost' ) : $this->request['db_host'] ) : 'localhost'; $this->request['db_name'] = ( $this->request['db_name'] ) ? $this->request['db_name'] : $INFO['sql_database']; } } $IPBHTML .= << Необходимо создать базу данных перед продолжением. Обратитесь к вашему хостинг провайдеру, если не уверены в значениях этих настроек.
    Информация о базе данных
    Хост SQL:
    Название базы данных:
    Имя пользователя:
    Пароль:
    Префикс таблиц:
    EOF; return $IPBHTML; } /** * Check the database to use * * @access public * @param array Available DB drivers * @return string HTML */ public function page_check_db( $drivers ) { $_drivers = ''; foreach ($drivers as $k => $v) { $selected = ($v == "Mysql") ? " selected='selected'" : ""; $_drivers .= "\n"; } $IPBHTML = ""; //--starthtml--// $IPBHTML .= << Выберите какой драйвер базы данных вы хотите использовать.
    Драйвер базы данных
    SQL драйвер:
    EOF; return $IPBHTML; } /** * Show the EULA * * @access public * @return string HTML */ public function page_eula() { $_eula = nl2br( $this->registry->fetchGlobalConfigValue('license') ); $IPBHTML = ""; //--starthtml--// $IPBHTML .= << check_eula = function() { if( document.getElementById( 'eula' ).checked == true ) { return true; } else { alert( 'Для продолжения установки необходми согласиться с условиями лицензии' ); return false; } } document.getElementById( 'install-form' ).onsubmit = check_eula; Пожалуйста, прочитайте все пункты Пользовательского Соглашения.

    {$_eula}

    EOF; return $IPBHTML; } /** * Ask for license key * * @access public * @return string HTML */ public function page_license( $error ) { $IPBHTML = ""; //--starthtml--// if ( $error ) { $IPBHTML .= <<
    {$error}
    EOF; } $IPBHTML .= <<
    Ключ лицензии
    Ключ
    Ввод ключа лицензии не обязателен для продолжения установки. Вы можете ввести его позже.

    EOF; return $IPBHTML; } /** * Show the address info page * * @access public * @param string Directory * @param string URL * @return string HTML */ public function page_address( $dir, $url ) { $IPBHTML = ""; //--starthtml--// $IPBHTML .= << Адрес установки
    Директория установки:
    URL установки:
    EOF; return $IPBHTML; } /** * Show the applications page * * @access public * @param array Applications * @return string HTML */ public function page_apps( $apps ) { $IPBHTML = ""; //--starthtml--// $IPBHTML .= << Выберите приложения для установки.
    Были обнаружены следующие приложения: EOF; foreach( array( 'core', 'ips', 'other' ) as $type ) { switch( $type ) { case 'core': $title = "Приложения по-умолчанию"; break; case 'ips': $title = "Приложения IPS"; break; case 'other': $title = "Приложения сторонних разработчиков"; break; } if ( count( $apps[ $type ] ) ) { $IPBHTML .= << {$title} EOF; foreach( $apps[ $type ] as $key => $data ) { if ( isset( $this->request['apps'] ) ) { $_checked = isset( $this->request['apps'][ $key ] ) ? ' checked="checked" ' : ''; } else { $_checked = ( $type == 'core' OR $type == 'ips' ) ? ' checked="checked" ' : ''; } $_style = ( $type == 'core' ) ? 'display:none' : ''; //----------------------------------------- // Yes, I know this wouldn't work for "core" // apps, but we can just use the global folder // for them so it's irrelevant //----------------------------------------- $img = is_file( IPSLib::getAppDir( $key ) . '/skin_cp/appIcon.png' ) ? '../applications_addon/' . $type . '/' . $key . '/skin_cp/appIcon.png' : "../skin_cp/images/applications/{$key}.png"; $IPBHTML .= << {$data['name']} От: {$data['author']}
    {$data['description']}
    EOF; } $IPBHTML .= << EOF; } } return $IPBHTML; } /** * Show the requirements page * * @access public * @param bool Files ok * @param bool Extensions ok * @param array Extensions * @return string HTML */ public function page_requirements( $filesOK, $extensionsOK, $extensions=array(), $text='установки' ) { $minPHP = IPSSetUp::minPhpVersion; $minSQL = IPSSetUp::minDb_mysql; $prefPHP = IPSSetUp::prefPhpVersion; $prefSQL = IPSSetUp::prefDb_mysql; /* Memory warning */ $_memLimit = null; $_recLimit = 128; if( @ini_get('memory_limit') ) { $_memLimit = @ini_get('memory_limit'); } $_filesOK = ( $filesOK === NULL ) ? "Не проверено" : ( ( $filesOK === FALSE ) ? "Нет" : "Есть" ); $_extensionsOK = ( $extensionsOK === FALSE ) ? "Нет" : ( $extensionsOK === TRUE ? "Есть" : "Не полностью" ); $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<
    Добро пожаловать в систему установки. Мастер установки проведет вас через весь процесс {$text}.
    EOF; if( $text == 'upgrade' ) { $IPBHTML .= << Если вы не уверены, что сможете успешно произвести обновление приложения, пожалуйста обратитесь в службу поддержки.

    Прежде чем продолжить обновление, убедитесь, что у вас имеется актуальная, рабочая резервная копия базы форума. Нажимая продолжить, вы подтверждаете, что такая копия у вас имеется.
    EOF; } $IPBHTML .= << Если вам нужна помощь по работе с мастером установки, то обратитесь к документации.
    Системные требования
    PHP: v{$minPHP} или выше
    SQL: MySQL v{$minSQL} ({$prefSQL} или выше предпочтительнее)

    EOF; $_mbstringVar = @ini_get('mbstring.func_overload'); if( $_mbstringVar == '0' ) { $IPBHTML .= <<Конфигурация mbstrings:
    Значение mbstring.func_overload на вашей системе: {$_mbstringVar}


    EOF; } else { $IPBHTML .= <<Конфигурация mbstrings:
    Значение mbstring.func_overload на вашей системе: {$_mbstringVar}
    Продолжение установки приведет к ошибкам в работе форума!
    Пожалуйста свяжитесь с вашим хостинг-провайдером для утановки этого параметра = 0


    EOF; } if( $_memLimit ) { $_intLimit = $_memLimit; $_intRec = $_recLimit * 1024 * 1024; preg_match( '#^(\d+)(\w+)$#', strtolower($_intLimit), $match ); if( $match[2] == 'g' ) { $_intLimit = intval( $_intLimit ) * 1024 * 1024 * 1024; } else if ( $match[2] == 'm' ) { $_intLimit = intval( $_intLimit ) * 1024 * 1024; } else if ( $match[2] == 'k' ) { $_intLimit = intval( $_intLimit ) * 1024; } else { $_intLimit = intval( $_intLimit ); } if( $_intLimit >= $_intRec ) { $IPBHTML .= <<Memory Limit (конфигурация PHP): рекомендуется {$_recLimit}M или более
    Значение на вашей системе: {$_memLimit} EOF; } else { $IPBHTML .= <<Memory Limit (конфигурация PHP): рекомендуется {$_recLimit}M или более
    Значение на вашей системе: {$_memLimit}.
    Пожалуйста свяжитесь с вашим хостинг-провайдером для увеличения параметра до {$_recLimit}M.
    EOF; } } else { $IPBHTML .= <<Memory Limit (конфигурация PHP): рекомендуется {$_recLimit}M или более
    Внимание: не удалось определить значени параметра на вашей системе. EOF; } //----------------------------------------- // Suhosin //----------------------------------------- if( extension_loaded( 'suhosin' ) ) { $_postMaxVars = @ini_get('suhosin.post.max_vars'); $_reqMaxVars = @ini_get('suhosin.request.max_vars'); $_getMaxLen = @ini_get('suhosin.get.max_value_length'); $_postMaxLen = @ini_get('suhosin.post.max_value_length'); $_reqMaxLen = @ini_get('suhosin.request.max_value_length'); $_reqMaxVar = @ini_get('suhosin.request.max_varname_length'); $_indPMV = $_postMaxVars < 4096 ? "orange; font-weight: bold" : "green"; $_indRMV = $_reqMaxVars < 4096 ? "orange; font-weight: bold" : "green"; $_indGML = $_getMaxLen < 2000 ? "orange; font-weight: bold" : "green"; $_indPML = $_postMaxLen < 1000000 ? "orange; font-weight: bold" : "green"; $_indRML = $_reqMaxLen < 1000000 ? "orange; font-weight: bold" : "green"; $_indRMVL = $_reqMaxVar < 350 ? "orange; font-weight: bold" : "green"; $IPBHTML .= <<
    Suhosin:
    Некоторые значения не удовлетворяют рекомендуемым.
    suhosin.post.max_vars: 4096 или более
    Значение на вашей системе: {$_postMaxVars}.
    Может привести к проблемам при сохранении форм (особенно в админ-центре).

    suhosin.request.max_vars: 4096 или более
    Значение на вашей системе: {$_reqMaxVars}.
    Может привести к проблемам при сохранении форм (особенно в админ-центре).

    suhosin.get.max_value_length: 2000 или более
    Значение на вашей системе: {$_getMaxLen}.
    Может вызывать проблемы при работе с длинными URL.

    suhosin.post.max_value_length: 1000000 or better recommended
    Значение на вашей системе: {$_postMaxLen}.
    Может привести к проблемам при сохранении больших сообщений или подобной информации.

    suhosin.request.max_value_length: 1000000 or better recommended
    Значение на вашей системе: {$_reqMaxLen}.
    Может привести к проблемам при сохранении больших сообщений или подобной информации.

    suhosin.request.max_varname_length: 350 или более
    Значение на вашей системе: {$_reqMaxVar}.
    Может привести к проблемам при работе с ЧПУ.

    EOF; } $IPBHTML .= <<
    Проверка: Файлы
    Требуемые файлы: {$_filesOK}

    Проверка: Расширения PHP
    Общие расширения PHP: {$_extensionsOK} EOF; foreach( $extensions as $xt ) { if ( $xt['_ok'] !== TRUE ) { if ( $xt['_ok'] !== 1 ) { $IPBHTML .= "
    {$xt['prettyname']} ({$xt['extensionname']}): Нет (Подробнее)"; } else { $IPBHTML .= "
    {$xt['prettyname']} ({$xt['extensionname']}) Рекомендуется: Нет (Подробнее)"; } } else { $IPBHTML .= "
    {$xt['prettyname']} ({$xt['extensionname']}): Есть"; } } $IPBHTML .= << EOF; return $IPBHTML; } /** * Global template/wrapper * * @access public * @param string Title * @param string Page content * @param array Data * @param array Errors * @param array Warnings * @param array Install step info * @return string HTML */ public function globalTemplate( $title, $content, $data=array(), $errors=array(), $warnings=array(), $messages=array(), $installStep=array(), $version, $appData ) { $IPBHTML = ""; //--starthtml--// $_cssPath = '../setup/public'; $_productVersion = $this->registry->fetchGlobalConfigValue('version'); $_productName = $this->registry->fetchGlobalConfigValue('name'); $app = ( IPS_IS_UPGRADER ) ? 'upgrade' : 'install'; $extraUrl = ( IPS_IS_UPGRADER ) ? '&s=' . $this->request['s'] : ''; $extraUrl .= ( IPS_IS_UPGRADER AND $this->request['workact'] ) ? '&workact=' . $this->request['workact'] : ''; $extraUrl .= ( IPS_IS_UPGRADER AND isset( $this->request['st'] ) ) ? '&st=' . $this->request['st'] : ''; $extraInfo = ( IPS_IS_UPGRADER AND $version ) ? 'Модуль: ' . $version . '
    (' . $appData['name'] . ')' : ''; $IPBHTML .= << Установщик IPS: {$title}
      EOF; foreach( $data['progress'] as $p ) { $extra = ''; if ( $installStep[0] > 0 ) { $extra = ( $p[0] == 'step_doing' ) ? "

      Шаг {$installStep[0]}/{$installStep[1]}

      " : ''; } if ( $extraInfo ) { $extra .= ( $p[0] == 'step_doing' ) ? "

      {$extraInfo}

      " : ''; } $IPBHTML .= <<{$p[1]}{$extra} EOF; } $IPBHTML .= <<
    EOF; if ( count( $messages ) ) { $IPBHTML .= <<
    EOF; foreach( $messages as $msg ) { $IPBHTML .= "

    {$msg}

    \n"; } $IPBHTML.= <<
    EOF; } if ( count( $errors ) OR count( $warnings ) ) { $IPBHTML .= <<
    EOF; foreach( $errors as $msg ) { $IPBHTML .= "

    Ошибка: {$msg}

    \n"; } foreach( $warnings as $msg ) { $IPBHTML .= "

    Предупреждение: {$msg}

    \n"; } $IPBHTML.= <<
    EOF; } $IPBHTML .= <<

    {$_productName} {$_productVersion}

    {$content}
    EOF; if ( $data['hideButton'] !== TRUE AND $this->_showNoButtons !== TRUE ) { if ( $this->registry->output->nextAction == 'disabled' OR count( $errors ) ) { $IPBHTML .= << EOF; } else { if( ! $this->registry->output->nextAction ) { $back = my_getenv('HTTP_REFERER'); $IPBHTML .= << EOF; } $IPBHTML .= << EOF; } } $date = date("Y"); $IPBHTML .= <<


    EOF; /* Bit of a kludge */ if ( is_array( $errors ) AND count( $errors ) ) { $IPBHTML .= << // EOF; } $IPBHTML .= << EOF; return $IPBHTML; } /** * AJAX page refresh template * * @access public * @param string Output * @return string HTML */ public function page_refresh( $output ) { $this->_showNoButtons = TRUE; $output = ( is_array( $output ) AND count( $output ) ) ? $output : array( 0 => 'Продолжение' ); $errors = array_merge( $this->registry->output->fetchWarnings(), $this->registry->output->fetchErrors() ); $HTML = << // EOF; if ( empty( $errors ) ) { $HTML .= <<
    Пожалуйста подождите...






      EOF; foreach( $output as $l ) { $HTML .= <<{$l} EOF; } $HTML .= <<
    EOF; } else { $HTML .= <<
    EOF; } return $HTML; } }