IPB UPGRADE MODULE:: IPB 2.1.2 -> 2.1.3 | > Script written by Matt Mecham | > Date started: 23rd April 2004 | > "So what, pop is dead - it's no great loss. So many facelifts, it's face flew off" +-------------------------------------------------------------------------- */ if ( ! defined( 'IN_IPB' ) ) { print "

Некорректный адрес

Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; exit(); } class version_upgrade { var $this_version = '21010'; var $upgrade_from = '21009'; var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; /*-------------------------------------------------------------------------*/ // CONSTRUCTOR /*-------------------------------------------------------------------------*/ function version_upgrade() { } function version_process() { $this->md5_check = $this->ipsclass->return_md5_check(); $this->base_url = "index.php?act=work&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}"; if ( is_array( $this->ipsclass->modules_to_run ) and count( $this->ipsclass->modules_to_run ) ) { $tmp = array_shift( $this->ipsclass->modules_to_run ); $this->mod_to_run = implode( ', ', $this->ipsclass->modules_to_run ); } if ( ! $this->mod_to_run ) { $this->mod_to_run = 'None'; } } /*-------------------------------------------------------------------------*/ // Auto run.. /*-------------------------------------------------------------------------*/ function auto_run() { //-------------------------------- // What are we doing? // sql => DONE //-------------------------------- switch( $this->ipsclass->input['workact'] ) { case 'sql': $this->upgrade_sql(); break; default: $this->upgrade_intro(); break; } } /*-------------------------------------------------------------------------*/ // SQL: 0 /*-------------------------------------------------------------------------*/ function upgrade_sql() { $man = intval( $this->ipsclass->input['man'] ); $SQL = array(); $file = '_updates.php'; $cnt = 0; if ( file_exists( THIS_PATH . 'upg_' . $this->ipsclass->current_upgrade . '/' . strtolower($this->ipsclass->vars['sql_driver']) . $file ) ) { require_once( THIS_PATH . 'upg_' . $this->ipsclass->current_upgrade . '/' . strtolower($this->ipsclass->vars['sql_driver']) . $file ); // IBR Fix Portal Settings $query1 = $this->ipsclass->DB->query("SELECT conf_title_id FROM ibf_conf_settings_titles WHERE conf_title_keyword = 'portal_poll' LIMIT 0,1"); if ( $portal_poll = $this->ipsclass->DB->fetch_row( $query1 ) ) { $this->ipsclass->DB->build_query( array( 'select' => 'conf_id', 'from' => 'conf_settings', 'where' => 'conf_key=\'poll_poll_url\'', 'limit' => array( 0, 1 ) ) ); $this->ipsclass->DB->exec_query(); if ( $opt01 = $this->ipsclass->DB->fetch_row() ) { $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $portal_poll['conf_title_id'] ), 'conf_key=\'poll_poll_url\'' ); } else { $this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Введите URL темы с импортируемым опросом', 'conf_group' => $portal_poll['conf_title_id'], 'conf_description' => 'Оставьте пустым, если не хотите, чтобы отображался блок с опросом', 'conf_type' => 'input', 'conf_key' => 'poll_poll_url', 'conf_protected' => '1', 'conf_position' => '17', 'conf_end_group' => '0', 'conf_add_cache' => '0' ) ); } } else { $this->ipsclass->DB->do_insert( 'conf_settings_titles', array( 'conf_title_keyword' => 'portal_poll', 'conf_title_title' => 'Портал: Опрос', 'conf_title_desc' => 'Настройки вывода опроса в портал.', 'conf_title_noshow' => '1' ) ); $fix1 = $this->ipsclass->DB->query("SELECT conf_title_id FROM ibf_conf_settings_titles WHERE conf_title_keyword = 'portal_poll' LIMIT 0,1"); if ( $pix1 = $this->ipsclass->DB->fetch_row( $fix1 ) ) { $this->ipsclass->DB->build_query( array( 'select' => 'conf_id', 'from' => 'conf_settings', 'where' => 'conf_key=\'poll_poll_url\'', 'limit' => array( 0, 1 ) ) ); $this->ipsclass->DB->exec_query(); if ( $pixopt01 = $this->ipsclass->DB->fetch_row() ) { $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $pix1['conf_title_id'] ), 'conf_key=\'poll_poll_url\'' ); } else { $this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Введите URL темы с импортируемым опросом', 'conf_group' => $pix1['conf_title_id'], 'conf_description' => 'Оставьте пустым, если не хотите, чтобы отображался блок с опросом', 'conf_type' => 'input', 'conf_key' => 'poll_poll_url', 'conf_protected' => '1', 'conf_position' => '17', 'conf_end_group' => '0', 'conf_add_cache' => '0' ) ); } } } $query2 = $this->ipsclass->DB->query("SELECT conf_title_id FROM ibf_conf_settings_titles WHERE conf_title_keyword = 'portal_recent_topics' LIMIT 0,1"); if ( $portal_recent = $this->ipsclass->DB->fetch_row( $query2 ) ) { // 1 $this->ipsclass->DB->build_query( array( 'select' => 'conf_id', 'from' => 'conf_settings', 'where' => 'conf_key=\'recent_topics_discuss_number\'', 'limit' => array( 0, 1 ) ) ); $this->ipsclass->DB->exec_query(); if ( $opt02 = $this->ipsclass->DB->fetch_row() ) { $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $portal_recent['conf_title_id'] ), 'conf_key=\'recent_topics_discuss_number\'' ); } else { $this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Количество отображаемых тем', 'conf_group' => $portal_recent['conf_title_id'], 'conf_description' => 'Количество отображаемых заголовков тем для портального тэга recent_discussions_last_x', 'conf_type' => 'input', 'conf_key' => 'recent_topics_discuss_number', 'conf_default' => '1','conf_protected' => '1', 'conf_position' => '9', 'conf_start_group' => 'Последние обсуждения', 'conf_end_group' => '0', 'conf_add_cache' => '0' ) ); } // 2 $this->ipsclass->DB->build_query( array( 'select' => 'conf_id', 'from' => 'conf_settings', 'where' => 'conf_key=\'recent_topics_article_forum\'', 'limit' => array( 0, 1 ) ) ); $this->ipsclass->DB->exec_query(); if ( $opt03 = $this->ipsclass->DB->fetch_row() ) { $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $portal_recent['conf_title_id'] ), 'conf_key=\'recent_topics_article_forum\'' ); } else { $this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Из каких форумов экспортировать новости?', 'conf_group' => $portal_recent['conf_title_id'], 'conf_description' => 'Вы можете выбирать несколько форумов.', 'conf_type' => 'multi', 'conf_key' => 'recent_topics_article_forum', 'conf_extra' => '#show_forums#', 'conf_evalphp' => 'if ( $save == 1){ if ( is_array($_POST[\'recent_topics_article_forum\']) ) { $_POST[\'recent_topics_article_forum\'] = implode(\",\",$_POST[\'recent_topics_article_forum\']); } else { $_POST[\'recent_topics_article_forum\'] = \"\"; } $key = \'recent_topics_article_forum\';}if ( $show == 1 ){$key = \'recent_topics_article_forum[]\';}', 'conf_protected' => '1', 'conf_position' => '3', 'conf_end_group' => '0', 'conf_add_cache' => '0' ) ); } // 3 $this->ipsclass->DB->build_query( array( 'select' => 'conf_id', 'from' => 'conf_settings', 'where' => 'conf_key=\'recent_topics_article_max\'', 'limit' => array( 0, 1 ) ) ); $this->ipsclass->DB->exec_query(); if ( $opt04 = $this->ipsclass->DB->fetch_row() ) { $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $portal_recent['conf_title_id'] ), 'conf_key=\'recent_topics_article_max\'' ); } else { $this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Количество новостей для отображения', 'conf_group' => $portal_recent['conf_title_id'], 'conf_description' => 'Количество тем, отображаемых в портальном тэге recent_topics_last_x', 'conf_type' => 'input', 'conf_key' => 'recent_topics_article_max', 'conf_default' => '15','conf_protected' => '1', 'conf_position' => '4', 'conf_start_group' => 'Последние новости', 'conf_end_group' => '1', 'conf_add_cache' => '0' ) ); } } else { $this->ipsclass->DB->do_insert( 'conf_settings_titles', array( 'conf_title_keyword' => 'portal_recent_topics', 'conf_title_title' => 'Портал: Последние обсуждения', 'conf_title_desc' => 'Настройки вывода последних обсуждений в портал', 'conf_title_noshow' => '1' ) ); $fix2 = $this->ipsclass->DB->query("SELECT conf_title_id FROM ibf_conf_settings_titles WHERE conf_title_keyword = 'portal_recent_topics' LIMIT 0,1"); if ( $pix2 = $this->ipsclass->DB->fetch_row( $fix2 ) ) { // 1 $this->ipsclass->DB->build_query( array( 'select' => 'conf_id', 'from' => 'conf_settings', 'where' => 'conf_key=\'recent_topics_discuss_number\'', 'limit' => array( 0, 1 ) ) ); $this->ipsclass->DB->exec_query(); if ( $opt02 = $this->ipsclass->DB->fetch_row() ) { $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $pix2['conf_title_id'] ), 'conf_key=\'recent_topics_discuss_number\'' ); } else { $this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Количество отображаемых тем', 'conf_group' => $pix2['conf_title_id'], 'conf_description' => 'Количество отображаемых заголовков тем для портального тэга recent_discussions_last_x', 'conf_type' => 'input', 'conf_key' => 'recent_topics_discuss_number', 'conf_default' => '1','conf_protected' => '1', 'conf_position' => '9', 'conf_start_group' => 'Последние обсуждения', 'conf_end_group' => '0', 'conf_add_cache' => '0' ) ); } // 2 $this->ipsclass->DB->build_query( array( 'select' => 'conf_id', 'from' => 'conf_settings', 'where' => 'conf_key=\'recent_topics_article_forum\'', 'limit' => array( 0, 1 ) ) ); $this->ipsclass->DB->exec_query(); if ( $opt03 = $this->ipsclass->DB->fetch_row() ) { $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $pix2['conf_title_id'] ), 'conf_key=\'recent_topics_article_forum\'' ); } else { $this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Из каких форумов экспортировать новости?', 'conf_group' => $pix2['conf_title_id'], 'conf_description' => 'Вы можете выбирать несколько форумов.', 'conf_type' => 'multi', 'conf_key' => 'recent_topics_article_forum', 'conf_extra' => '#show_forums#', 'conf_evalphp' => 'if ( $save == 1){ if ( is_array($_POST[\'recent_topics_article_forum\']) ) { $_POST[\'recent_topics_article_forum\'] = implode(\",\",$_POST[\'recent_topics_article_forum\']); } else { $_POST[\'recent_topics_article_forum\'] = \"\"; } $key = \'recent_topics_article_forum\';}if ( $show == 1 ){$key = \'recent_topics_article_forum[]\';}', 'conf_protected' => '1', 'conf_position' => '3', 'conf_end_group' => '0', 'conf_add_cache' => '0' ) ); } // 3 $this->ipsclass->DB->build_query( array( 'select' => 'conf_id', 'from' => 'conf_settings', 'where' => 'conf_key=\'recent_topics_article_max\'', 'limit' => array( 0, 1 ) ) ); $this->ipsclass->DB->exec_query(); if ( $opt04 = $this->ipsclass->DB->fetch_row() ) { $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $pix2['conf_title_id'] ), 'conf_key=\'recent_topics_article_max\'' ); } else { $this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Количество новостей для отображения', 'conf_group' => $pix2['conf_title_id'], 'conf_description' => 'Количество тем, отображаемых в портальном тэге recent_topics_last_x', 'conf_type' => 'input', 'conf_key' => 'recent_topics_article_max', 'conf_default' => '15','conf_protected' => '1', 'conf_position' => '4', 'conf_start_group' => 'Последние новости', 'conf_end_group' => '1', 'conf_add_cache' => '0' ) ); } } } // IBR Fix end foreach( $SQL as $q ) { $q = str_replace( "<%time%>", time(), $q ); $this->ipsclass->DB->query( $q ); $cnt++; } } $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt запросов выполнено...." ); } /*-------------------------------------------------------------------------*/ // INTRO /*-------------------------------------------------------------------------*/ function upgrade_intro() { $this->ipsclass->template->content .= "
Добро пожаловать в систему обновления IPB
Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]}

Этот первый этап {$this->first_step}
"; if ( ! is_writeable( CACHE_PATH . 'cache/skin_cache' ) ) { $this->ipsclass->template->content .= "
ВНИМАНИЕ: Папка cache/skin_cache недоступна для записи
Пожалуйста, проверьте CHMOD для этой папки. Если вы проигнорируете это предупреждение, то файлы стилей могут некорректно установиться.
"; } else { $this->ipsclass->template->content .= "
» Далее ...

После этого модуля будет запущено: {$this->mod_to_run}
"; } $this->ipsclass->template->output(); } } ?>