ExBB Community ExBB Community
 Сайт проекта ExBB Общение объединяет!
Войдите на форум при помощиВойти через loginza
 Чат на форуме      Помощь      Поиск      Пользователи     BanList BanList


 Страниц (2): « 1 [2]   

> Без описания
Zeg
Отправлено: 9 ноября 2011 — 23:45
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 891
Дата рег-ции: Март 2009  
Откуда: Беларусь
Репутация: 89




CAB, а в теме прикрепленное сообщение есть?
 
 
CAB
Отправлено: 10 ноября 2011 — 16:36
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 629
Дата рег-ции: Февр. 2011  
Откуда: Москва
Репутация: 30




Zeg пишет:
а в теме прикрепленное сообщение есть?
Нет.
 
 
BON
Отправлено: 10 ноября 2011 — 17:59
Post Id



Администратор
ExBB Team
Admin


Покинул форум
Сообщений всего: 2762
Дата рег-ции: Нояб. 2010  
Откуда: СССР/Белгород
Репутация: 72




CAB, а с чего решили что это траблы lib.php а не fm.class.php ???
(Добавление)
я сравнил со своим либ.пхп вроде всё так же. но это на вскидку. если есть какая то програма для сравнения кода плиз в студию её
 
 
CAB
Отправлено: 10 ноября 2011 — 18:57
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 629
Дата рег-ции: Февр. 2011  
Откуда: Москва
Репутация: 30




BON, N++
(Добавление)
Плагины -> Compare
 
 
CAB
Отправлено: 13 ноября 2011 — 00:06
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 629
Дата рег-ции: Февр. 2011  
Откуда: Москва
Репутация: 30




Я нашёл в чём проблема... Но пока искал наткнулся на другую проблему: если в теме есть прикреплённое сообщение, то корректность перехода на другое сообщение зависит от того, старше или младше искомого сообщения прикреплённое. Наверное не очень понятно объяснил? В общем упёрся пока. Вопрос, как вытащить ID или дату прикреплённого сообщения? Нигде не могу найти признака что именно это сообщение прикреплено. Где это прописывается?
 
 
CAB
Отправлено: 21 ноября 2011 — 20:35
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 629
Дата рег-ции: Февр. 2011  
Откуда: Москва
Репутация: 30




Проблема оказалась намного сложнее и глубже, чем я думал изначально. Я то, наивный, думал добавлю "+1" в какое-то место и всё заработает - не тут-то было!
Во всём виноват мод прикреплённых сообщений. Проблема в том, что непосредственно на той странице, где должно было бы быть прикреплённое сообщение, оно не добавляется, а просто переносится вверх.
Но, потратив около двух недель и несколько бессонных ночей, мне, кажется, удалось найти правильный алгоритм расчёта и сварганить PHP-код.
ВНИМАНИЕ! Предлагаемый код заплатки предназначен только для тех, у кого НЕ установлен мод хранения статистики на сервере (поскольку я этим модом не пользуюсь, то и адаптировать исправленный алгоритм для него не могу).
Моя заплатка: в файле topic.php строки
CODE:
$fm->input['p'] = floor($post_key/$fm->user['posts2page'])+1;
$post_key += count($_pinmsg) * $fm->input['p'];
$fm->input['p'] = floor(($post_key - 1)/$fm->user['posts2page'])+1;
заменить на строки
CODE:
/*
Заплатка на функцию перехода к конкретному сообщению
Автор CAB http://exbb.su/
*/
$_pinmsgold = 0; // Количество прикреплённых сообщений старше искомого
if (count($_pinmsg) !== FALSE) { // Если есть прикреплённые сообщения
foreach ($_pinmsg as $datepinmsg) if ($datepinmsg < $fm->input['postid']) $_pinmsgold++; // Считаем сколько прикреплённых сообщений старше искомого
}
$_pages = floor(($post_key + 1) / ($fm->user['posts2page'] - count($_pinmsg))); // Вероятная страница с искомым сообщением
$_posts = ($post_key + 1) + $_pages * count($_pinmsg) - $_pinmsgold; // Порядковый номер искомого сообщения
$fm->input['p'] = ceil($_posts / $fm->user['posts2page']); // Страница с искомым сообщением

Поскольку у меня уже нет ни сил, ни желания протестировать данную заплатку во всевозможных вариациях (да это и не реально), прошу не просто установить данную заплатку, а ещё и погонять её работу.
Порядок тестирования такой: выбираете самую многостраничную тему, заходите в её версию для печати и переходите по ссылке каждого сообщения в основную версию, контролируя при этом правильность перехода. При этом меняйте количество и расположение прикреплённых сообщений и количество сообщений на странице.
Да, и имейте ввиду, что прикреплённых сообщений в теме должно быть, как минимум, на одно меньше, чем заданное количество сообщений на странице - это само по себе разумеющееся требование для мода прикреплённых сообщений (я даже рекомендую отключить пользователям возможность устанавливать себе количество сообщений на страницу, чтоб не нарваться на проблему).
Также хочу выразить надежду, что кто-то сможет адаптировать изменённый алгоритм для мода хранения статистики на сервере и выложить здесь готовый код.
 
 
1Bot
Отправлено: 27 сентября 2013 — 09:56
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 773
Дата рег-ции: Апр. 2009  
Откуда: Днепропетровск
Репутация: 69




Алгоритм расчета номера страницы (P2) по номеру сообщения в теме (N2), без учета прикрепленных сообщений и количеству сообщений на странице (n), которое задается в профиле у каждого пользователя, при наличии (m) прикрепленных сообщений в теме

Произвести подсчет количества прикрепленных сообщений (m2), отправленных раньше сообщения с номером N2
CODE:
P2 = 1 + floor( ( N2 - m2 ) / ( n - m ) )
 
 
CAB
Отправлено: 27 сентября 2013 — 15:13
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 629
Дата рег-ции: Февр. 2011  
Откуда: Москва
Репутация: 30




1Bot, Вы протестировали свой алгоритм по приведённой мной выше методике?
CAB пишет:
Порядок тестирования такой: выбираете самую многостраничную тему, заходите в её версию для печати и переходите по ссылке каждого сообщения в основную версию, контролируя при этом правильность перехода. При этом меняйте количество и расположение прикреплённых сообщений и количество сообщений на странице.

(Добавление)
1Bot пишет:
P2 = 1 + floor( ( N2 - m2 ) / ( n - m ) )
Прикинул на калькуляторе, вроде всё правильно получается.
 
 
NordWest
Отправлено: 28 сентября 2013 — 05:45
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 994
Дата рег-ции: Дек. 2011  
Откуда: Северо-Запад
Репутация: 76




CAB
Попробовал у себя на форуме спровоцировать ошибку по предложенному вами алгоритму. Как не бился - ничего не вышло.

Поискал в файле topic.php строки, с котрыми вы работали...
Похоже ваше решение уже включено в финал (строка 148)
CODE:
$fm->input['p'] = ceil(($post_key + 1) / ($fm->user['posts2page'] - count($_pinmsg)));

(Отредактировано автором: 28 сентября 2013 — 05:47)

 
 
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Решение проблем »

> Похожие темы: Переход на следующую страницу темы после публикации сообщения
Темы Форум Информация о теме Обновление
Notice: unserialize() [function.unserialize]
Пропали сообщения
Решение проблем Ответов: 14
Автор темы: Александр Васёвич
13 января 2011 — 21:39
Автор: Toxic
Группы пользователей
Создание группы пользователей с последующими правами досутпа к форумам
Решение проблем Ответов: 6
Автор темы: dr comix
2 февраля 2010 — 13:30
Автор: lisiycat
Ошибка при перенаправлении
при редактировании сообщения и т.д.
Решение проблем Ответов: 7
Автор темы: Guyver
3 января 2018 — 13:54
Автор: Guyver
Проблема с цитированием.
не цитируется текст сообщения.
Решение проблем Ответов: 0
Автор темы: dark
12 марта 2009 — 06:25
Автор: dark
Почему именно Вы выбрали ExBB?
или собираетесь выбрать а также сомнения и страхи перед выбором и после.
О жизни Ответов: 13
Автор темы: roma1
22 октября 2011 — 12:35
Автор: mills
 



Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 




Яндекс.Метрика   

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0865]     [ ]