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 = '21009'; var $upgrade_from = '21008'; 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; case 'cal': $this->upgrade_cal(); break; case 'helpfiles': $this->upgrade_helpfiles(); break; case 'skinrevert': $this->revert_skin_changes(); 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 ); foreach( $SQL as $q ) { $q = str_replace( "<%time%>", time(), $q ); $this->ipsclass->DB->query( $q ); $cnt++; } } $this->ipsclass->core->redirect( "{$this->base_url}&workact=cal", "$cnt запросов выполнено...." ); } /*-------------------------------------------------------------------------*/ // Update Old Calendar Events /*-------------------------------------------------------------------------*/ function upgrade_cal() { $cnt = 0; $outer = $this->ipsclass->DB->query( "SELECT * FROM ibf_cal_events ORDER BY event_id ASC" ); if( $this->ipsclass->DB->get_num_rows($outer) ) { while( $event = $this->ipsclass->DB->fetch_row( $outer ) ) { if( $event['event_tz'] ) { $this->ipsclass->DB->query( "UPDATE ibf_cal_events SET event_tz=0 WHERE event_id='{$event['event_id']}'" ); $cnt++; } } } $this->ipsclass->core->redirect( "{$this->base_url}&workact=helpfiles", "$cnt календарных событий обновлено...." ); } /*-------------------------------------------------------------------------*/ // Update help files /*-------------------------------------------------------------------------*/ function upgrade_helpfiles() { if(! $this->ipsclass->input['do_update'] ) { $this->ipsclass->template->content .= "
Вы желаете обновить файлы помощи?
Несколько файлов помощи были изменены от более ранних версий. Мы рекомендуем запустить обновление, так как для IPB 2.1.x старые файлы помощи в некоторых моментах уже не точны. Если вы уже изменяли сами файлы помощи, то имейте ввиду, что при запуске обновления ваши изменения могут быть потеряны. Этот шаг обновит первые 16 файлов помощи в вашей базе данных. Если вы не изменяли стандартные файлы помощи, а добавляли новые, то они не будут удалены...

Вы желаете обновить ваши файлы помощи?
» Обновить файлы помощи ...
» Пропустить этот этап ...
"; $this->ipsclass->template->output(); } else { $man = intval( $this->ipsclass->input['man'] ); $UPDATES = 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 ); foreach( $UPDATES as $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 файлов помощи обновлено...." ); } } /*-------------------------------------------------------------------------*/ // Revert Skin Changes /*-------------------------------------------------------------------------*/ function revert_skin_changes() { if(! $this->ipsclass->input['do_update'] ) { $id = intval($this->ipsclass->input['skinid']) ? intval($this->ipsclass->input['skinid']) : 2; $default = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id={$id}" ) ); if( !$default['set_skin_set_id'] ) { // Didn't find id 2, let's try by name $default = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_name='IPB Стандартный стиль'" ) ); if( !$default['set_skin_set_id'] ) { // Didn't find by name either $default = array(); } } if( count( $default ) ) { $this->ipsclass->template->content .= "
Вы желаете возвратить стиль в стандартный вид (убрав все ваши изменения в нем)?
Во время обновлений часто бывают изменения в шаблонах IPB главного стиля, от которого ваши стили унаследованы. Если шаблоны вашего стиля не были изменены, они просто унаследуют изменения от шаблонов главного стиля. Для «IPB Стандартный стиль» это случится автоматически.

Другие стили, которые были импортированы вами, могут иметь свой собственный набор шаблонов, они могут, возможно, быть обновлены вручную. Если ваши шаблоны стиля не обновлены как положено, могут возникнуть проблемы... Например, вы можете увидеть javascript ошибки, или вы не сможете увидеть какие-то блоки, потому что они не будут найдены в ваших шаблонах...

Шаблоны вашего Главного стиля будут обновлены автоматически в течение процесса обновления, однако, чтобы работало все нормально на стандартном стиле, любые изменения обязаны быть удалены. Если вы хотите сделать это вручную, вы можете пропустить этот этап, затем после обновления зайти в админцентр для удаления изменений... Вам будет необходимо зайти в редактирование «IPB 2.1 Стандартный стиль» и выбрать «Обратить все изменения......» для измененных шаблонов. Также, система обновления может сделать это за вас.

Из-за различных возможностей HTML для нестандартных стилей, система обновления не сможет изменить эти стили для вас. После того, как обновление будет завершено, мы рекомендуем вам запустить утилиту «Генерировать отчет сравнения стилей...» в админцентре для определения изменений, внесенных в ваш стиль.

Вы желаете удалить внесенные в стиль изменения для «{$default['set_name']}»?
(Если это не стандартный стиль, мы рекомендуем вам пропустить данный этап и обновить ваши шаблоны вручную)
» Да, удалить все изменения в стиле ...
» ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}'>Нет, я хочу пропустить этот этап ...
"; } else { $this->ipsclass->template->content .= "
«IPB Стандартный стиль» не найден
Этот этап позволяет вам возвратить «IPB Стандартный стиль» в стандартный вид (убрать все ваши изменения в нем), это даст гарантию на то, что обновления стилей будут унаследованы должным образом. Ваш «IPB Стандартный стиль» не был найден.


» ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}'>Далее ...
"; } $this->ipsclass->template->output(); } else { $man = intval( $this->ipsclass->input['man'] ); $cnt = 0; $default = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id=".$man ) ); $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_templates', 'where' => "set_id=".$man ) ); $outer = $this->ipsclass->DB->simple_exec(); if( $this->ipsclass->DB->get_num_rows($outer) ) { while( $r = $this->ipsclass->DB->fetch_row($outer) ) { if( $r['set_id'] == 1 ) { continue; } else { $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'skin_templates', 'where' => 'suid='.$r['suid'] ) ); $cnt++; } } } $next = $this->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'] ) { $this->ipsclass->core->redirect( "index.php?act=work&workact=skinrevert&skinid={$next['set_skin_set_id']}&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt шаблонов из стиля '{$default['set_name']}' было возвращено в стандартный вид...." ); } else { $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt шаблонов из стиля '{$default['set_name']}' было возвращено в стандартный вид...." ); } } } /*-------------------------------------------------------------------------*/ // 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(); } } ?>