Intellect Board — cистема управления сайтом

Построение сайта на основе форума

Intellect Board — cистема управления сайтом »   Народные рецепты »   Мусорное ведро для сообщений
RSS

Мусорное ведро для сообщений

Надоело, что модераторы мочат сообщения а потом начинаются споры и разборы, написал мусорное ведро.

Текущий рейтинг темы: Нет
Выводить сообщения
Правила раздела

<<Назад  Вперед>>Страницы: 1 2 3
Модераторы: aerograf, wsx
Печать
 
Gich
Почетный участник

Gich
Всего сообщений: 123
Рейтинг пользователя: 6


Ссылка


Дата регистрации на форуме:
10 нояб. 2006
То что тут представлено - мусорное ведро для сообщений. Если нажать кнопку "Удалить" то сообщение попадает в тему указанную в коде. Без вопросов и прочего. Указывается из какой темы удалили и кто удалил. Очень рекомендю! Удалить от сюда уже не возможно.

Это сделано путем изменения файла delete.php в корневом форума.

[q]
function do_delete_post($pid) {
global $link;
$sql = "SELECT u.u__level,ua.ua_level,p.p_attach,p.p_tid,p_uid,t_fid,t__pcount ".
"FROM ".$GLOBALS['DBprefix']."Post p, ".$GLOBALS['DBprefix']."Topic t, ".$GLOBALS['DBprefix']."User u ".
"LEFT JOIN ".$GLOBALS['DBprefix']."UserAccess ua ON (ua.uid=u.u_id AND ua.fid=".$GLOBALS['forum'].") ".
"WHERE p_id=\"$pid\" AND p_tid=t_id AND u.u_id=p.p_uid";
$res =&db_query($sql,$link);
if (db_num_rows($res)!=1) error(MSG_e_p_notfound);
$pdata=&db_fetch_array($res);
db_free_result($res);
if ($pdata['p_uid']!=$GLOBALS['inuserid'] && check_moderate($pdata,$GLOBALS['inuserlevel'])) error(MSG_e_mod_subordinate);
if ($pdata['p_attach']) {
$sql = "DELETE FROM ".$GLOBALS['DBprefix']."File WHERE file_id=".$pdata['p_attach'];
$res =&db_query($sql,$link);
}
// $sql = "DELETE FROM ".$GLOBALS['DBprefix']."Post WHERE p_id=\"$pid\"";//284

$sql = "SELECT u__name from ".$GLOBALS['DBprefix']."User WHERE u_id=".$GLOBALS['inuserid'];
$res =&db_query($sql,$link);
$del_user_name = mysql_result($res,0,'u__name');

$sql = "SELECT p_tid from ".$GLOBALS['DBprefix']."Post WHERE p_id=\"$pid\"";
$res =&db_query($sql,$link);
$tama_ud_soobsh_id = mysql_result($res,0,'p_tid');

$sql = "SELECT t_title from ".$GLOBALS['DBprefix']."Topic WHERE t_id=\"$tama_ud_soobsh_id\"";
$res =&db_query($sql,$link);
$tama_ud_soobsh = mysql_result($res,0,'t_title');
//287 - тема куда сваливаются удаленные сообщения. Не видна для других пользователей.
$sql = "UPDATE ".$GLOBALS['DBprefix']."Post SET p_tid=\"287\", p__modcomment=\"Cообщение удалил: ".$del_user_name.". <br> Удалено из темы: ".$tama_ud_soobsh.".\" WHERE p_id=\"$pid\"";
$res =&db_query($sql,$link);
$sql = "UPDATE ".$GLOBALS['DBprefix']."UserStat SET us_count=us_count-1 WHERE uid=".$pdata['p_uid']." AND fid=".$pdata['t_fid'];
$res =&db_query($sql,$link);
//if ($pdata['t__pcount']==1) delete_topic($pdata['p_tid']);
}
[/q]
Yuras
Долгожитель форума


Всего сообщений: 382
Рейтинг пользователя: 11


Ссылка


Дата регистрации на форуме:
15 мар. 2007
полезная штука! \":thumbup\"
я у себя модераторам так и не смог объяснить про прятание сообщений с помощью тегов level \":frown:\"


Gich написал:
[q]
Удалить от сюда уже не возможно.
[/q]
вообще никак, что ли? \":(\"
Gich
Почетный участник

Gich
Всего сообщений: 123
Рейтинг пользователя: 6


Ссылка


Дата регистрации на форуме:
10 нояб. 2006
Да, если в разделе права модерирования еще отключены, то гарантировано ясно кто накосяпупил. Подумываю дополнить эту модификацию скриптом, который сам будет стирать старье по истечении месяца автоматом. Либо if admin = форматиловка. Просто лишний геморой админу, а лень двигатель прогресса. Если само будет удаляться, так вобще прелесть

Да и +- пара метров в БД меня не ограничивает
Yuras
Долгожитель форума


Всего сообщений: 382
Рейтинг пользователя: 11


Ссылка


Дата регистрации на форуме:
15 мар. 2007
да. автомат удаления не помешал бы. но месяца, имхо, мало. пусть 2 хотя бы будет.
а "if admin = форматиловка" должно быть всегда. ;)

надо ведь, чтобы еще и посты правильно считались после удаления... :rolleye
Gich
Почетный участник

Gich
Всего сообщений: 123
Рейтинг пользователя: 6


Ссылка


Дата регистрации на форуме:
10 нояб. 2006
Нашел ошибку - не удаляло сообщения из тем с содержащих ковычки типа "
постапил реплэйсер
Выкладываю исправления.

[q]
function do_delete_post($pid) {
global $link;
$sql = "SELECT u.u__level,ua.ua_level,p.p_attach,p.p_tid,p_uid,t_fid,t__pcount ".
"FROM ".$GLOBALS['DBprefix']."Post p, ".$GLOBALS['DBprefix']."Topic t, ".$GLOBALS['DBprefix']."User u ".
"LEFT JOIN ".$GLOBALS['DBprefix']."UserAccess ua ON (ua.uid=u.u_id AND ua.fid=".$GLOBALS['forum'].") ".
"WHERE p_id=\"$pid\" AND p_tid=t_id AND u.u_id=p.p_uid";
$res =&db_query($sql,$link);
if (db_num_rows($res)!=1) error(MSG_e_p_notfound);
$pdata=&db_fetch_array($res);
db_free_result($res);
if ($pdata['p_uid']!=$GLOBALS['inuserid'] && check_moderate($pdata,$GLOBALS['inuserlevel'])) error(MSG_e_mod_subordinate);
if ($pdata['p_attach']) {
$sql = "DELETE FROM ".$GLOBALS['DBprefix']."File WHERE file_id=".$pdata['p_attach'];
$res =&db_query($sql,$link);
}
// $sql = "DELETE FROM ".$GLOBALS['DBprefix']."Post WHERE p_id=\"$pid\"";//284
//$data = "SELECT * from ".$g2prefix."SequenceId";
//$result=mysql_db_query ($db_gal, $data, $lnk_gal);
//$namber_gal_user = mysql_result($result,0,'id');

$sql = "SELECT u__name from ".$GLOBALS['DBprefix']."User WHERE u_id=".$GLOBALS['inuserid'];
$res =&db_query($sql,$link);
$del_user_name = mysql_result($res,0,'u__name');

$sql = "SELECT p_tid from ".$GLOBALS['DBprefix']."Post WHERE p_id=\"$pid\"";
$res =&db_query($sql,$link);
$tama_ud_soobsh_id = mysql_result($res,0,'p_tid');

$sql = "SELECT t_title from ".$GLOBALS['DBprefix']."Topic WHERE t_id=\"$tama_ud_soobsh_id\"";
$res =&db_query($sql,$link);
$tama_ud_soobsh = mysql_result($res,0,'t_title');
//eregi_replace("\"", "123", $tama_ud_soobsh);

//$tama_ud_soobsh=str_replace('\\"','"',$tama_ud_soobsh);
$tama_ud_soobsh=str_replace('"','\\"',$tama_ud_soobsh);


$sql = "UPDATE ".$GLOBALS['DBprefix']."Post SET p_tid=\"287\", p__modcomment=\"Cообщение удалил: ".$del_user_name.". <br> Удалено из темы: ".$tama_ud_soobsh.".\" WHERE p_id=\"$pid\"";
$res =&db_query($sql,$link);
$sql = "UPDATE ".$GLOBALS['DBprefix']."UserStat SET us_count=us_count-1 WHERE uid=".$pdata['p_uid']." AND fid=".$pdata['t_fid'];
$res =&db_query($sql,$link);
//if ($pdata['t__pcount']==1) delete_topic($pdata['p_tid']);
}
[/q]


Ну посты считаются. автомат напишу, пока просто времени нет!
Rizoen
Новичок

Rizoen
Откуда: TYT
Всего сообщений: 1
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
27 апр. 2008
Насколько я понял заменить надо:
[q]
function do_delete_post($pid) {
global $link;
$sql = "SELECT u.u__level,ua.ua_level,p.p_attach,p.p_tid,p_uid,t_fid,t__pcount ".
"FROM ".$GLOBALS['DBprefix']."Post p, ".$GLOBALS['DBprefix']."Topic t, ".$GLOBALS['DBprefix']."User u ".
"LEFT JOIN ".$GLOBALS['DBprefix']."UserAccess ua ON (ua.uid=u.u_id AND ua.fid=".$GLOBALS['forum'].") ".
"WHERE p_id=\"$pid\" AND p_tid=t_id AND u.u_id=p.p_uid";
$res =&db_query($sql,$link);
if (db_num_rows($res)!=1) error(MSG_e_p_notfound);
$pdata=&db_fetch_array($res);
db_free_result($res);
if ($pdata['p_uid']!=$GLOBALS['inuserid'] && check_moderate($pdata,$GLOBALS['inuserlevel'])) error(MSG_e_mod_subordinate);
if ($pdata['p_attach']) {
$sql = "DELETE FROM ".$GLOBALS['DBprefix']."File WHERE file_id=".$pdata['p_attach'];
$res =&db_query($sql,$link);
}
$sql = "DELETE FROM ".$GLOBALS['DBprefix']."Post WHERE p_id=\"$pid\"";
$res =&db_query($sql,$link);
$sql = "UPDATE ".$GLOBALS['DBprefix']."UserStat SET us_count=us_count-1 WHERE uid=".$pdata['p_uid']." AND fid=".$pdata['t_fid'];
$res =&db_query($sql,$link);
if ($pdata['t__pcount']==1) {
delete_topic($pdata['p_tid']);
return true;
}
return false;
}
[/q]

Поправте, если что не то.
assessor
Долгожитель форума


Всего сообщений: 495
Рейтинг пользователя: 14


Ссылка


Дата регистрации на форуме:
13 фев. 2007
Gich, спасибо за "мусорку".

Я сначала не хотел ее ставить, а сегодня по ошибке удалил несколько нужных постов (дековался с кодом). Хорошо база была сохранена до этого.
А сейчас поставил твою "мусорку", на всякий пожарный.
Пишет в раздел, доступный для чтения только админу, т.е. мне. Этот раздел естественно никто не видит.
assessor
Долгожитель форума


Всего сообщений: 495
Рейтинг пользователя: 14


Ссылка


Дата регистрации на форуме:
13 фев. 2007

Gich, Сообщение отправлено: 2 октября 2007 19:16 написал:
[q]
.... Указывается из какой темы удалили и кто удалил. Очень рекомендю! Удалить от сюда уже не возможно.

Это сделано путем изменения файла delete.php в корневом форума.
[/q]

Почему невозможно? Я в обратную подключаю "родную" функцию do_delete_post() и удаляю мусор. Потом в обратную переименовываю. Меня это не напрягает. Просто на сервак лишний раз ходить приходится.


Berserker
Начинающий


Всего сообщений: 44
Рейтинг пользователя: -1


Ссылка


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


Всего сообщений: 495
Рейтинг пользователя: 14


Ссылка


Дата регистрации на форуме:
13 фев. 2007
Привет, Berserker. НЕ понял какой тебе скрипт нужен?
Ведь на http://intboard.ru/post/99/1707/p11873.htm#pp11873 уже приведен текст функции.
Я эту функцию вставил вместо стандартной. И все.
<<Назад  Вперед>>Страницы: 1 2 3
Модераторы: aerograf, wsx
Печать
Intellect Board — cистема управления сайтом »   Народные рецепты »   Мусорное ведро для сообщений
RSS

1 посетитель просмотрел эту тему за последние 10 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
Ограничение доступа
не отображаются разделы
Архив версий
Установка стиля на Intellect Board 2.22
Завершилась работа над новой версией 3.00

Самые активные 5 тем RSS


Время выполнения скрипта: 0.0921. Количество выполненных запросов: 17, время выполнения запросов 0.0000
Creative Commons License Rambler's Top100 Rambler's Top100 Рейтинг@Mail.ru Valid HTML 4.01 Transitional Valid CSS!