1 (edited by PunBB 2017.09.05 00:30)

Topic: Патчи. Заплатки. Устранение ошибок PunBB 1.4.4

В этой теме будут опубликованы различные патчи для устранения различных ошибок движка. После скачивания распакуйте содержимое патча по соответствующему пути.

Будьте внимательны! Сохраните все внесенные вами изменения в заменяемом файле, чтобы избежать потери важного кода. Позаботьтесь заранее сохранив резервные копии файлов.

Если при установке какого либо патча у вас возникли проблемы или вопросы, пишите в соответствующие разделы: Общие вопросы или Отчеты об ошибках.


Патч /style/Oxygen/Oxygen.php

PunBB 1.4.4

+ устранена ошибка неопределенной переменной $tpl_main в /style/Oxygen/Oxygen.php при установке переадрессации более 0 секунд.

Oxygen.php
$tpl_main = str_replace('<!-- forum_board_title -->', forum_htmlencode($forum_config['o_board_title']), $tpl_main);
$tpl_main = str_replace('<!-- forum_lang_menu_admin -->', $lang_common['Menu admin'], $tpl_main);
$tpl_main = str_replace('<!-- forum_lang_menu_profile -->', $lang_common['Menu profile'], $tpl_main);

Замена на

if(isset($tpl_main)) {
    $tpl_main = str_replace('<!-- forum_board_title -->', forum_htmlencode($forum_config['o_board_title']), $tpl_main);
    $tpl_main = str_replace('<!-- forum_lang_menu_admin -->', $lang_common['Menu admin'], $tpl_main);
    $tpl_main = str_replace('<!-- forum_lang_menu_profile -->', $lang_common['Menu profile'], $tpl_main);
}

Скачать патч /style/Oxygen/Oxygen.php

Если вам долго не отвечают, пишите автору темы в личку или на Email.

2 (edited by PunBB 2017.09.10 01:35)

Re: Патчи. Заплатки. Устранение ошибок PunBB 1.4.4

Патч /include/parser.php
PunBB 1.4.4

Содержит исправления:
+ устранена ошибка на 814 в parser.php. Возникала при добавлении голой ссылки в подпись.
+ добавлена совместимость с PHP>7.2 (замена create_function на анонимные функции. Подробности в коде файла)


Скачать патч /include/parser.zip

Если вам долго не отвечают, пишите автору темы в личку или на Email.

3 (edited by PunBB 2017.07.23 18:29)

Re: Патчи. Заплатки. Устранение ошибок PunBB 1.4.4

Патч /include/email.php
PunBB 1.4.4

Содержит исправления:
+ устранена ошибка отправки писем на П/Я с помощью внешнего SMTP почтового сервиса. (Внимание! Потребуются индивидуальные настройки внешнего почтового сервера.)


email.php
        fwrite($socket, 'EHLO '.$smtp_host."\r\n");

Замена на:

        $_server = $_SERVER['SERVER_NAME'];
      fwrite($socket, 'EHLO '.$_server."\r\n");

Скачать патч /include/email.zip

Если вам долго не отвечают, пишите автору темы в личку или на Email.

4 (edited by PunBB 2017.09.04 23:59)

Re: Патчи. Заплатки. Устранение ошибок PunBB 1.4.4

Патч /nclude/dblayer/sqlite3.php
Поддержка php 7 и выше

Содержит исправления:

+ замена имени функции DBLayer на __construct (для поддержки php7)

sqlite3.php
function DBLayer($db_host, $db_username, $db_password, $db_name, $db_prefix, $p_connect)

замена на:

function __construct($db_host, $db_username, $db_password, $db_name, $db_prefix, $p_connect)

+ корректировка функции add_field() (раннее при переустановке расширений не создавалось новое поле)

sqlite3.php

замена функции

   function add_field($table_name, $field_name, $field_type, $allow_null, $default_value = null, $after_field = 0, $no_prefix = false)
   {
      if ($this->field_exists($table_name, $field_name, $no_prefix))
         return;

      $table = $this->get_table_info($table_name, $no_prefix);

      // Create temp table
      $now = time();
      $tmptable = str_replace('CREATE TABLE '.($no_prefix ? '' : $this->prefix).$this->escape($table_name).' (', 'CREATE TABLE '.($no_prefix ? '' : $this->prefix).$this->escape($table_name).'_t'.$now.' (', $table['sql']);
      $this->query($tmptable) or error(__FILE__, __LINE__);
      $this->query('INSERT INTO '.($no_prefix ? '' : $this->prefix).$this->escape($table_name).'_t'.$now.' SELECT * FROM '.($no_prefix ? '' : $this->prefix).$this->escape($table_name)) or error(__FILE__, __LINE__);

      // Create new table sql
      $field_type = preg_replace(array_keys($this->datatype_transformations), array_values($this->datatype_transformations), $field_type);
      $query = $field_type;
      if (!$allow_null)
         $query .= ' NOT NULL';
      if ($default_value === null || $default_value === '')
         $default_value = '\'\'';

      $query .= ' DEFAULT '.$default_value;

      $old_columns = array_keys($table['columns']);
      array_insert($table['columns'], $after_field, $query.',', $field_name);

      $new_table = 'CREATE TABLE '.($no_prefix ? '' : $this->prefix).$this->escape($table_name).' (';

      foreach ($table['columns'] as $cur_column => $column_details)
         $new_table .= "\n".$cur_column.' '.$column_details;

      if (isset($table['unique']))
         $new_table .= "\n".$table['unique'].',';

      if (isset($table['primary_key']))
         $new_table .= "\n".$table['primary_key'];

      $new_table = trim($new_table, ',')."\n".');';

      // Drop old table
      $this->drop_table($table_name, $no_prefix);

      // Create new table
      $this->query($new_table) or error(__FILE__, __LINE__);

      // Recreate indexes
      if (!empty($table['indices']))
      {
         foreach ($table['indices'] as $cur_index)
            $this->query($cur_index) or error(__FILE__, __LINE__);
      }

      //Copy content back
      $this->query('INSERT INTO '.($no_prefix ? '' : $this->prefix).$this->escape($table_name).' ('.implode(', ', $old_columns).') SELECT * FROM '.($no_prefix ? '' : $this->prefix).$this->escape($table_name).'_t'.$now) or error(__FILE__, __LINE__);

      // Drop temp table
      $this->drop_table($table_name.'_t'.$now, $no_prefix);
   }

на

   function add_field($table_name, $field_name, $field_type, $allow_null, $default_value = null, $after_field = null, $no_prefix = false)
   {
      if ($this->field_exists($table_name, $field_name, $no_prefix))
         return;

      $field_type = preg_replace(array_keys($this->datatype_transformations), array_values($this->datatype_transformations), $field_type);

      if ($default_value !== null && !is_int($default_value) && !is_float($default_value))
         $default_value = '\''.$this->escape($default_value).'\'';

      $this->query('ALTER TABLE '.($no_prefix ? '' : $this->prefix).$table_name.' ADD '.$field_name.' '.$field_type.($allow_null ? ' ' : ' NOT NULL').($default_value !== null ? ' DEFAULT '.$default_value : ' ').($after_field != null ? ' AFTER '.$after_field : '')) or error(__FILE__, __LINE__);
   }

Скачать патч /nclude/dblayer/sqlite3.zip

Если вам долго не отвечают, пишите автору темы в личку или на Email.

5

Re: Патчи. Заплатки. Устранение ошибок PunBB 1.4.4

Патч /admin/index.php
PunBB 1.4.4

Содержит исправления:
+ добавлена совместимость с PHP>7.2 (замена create_function на анонимную функцию)

/admin/index.php
   array_walk($load_averages, create_function('&$v', '$v = forum_number_format(round($v, 2), 2);'));

замена на:

   array_walk($load_averages,
   function () use (&$v) {
      $v = forum_number_format(round($v, 2), 2);
   });

Скачать патч /admin/index.zip

Если вам долго не отвечают, пишите автору темы в личку или на Email.