1

Topic: Прочие вопросы о PunBB

Hello !
I am not sure it is relevant for this peculiar add-on. I asked for a feature on PunBbforum http://punbb.informer.com/forums/topic/ … ification/ 5 days ago, 225 visitors read it, but I received no answer. Maybe it would be more appropriate in an anti-spam extension.

Below is the issue I met :

On a phpBB forum, somebody quoted my message in an answer, modified my quoted text and included a malicious link. The moderators did not notice it, not checking the text in the quote since it was supposed to be mine.
Is there a way in PunBB to forbid modification of a quote or to forbid any quote (I mean any text styled as a quote) ? Or at least to delete links in a quote ?

If it's off topic, just tell me.

2

Re: Прочие вопросы о PunBB

Would you like:
Prohibition of cited links in the message?

3

Re: Прочие вопросы о PunBB

in parser.php file on sring 138

   $tags_limit_bbcode = array(
      '*'      => array('b', 'i', 'u', 'color', 'colour', 'url', 'email', 'list', 'img'),
      'list'   => array('*'),
      'url'   => array('b', 'i', 'u', 'color', 'colour', 'img'),
      'email' => array('b', 'i', 'u', 'color', 'colour', 'img'),
      'img'   => array(),

   );

Add custom allowed tags in qwote.  All tags but not linlks.

   $tags_limit_bbcode = array(
      '*'      => array('b', 'i', 'u', 'color', 'colour', 'url', 'email', 'list', 'img'),
      'list'   => array('*'),
      'url'   => array('b', 'i', 'u', 'color', 'colour', 'img'),
      'email' => array('b', 'i', 'u', 'color', 'colour', 'img'),
      'img'   => array(),

      'quote'   => array('quote', 'code', 'b', 'i', 'u', 'color', 'colour', 'email', 'img', 'list', '*', 'h')

   );

4

Re: Прочие вопросы о PunBB

Hello !
Applied modification, tested on line : it's perfect. If there is a link inside the quote, I get an error message saying it's forbiden to have an url inside a quote and that I must correct this to be able to send the answer.

I think that could be proposed as a security modification on the PunBb official development team.

Many thanks. Your answer has been quick and neat.

5

Re: Прочие вопросы о PunBB

Добрый день, письма от почтового робота посылает в спам, есть ли способ этого избежать? или редактировать текст , который пишется после регистрации, внести в него правку. что письмо может попасть в спам?

6

Re: Прочие вопросы о PunBB

soul_way wrote:

Добрый день, письма от почтового робота посылает в спам, есть ли способ этого избежать?

Я подозреваю, что это зависит от пя, например на mail.ru, если один раз пометить как спам, то все остальные будут помечены как спам.

soul_way wrote:

редактировать текст , который пишется после регистрации, внести в него правку. что письмо может попасть в спам?

Если правильно вас понял, то откройте
/lang/Russian/ mail_templates/welcome.tpl

Отредактировать и сохранить.

Если вас никто не критикует – значит успеха вы еще не добились.

7

Re: Прочие вопросы о PunBB

Еще ряд вопросов появился:
1. письмо по востановлению пароля не приходит, что делать?
2. установлено расширение визульного редактора, однако все иконки пропали , может перекрыло другим расширением?
3. потерял админский пароль )))) в связи с п1 не могу востановить, может етьс еще варианты?

8

Re: Прочие вопросы о PunBB

soul_way wrote:

письмо по востановлению пароля не приходит, что делать?

для админа не придет, это отключено в целях безопасности
если вы не админ, то спросите хостера о лимите сообщений в сутки

soul_way wrote:

2. установлено расширение визульного редактора, однако все иконки пропали , может перекрыло другим расширением?

какой конкретно?

soul_way wrote:

3. потерял админский пароль )))) в связи с п1 не могу востановить, может етьс еще варианты?

1. зарегистироваться как пользователь
2. либо перевести в админы, либо скопировать пароль и соль в таблице users админу.

9

Re: Прочие вопросы о PunBB

У меня стоит расширение pun_bbcode , а мне хотелось бы как у вас на форему, что бы и атачмент был как у вас, в виде кнопке тоже в окне

10

Re: Прочие вопросы о PunBB

soul_way wrote:

в виде кнопке тоже в окне

Pan Uploader - загрузчик файлов и изображений на форум PunBB

11

Re: Прочие вопросы о PunBB

Нужна подсказка, кстати спасибо что быстро отвечаете!

У меня случилась беда, после установки какого то расширения (к сожалению я ставил скопом, а не последовательно) у меня пропал текс из форумов. Причем, когда я нажимал кнопка "правка" - я видел что текст на месте, он просто не отображается. Далее я сделал как советовали на форуме поддержики, цитирую:

После установки расширения все поломалось. Как восстановить работоспособность форума?
Открываем config.php, находим строчку:
//define('FORUM_DISABLE_HOOKS', 1);;
убираем символы //
Если такой строки нет, то добавляем ее.

Заходим в админку, удаляем расширение, после которого случилась беда.


Мои действия: Я убрал символы // и моя проблема решилась. Моя пролема была в том, что исчезли все текста, весь контент из тем.
Далее все появилось (после того как убрал //) я перешел в админку - расширения - и не увидил там никих признаков того, что  мого бы мне подсказать, из за чего конкретно у меня случилась такая проблема.

Я так и оставил эту строчку без //.

Теперь я вижу что еще пропали кнопки ввкодов. Короче трындец. что делать?

Сносить нафиг все расширения и ставить заново последовательно?

12

Re: Прочие вопросы о PunBB

soul_way wrote:

Теперь я вижу что еще пропали кнопки ввкодов.

Когда вы убираете 2 слеша, это означает что все хуки (функции) расширений будут принудительно отключены. Эта опция существует для отладки, выявить в каком расширении проблема, чтобы его удалить.

13

Re: Прочие вопросы о PunBB

Удалил все расширения и начал с начала, заново ставить в порядке описаном ниже?

ancy Stop SPAM 1.3.53

BBCode buttons 1.4.18

Fancy Video Tag 0.4.9

После установки последнего, часть сообщений пропало, удалил - появилось. Как быть? нужна кнопка видео и что бы без багов!?

14

Re: Прочие вопросы о PunBB

soul_way wrote:

Как быть? нужна кнопка видео и что бы без багов!?

Качали откуда? Для версии форума 144 нужно исправленная версия.

Fancy Video Tag - вставка видео в сообщение и просмотр

15 (edited by PunBB 2017.02.08 00:44)

Re: Прочие вопросы о PunBB

PunBB wrote:

Качали откуда? Для версии форума 144 нужно исправленная версия.

отсюда

Добавлено: 2017.02.07 23:31

Спасибо, помогло!

16

Re: Прочие вопросы о PunBB

Где то было расширение, позволяющее пользователей перетаскивать в группу "VIP" на определенное время, что то типо подписки на скрытый раздел форума. Такова имеется? Или мне показалось? Или она есть, но в стадии BETA?
Требуется такое расширение, готов профинансировать.

17

Re: Прочие вопросы о PunBB

inil wrote:

расширение, позволяющее пользователей перетаскивать в группу "VIP" на определенное время

похожее было если пользователь не провел на форуме достаточно времени или не оставил какое то количество сообщений.
Оно было написано под заказ.

В вашем случае нужно создать новый запрос в соответствующем разделе и подробно все описать. Можете поучиться у kis'ы, он в этом пример  PunBB_INFO_ICQ/thumbsup

Со временем, кто из разработчиков будет посвободнее, то реализует его для вас. На счет оплаты, разберетесь сами.

18

Re: Прочие вопросы о PunBB

Из-за чего может не работать функция "Быстрый ответ"? Думал расширения перетирает код, отключил все! Не работает.

Вводил незначительные изменения в файле "viewtopic.php". Код отвечающий за "Быстрый ответ" не трогал!

19

Re: Прочие вопросы о PunBB

inil, а в основных настройках быстрый ответ включен? К тому же он работает только для авторизованных пользователей.

20

Re: Прочие вопросы о PunBB

PunBB, Функция включена, не видна все равно. Включить вручную можно?

21 (edited by PunBB 2017.07.22 03:59)

Re: Прочие вопросы о PunBB

Скинь мне в личку полный список установленных расширений. Пробуй отключать одно за другим пока не появится.

Если в файле viewtopic.php в этом блоке:

// Display quick post if enabled
if ($forum_config['o_quickpost'] == '1' &&
   !$forum_user['is_guest'] &&
   ($cur_topic['post_replies'] == '1' || ($cur_topic['post_replies'] == '' && $forum_user['g_post_replies'] == '1')) &&
   ($cur_topic['closed'] == '0' || $forum_page['is_admmod']))
{

ничего не нарушено, то должна форма отобразиться.

22

Re: Прочие вопросы о PunBB

Условия для отображения формы быстрого ответа.

if ($forum_config['o_quickpost'] == '1' &&
   !$forum_user['is_guest'] &&
   ($cur_topic['post_replies'] == '1' || ($cur_topic['post_replies'] == '' && $forum_user['g_post_replies'] == '1')) &&
   ($cur_topic['closed'] == '0' || $forum_page['is_admmod']))
{

Иными словами, если форма включена в админке, пользователь не является гостем, тема не закрыта и у пользователя есть необходимые права для постинга в этом форуме, проблем с отображением формы быть не должно. PunBB_INFO_ICQ/dontknow

23 (edited by acer 2017.07.25 18:16)

Re: Прочие вопросы о PunBB

Привет. Не знаю в каком разделе спросить (перенесите куда нужно).

Искал не нашел.
1) Есть ли функционал: "Просто скрыть пост ото всех кроме админа, модераторов"
Объясню зачем: написал спамер пост, админ находится не у компьютера (время нет изучать), но доступ к админке есть например с телефона.
Скрывает спемерский пост, а за компом изучает его (ip, мейл и т.д.) и заносит нужное в блокировку и удаляет.

2) Как исправить время на форуме? Время в постах +1 час.
Многое проверил, переход на летнее отключено и т.д.

24 (edited by PunBB 2017.07.25 21:43)

Re: Прочие вопросы о PunBB

1) первый вариант, создать для этого раздел с правами только для админа и туда перемещать темы пока не будут рассмотрены.
Второй вариант посмотреть расширение Right of Topics возможно там есть то что ищете (их 2 версии) искать.

2) Вначале убедитесь, что настраиваете время для того кто вам нужен. В профиле это для вас, а в основных настройках это для всех гостей.
Их 3 опции:
~ Язык
~ Стиль
~ Временная зона

То есть, если подразумевается установка часового пояса, то передвинуть на соседний пояс. У нас на форуме время Минска установлено после принятия решения отменить переход на летнее время большими головами.

На офф форуме говорили о какой то проблеме со временем, может это и ваш случай. Там было расширение устанавливающее время форума. Времени так и не было попробовать его. Вот тут

25

Re: Прочие вопросы о PunBB

PunBB, sempai,  Файл topic, кусок кода в порядке. Отключал все расширения, проверил все.

Spoiler
<?php
/**
 * Lists the posts in the specified topic.
 *
 * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
 * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
 * @package PunBB
 */


if (!defined('FORUM_ROOT'))
   define('FORUM_ROOT', './');
require FORUM_ROOT.'include/common.php';

($hook = get_hook('vt_start')) ? eval($hook) : null;

if ($forum_user['g_read_board'] == '0')
   message($lang_common['No view']);

// Load the viewtopic.php language file
require FORUM_ROOT.'lang/'.$forum_user['language'].'/topic.php';


$action = isset($_GET['action']) ? $_GET['action'] : null;
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;
$pid = isset($_GET['pid']) ? intval($_GET['pid']) : 0;
if ($id < 1 && $pid < 1)
   message($lang_common['Bad request']);


// If a post ID is specified we determine topic ID and page number so we can redirect to the correct message
if ($pid)
{
   $query = array(
      'SELECT'   => 'p.topic_id, p.posted',
      'FROM'      => 'posts AS p',
      'WHERE'      => 'p.id='.$pid
   );

   ($hook = get_hook('vt_qr_get_post_info')) ? eval($hook) : null;
   $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
   $topic_info = $forum_db->fetch_assoc($result);

   if (!$topic_info)
   {
      message($lang_common['Bad request']);
   }

   $id = $topic_info['topic_id'];

   // Determine on what page the post is located (depending on $forum_user['disp_posts'])
   $query = array(
      'SELECT'   => 'COUNT(p.id)',
      'FROM'      => 'posts AS p',
      'WHERE'      => 'p.topic_id='.$topic_info['topic_id'].' AND p.posted<'.$topic_info['posted']
   );

   ($hook = get_hook('vt_qr_get_post_page')) ? eval($hook) : null;
   $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
   $num_posts = $forum_db->result($result) + 1;

   $_GET['p'] = ceil($num_posts / $forum_user['disp_posts']);
}

// If action=new, we redirect to the first new post (if any)
else if ($action == 'new')
{
   if (!$forum_user['is_guest'])
   {
      // We need to check if this topic has been viewed recently by the user
      $tracked_topics = get_tracked_topics();
      $last_viewed = isset($tracked_topics['topics'][$id]) ? $tracked_topics['topics'][$id] : $forum_user['last_visit'];

      ($hook = get_hook('vt_find_new_post')) ? eval($hook) : null;

      $query = array(
         'SELECT'   => 'MIN(p.id)',
         'FROM'      => 'posts AS p',
         'WHERE'      => 'p.topic_id='.$id.' AND p.posted>'.$last_viewed
      );

      ($hook = get_hook('vt_qr_get_first_new_post')) ? eval($hook) : null;
      $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
      $first_new_post_id = $forum_db->result($result);

      if ($first_new_post_id)
      {
         header('Location: '.str_replace('&amp;', '&', forum_link($forum_url['post'], $first_new_post_id)));
         exit;
      }
   }

   header('Location: '.str_replace('&amp;', '&', forum_link($forum_url['topic_last_post'], $id)));
   exit;
}

// If action=last, we redirect to the last post
else if ($action == 'last')
{
   $query = array(
      'SELECT'   => 't.last_post_id',
      'FROM'      => 'topics AS t',
      'WHERE'      => 't.id='.$id
   );

   ($hook = get_hook('vt_qr_get_last_post')) ? eval($hook) : null;
   $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
   $last_post_id = $forum_db->result($result);

   if ($last_post_id)
   {
      header('Location: '.str_replace('&amp;', '&', forum_link($forum_url['post'], $last_post_id)));
      exit;
   }
}


// Fetch some info about the topic
$query = array(
   'SELECT'   => 't.subject, t.first_post_id, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies',
   'FROM'      => 'topics AS t',
   'JOINS'      => array(
      array(
         'INNER JOIN'   => 'forums AS f',
         'ON'         => 'f.id=t.forum_id'
      ),
      array(
         'LEFT JOIN'      => 'forum_perms AS fp',
         'ON'         => '(fp.forum_id=f.id AND fp.group_id='.$forum_user['g_id'].')'
      )
   ),
   'WHERE'      => '(fp.read_forum IS NULL OR fp.read_forum=1) AND t.id='.$id.' AND t.moved_to IS NULL'
);

if (!$forum_user['is_guest'] && $forum_config['o_subscriptions'] == '1')
{
   $query['SELECT'] .= ', s.user_id AS is_subscribed';
   $query['JOINS'][] = array(
      'LEFT JOIN'   => 'subscriptions AS s',
      'ON'      => '(t.id=s.topic_id AND s.user_id='.$forum_user['id'].')'
   );
}

($hook = get_hook('vt_qr_get_topic_info')) ? eval($hook) : null;
$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
$cur_topic = $forum_db->fetch_assoc($result);

if (!$cur_topic)
{
   message($lang_common['Bad request']);
}

($hook = get_hook('vt_modify_topic_info')) ? eval($hook) : null;

// Sort out who the moderators are and if we are currently a moderator (or an admin)
$mods_array = ($cur_topic['moderators'] != '') ? unserialize($cur_topic['moderators']) : array();
$forum_page['is_admmod'] = ($forum_user['g_id'] == FORUM_ADMIN || ($forum_user['g_moderator'] == '1' && array_key_exists($forum_user['username'], $mods_array))) ? true : false;

// Can we or can we not post replies?
if ($cur_topic['closed'] == '0' || $forum_page['is_admmod'])
   $forum_user['may_post'] = (($cur_topic['post_replies'] == '' && $forum_user['g_post_replies'] == '1') || $cur_topic['post_replies'] == '1' || $forum_page['is_admmod']) ? true : false;
else
   $forum_user['may_post'] = false;

// Add/update this topic in our list of tracked topics
if (!$forum_user['is_guest'])
{
   $tracked_topics = get_tracked_topics();
   $tracked_topics['topics'][$id] = time();
   set_tracked_topics($tracked_topics);
}

// Determine the post offset (based on $_GET['p'])
$forum_page['num_pages'] = ceil(($cur_topic['num_replies'] + 1) / $forum_user['disp_posts']);
$forum_page['page'] = (!isset($_GET['p']) || !is_numeric($_GET['p']) || $_GET['p'] <= 1 || $_GET['p'] > $forum_page['num_pages']) ? 1 : $_GET['p'];
$forum_page['start_from'] = $forum_user['disp_posts'] * ($forum_page['page'] - 1);
$forum_page['finish_at'] = min(($forum_page['start_from'] + $forum_user['disp_posts']), ($cur_topic['num_replies'] + 1));
$forum_page['items_info'] = generate_items_info($lang_topic['Posts'], ($forum_page['start_from'] + 1), ($cur_topic['num_replies'] + 1));

($hook = get_hook('vt_modify_page_details')) ? eval($hook) : null;

// Navigation links for header and page numbering for title/meta description
if ($forum_page['page'] < $forum_page['num_pages'])
{
   $forum_page['nav']['last'] = '<link rel="last" href="'.forum_sublink($forum_url['topic'], $forum_url['page'], $forum_page['num_pages'], array($id, sef_friendly($cur_topic['subject']))).'" title="'.$lang_common['Page'].' '.$forum_page['num_pages'].'" />';
   $forum_page['nav']['next'] = '<link rel="next" href="'.forum_sublink($forum_url['topic'], $forum_url['page'], ($forum_page['page'] + 1), array($id, sef_friendly($cur_topic['subject']))).'" title="'.$lang_common['Page'].' '.($forum_page['page'] + 1).'" />';
}
if ($forum_page['page'] > 1)
{
   $forum_page['nav']['prev'] = '<link rel="prev" href="'.forum_sublink($forum_url['topic'], $forum_url['page'], ($forum_page['page'] - 1), array($id, sef_friendly($cur_topic['subject']))).'" title="'.$lang_common['Page'].' '.($forum_page['page'] - 1).'" />';
   $forum_page['nav']['first'] = '<link rel="first" href="'.forum_link($forum_url['topic'], array($id, sef_friendly($cur_topic['subject']))).'" title="'.$lang_common['Page'].' 1" />';
}

if ($forum_config['o_censoring'] == '1')
   $cur_topic['subject'] = censor_words($cur_topic['subject']);

// Generate paging and posting links
$forum_page['page_post']['paging'] = '<p class="paging"><span class="pages">'.$lang_common['Pages'].'</span> '.paginate($forum_page['num_pages'], $forum_page['page'], $forum_url['topic'], $lang_common['Paging separator'], array($id, sef_friendly($cur_topic['subject']))).'</p>';

if ($forum_user['may_post'])
   $forum_page['page_post']['posting'] = '<p class="posting"><a class="newpost" href="'.forum_link($forum_url['new_reply'], $id).'"><span>'.$lang_topic['Post reply'].'</span></a></p>';
else if ($forum_user['is_guest'])
   $forum_page['page_post']['posting'] = '<p class="posting">'.sprintf($lang_topic['Login to post'], '<a href="'.forum_link($forum_url['login']).'">'.$lang_common['login'].'</a>', '<a href="'.forum_link($forum_url['register']).'">'.$lang_common['register'].'</a>').'</p>';
else if ($cur_topic['closed'] == '1')
   $forum_page['page_post']['posting'] = '<p class="posting">'.$lang_topic['Topic closed info'].'</p>';
else
   $forum_page['page_post']['posting'] = '<p class="posting">'.$lang_topic['No permission'].'</p>';

// Setup main options
$forum_page['main_title'] = $lang_topic['Topic options'];
$forum_page['main_head_options'] = array(
   'rss' => '<span class="feed first-item"><a class="feed" href="'.forum_link($forum_url['topic_rss'], $id).'">'.$lang_topic['RSS topic feed'].'</a></span>'
);

if (!$forum_user['is_guest'] && $forum_config['o_subscriptions'] == '1')
{
   if ($cur_topic['is_subscribed'])
      $forum_page['main_head_options']['unsubscribe'] = '<span><a class="sub-option" href="'.forum_link($forum_url['unsubscribe'], array($id, generate_form_token('unsubscribe'.$id.$forum_user['id']))).'"><em>'.$lang_topic['Unsubscribe'].'</em></a></span>';
   else
      $forum_page['main_head_options']['subscribe'] = '<span><a class="sub-option" href="'.forum_link($forum_url['subscribe'], array($id, generate_form_token('subscribe'.$id.$forum_user['id']))).'" title="'.$lang_topic['Subscribe info'].'">'.$lang_topic['Subscribe'].'</a></span>';
}

if ($forum_page['is_admmod'])
{
   $forum_page['main_foot_options'] = array(
      'move' => '<span class="first-item"><a class="mod-option" href="'.forum_link($forum_url['move'], array($cur_topic['forum_id'], $id)).'">'.$lang_topic['Move'].'</a></span>',
      'delete' => '<span><a class="mod-option" href="'.forum_link($forum_url['delete'], $cur_topic['first_post_id']).'">'.$lang_topic['Delete topic'].'</a></span>',
      'close' => (($cur_topic['closed'] == '1') ? '<span><a class="mod-option" href="'.forum_link($forum_url['open'], array($cur_topic['forum_id'], $id, generate_form_token('open'.$id))).'">'.$lang_topic['Open'].'</a></span>' : '<span><a class="mod-option" href="'.forum_link($forum_url['close'], array($cur_topic['forum_id'], $id, generate_form_token('close'.$id))).'">'.$lang_topic['Close'].'</a></span>'),
      'sticky' => (($cur_topic['sticky'] == '1') ? '<span><a class="mod-option" href="'.forum_link($forum_url['unstick'], array($cur_topic['forum_id'], $id, generate_form_token('unstick'.$id))).'">'.$lang_topic['Unstick'].'</a></span>' : '<span><a class="mod-option" href="'.forum_link($forum_url['stick'], array($cur_topic['forum_id'], $id, generate_form_token('stick'.$id))).'">'.$lang_topic['Stick'].'</a></span>')
   );

   if ($cur_topic['num_replies'] != 0)
      $forum_page['main_foot_options']['moderate_topic'] = '<span><a class="mod-option" href="'.forum_sublink($forum_url['moderate_topic'], $forum_url['page'], $forum_page['page'], array($cur_topic['forum_id'], $id)).'">'.$lang_topic['Moderate topic'].'</a></span>';
}

// Setup breadcrumbs
$forum_page['crumbs'] = array(
   array($forum_config['o_board_title'], forum_link($forum_url['index'])),
   array($cur_topic['forum_name'], forum_link($forum_url['forum'], array($cur_topic['forum_id'], sef_friendly($cur_topic['forum_name'])))),
   $cur_topic['subject']
);

// Setup main heading
$forum_page['main_title'] = (($cur_topic['closed'] == '1') ? $lang_topic['Topic closed'].' ' : '').'<a class="permalink" href="'.forum_link($forum_url['topic'], array($id, sef_friendly($cur_topic['subject']))).'" rel="bookmark" title="'.$lang_topic['Permalink topic'].'">'.forum_htmlencode($cur_topic['subject']).'</a>';

if ($forum_page['num_pages'] > 1)
   $forum_page['main_head_pages'] = sprintf($lang_common['Page info'], $forum_page['page'], $forum_page['num_pages']);

($hook = get_hook('vt_pre_header_load')) ? eval($hook) : null;

// Allow indexing if this is a permalink
if (!$pid)
   define('FORUM_ALLOW_INDEX', 1);

define('FORUM_PAGE', 'viewtopic');
require FORUM_ROOT.'header.php';

// START SUBST - <!-- forum_main -->
ob_start();

($hook = get_hook('vt_main_output_start')) ? eval($hook) : null;

?>
   <div class="main-head">
<?php

   if (!empty($forum_page['main_head_options']))
      echo "\t\t".'<p class="options">'.implode(' ', $forum_page['main_head_options']).'</p>'."\n";

?>
      <h2 class="hn"><span><?php echo $forum_page['items_info'] ?></span></h2>
   </div>
   <div id="forum<?php echo $cur_topic['forum_id'] ?>" class="main-content main-topic">
<?php

if (!defined('FORUM_PARSER_LOADED'))
   require FORUM_ROOT.'include/parser.php';

$forum_page['item_count'] = 0;   // Keep track of post numbers

// 1. Retrieve the posts ids
$query = array(
   'SELECT'   => 'p.id',
   'FROM'      => 'posts AS p',
   'WHERE'      => 'p.topic_id='.$id,
   'ORDER BY'   => 'p.id',
   'LIMIT'      => $forum_page['start_from'].','.$forum_user['disp_posts']
);

($hook = get_hook('vt_qr_get_posts_id')) ? eval($hook) : null;
$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);

$posts_id = array();
while ($row = $forum_db->fetch_assoc($result)) {
   $posts_id[] = $row['id'];
}


if (!empty($posts_id))
{
   // 2. Retrieve the posts (and their respective poster/online status) by known id`s
   $query = array(
      'SELECT'   => 'u.email, u.title, u.url, u.location, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, u.avatar, u.avatar_width, u.avatar_height, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online',
      'FROM'      => 'posts AS p',
      'JOINS'      => array(
         array(
            'INNER JOIN'   => 'users AS u',
            'ON'         => 'u.id=p.poster_id'
         ),
         array(
            'INNER JOIN'   => 'groups AS g',
            'ON'         => 'g.g_id=u.group_id'
         ),
         array(
            'LEFT JOIN'      => 'online AS o',
            'ON'         => '(o.user_id=u.id AND o.user_id!=1 AND o.idle=0)'
         ),
      ),
      'WHERE'      => 'p.id IN ('.implode(',', $posts_id).')',
      'ORDER BY'   => 'p.id'
   );

   ($hook = get_hook('vt_qr_get_posts')) ? eval($hook) : null;
   $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);

   $user_data_cache = array();
   while ($cur_post = $forum_db->fetch_assoc($result))
   {
      ($hook = get_hook('vt_post_loop_start')) ? eval($hook) : null;

      ++$forum_page['item_count'];

      $forum_page['post_ident'] = array();
      $forum_page['author_ident'] = array();
      $forum_page['author_info'] = array();
      $forum_page['post_options'] = array();
      $forum_page['post_contacts'] = array();
      $forum_page['post_actions'] = array();
      $forum_page['message'] = array();

      // Generate the post heading
      $forum_page['post_ident']['num'] = '<span class="post-num">'.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span>';

      if ($cur_post['poster_id'] > 1)
         $forum_page['post_ident']['byline'] = '<span class="post-byline">'.sprintf((($cur_post['id'] == $cur_topic['first_post_id']) ? $lang_topic['Topic byline'] : $lang_topic['Reply byline']), (($forum_user['g_view_users'] == '1') ? '<a title="'.sprintf($lang_topic['Go to profile'], forum_htmlencode($cur_post['username'])).'" href="'.forum_link($forum_url['user'], $cur_post['poster_id']).'">'.forum_htmlencode($cur_post['username']).'</a>' : '<strong>'.forum_htmlencode($cur_post['username']).'</strong>')).'</span> | ';
      else
         $forum_page['post_ident']['byline'] = '<span class="post-byline">'.sprintf((($cur_post['id'] == $cur_topic['first_post_id']) ? $lang_topic['Topic byline'] : $lang_topic['Reply byline']), '<strong>'.forum_htmlencode($cur_post['username']).'</strong>').'</span> | ';

      $forum_page['post_ident']['link'] = '<span class="post-link"><a class="permalink ini_date" rel="bookmark" title="'.$lang_topic['Permalink post'].'" href="'.forum_link($forum_url['post'], $cur_post['id']).'">'.format_time($cur_post['posted']).'</a></span>';

      if ($cur_post['edited'] != '')
         $forum_page['post_ident']['edited'] = '<span class="post-edit">'.sprintf($lang_topic['Last edited'], forum_htmlencode($cur_post['edited_by']), format_time($cur_post['edited'])).'</span>';


      ($hook = get_hook('vt_row_pre_post_ident_merge')) ? eval($hook) : null;

      if (isset($user_data_cache[$cur_post['poster_id']]['author_ident']))
         $forum_page['author_ident'] = $user_data_cache[$cur_post['poster_id']]['author_ident'];
      else
      {
         // Generate author identification
         if ($cur_post['poster_id'] > 1)
         {
            if ($forum_config['o_avatars'] == '1' && $forum_user['show_avatars'] != '0')
            {
               $forum_page['avatar_markup'] = generate_avatar_markup($cur_post['poster_id'], $cur_post['avatar'], $cur_post['avatar_width'], $cur_post['avatar_height'], $cur_post['username']);

               if (!empty($forum_page['avatar_markup']))
                  $forum_page['author_ident']['avatar'] = '<li class="useravatar">'.$forum_page['avatar_markup'].'</li>';
            }

            //$forum_page['author_ident']['username'] = '<li class="username">'.(($forum_user['g_view_users'] == '1') ? '<a title="'.sprintf($lang_topic['Go to profile'], forum_htmlencode($cur_post['username'])).'" href="'.forum_link($forum_url['user'], $cur_post['poster_id']).'">'.forum_htmlencode($cur_post['username']).'</a>' : '<strong>'.forum_htmlencode($cur_post['username']).'</strong>').'</li>';
            //$forum_page['author_ident']['usertitle'] = '<li class="usertitle"><span>'.get_title($cur_post).'</span></li>';

            if ($cur_post['is_online'] == $cur_post['poster_id'])
               $forum_page['author_ident']['status'] = '<font color="green">'.$lang_topic['Online'].'</font>';
            else
               $forum_page['author_ident']['status'] = '<font color="red">'.$lang_topic['Offline'].'</font>';
         }
         else
         {
            //$forum_page['author_ident']['username'] = '<li class="username"><strong>'.forum_htmlencode($cur_post['username']).'</strong></li>';
            //$forum_page['author_ident']['usertitle'] = '<li class="usertitle"><span>'.get_title($cur_post).'</span></li>';
         }
      }

      if (isset($user_data_cache[$cur_post['poster_id']]['author_info']))
         $forum_page['author_info'] = $user_data_cache[$cur_post['poster_id']]['author_info'];
      else
      {
         // Generate author information
         if ($cur_post['poster_id'] > 1)
         {
            if ($forum_config['o_show_user_info'] == '1')
            {
               if ($cur_post['location'] != '')
               {
                  if ($forum_config['o_censoring'] == '1')
                     $cur_post['location'] = censor_words($cur_post['location']);

                  $forum_page['author_info']['from'] = '<li><span>'.$lang_topic['From'].' <strong>'.forum_htmlencode($cur_post['location']).'</strong></span></li>';
               }

               $forum_page['author_info']['registered'] = '<li><span>'.$lang_topic['Registered'].' <strong>'.format_time($cur_post['registered'], 1).'</strong></span></li>';

               if ($forum_config['o_show_post_count'] == '1' || $forum_user['is_admmod'])
                  $forum_page['author_info']['posts'] = '<li><span>'.$lang_topic['Posts info'].' <strong>'.forum_number_format($cur_post['num_posts']).'</strong></span></li>';
            }

            if ($forum_user['is_admmod'])
            {
               if ($cur_post['admin_note'] != '')
                  $forum_page['author_info']['note'] = '<li><span>'.$lang_topic['Note'].' <strong>'.forum_htmlencode($cur_post['admin_note']).'</strong></span></li>';
            }
         }
      }

      // Generate IP information for moderators/administrators
      if ($forum_user['is_admmod'])
         $forum_page['author_info']['ip'] = '<li><span>'.$lang_topic['IP'].' <a href="'.forum_link($forum_url['get_host'], $cur_post['id']).'">'.$cur_post['poster_ip'].'</a></span></li>';

      // Generate author contact details
      if ($forum_config['o_show_user_info'] == '1')
      {
         if (isset($user_data_cache[$cur_post['poster_id']]['post_contacts']))
            $forum_page['post_contacts'] = $user_data_cache[$cur_post['poster_id']]['post_contacts'];
         else
         {
            if ($cur_post['poster_id'] > 1)
            {
               if ($cur_post['url'] != '')
                  $forum_page['post_contacts']['url'] = '<span class="user-url'.(empty($forum_page['post_contacts']) ? ' first-item' : '').'"><a class="external" href="'.forum_htmlencode(($forum_config['o_censoring'] == '1') ? censor_words($cur_post['url']) : $cur_post['url']).'">'.sprintf($lang_topic['Visit website'], '<span>'.sprintf($lang_topic['User possessive'], forum_htmlencode($cur_post['username'])).'</span>').'</a></span>';
               if ((($cur_post['email_setting'] == '0' && !$forum_user['is_guest']) || $forum_user['is_admmod']) && $forum_user['g_send_email'] == '1')
                  $forum_page['post_contacts']['email'] = '<span class="user-email'.(empty($forum_page['post_contacts']) ? ' first-item' : '').'"><a href="mailto:'.forum_htmlencode($cur_post['email']).'">'.$lang_topic['E-mail'].'<span>&#160;'.forum_htmlencode($cur_post['username']).'</span></a></span>';
               else if ($cur_post['email_setting'] == '1' && !$forum_user['is_guest'] && $forum_user['g_send_email'] == '1')
                  $forum_page['post_contacts']['email'] = '<span class="user-email'.(empty($forum_page['post_contacts']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['email'], $cur_post['poster_id']).'">'.$lang_topic['E-mail'].'<span>&#160;'.forum_htmlencode($cur_post['username']).'</span></a></span>';
            }
            else
            {
               if ($cur_post['poster_email'] != '' && $forum_user['is_admmod'] && $forum_user['g_send_email'] == '1')
                  $forum_page['post_contacts']['email'] = '<span class="user-email'.(empty($forum_page['post_contacts']) ? ' first-item' : '').'"><a href="mailto:'.forum_htmlencode($cur_post['poster_email']).'">'.$lang_topic['E-mail'].'<span>&#160;'.forum_htmlencode($cur_post['username']).'</span></a></span>';
            }
         }

         ($hook = get_hook('vt_row_pre_post_contacts_merge')) ? eval($hook) : null;

         if (!empty($forum_page['post_contacts']))
            $forum_page['post_options']['contacts'] = '<p class="post-contacts">'.implode(' ', $forum_page['post_contacts']).'</p>';
      }

      // Generate the post options links
      if (!$forum_user['is_guest'])
      {
         $forum_page['post_actions']['report'] = '<span class="report-post'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['report'], $cur_post['id']).'">'.$lang_topic['Report'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';

         if (!$forum_page['is_admmod'])
         {
            if ($cur_topic['closed'] == '0')
            {
               if ($cur_post['poster_id'] == $forum_user['id'])
               {
                  if (($forum_page['start_from'] + $forum_page['item_count']) == 1 && $forum_user['g_delete_topics'] == '1')
                     $forum_page['post_actions']['delete'] = '<span class="delete-topic'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['delete'], $cur_topic['first_post_id']).'">'.$lang_topic['Delete topic'].'</a></span>';
                  if (($forum_page['start_from'] + $forum_page['item_count']) > 1 && $forum_user['g_delete_posts'] == '1')
                     $forum_page['post_actions']['delete'] = '<span class="delete-post'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['delete'], $cur_post['id']).'">'.$lang_topic['Delete'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
                  if ($forum_user['g_edit_posts'] == '1')
                     $forum_page['post_actions']['edit'] = '<span class="edit-post'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['edit'], $cur_post['id']).'">'.$lang_topic['Edit'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
               }

               if (($cur_topic['post_replies'] == '' && $forum_user['g_post_replies'] == '1') || $cur_topic['post_replies'] == '1')
                  $forum_page['post_actions']['quote'] = '<span class="quote-post'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['quote'], array($id, $cur_post['id'])).'">'.$lang_topic['Quote'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
            }
         }
         else
         {
            if (($forum_page['start_from'] + $forum_page['item_count']) == 1)
               $forum_page['post_actions']['delete'] = '<span class="delete-topic'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['delete'], $cur_topic['first_post_id']).'">'.$lang_topic['Delete topic'].'</a></span>';
            else
               $forum_page['post_actions']['delete'] = '<span class="delete-post'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['delete'], $cur_post['id']).'">'.$lang_topic['Delete'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';

            $forum_page['post_actions']['edit'] = '<span class="edit-post'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['edit'], $cur_post['id']).'">'.$lang_topic['Edit'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
            $forum_page['post_actions']['quote'] = '<span class="quote-post'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['quote'], array($id, $cur_post['id'])).'">'.$lang_topic['Quote'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
         }
      }
      else
      {
         if ($cur_topic['closed'] == '0')
         {
            if (($cur_topic['post_replies'] == '' && $forum_user['g_post_replies'] == '1') || $cur_topic['post_replies'] == '1')
               $forum_page['post_actions']['quote'] = '<span class="report-post'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['quote'], array($id, $cur_post['id'])).'">'.$lang_topic['Quote'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
         }
      }

      ($hook = get_hook('vt_row_pre_post_actions_merge')) ? eval($hook) : null;

      if (!empty($forum_page['post_actions']))
         $forum_page['post_options']['actions'] = '<p class="post-actions">'.implode(' ', $forum_page['post_actions']).'</p>';

      // Give the post some class
      $forum_page['item_status'] = array(
         'post',
         ($forum_page['item_count'] % 2 != 0) ? 'odd' : 'even'
      );

      if ($forum_page['item_count'] == 1)
         $forum_page['item_status']['firstpost'] = 'firstpost';

      if (($forum_page['start_from'] + $forum_page['item_count']) == $forum_page['finish_at'])
         $forum_page['item_status']['lastpost'] = 'lastpost';

      if ($cur_post['id'] == $cur_topic['first_post_id'])
         $forum_page['item_status']['topicpost'] = 'topicpost';
      else
         $forum_page['item_status']['replypost'] = 'replypost';


      // Generate the post title


      $forum_page['item_subject'] = forum_htmlencode($forum_page['item_subject']);

      // Perform the main parsing of the message (BBCode, smilies, censor words etc)
      $forum_page['message']['message'] = parse_message($cur_post['message'], $cur_post['hide_smilies']);

      // Do signature parsing/caching
      if ($cur_post['signature'] != '' && $forum_user['show_sig'] != '0' && $forum_config['o_signatures'] == '1')
      {
         if (!isset($signature_cache[$cur_post['poster_id']]))
            $signature_cache[$cur_post['poster_id']] = parse_signature($cur_post['signature']);

         $forum_page['message']['signature'] = '<div class="sig-content"><span class="sig-line"><!-- --></span>'.$signature_cache[$cur_post['poster_id']].'</div>';
      }

      ($hook = get_hook('vt_row_pre_display')) ? eval($hook) : null;

      // Do user data caching for the post
      if ($cur_post['poster_id'] > 1 && !isset($user_data_cache[$cur_post['poster_id']]))
      {
         $user_data_cache[$cur_post['poster_id']] = array(
            'author_ident'   => $forum_page['author_ident'],
            'author_info'   => $forum_page['author_info'],
            'post_contacts'   => $forum_page['post_contacts']
         );

         ($hook = get_hook('vt_row_add_user_data_cache')) ? eval($hook) : null;
      }

?>
      <div class="<?php echo implode(' ', $forum_page['item_status']) ?>">
         <div id="p<?php echo $cur_post['id'] ?>" class="posthead">
            <h3 class="hn post-ident" <?php if ($cur_post['poster_id'] == 2){echo 'style="background: #F2C3A1;"';}else{}; ?>><?php echo implode(' ', $forum_page['post_ident']) ?> | <?php echo implode("\n\t\t\t\t\t\t", $forum_page['author_ident'])."\n" ?></h3>
         </div>
         <div class="postbody<?php if ($cur_post['is_online'] == $cur_post['poster_id']) echo ' online'; ?>">
            <div class="post-author">
               <ul class="author-ident">
                  
               </ul>
               <ul class="author-info">
                  <?php //echo implode("\n\t\t\t\t\t\t", $forum_page['author_info'])."\n" ?>
               </ul>
            </div>
            <div class="post-entry">
               <!--<h4 id="pc<?php //echo $cur_post['id'] ?>" class="entry-title hn"><?php //echo $forum_page['item_subject'] ?></h4>-->
               <div class="entry-content">
                   <?php if ($cur_post['id'] == $cur_topic['first_post_id'])
                      echo "<div class=\"ini_div\"><h1 class=\"ini_h1\" style=\"text-align: center;\">".$cur_topic['subject']."</h1></div>";
                   else
                      $forum_page['item_subject'] = sprintf($lang_topic['Reply title'], $cur_topic['subject']); ?>
                  <?php echo implode("\n\t\t\t\t\t\t", $forum_page['message'])."\n" ?>
               </div>
<?php ($hook = get_hook('vt_row_new_post_entry_data')) ? eval($hook) : null; ?>
            </div>
         </div>
<?php if (!empty($forum_page['post_options'])): ?>
         <div class="postfoot">
            <div class="post-options">
               <?php echo implode("\n\t\t\t\t\t", $forum_page['post_options'])."\n" ?>
            </div>
         </div>
<?php endif; ?>
      </div>
<?php

   }
}

?>
   </div>

   <div class="main-foot">
<?php

   if (!empty($forum_page['main_foot_options']))
      echo "\n\t\t\t".'<p class="options">'.implode(' ', $forum_page['main_foot_options']).'</p>';

?>
      <h2 class="hn"><span><?php echo $forum_page['items_info'] ?></span></h2>
   </div>
<?php

($hook = get_hook('vt_end')) ? eval($hook) : null;

$tpl_temp = forum_trim(ob_get_contents());
$tpl_main = str_replace('<!-- forum_main -->', $tpl_temp, $tpl_main);
ob_end_clean();
// END SUBST - <!-- forum_main -->



// Display quick post if enabled
if ($forum_config['o_quickpost'] == '1' &&
   !$forum_user['is_guest'] &&
   ($cur_topic['post_replies'] == '1' || ($cur_topic['post_replies'] == '' && $forum_user['g_post_replies'] == '1')) &&
   ($cur_topic['closed'] == '0' || $forum_page['is_admmod']))
{

// START SUBST - <!-- forum_qpost -->
ob_start();

($hook = get_hook('vt_qpost_output_start')) ? eval($hook) : null;

// Setup form
$forum_page['form_action'] = forum_link($forum_url['new_reply'], $id);
$forum_page['form_attributes'] = array();

$forum_page['hidden_fields'] = array(
   'form_sent'      => '<input type="hidden" name="form_sent" value="1" />',
   'form_user'      => '<input type="hidden" name="form_user" value="'.((!$forum_user['is_guest']) ? forum_htmlencode($forum_user['username']) : 'Guest').'" />',
   'csrf_token'   => '<input type="hidden" name="csrf_token" value="'.generate_form_token($forum_page['form_action']).'" />'
);

if (!$forum_user['is_guest'] && $forum_config['o_subscriptions'] == '1' && ($forum_user['auto_notify'] == '1' || $cur_topic['is_subscribed']))
   $forum_page['hidden_fields']['subscribe'] = '<input type="hidden" name="subscribe" value="1" />';

// Setup help
$forum_page['main_head_options'] = array();
if ($forum_config['p_message_bbcode'] == '1')
   $forum_page['text_options']['bbcode'] = '<span'.(empty($forum_page['text_options']) ? ' class="first-item"' : '').'><a class="exthelp" href="'.forum_link($forum_url['help'], 'bbcode').'" title="'.sprintf($lang_common['Help page'], $lang_common['BBCode']).'">'.$lang_common['BBCode'].'</a></span>';
if ($forum_config['p_message_img_tag'] == '1')
   $forum_page['text_options']['img'] = '<span'.(empty($forum_page['text_options']) ? ' class="first-item"' : '').'><a class="exthelp" href="'.forum_link($forum_url['help'], 'img').'" title="'.sprintf($lang_common['Help page'], $lang_common['Images']).'">'.$lang_common['Images'].'</a></span>';
if ($forum_config['o_smilies'] == '1')
   $forum_page['text_options']['smilies'] = '<span'.(empty($forum_page['text_options']) ? ' class="first-item"' : '').'><a class="exthelp" href="'.forum_link($forum_url['help'], 'smilies').'" title="'.sprintf($lang_common['Help page'], $lang_common['Smilies']).'">'.$lang_common['Smilies'].'</a></span>';

($hook = get_hook('vt_quickpost_pre_display')) ? eval($hook) : null;

?>
<div class="main-subhead">
   <h2 class="hn"><span><?php echo $lang_topic['Quick post'] ?></span></h2>
</div>
<div id="brd-qpost" class="main-content main-frm">
<?php if (!empty($forum_page['text_options'])) echo "\t".'<p class="content-options options">'.sprintf($lang_common['You may use'], implode(' ', $forum_page['text_options'])).'</p>'."\n" ?>
   <div id="req-msg" class="req-warn ct-box error-box">
      <p class="important"><?php echo $lang_topic['Required warn'] ?></p>
   </div>
   <form class="frm-form frm-ctrl-submit" method="post" accept-charset="utf-8" action="<?php echo $forum_page['form_action'] ?>"<?php if (!empty($forum_page['form_attributes'])) echo ' '.implode(' ', $forum_page['form_attributes']) ?>>
      <div class="hidden">
         <?php echo implode("\n\t\t\t\t", $forum_page['hidden_fields'])."\n" ?>
      </div>
<?php ($hook = get_hook('vt_quickpost_pre_fieldset')) ? eval($hook) : null; ?>
      <fieldset class="frm-group group1">
         <legend class="group-legend"><strong><?php echo $lang_common['Write message legend'] ?></strong></legend>
<?php ($hook = get_hook('vt_quickpost_pre_message_box')) ? eval($hook) : null; ?>
         <div class="txt-set set1">
            <div class="txt-box textarea required">
               <label for="fld1"><span><?php echo $lang_common['Write message'] ?></span></label>
               <div class="txt-input"><span class="fld-input"><textarea id="fld1" name="req_message" rows="7" cols="95" required spellcheck="true" ></textarea></span></div>
            </div>
         </div>
<?php ($hook = get_hook('vt_quickpost_pre_fieldset_end')) ? eval($hook) : null; ?>
      </fieldset>
<?php ($hook = get_hook('vt_quickpost_fieldset_end')) ? eval($hook) : null; ?>
      <div class="frm-buttons">
         <span class="submit primary"><input type="submit" name="submit_button" value="<?php echo $lang_common['Submit'] ?>" /></span>
         <span class="submit"><input type="submit" name="preview" value="<?php echo $lang_common['Preview'] ?>" /></span>
      </div>
   </form>
</div>
<?php

($hook = get_hook('vt_quickpost_end')) ? eval($hook) : null;

$tpl_temp = forum_trim(ob_get_contents());
$tpl_main = str_replace('<!-- forum_qpost -->', $tpl_temp, $tpl_main);
ob_end_clean();
// END SUBST - <!-- forum_qpost -->

}

// Increment "num_views" for topic
if ($forum_config['o_topic_views'] == '1')
{
   $query = array(
      'UPDATE'   => 'topics',
      'SET'      => 'num_views=num_views+1',
      'WHERE'      => 'id='.$id,
   );

   ($hook = get_hook('vt_qr_increment_num_views')) ? eval($hook) : null;
   $forum_db->query_build($query) or error(__FILE__, __LINE__);
}

$forum_id = $cur_topic['forum_id'];

require FORUM_ROOT.'footer.php';

26 (edited by PunBB 2017.07.26 00:58)

Re: Прочие вопросы о PunBB

inil wrote:

Отключал все расширения, проверил все.

Залил файл все работает, хоть и с некоторыми ошибками. Может форма скрыта с помощью CSS? Посмотрите исходник, есть ли разметка формы в коде?

На хроме Ctrl+Shift+I


Кстати помимо того есть также ошибка в 520 строке


      $forum_page['item_subject'] = forum_htmlencode($forum_page['item_subject']);

поменяй на

      $forum_page['item_subject'] = isset($forum_page['item_subject']) ? forum_htmlencode($forum_page['item_subject']) : '';

27 (edited by inil 2017.07.26 01:03)

Re: Прочие вопросы о PunBB

PunBB,  Проверил html код страницы, нету не чего о быстром ответе.

520 строку изменил, успеха нет

в файле main.tpl есть строка отвечающая за "Быстрый ответ"?

28

Re: Прочие вопросы о PunBB

inil wrote:

520 строку изменил, успеха нет

ну я и не говорил, что это решение той проблемы. Просто у вас травить будет другая ошибка. Раз исправили, то хорошо ))

Смотрите, как уже говорилось выше вот этот блок отвечает за отображение формы:

// Display quick post if enabled
if ($forum_config['o_quickpost'] == '1' &&
   !$forum_user['is_guest'] &&
   ($cur_topic['post_replies'] == '1' || ($cur_topic['post_replies'] == '' && $forum_user['g_post_replies'] == '1')) &&
   ($cur_topic['closed'] == '0' || $forum_page['is_admmod']))
{

Теперь, где нибудь в коде, чуть выше проверяйте каждое значение массива или переменной. Например так:

print_r($forum_config['o_quickpost']);

и так все по порядку:
$forum_config['o_quickpost']
$forum_user['is_guest']
$cur_topic['post_replies']
$forum_user['g_post_replies']
$cur_topic['closed']
$forum_page['is_admmod']

Скиньте сюда, что выдаст каждый параметр

29

Re: Прочие вопросы о PunBB

По порядку

1
пусто
пусто
1
0
1

30

Re: Прочие вопросы о PunBB

Удивительно, но все вроде верно. Придется заливать исходный файл и перетаскивать правки, которые настраивали под себя.

Желательно вести все таки какой нибудь файл и перечислять все внесенные изменения. Может это и займет время, но иногда может и сэкономить несколько дней на поиск ошибок.

31

Re: Прочие вопросы о PunBB

PunBB, Нашел косяк!!! В файле main.tpl была стерта строчка

<!-- forum_qpost -->

32 (edited by acer 2017.07.27 01:52)

Re: Прочие вопросы о PunBB

Не нашел на форуме такое расширение "отключение подписи для группы", а то регистрируются, создают подпись, пхают туда ссылки сео-порно и исчезают, ноль сообщений.
Нашел на гитхабе. Работает.
Надо?

33

Re: Прочие вопросы о PunBB

acer, Antispam System

https://punbb.info/uploads/images/2017/07/f7d5c4bd5ed7d97062cf2f48cde70d16.jpg

34

Re: Прочие вопросы о PunBB

Ээээ Администрирование - Настройки - Свойства

https://punbb.info/uploads/images/2017/07/99a17141b38ed28535f37b03c576866c.jpg

PunBB_INFO_ICQ/pardon

35 (edited by sempai 2017.07.27 14:32)

Re: Прочие вопросы о PunBB

kisa, изменение этих настроек повлияет на всех пользователей  PunBB_INFO_ICQ/wink

И не важно, зарегистрировался ты вчера, и у тебя 0 - сообщений, или ты админ этого форума, подписи не будет  PunBB_INFO_ICQ/jokingly

36 (edited by acer 2017.07.27 15:01)

Re: Прочие вопросы о PunBB

Да, ту галочку я видел, но она лишает всех подписи.
Вот если что расширение для отключения у групп
This content is available only to registered users.

но тут нет лимита на колво сообщений

37

Re: Прочие вопросы о PunBB

acer wrote:

Вот если что расширение для отключения у групп

было бы не плохо создать тему с описанием данного расширения, такого у нас нету. И хотя бы один скрин, для визуального представления где искать опцию и как оно работает (для чайников.)

38

Re: Прочие вопросы о PunBB

Я сначала перерыл яндекс, тут не нашел. вот и написал.
Создайте тему у кого права позволяют.
Настройка:
Администрирование-Пользователи-Группы- Редактирование каждой группы пользователей.

Галочка установлена (Disable signature) = Подпись отключена для данной группы.
https://punbb.info/uploads/images/2017/07/375e7f5da67a9ee7e87334af462a4a02.jpg

39

Re: Прочие вопросы о PunBB

acer, А если пользователю понадобиться вывести что нибудь в подписи, вы его ради этого в другую группу переведете?  PunBB_INFO_ICQ/wink

40 (edited by acer 2017.07.27 16:55)

Re: Прочие вопросы о PunBB

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

Есть вариант этого расширения с ограничением подписи от количества сообщений, но ссылка на скачивание не работает.

41

Re: Прочие вопросы о PunBB

acer wrote:

Есть вариант этого расширения с ограничением подписи от количества сообщений, но ссылка на скачивание не работает.

а что нам стоит его переработать? пишите в запросы расширений, чтобы не забыли. Думаю потом уже целиковое можно было бы и выложить на форуме.

42 (edited by acer 2017.07.27 19:27)

Re: Прочие вопросы о PunBB

1) Вот не знаю, пока устраивает что просто отключил у группы.

2) В процессе блокировок пользователей, пришел к пониманию что не хватает поля для админского комментария (виден только админам-модерам) тут.
https://punbb.info/uploads/images/2017/07/aa93f17347ae61122c6c74ff6da7ef17.jpg

3) Писал или нет, есть ли импорт-экспорт чтобы цензуру загружать выгружать?

Например: 1) сделать резерв 2) в случае чего, не по 1 слову добавлять, а сделать импорт

43

Re: Прочие вопросы о PunBB

acer wrote:

не хватает поля для админского комментария (виден только админам-модерам

писать расширение для этого нужно

acer wrote:

импорт-экспорт чтобы цензуру загружать выгружать

в качестве решения можно сохранить в phpMyAdmin таблицу. Потом ее туда можно так же выгрузить.

44

Re: Прочие вопросы о PunBB

PunBB wrote:

acer сказал:

    не хватает поля для админского комментария (виден только админам-модерам

писать расширение для этого нужно

Мне думается прям в ядро дописать

45 (edited by PunBB 2017.07.27 19:56)

Re: Прочие вопросы о PunBB

acer wrote:

Мне думается прям в ядро дописать

PunBB_INFO_ICQ/rofl  на заре знакомства с PunBB, когда мне по началу стало приходить в голову куча идей, то было желание все подряд туда запихнуть  PunBB_INFO_ICQ/bigsmile
все таки потом вовремя остыл.

В ядро прописать нужно с начала установки, там такого поля нет. Нужно в файле install.php добавить поле и затем форму в настройках и пару языковых констант.

46

Re: Прочие вопросы о PunBB

Частично согласен, но по опыту опенкарта, никто добавление каждого отдельного поля ( какое придумается ), не выносит в расширение, все лезут в код и добавляют что надо  PunBB_INFO_ICQ/smile

Просто много видел просьб: а как там галочку поставить, может есть такое расширение?
Ответы: залезь в код "путь" и исправить это, это, это

47

Re: Прочие вопросы о PunBB

Хочу попросить кого нибудь составить код, который выводил бы только пост, отдельно от других постов. Данная задумка была в движке vbulletin. Конечно же не бесплатно. Подробней распишу интересующему.

48

Re: Прочие вопросы о PunBB

inil, пишите в личку что к чему.

49

Re: Прочие вопросы о PunBB

inil, пока утром собирался на работу накатал набросок. скинул ссылку на архив в личку. Подробности и особенности там же.

50

Re: Прочие вопросы о PunBB

Перекрыл спамерам кислород, теперь скучно стало, не почитать что они предлагают, не поблокировать никого  PunBB_INFO_ICQ/bigsmile