BitTorrent Трекер RusTrek.ru
http://5.45.70.241/

Ограничение доступа по количеству сообщений
http://5.45.70.241/viewtopic.php?f=817&t=13589
Страница 1 из 1

Автор:  oartemka178 [ 2011-04-25 21:50 ]
Заголовок сообщения:  Ограничение доступа по количеству сообщений

Данный мод позволяет ограничить доступ пользователя по количеству сообщений.
Например в админке в разделе форумы ставим количество сообщений которое нужно что бы закрыть доступ форум и радуемся.
К модераторам и администраторам данное правило не относится

[th]http://i20.fastpic.ru/big/2011/0425/9e/81c09f515baacd9b3bbc15d98c39c79e.png[/th] [th]http://i20.fastpic.ru/big/2011/0425/c7/6393f2c3d0306b9380ce9191749b09c7.png[/th] [th]http://i20.fastpic.ru/big/2011/0425/56/63e66e97b14ffea0a166e6b7e2daf556.png[/th]

Установка.

Делаем запрос

Код:
ALTER TABLE bb_forums ADD forum_enter_limit MEDIUMINT(8) unsigned default '0'


Открываем
Код:
viewforum.php


Находим

Код:
// Redirect to login page if not admin session
$mod_redirect_url = '';

if ($is_auth['auth_mod'])
{
   $redirect = isset($_POST['redirect']) ? $_POST['redirect'] : $_SERVER['REQUEST_URI'];
   $redirect = url_arg($redirect, 'mod', 1, '&');
   $mod_redirect_url = "login.$phpEx?redirect=$redirect&admin=1";

   if ($moderation && !$userdata['session_admin'])
   {
      redirect($mod_redirect_url);
   }
}


Ниже добавляем

Код:
//
// Лимит по сообщениям
//
      if (!($userdata['user_level'] == ADMIN OR $userdata['user_level'] == MOD))
      {
      $sql = "SELECT f.forum_id, f.forum_enter_limit, u.user_posts
         FROM " . FORUMS_TABLE . " f, " . USERS_TABLE . " u
         WHERE user_id = " . $userdata['user_id'];

      if( !($result = $db->sql_query($sql)) )
      {
         message_die(GENERAL_ERROR, 'Could not query information', '', __LINE__, __FILE__, $sql);
      }

         while ($row = $db->sql_fetchrow($result))
         {
         $forum_id_limit = $row['forum_id'];
         $forum_enter_limit = $row['forum_enter_limit'];
         $user_posts_limit = $row['user_posts'];

         $error_limit = sprintf($lang['Forum_enter_limit_error'], $forum_enter_limit);

            if ($forum_id == $forum_id_limit AND $user_posts_limit < $forum_enter_limit)
            {
               message_die(GENERAL_ERROR, $error_limit);
            }
         }
      }
//
// Лимит по сообщениям
//


Открываем viewtopic.php

Находим

Код:
//
// Go ahead and pull all data for this topic
//


Выше добавляем

Код:
//
// Лимит по сообщениям
//
      if (!($userdata['user_level'] == ADMIN OR $userdata['user_level'] == MOD))
      {
      $sql = "SELECT f.forum_id, f.forum_enter_limit, u.user_posts
         FROM " . FORUMS_TABLE . " f, " . USERS_TABLE . " u
         WHERE user_id = " . $userdata['user_id'];

      if( !($result = $db->sql_query($sql)) )
      {
         message_die(GENERAL_ERROR, 'Could not query information', '', __LINE__, __FILE__, $sql);
      }

         while ($row = $db->sql_fetchrow($result))
         {
         $forum_id_limit = $row['forum_id'];
         $forum_enter_limit = $row['forum_enter_limit'];
         $user_posts_limit = $row['user_posts'];

         $error_limit = sprintf($lang['Forum_enter_limit_error'], $forum_enter_limit);

            if ($forum_id == $forum_id_limit AND $user_posts_limit < $forum_enter_limit)
            {
               message_die(GENERAL_ERROR, $error_limit);
            }
         }
      }
//
// Лимит по сообщениям
//


Открываем admin/admin_forums.php

Находим

Код:
$forumstatus = $row['forum_status'];


Ниже добавляем

Код:
$forum_enter_limit = $row['forum_enter_limit'];


Находим

Код:
$forumstatus = FORUM_UNLOCKED;


Ниже добавляем

Код:
$forum_enter_limit = '';


Находим

Код:
'FORUM_NAME' => htmlCHR($forumname),


Ниже добавляем

Код:
'FORUM_ENTER_LIMIT' => $forum_enter_limit,
'L_FORUM_ENTER_LIMIT' => $lang['Forum_enter_limit'],


Находим

Код:
$forum_status = intval($HTTP_POST_VARS['forumstatus']);


Ниже добавляем

Код:
$forum_enter_limit = intval($HTTP_POST_VARS['forum_enter_limit']);


Находим

Код:
$forum_status = intval($HTTP_POST_VARS['forumstatus']);   


Ниже добавляем

Код:
$forum_enter_limit = intval($HTTP_POST_VARS['forum_enter_limit']);


Находим

Код:
forum_status  = $forum_status,
forum_postcount = $forum_postcount,


Ниже добавляем

Код:
forum_enter_limit    = $forum_enter_limit,


Открываем lang_main.php

В самый низ добавляем

Код:
$lang['Forum_enter_limit'] = 'Ввести лимит сообщений для этого форума';
$lang['Forum_enter_limit_error'] = 'Вы не можете просматривать данный форум/топик, для просмотра вам нужно написать <b>%d</b> сообщений.';


Открываем admin_forums.tpl
Находим

Код:
   <tr>
      <td class="row1">{L_FORUM_STATUS}</td>
      <td class="row2"><select name="forumstatus">{S_STATUS_LIST}</select></td>
   </tr>


Ниже добавляем

Код:
   <tr>
     <td class="row1">{L_FORUM_ENTER_LIMIT}</td>
     <td class="row2"><input type="text" name="forum_enter_limit" value="{FORUM_ENTER_LIMIT}" size="10" maxlength="8" /></td>
   </tr>


Все готово!

Автор:  krumax [ 2011-04-25 23:22 ]
Заголовок сообщения: 

admin
Я так понимаю, что этот мод добавляет по 3 запроса
во viewforum и viewtopic ...

Автор:  Sapphire33Rus [ 2011-07-14 14:31 ]
Заголовок сообщения: 

admin писал(а):
ALTER TABLE bb_forums ADD forum_enter_limit MEDIUMINT(8) unsigned default '0'

Правильный код
Код:
ALTER TABLE `bb_forums` ADD `forum_enter_limit` MEDIUMINT(8) unsigned default '0' AFTER `forum_topics` ;

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/