VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Привет.
Как известно, в булке, если в опциях раздела включить премодерацию новых тем модераторами, то авторы (да и вообще все юзеры) не видят свои детища пока модератор не даст добро.
Теперь вопрос: можно сделать так, чтобы авторы могли видеть созданные темы, но еще непроверенные модератором?
Суть в чем?! Просто надо чтобы автор учитывал замечания модератора и вносил коррективы в тему. Уж потом модератор даст добро, и тему на паблик можно.
А он (автор) не может этого сделать, потому что нет прав.
Все настройки перековырял, но смог найти пункт чтобы настроить такие права.
Подскажите советом. Может хак какой-то есть?
Ребята, ну помогите, пожалуйста. Очень нужно сделать такую настройку.
Или это так нереально? (((
@Ghost
Гуру
Join Date: Feb 2008
Posts: 983
Версия vB: 3.8.1
Reputation:
Гуру 1011
Репутация в разделе: 893
2
Хоть и не пользуюсь такой фичей, но ща попробуем посмотреть, что там и как, но думаю нужно будет править скрипты editpost.php (для редактирования сообщения темы), showthread.php (чтобы видели содержимое темы) и forumdisplay.php (чтобы видели ее в списке тем раздела).
Начнем с "forumdisplay.php". Там есть такие строки (коментарии -- мои):
PHP Code:
// если пользователь -- не модератор
if (!can_moderate($forumid, 'canmoderateposts'))
{
// если не может видеть удаленные темы
if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canseedelnotice']))
{
// показывать только обычные
$visiblethreads = " AND visible = 1 ";
}
// иначе
else
{
// показывать обычные и удаленные
$visiblethreads = " AND visible IN (1,2)";
}
// вот сюда нужно вставить код для разрешения просмотра авторам своих непроверенных тем
}
// иначе
else
{
// показывать все
$visiblethreads = " AND visible IN (0,1,2)";
}
Собсна сам код (см. коментарии в коде выше) должен выглядеть как-то так:
PHP Code:
// если пользователь, а не гость
if ($vbulletin->userinfo['userid'])
{
// разрешить видеть темы, для которых является автором
$visiblethreads = " ($visiblethreads OR thread.postuserid = {$vbulletin->userinfo['userid']})";
}
Можешь проверить пока этот код, а я пока буду ковырять два других скрипта.
Ghost добавил 14.05.2009 в 12:17
Эм... Посмотрел скрипт showthread.php -- проверка осуществляется кодом (коментарии на русском -- мои)
PHP Code:
// check for visible / deleted thread
// если тема не проверена и пользователь не может проверять сообщения
// или тема удалена и пользователь не может модерировать раздел
if (((!$thread['visible'] AND !can_moderate($thread['forumid'], 'canmoderateposts'))) OR ($thread['isdeleted'] AND !can_moderate($thread['forumid'])))
{
// показываем сообщение об ошибке
eval(standard_error(fetch_error('invalidid', $vbphrase['thread'], $vbulletin->options['contactuslink'])));
}
Вот этот весь код можно заключить в условие "если тема не проверена и не вы ее автор", т.е.
PHP Code:
// если тема не проверена и не вы ее автор
if (!$thread['visible'] AND $thread['postuserid'] != $vbulletin->userinfo['userid'])
{
// здесь весь остальной код проверок (см. выше)
}
Пойду смотреть editpost.php
Ghost добавил 14.05.2009 в 12:30
В файле editpost.php есть такие условия (коментарии снова мои):
PHP Code:
// если не указан пост или он удален или не проверен и вы не можете проверять сообщения в этом разделе
if (!$postinfo['postid'] OR $postinfo['isdeleted'] OR (!$postinfo['visible'] AND !can_moderate($threadinfo['forumid'], 'canmoderateposts')))
{
// выдать сообщение об ошибке
eval(standard_error(fetch_error('invalidid', $vbphrase['post'], $vbulletin->options['contactuslink'])));
}
// если тема не указана или удалена или непроверена и вы не можете проверять сообщения в этом разделе
if (!$threadinfo['threadid'] OR $threadinfo['isdeleted'] OR (!$threadinfo['visible'] AND !can_moderate($threadinfo['forumid'], 'canmoderateposts')))
{
// выдать сообщение об ошибке
eval(standard_error(fetch_error('invalidid', $vbphrase['thread'], $vbulletin->options['contactuslink'])));
}
Здесь, думаю, достаточно будет после "!can_moderate(...)" дописать условие " и вы не автор" как-то так (для первого и второго if'ов)
PHP Code:
AND $postinfo['userid'] != $vbulletin->userinfo['userid']
PHP Code:
AND $threadinfo['postuserid'] != $vbulletin->userinfo['userid']
Ghost добавил 14.05.2009 в 12:30
Это все только на первый взгляд. Возможно потребуется где-то что-то еще править.
Last edited by Ghost : 05-14-2009 at 01:30 PM.
Reason: Добавлено сообщение
@Ramzes
Знаток
Join Date: Jul 2006
Posts: 681
Версия vB: 3.8.4
Reputation:
Knowing 126
Репутация в разделе: 58
0
Спасибо, гуру. Сегодня попробую и отпишусь о результатах.
@Ramzes
Знаток
Join Date: Jul 2006
Posts: 681
Версия vB: 3.8.4
Reputation:
Knowing 126
Репутация в разделе: 58
0
Ghost,
На стадии правки файла "forumdisplay.php" форум лег и терь отказывается открывать разделы "forumdisplay"
На почту мне приходят такие ошибки:
HTML Code:
Invalid SQL:
SELECT COUNT(*) AS threads, SUM(IF(thread.lastpost > 1242392581 AND open <> 10, 1, 0)) AS newthread
FROM thread AS thread
WHERE forumid = 6
AND sticky = 0
( AND visible = 1 OR thread.postuserid = 377);
MySQL Error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '( AND visible = 1 OR thread.postuserid = 377)' at line 9
Error Number : 1064
Как быть?
@Ghost
Гуру
Join Date: Feb 2008
Posts: 983
Версия vB: 3.8.1
Reputation:
Гуру 1011
Репутация в разделе: 893
1
Уп-пс. Ошибочка. Поправь
PHP Code:
$visiblethreads = " ($visiblethreads OR thread.postuserid = {$vbulletin->userinfo['userid']})";
Ghost,
Пасибо. Заработало..
Терь значит так... Стадии "forumdisplay.php" и "showthread.php" прошел успешно.
То есть автор тему увидел и далее открыл тему.
Не получается с "editpost.php"
При первом нажатии на "изменить" получаю просто игнор, при повторном нажатии получаю это:
PHP Code:
Тема не существует или не указан идентификатор (номер). Если вы уверены, что использовали правильную ссылку, свяжитесь с администрацией
Возможно, я сделал что-то не так.
Вот кусок кода, который я изменил:
PHP Code:
if (!$postinfo['postid'] OR $postinfo['isdeleted'] OR (!$postinfo['visible'] AND !can_moderate($threadinfo['forumid'] AND $postinfo['userid'] != $vbulletin->userinfo['userid'] , 'canmoderateposts')))
{
eval(standard_error(fetch_error('invalidid', $vbphrase['post'], $vbulletin->options['contactuslink'])));
}
if (!$threadinfo['threadid'] OR $threadinfo['isdeleted'] OR (!$threadinfo['visible'] AND !can_moderate($threadinfo['forumid'] AND $threadinfo['postuserid'] != $vbulletin->userinfo['userid'] , 'canmoderateposts')))
{
eval(standard_error(fetch_error('invalidid', $vbphrase['thread'], $vbulletin->options['contactuslink'])));
}
Что не так я сделал?
Ramzes добавил 15.05.2009 в 17:43
Я понял ошибку. Надо было вот так сделать:
PHP Code:
if (!$postinfo['postid'] OR $postinfo['isdeleted'] OR (!$postinfo['visible'] AND !can_moderate($threadinfo['forumid'], 'canmoderateposts') AND $postinfo['userid'] != $vbulletin->userinfo['userid']))
{
eval(standard_error(fetch_error('invalidid', $vbphrase['post'], $vbulletin->options['contactuslink'])));
}
if (!$threadinfo['threadid'] OR $threadinfo['isdeleted'] OR (!$threadinfo['visible'] AND !can_moderate($threadinfo['forumid'], 'canmoderateposts')AND $threadinfo['postuserid'] != $vbulletin->userinfo['userid']))
{
eval(standard_error(fetch_error('invalidid', $vbphrase['thread'], $vbulletin->options['contactuslink'])));
}
Но проблема все же есть: не работает "быстрое редактирование". То есть чтобы отредактировать пост, нужно попасть в расширенное редактирование. А для этого надо два раза жмакнуть на "изменить".
Как исправить?
Last edited by Ramzes : 05-15-2009 at 06:43 PM.
Reason: Добавлено сообщение
@Ghost
Гуру
Join Date: Feb 2008
Posts: 983
Версия vB: 3.8.1
Reputation:
Гуру 1011
Репутация в разделе: 893
2
Quote:
Originally Posted by Ramzes
Что не так я сделал?
ты дополнительное условие вставил внутрь функции "can_moderate", а нужно было после нее. т.е. не "can_moderate(... дополнительное условие, ...)", а "can_moderate(... , ...) дополнительное условие".
Ghost добавил 15.05.2009 в 17:47
Quote:
Originally Posted by Ramzes
Как исправить?
Ща посмотрим...
Ghost добавил 15.05.2009 в 17:51
В скрипте "ajax.php" есть такие строки:
PHP Code:
if ((!$postinfo['visible'] OR $postinfo ['isdeleted']) AND !can_moderate($threadinfo['forumid']))
{
$xml->add_tag('error', 'nopermission');
$xml->print_xml();
}
if ((!$threadinfo['visible'] OR $threadinfo['isdeleted']) AND !can_moderate($threadinfo['forumid']))
{
$xml->add_tag('error', 'nopermission');
$xml->print_xml();
}
т.е. те же условия, что и в "editpost.php", только выводят иной результат для ajax'а. дополнительные условия туда нужно впихнуть туже, что и в "editpost.php".
Last edited by Ghost : 05-15-2009 at 06:51 PM.
Reason: Добавлено сообщение
@Ramzes
Знаток
Join Date: Jul 2006
Posts: 681
Версия vB: 3.8.4
Reputation:
Knowing 126
Репутация в разделе: 58
0
Ghost,
Спасибо! Супер! Все пучком, за одним но:
На главной странице форума в графе "Последнее сообщение" написано "никогда".
Ну это если раздел пустой и там создана тема и она еще не проверена.
Мелочь, конечно, но можно это тоже исправить? Чтобы автор темы видел свою тему с главной?!
Ramzes добавил 15.05.2009 в 18:07
Кстати, надо будет еще файл "search.php" править. Потому как поиск не показывает темы автора, которые еще не проверены (((
Какое место нужно в поиске править?
Last edited by Ramzes : 05-15-2009 at 07:07 PM.
Reason: Добавлено сообщение