Не исправлен он там ![]()
И кстати, вопрос вот интересный без внимания оставили: http://punbb.informer.com/forums/topic/ … hardcoded/
|
Фонд моральной поддержки |
|
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
PunBB по-русски → Сообщения от Ghost
Страницы 1
Не исправлен он там ![]()
И кстати, вопрос вот интересный без внимания оставили: http://punbb.informer.com/forums/topic/ … hardcoded/
Не появлялось ещё похожих расширений?
Мне тоже нужно что-то подобное. Если нету, придется самому писать. Репутация и Спасибо не подходят: нужна привязка к теме, а не к пользователю.
Баг: не обновляется ссылка на последнюю тему и пост, если эту тему удалить. Версия 0.2.
Под 1.3.2 было такое расширение - Post Edit Control. Я его для себя переделал, но на чистом punBB 1.3.4 не проверял. Зато добавлено также ограничение удаления поста.
Ghost пишет:vt_qr_get_posts сделать отдельную выборку и вывод
то есть ?
запрос 1 поста, а потом как его придепить к массиву остальных элементов?
в 0.1.0 версии я сделал выборку первого сообщения и приделывал его к каждой странице, но потребовался доп хук которого нет в виевтопике... да и получилось очень громоздко.
Да. Но не прикреплять к массиву, а выводить вообще отдельно. И вынести в отдельный functions.php, наверное. Зато не будет таких проблем с запросами ![]()
Не знаю, правда, какой вариант лучше будет из соображений производительности...
Я как-то так и делал бы. Или сделать отдельным запросом и отдельно выводить. А то как-то страшненько вышло ![]()
А зачем здесь лишний раз выбирается id первого поста в теме?
$where1 = 'select id from '.$forum_db->prefix.'posts where topic_id='.$id.' limit '.$forum_page['start_from'].',1';
$query['WHERE'] .= ' and (p.id=t.first_post_id or (p.id >= ('.$where1.') '.$where2.'))';
Добавлено спустя 10 минут 46 секунд:
Поставил в профиле 5 сообщений на страницу и получил ошибку:
Notice: Undefined offset: 1 in F:\www\htdocs\punbb13\viewtopic.php(298) : eval()'d code on line 67
Добавлено спустя 13 минут 58 секунд:
Всё-таки, мне кажется, лучше было бы в vt_qr_get_posts сделать отдельную выборку и вывод, а не цепляться к существующей выборке.
Модераторы не имеют права переводить пользователей из одной группы в другую.
Есть такое расширение: http://punbb.informer.com/forums/topic/ … ssignment/
Вот бы ещё выделять его как-нибудь...
Пока времени нет ![]()
Спасибо!
Я хотел намекнуть, что менять версию PHP ради одного расширения - как-то неправильно, если разработчики обещают работоспособность форума на 4.3.0.
Можно написать функцию, которая бы вызывалась для более ранних версий, в статье о json_encode на php.net есть пример.
У меня не работает ![]()
Firebug говорит, что после каждого запроса новых сообщений происходит следующая ошибка:
<br />
<b>Fatal error</b>: Call to undefined function json_encode() in <b>F:\www\htdocs\punbb13\misc.php(631) : eval()'d code</b> on line <b>248</b><br />PHP 5.1.2 (А разработчики говорят, что должно работать и на 4.3.0)
И в чём проблема была? Не в BOM ли?
Решение не очень красивое, поэтому я не знаю, понравится ли вам ![]()
Суть в том, что показываются первые 10 смайликов из набора, остальные спрятаны в скрытый div, который можно открыть, кликнув на линк "More".
Юзаем Anycodetool, создаём новое решение, в котором будут такие хуки:
pun_bbcode_pre_smilies_output
$pun_bbcode_smiley_index = 0;pun_bbcode_smilies_output_loop_start
$pun_bbcode_smiley_index++;
if ($pun_bbcode_smiley_index == 11) {
?> <a href="#smileys_hidden_hr" onClick="document.getElementById('smileys_hidden').style.display='block';">More</a><div id="smileys_hidden" style="display:none;"><a id="smileys_hidden_hr"></a> <?php
}Здесь число 11 - это порядковый номер смайлика, начиная с которого все остальные будут спрятаны. Когда можно будет сделать полноценное расширение, я эту константу вынесу в настройки.
А теперь - проблема: отсутствие хука в bar.php.
В строке 108, то есть после цикла:
foreach (array_unique($smilies) as $smile_text => $smile_file) {
...
}нужно добавить следующий код:
if ($pun_bbcode_smiley_index > 10) {
?> </div> <?php
}Если что-то не получится - спрашивайте ![]()
Для себя я уже сделал, а расширение смогу написать, когда добавят запрошенный мною хук в bar.php
Для 1.3.4 что-нибудь подобное существует?
Если не найду, скоро напишу расширение, которое показывает на каждой странице первое сообщение топика.
У меня на форуме пришлось сделать ограничения - делюсь, если кому-нибудь ещё понадобится:
Задача:
1. Запретить пользователям удалять свои сообщения, если со времени публикации прошло более 15 мин, и редактировать, если прошло более 30мин.
2. Запретить пользователям удалять свое сообщение, если оно не последнее в теме
Решение
Создаем решение post_edit_delete_time
Хук 1: vt_row_pre_post_actions_merge
if (!$forum_page['is_admmod']) {
if ($cur_post['poster_id'] == $forum_user['id']) {
if ($cur_topic['closed'] == '0') {
if (isset($forum_page['post_actions']['delete']) && ((time() - $cur_post['posted'] > POST_DELETE_TIME)) || ($forum_page['start_from'] + $forum_page['item_count'] < $cur_topic['num_replies'] + 1)) {
unset($forum_page['post_actions']['delete']);
}
if (isset($forum_page['post_actions']['edit']) && (time() - $cur_post['posted'] > POST_EDIT_TIME)) {
unset($forum_page['post_actions']['edit']);
}
}
}
}Хук 2: in_start
define('POST_EDIT_TIME', 1800);
define('POST_DELETE_TIME', 900);Можно обойтись без хука 2, поместив соответствующий код в начало кода хука 1. Просто мне кажется логичным, чтобы все константы объявлялись в одном месте. В данном движке это index.php ![]()
Добавлено спустя 1 час 7 минут 12 секунд:
Гы, оказывается, уже есть похожее расширение: http://punbb.informer.com/forums/topic/ … it-period/
Страницы 1
PunBB по-русски → Сообщения от Ghost
Сгенерировано за 0.067 секунды (79% PHP — 21% БД) 5 запросов к базе данных
Технологии с открытым исходным кодом, несомненно, обладают серьезным преимуществом над аналогичными продуктами, распространяемыми по ограниченным лицензиям. И совершенно неважно, что это. Возможно это:
Впрочем, неважно. Что бы это ни было, важно всячески поощрять и поддерживать Open Source в любом виде. Тем более, что вы знаете, PunBB распространяется по лицензии GPL/GNU. И спасибо за внимание.