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

Минимальный порог сообщений
http://5.45.70.241/viewtopic.php?f=817&t=13905
Страница 1 из 2

Автор:  oartemka178 [ 2011-05-07 03:11 ]
Заголовок сообщения:  Минимальный порог сообщений

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

В админке устанавливаем минимальный порог.
Для гостей если поставить выше чем 0 то будет выводиться сообщение о минимальном пороге.
Для отключения минимального порога сообщений, оставляем 0.



Установка

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

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

Находим

Код:
$sort_order = (request_var('order', 'DESC') == 'DESC') ? 'DESC' : 'ASC';
$username   = request_var('username', '');


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

Код:
$postcount_memberlist = isset($bb_cfg['postcount_memberlist']) ? $bb_cfg['postcount_memberlist'] : 5;

if ( !$userdata['session_logged_in'] && $postcount_memberlist > 0 )

   {
      redirect(append_sid("login.".$phpEx."?redirect=memberlist.".$phpEx, true));
      exit;
   }
   
if ( $userdata['user_posts'] < $postcount_memberlist && $userdata['user_level'] != ADMIN )
{
   message_die(GENERAL_MESSAGE, $lang['pc_error'] . $postcount_memberlist . $lang['pc_error_m']);
}


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

Находим

Код:
$user->session_start(array('req_login' => $bb_cfg['disable_search_for_guest']));


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

Код:
$postcount_search = isset($bb_cfg['postcount_search']) ? $bb_cfg['postcount_search'] : 5;

if ( !$userdata['session_logged_in'] && $postcount_search > 0 )

   {
      redirect(append_sid("login.".$phpEx."?redirect=search.".$phpEx, true));
      exit;
   }
   
if ( $userdata['user_posts'] < $postcount_search && $userdata['user_level'] != ADMIN)
{
   message_die(GENERAL_MESSAGE, $lang['pc_error'] . $postcount_search . $lang['pc_error_s']);
}


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

Находим

Код:
$user->session_start(array('req_login' => true));


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

Код:
$postcount_groupcp = isset($bb_cfg['postcount_groupcp']) ? $bb_cfg['postcount_groupcp'] : 5;

if ( !$userdata['session_logged_in'] && $postcount_groupcp > 0 )

   {
      redirect(append_sid("login.".$phpEx."?redirect=groupcp.".$phpEx, true));
      exit;
   }
   
if ( $userdata['user_posts'] < $postcount_groupcp && $userdata['user_level'] != ADMIN )
{
   message_die(GENERAL_MESSAGE, $lang['pc_error'] . $postcount_groupcp . $lang['pc_error_g']);
}


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

Находим

Код:
// Start session management
$user->session_start(array('req_login' => true));


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

Код:
$postcount_viewonline = isset($bb_cfg['postcount_viewonline']) ? $bb_cfg['postcount_viewonline'] : 5;

if ( !$userdata['session_logged_in'] && $postcount_viewonline > 0 )

   {
      redirect(append_sid("login.".$phpEx."?redirect=viewonline.".$phpEx, true));
      exit;
   }
   
if ( $userdata['user_posts'] < $postcount_viewonline && $userdata['user_level'] != ADMIN )
{
   message_die(GENERAL_MESSAGE, $lang['pc_error'] . $postcount_viewonline . $lang['pc_error_o']);
}


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

Находим

Код:
// Start session management
$user->session_start();


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

Код:
$u = ( isset($HTTP_GET_VARS[POST_USERS_URL]) ) ? intval($HTTP_GET_VARS[POST_USERS_URL]) : intval($HTTP_POST_VARS[POST_USERS_URL]);

$mode = ( isset($HTTP_GET_VARS['mode']) ) ? $HTTP_GET_VARS['mode'] : $HTTP_POST_VARS['mode'];

$postcount_profile = isset($bb_cfg['postcount_profile']) ? $bb_cfg['postcount_profile'] : 5;

if ( !$userdata['session_logged_in']  && $mode == 'viewprofile' && $postcount_profile > 0)
{
  redirect(append_sid("login.$phpEx?redirect=profile.$phpEx&mode=viewprofile&".POST_USERS_URL."=".$u, true));
  exit;
 }

if ( $mode == 'viewprofile' && $userdata['user_posts'] < $postcount_profile && $userdata['user_level'] != ADMIN )
{
   message_die(GENERAL_MESSAGE, $lang['pc_error'] . $postcount_profile . $lang['pc_error_u']);
}


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

Находим

Код:
require(BB_ROOT .'attach_mod/attachment_mod.'. PHP_EXT);


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

Код:
   $postcount_post = isset($bb_cfg['postcount_post']) ? $bb_cfg['postcount_post'] : 0;

if ( $mode == 'newtopic' && $userdata['user_posts'] < $postcount_post && $userdata['user_level'] != ADMIN )
{
   message_die(GENERAL_MESSAGE, $lang['pc_error'] . $postcount_post . $lang['pc_error_t'] );
}


Находим

Код:
// Vote in a poll


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

Код:
$postcount_vote = isset($bb_cfg['postcount_vote']) ? $bb_cfg['postcount_vote'] : 0;

if ( $userdata['user_posts'] < $postcount_vote && $userdata['user_level'] != ADMIN)
{
   message_die(GENERAL_MESSAGE, $lang['pc_error'] . $postcount_vote . $lang['pc_error_v']);
}


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

Находим

Код:
require(INC_DIR .'functions_post.'. PHP_EXT);


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

Код:
$postcount_pm = isset($bb_cfg['postcount_pm']) ? $bb_cfg['postcount_pm'] : 0;

if ( $userdata['session_logged_in'] && $userdata['user_posts'] < $postcount_pm  && $userdata['user_level'] != ADMIN )
{
   message_die(GENERAL_MESSAGE, $lang['pc_error'] . $postcount_pm . $lang['pc_error_p']);
}


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

Находим

Код:
$template->assign_vars(array(


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

Код:
   'L_POSTCOUNT_MEMBERLIST' => $lang['postcount_memberlist'],
   'POSTCOUNT_MEMBERLIST' => $new['postcount_memberlist'],   
   'L_POSTCOUNT_GROUPCP' => $lang['postcount_groupcp'],
   'POSTCOUNT_GROUPCP' => $new['postcount_groupcp'],   
   'L_POSTCOUNT_SEARCH' => $lang['postcount_search'],
   'POSTCOUNT_SEARCH' => $new['postcount_search'],   
   'L_POSTCOUNT_VIEWONLINE' => $lang['postcount_viewonline'],
   'POSTCOUNT_VIEWONLINE' => $new['postcount_viewonline'],   
   'L_POSTCOUNT_PROFILE' => $lang['postcount_profile'],
   'POSTCOUNT_PROFILE' => $new['postcount_profile'],   
   'L_POSTCOUNT_VOTE' => $lang['postcount_vote'],
   'POSTCOUNT_VOTE' => $new['postcount_vote'],         
   'L_POSTCOUNT_PM' => $lang['postcount_pm'],
   'POSTCOUNT_PM' => $new['postcount_pm'],   
   'L_POSTCOUNT_POST' => $lang['postcount_post'],
   'POSTCOUNT_POST' => $new['postcount_post'],   
   "L_THRESHOLD" => $lang['threshold'],
   "L_THRESHOLD_EXPLAIN" => $lang['threshold_explain'],


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

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

Код:
$lang['threshold'] = 'Минимальный порог сообщений';
$lang['threshold_explain'] = 'Если порог установлен 0, то гости могут увидеть список пользователей, профили и т.д. Если установлено любой другой номер, гости не могут видеть страницы, они будут получать сообщение о не хватки сообщений, и если пользователь вошедший в систему, не имеющий достаточное колличество сообщений, то он тоже будет видеть сообщение о не хватки сообщений.';
$lang['postcount_memberlist'] = 'Минимум сообщений для просмотра списка пользователей. Установите 0 для отключения.';
$lang['postcount_viewonline'] = 'Минимум сообщения для просмотра "Кто онлайн ". Установите 0 для отключения.';
$lang['postcount_search'] = 'Минимум сообщений, для использования поисковой системы. Установите 0 для отключения.';
$lang['postcount_profile'] = 'Минимум сообщений для просмотра профилей. Установите 0 для отключения.';
$lang['postcount_groupcp'] = 'Минимум сообщений для просмотра Группы. Установите 0 для отключения.';
$lang['postcount_vote'] = 'Минимум сообщений для голосования в опросах. Установите 0 для отключения.';
$lang['postcount_pm'] = 'Минимум сообщения для использования ЛС. Установите 0 для отключения';
$lang['postcount_post'] = 'Минимум сообщения, чтобы начать новую тему. Установите 0 для отключения';


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

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

Код:
$lang['pc_error'] = 'К сожалению у Вас должно быть написано ';
$lang['pc_error_m'] =  ' или больше сообщений для просмотра списка пользователей.';
$lang['pc_error_s'] =  ' или больше сообщений, чтобы воспользоватся поисковой системой по форуму.';
$lang['pc_error_g'] =  ' или больше сообщений для просмотра списка групп.';
$lang['pc_error_o'] =  ' или больше сообщений  для просмотра \ "Кто онлайн \".';
$lang['pc_error_u'] =  ' или больше сообщений для просмотра профиля пользователей.';
$lang['pc_error_v'] =  ' или больше сообщений для того, чтобы голосовать в опросах.';
$lang['pc_error_p'] =  ' или больше сообщений для того, чтобы посылать, сохранять, читать и отвечать на полученные вами личные сообщения (ПМ).';
$lang['pc_error_t'] =  ' или больше сообщений для того, чтобы начать новую тему.';


Открываем admin_board.tpl

Находим

Код:
<tr>
   <td><h4>{L_AVATAR_GALLERY_PATH}</h4><h6>{L_AVATAR_GALLERY_PATH_EXPLAIN}</h6></td>
   <td><input class="post" type="text" size="20" maxlength="255" name="avatar_gallery_path" value="{AVATAR_GALLERY_PATH}" /></td>
</tr>


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

Код:
 <tr>
      <th class="thHead" colspan="2">{L_THRESHOLD}</th>
   </tr>
   <tr>
      <td class="row2" colspan="2"><span class="gensmall">{L_THRESHOLD_EXPLAIN}</span></td>
   </tr>
      <tr>
      <td class="row1">{L_POSTCOUNT_MEMBERLIST}</td>
      <td class="row2"><input class="post" type="text" maxlength="4" size="4" name="postcount_memberlist" value="{POSTCOUNT_MEMBERLIST}" /></td>
   </tr>
    <tr>
      <td class="row1">{L_POSTCOUNT_SEARCH}</td>
      <td class="row2"><input class="post" type="text" maxlength="4" size="4" name="postcount_search" value="{POSTCOUNT_SEARCH}" /></td>
   </tr>
    <tr>
      <td class="row1">{L_POSTCOUNT_PROFILE}</td>
      <td class="row2"><input class="post" type="text" maxlength="4" size="4" name="postcount_profile" value="{POSTCOUNT_PROFILE}" /></td>
   </tr>
    <tr>
      <td class="row1">{L_POSTCOUNT_GROUPCP}</td>
      <td class="row2"><input class="post" type="text" maxlength="4" size="4" name="postcount_groupcp" value="{POSTCOUNT_GROUPCP}" /></td>
   </tr>
    <tr>
      <td class="row1">{L_POSTCOUNT_VIEWONLINE}</td>
      <td class="row2"><input class="post" type="text" maxlength="4" size="4" name="postcount_viewonline" value="{POSTCOUNT_VIEWONLINE}" /></td>
   </tr>
   <tr>
      <td class="row1">{L_POSTCOUNT_VOTE}</td>
      <td class="row2"><input class="post" type="text" maxlength="4" size="4" name="postcount_vote" value="{POSTCOUNT_VOTE}" /></td>
   </tr>
      <tr>
      <td class="row1">{L_POSTCOUNT_PM}</td>
      <td class="row2"><input class="post" type="text" maxlength="4" size="4" name="postcount_pm" value="{POSTCOUNT_PM}" /></td>
   </tr>
      <tr>
      <td class="row1">{L_POSTCOUNT_POST}</td>
      <td class="row2"><input class="post" type="text" maxlength="4" size="4" name="postcount_post" value="{POSTCOUNT_POST}" /></td>
   </tr>


Все готово!

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

Если надо кому нить, то еще и для просмотра топика порог выкидываю.

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

Код:
INSERT INTO bb_config (config_name, config_value) VALUES ('postcount_viewtopic', '5')


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

Находим

Код:
// Start session
$user->session_start();


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

Код:
$postcount_viewtopic = isset($bb_cfg['postcount_viewtopic']) ? $bb_cfg['postcount_viewtopic'] : 5;
if ( !$userdata['session_logged_in'] || ($userdata['user_posts'] < $postcount_viewtopic) )
{

   $errorpc1 = $lang['pc_error'];
   $errorpc2 = $lang['pc_error_2'];

   message_die(GENERAL_MESSAGE, $errorpc1 . $postcount_viewtopic . $errorpc2);
}


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

Находим

Код:
$template->assign_vars(array(


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

Код:
   'L_POSTCOUNT_VIEWTOPIC' => $lang['postcount_viewtopic'],
   'L_POSTCOUNT_VIEWTOPIC_EXPLAIN' => $lang['postcount_viewtopic_explain'],
   'POSTCOUNT_VIEWTOPIC' => $new['postcount_viewtopic'],


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

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

Код:
$lang['postcount_viewtopic'] = 'Минимум сообщений для просмотра топиков. Установите 0 для отключения.';
$lang['postcount_viewtopic_explain'] = 'Установить здесь минимальное количество сообщений, которые пользователь должен написать, чтобы видеть топики.';


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

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

Код:
$lang['pc_error_2'] =  ' или больше для того, чтобы видеть топики.';


Открываем admin_board.tpl

Находим

Код:
     <tr>
    <td class="row1">{L_POSTCOUNT_POST}</td>
    <td class="row2"><input class="post" type="text" maxlength="4" size="4" name="postcount_post" value="{POSTCOUNT_POST}" /></td>
  </tr>


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

Код:
<tr>
      <td class="row1">{L_POSTCOUNT_VIEWTOPIC}<br /><span class="gensmall">{L_POSTCOUNT_VIEWTOPIC_EXPLAIN}</span></td>
      <td class="row2"><input class="post" type="text" maxlength="4" size="4" name="postcount_viewtopic" value="{POSTCOUNT_VIEWTOPIC}" /></td>
   </tr>


Готово!

Автор:  krumax [ 2011-05-07 06:17 ]
Заголовок сообщения: 

admin
Вот этот модик решает многие вещи.
Огромный респектище! :az:


P.S.
Прикрепляю файл обновления БД,
для тех у кого с предыдущим файлом был
"белый лист" :D

Автор:  oartemka178 [ 2011-05-07 12:48 ]
Заголовок сообщения: 

krumax

Пожалуйста, а что с моим файлом был белый лист?

Автор:  krumax [ 2011-05-07 13:55 ]
Заголовок сообщения: 

admin
да у нас отличаются немного движки...


Код:
include($phpbb_root_path . 'common.'.$phpEx);

у меня надо прописывать так:
Код:
include($phpbb_root_path . 'common.php');

ну и т.д.
+ я перекодировал в UTF-8 без BOM

Автор:  oartemka178 [ 2011-05-07 13:58 ]
Заголовок сообщения: 

ааааа, понял, я думал, что с файлом какой-то косяк.

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

krumax

Затестил у тебя только, что - работает :ab:

[th]http://i20.fastpic.ru/big/2011/0507/24/bf592a276d55de5029416a377b9cd024.png[/th]

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

admin
Второму админу очень понравился мод.
Он у нас немного параноик... :ag:
P.S.
впрочем ты сам видел :ag:

Автор:  krumax [ 2011-05-11 00:09 ]
Заголовок сообщения: 

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

Автор:  oartemka178 [ 2011-05-11 00:59 ]
Заголовок сообщения: 

krumax

с profile.php удали код, а в usercp_viewprofile.php закинь после этого

Код:
$ranks = $datastore->get('ranks');
$poster_rank = $rank_image = '';


это

Код:

$u = ( isset($HTTP_GET_VARS[POST_USERS_URL]) ) ? intval($HTTP_GET_VARS[POST_USERS_URL]) : intval($HTTP_POST_VARS[POST_USERS_URL]);

$mode = ( isset($HTTP_GET_VARS['mode']) ) ? $HTTP_GET_VARS['mode'] : $HTTP_POST_VARS['mode'];

$postcount_profile = isset($bb_cfg['postcount_profile']) ? $bb_cfg['postcount_profile'] : 5;

if ( !$userdata['session_logged_in']  && $mode == 'viewprofile' && $postcount_profile > 0)
{
  redirect(append_sid("login.$phpEx?redirect=profile.$phpEx&mode=viewprofile&".POST_USERS_URL."=".$u, true));
  exit;
 }

if ( $mode == 'viewprofile' && $userdata['user_posts'] < $postcount_profile && $userdata['user_level'] != ADMIN )
{
  message_die(GENERAL_MESSAGE, $lang['pc_error'] . $postcount_profile . $lang['pc_error_u']);
}


Автор:  krumax [ 2011-05-11 00:59 ]
Заголовок сообщения: 

Понял.
Будим пробывать.

Так уже стоит. Без изменений... :(

Автор:  oartemka178 [ 2011-05-11 01:00 ]
Заголовок сообщения: 

krumax
можешь смело ставить, работать будет гарантировано :ab:

Автор:  krumax [ 2011-05-11 01:15 ]
Заголовок сообщения: 

admin
установил, кэш почистил.
Проблема осталась.

Автор:  oartemka178 [ 2011-05-11 01:19 ]
Заголовок сообщения: 

я свой только что у тебя отредактировал, посмотри у меня в подписи, я оставил мессендж

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

admin
Спасибо.
Странно что у второго админа не получилось.
:az:
P.S.
Будет наказан с записью в трудовую книжку.

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