[IPB 3.1.4] Исправляем баг при переходе на конкретный пост в режиме модератора - Дизайн и модификация Invision Power Board

Перейти к содержимому

 
-----
В режиме модератора в топиках отображаются скрытые посты, количество которых в топике может быть огромно. Так вот в этом случае, при скрытии нового поста система перекинет модератора на 1 или несколько страниц назад. И модератору снова нужно будет искать то место в топике, с которым он работал.

Вот наглядный пример:
-IMG-
Тестовая тема имеет 4 странцы в режиме модератора. В данной теме имеется 8 скрытых сообщений. При скрытии поста модератора перекинет на 1 страницу назад.

Баг этот происходит из-за некоррктной обработки параметра findpost в режиме модератора. Смело предполагаем, что разработчики снова забыли учесть количество скрытых постов в топике. Но, забегая вперёд, это не совсем так: они учитывают это количество, просто напросто допустили ошибку в определении самого модератора за штурвалом браузера.

Баг имеет место и при восстановлении скрытых постов.

Исправляем этот баг.

Открываем файлик /admin/applications/forums/modules_public/forums/findpost.php на редактирование и ищем в нём такой кодес:
'select'	=> 't.title_seo',

и заменяем его на такой:
'select'	=> 't.*',


Чуть ниже находим такой кодес:
    $query  = ' AND ' . $this->registry->class_forums->fetchPostHiddenQuery('visible');
    
    /* Can we deal with hidden posts? */
    if ( $this->registry->class_forums->canQueuePosts( $this->topic['forum_id'] ) )
    {
      if ( $this->permissions['softDeleteSee'] )
      {
        /* See queued and soft deleted */
        $query = '';
      }
      else

и заменяем его на такой:
    $sort_field = ($this->settings['post_order_column'] == 'pid') ? 'pid' : 'post_date';
    $sort_value = $sort_field == 'pid' ? $pid : $post['post_date'];
    
    $query  = '';
    
    /* Can we deal with hidden posts? */
    if ( $this->registry->class_forums->canQueuePosts( $post['forum_id'] ) )
    {       
      $softDeleteSee = $this->registry->getClass('class_forums')->canSeeSoftDeletedPosts( $post['forum_id'] );
      if ($softDeleteSee)
      {
        /* See queued and soft deleted */
        $query = ' AND ' . $this->registry->class_forums->fetchPostHiddenQuery( array( 'approved', 'sdeleted', 'hidden' ) );
      }
      else

Из данного кодеса видно, что массив $this->permissions по неизвестной причине не иниализирован. В причинах можете сами разобраться, но мне проще вставить сюда чтение одного элемента этого массива.

Так же ниже ищем кодес:
    $cposts = $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as posts', 'from' => 'posts', 'where' => "topic_id={$post['topic_id']} AND pid <= {$pid}{$query}" ) );

и заменяем его на такой:
    if (strlen($query) < 2) 
      $query  = ' AND ' . $this->registry->class_forums->fetchPostHiddenQuery('visible');
      
    $cposts = $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as posts', 'from' => 'posts', 'where' => "topic_id={$post['topic_id']} AND {$sort_field} <=" . intval( $sort_value ) . $query ) );


Заливаем файлик findpost.php на WEB-сервер и проверяем.
После данного фикса параметр findpost в режиме модератора будет корректно обрабатываться. И поэтому двигло форума не будет более перекидывать модератора фиг знает куда.

PS. Исправление частично взято из IPB 3.3.4 (касательно переменной $sort_value).
1
Это нравится metos

0 комментариев

Обратные ссылки на эту запись [ URL для обратной ссылки ]

Нет обратных ссылок на эту запись

Случайное изображение

Боремся...

0 посетителей

0 гостей
0 пользователей
0 скрытых

Теги

    Категории

    Последние посетители

    • BuyerGV  »
      03 дек 2018 - 23:29
    • Hirs  »
      11 окт 2018 - 16:20
    • Турин  »
      04 ноя 2017 - 03:22
    • Estomel  »
      01 ноя 2017 - 17:01
    • vitfix  »
      26 авг 2017 - 20:12
    • Strategius  »
      22 фев 2017 - 11:52
    • siv1987  »
      20 авг 2016 - 14:10
    • ovi8  »
      12 авг 2016 - 22:55
    • danzo  »
      21 окт 2015 - 10:38
    • nervud  »
      27 июл 2015 - 17:08
    • Mac  »
      05 май 2015 - 16:03
    • FOMEN  »
      02 мар 2015 - 11:52
    • tolik777  »
      15 фев 2015 - 13:45
    • NoName  »
      11 янв 2015 - 13:48
    • verbatim1  »
      07 дек 2014 - 15:11

    MyBlogLog

    Twitter


    Контактная информация

    Вопросы по работе сайта

    +7 (917) 501-4765
    C 10 до 20 в рабочие дни (время московское)

    Техническая поддержка

    Контактные данные специалистов

    Дизайн форумов

    IPB 3.x ¦ IPB 2.x

    Бесплатные шаблоны

    IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
    Лицензия на использование ¦ Ваша поддержка ¦ О проекте
    Copyright © 2005-2019 IPBSkins.ru Team
    При копировании материалов с сайта
    прямая ссылка на источник обязательна