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

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

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

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

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

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

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


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


Ссылка


Дата регистрации на форуме:
6 апр. 2008
Извиняюсь, теперь ясно.
Berserker
Начинающий


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


Ссылка


Дата регистрации на форуме:
6 апр. 2008
Удалите плиз этот пост :)
assessor
Долгожитель форума


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


Ссылка


Дата регистрации на форуме:
13 фев. 2007
Gich, хорошо бы добавить в комментарий об удалений кроме
- имени участника,
- названия темы

еще

НАЗВАНИЕ РАЗДЕЛА и ЕГО НОМЕР
Gich
Почетный участник

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


Ссылка


Дата регистрации на форуме:
10 нояб. 2006
assessor
У меня есть усовершенствованая версия мусорки.
Добавлено:
--В мусорку сваливаются сообщения при разбиении темы;
--Мусорка очищается сама при разбиении темы, если сообщению в мусорке больше месяца;
--Исправлена пара мелких глюков;
--Добавнено название темы;
Надо, добавлю номер

Вот пример:
[q]
Комментарий модератора:
Cообщение удалил: Val.
Удалено из темы: Правила ловли, экология и борьба с браконьерами.
[/q]


Выкладывать??? Там модификации нескольких файлов потребуются.
aerograf
Модератор форума

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


Ссылка


Дата регистрации на форуме:
29 дек. 2007
Выкладывай. Заранее спасибо.

assessor
Долгожитель форума


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


Ссылка


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

Gich написал:
[q]

assessor
У меня есть усовершенствованая версия мусорки.
Добавлено:
--В мусорку сваливаются сообщения при разбиении темы;
--Мусорка очищается сама при разбиении темы, если сообщению в мусорке больше месяца;
--Исправлена пара мелких глюков;
--Добавнено название темы;
Надо, добавлю номер

Вот пример:
[q]
Комментарий модератора:
Cообщение удалил: Val.
Удалено из темы: Правила ловли, экология и борьба с браконьерами.
[/q]


Выкладывать??? Там модификации нескольких файлов потребуются.
[/q]


Да, Gich, выкладывай.
Меня, конечно, и старый вариант устраивает, но у меня бывают одинаковые названия тем, поэтому мне нужно Кроме имени участника (кто удалил) и названия темы еще:
НАЗВАНИЕ РАЗДЕЛА и ЕГО НОМЕР
Это пара строчек кода. Напиши. Как определить название раздела и номер наздела.
Gich
Почетный участник

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


Ссылка


Дата регистрации на форуме:
10 нояб. 2006
Очень сильно извиняюсь за задержку. От сесси до сесси... Вот веселая жизнь кончилась.


Это в moderate.php, который в корне. Что делает эта процедура: при разбиении при удалении перебрасывает темы в помойку, также при разбиении удаляет старые сообщения из ведра - то что там лежит больше месяца.
ВНИМАНИЕ! У меня мусорка настроена на 287 тему. Измените на свою. Где- указано в коментах!

Нужно заменить одноименную функцию приведенной ниже.
И ТАК КОД:

[q]

function do_split_topic() {
//-----------------------------


check_post();
if ($GLOBALS['inuserlevel']<$GLOBALS['inforum']['f_lmoderate'] && !check_selfmod()) error(MSG_e_mod_norights);
global $link;
$tid=&getvar('tid');
if ($tid) {
if ($tid==$GLOBALS['topic']) error(MSG_e_mod_sametopic);
$sql = "SELECT f_id FROM ".$GLOBALS['DBprefix']."Topic, ".$GLOBALS['DBprefix']."Forum ".
"LEFT JOIN ".$GLOBALS['DBprefix']."UserAccess ON (uid=".$GLOBALS['inuserid']." AND fid=f_id) ".
"WHERE t_id=\"$tid\" AND t_fid=f_id AND f_ltopic<=COALESCE(ua_level,".$GLOBALS['inuserlevel'].")";
$res=&db_query($sql,$link);
if (db_num_rows($res)==0) error(MSG_e_mod_noforumsplit);
list($fid)=db_fetch_row($res);
db_free_result($res);
}
else $fid=&getvar('newforum');
$forum=$GLOBALS['forum'];
if (isset($_POST['move']) || $_POST['copy']) {
$sql = "SELECT COUNT(*) FROM ".$GLOBALS['DBprefix']."Post WHERE p_tid=".$GLOBALS['topic']." AND p_uid!=2";
$res =&db_query($sql,$link);
list($pcount)=db_fetch_row($res);
if ($pcount==1) error(MSG_e_mod_singlepost);

if (!$tid) {
if (!getvar("t_title")) error(MSG_e_t_empty);
check_topic($fid);
$sql = "INSERT INTO ".$GLOBALS['DBprefix']."Topic SET t_fid=\"$fid\", t_title=\"".getvar("t_title")."\", t_descr=\"".getvar("t_descr")."\"";
foreach ($GLOBALS['intopic'] as $key=>$value) {
if (substr($key,2,0)=="t_" && $key!="t_title" && $key!="t_descr") $sql.=", $key=\"".db_slashes($value)."\"";
}
$res =&db_query($sql,$link);
$tid = db_insert_id($res);
}
}

$posts=$_POST['pid'];
foreach ($posts as $pid=>$value) {
if ($_POST['move'][$pid]) {
if ($sqldata1) $sqldata1.=" OR ";
$sqldata1.="p_id=".db_slashes($pid);
}
if ($_POST['delete'][$pid]) {
if ($sqldata2) $sqldata2.=" OR ";
$sqldata2.="p_id=".db_slashes($pid);
}
if ($_POST['copy'][$pid]) {
if ($sqldata3) $sqldata3.=" OR ";
$sqldata3.="p_id=".db_slashes($pid);
}
}

if ($sqldata1) {
$sql = "SELECT p_uid,COUNT(p_id) AS ucount FROM ".$GLOBALS['DBprefix']."Post WHERE $sqldata1 GROUP BY p_uid";
$res =&db_query($sql,$link);
while ($udata=db_fetch_row($res)) {
$movedif[$udata[0]]=$udata[1];
}

if (getvar('putlink')) {
if (getvar('tid')) {
$sql = "SELECT t_title FROM ".$GLOBALS['DBprefix']."Topic WHERE t_id=\"$tid\"";
$res=&db_query($sql,$link);
list($t_title)=db_fetch_row($res);
db_free_result($res);
}
else $t_title=&getvar("t_title");

$text1 = MSG_t_msgsplitted1." \\\"<a href=\\\"index.php?t=$tid\\\">".$t_title."</a>\\\"";
$text2 = MSG_t_msgsplitted2." \\\"<a href=\\\"index.php?t=".$GLOBALS['topic']."\\\">".db_slashes($GLOBALS['intopic']['t_title'])."</a>\\\"";

$sql = "INSERT INTO ".$GLOBALS['DBprefix']."Post SET p_uid=2, p_uname=\"System\", p__time=".$GLOBALS['curtime'].", p_tid=".$GLOBALS['topic'].", p_text=\"$text1\", p__html=1";
$res =&db_query($sql,$link);

$sql = "INSERT INTO ".$GLOBALS['DBprefix']."Post SET p_uid=2, p_uname=\"System\", p__time=".$GLOBALS['curtime'].", p_tid=".$tid.", p_text=\"$text2\", p__html=1";
$res =&db_query($sql,$link);
}

$sql = "UPDATE ".$GLOBALS['DBprefix']."Post SET p_tid=\"$tid\" WHERE $sqldata1";
$res =&db_query($sql,$link);
$movecount = db_affected_rows($res);
user_substr($movedif,$forum);
user_summ($movedif,$fid);
}
if ($sqldata2) {
$sql = "SELECT p_uid,COUNT(p_id) AS ucount FROM ".$GLOBALS['DBprefix']."Post WHERE $sqldata2 GROUP BY p_uid";
$res =&db_query($sql,$link);
while ($udata=db_fetch_row($res)) {
$deldif[$udata[0]]=$udata[1];
}

$sql = "SELECT p_attach FROM ".$GLOBALS['DBprefix']."Post WHERE $sqldata2";
$res =&db_query($sql,$link);
if (db_num_rows($res)>0) {
while ($pdata=db_fetch_row($res)) {
if ($sqldata4) $sqldata4.=" OR ";
$sqldata4.="file_id=".$pdata[0];
}
$sql = "DELETE FROM ".$GLOBALS['DBprefix']."File WHERE $sqldata4";
$res =&db_query($sql,$link);
}
//------------------- Тут модифицировано для мусорного ведра.

$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_fid from ".$GLOBALS['DBprefix']."Topic WHERE t_id=\"$tama_ud_soobsh_id\"";
$res =&db_query($sql,$link);
$razdel_ud_soobsh_id = mysql_result($res,0,'t_fid');


$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');


$sql = "SELECT f_title from ".$GLOBALS['DBprefix']."Forum WHERE f_id=\"$razdel_ud_soobsh_id\"";
$res =&db_query($sql,$link);
$razdel_ud_soobsh = mysql_result($res,0,'f_title');

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

//--------------------
//Очистка корзины, от сообщений старше месяца.
$Timestamp=time ();
$Timestamp=$Timestamp-2505600;
$sql = "DELETE FROM ".$GLOBALS['DBprefix']."Post WHERE p_tid='287' and p__time<'$Timestamp'";
$res =&db_query($sql,$link);


//


// $sql = "DELETE FROM ".$GLOBALS['DBprefix']."Post WHERE $sqldata2";
// $res =&db_query($sql,$link);

$sql = "UPDATE ".$GLOBALS['DBprefix']."Post SET p_tid=\"287\", p__modcomment=\"Cообщение удалил: ".$del_user_name.". <br> Удалено из темы: ".$tama_ud_soobsh.". <br> Удалено из раздела: ".$razdel_ud_soobsh.".\" WHERE p_id=\"$pid\"";
$res =&db_query($sql,$link);




$delcount=db_affected_rows($res);
user_substr($deldif,$forum);
}
if ($sqldata3) {
$sql = "SELECT p_uid,COUNT(p_id) AS ucount FROM ".$GLOBALS['DBprefix']."Post WHERE $sqldata3 GROUP BY p_uid";
$res =&db_query($sql,$link);
while ($udata=db_fetch_row($res)) {
$copydif[$udata[0]]=$udata[1];
}
$copycount=count($copydif);

$sql = "INSERT INTO ".$GLOBALS['DBprefix']."Post (p_tid,p_text,p__modcomment,p__time,p__edittime,
p_signature,p__smiles,p__bcode,p__html,p_attach,p_uid,p_uname,p__ip,p_title) ".
"SELECT \"$tid\",p_text,p__modcomment,p__time,p__edittime,
p_signature,p__smiles,p__bcode,p__html,p_attach,p_uid,p_uname,p__ip,p_title ".
"FROM ".$GLOBALS['DBprefix']."Post WHERE ($sqldata3)";
$res=&db_query($sql,$link);
user_summ($copydif,$fid);
}

topic_resync($GLOBALS['topic']);
if ($tid) topic_resync($tid);
forum_resync($forum);
if ($sqldata1 && $fid!=$forum) forum_resync($fid);

$msg=format_word($movecount,MSG_p1,MSG_p2,MSG_p3)." ".MSG_mod_moved.", ".
format_word($delcount,MSG_p1,MSG_p2,MSG_p3)." ".MSG_mod_deleted.', '.
format_word($copycount,MSG_p1,MSG_p2,MSG_p3)." ".MSG_mod_pcopied;
topic_message($msg,1);
}

[/q]


Далее нужо модифицировать delete.php тот что в корне. Заменив одноименную функцию do_delete_post.

ВНИМАНИЕ! У меня мусорка настроена на 287 тему. Измените на свою. Где- указано в коментах!


[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 = "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_fid from ".$GLOBALS['DBprefix']."Topic WHERE t_id=\"$tama_ud_soobsh_id\"";
$res =&db_query($sql,$link);
$razdel_ud_soobsh_id = mysql_result($res,0,'t_fid');


$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');


$sql = "SELECT f_title from ".$GLOBALS['DBprefix']."Forum WHERE f_id=\"$razdel_ud_soobsh_id\"";
$res =&db_query($sql,$link);
$razdel_ud_soobsh = mysql_result($res,0,'f_title');

//eregi_replace("\"", "123", $tama_ud_soobsh);

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

$sql = "UPDATE ".$GLOBALS['DBprefix']."Post SET p_tid=\"287\", p__modcomment=\"Cообщение удалил: ".$del_user_name.". <br> Удалено из темы: ".$tama_ud_soobsh.". <br> Удалено из раздела: ".$razdel_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);


// $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]


Вроде все.

И последнее
Если что-то не заработает или есть вопросы пишите на мльник
admin(*dog*)fu441.org
Я в свети последних запар сюда не часто захожу времени нет!
Gich
Почетный участник

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


Ссылка


Дата регистрации на форуме:
10 нояб. 2006
Внимание! Код приведенный выше обновлене 18 июня 2008 года! Тепрь, его результат выглядит вот так.


Прикрепленный файл (deleted.jpg, 54846 байт, скачан: 1501 раз)
assessor
Долгожитель форума


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


Ссылка


Дата регистрации на форуме:
13 фев. 2007
Gich, спасибо. Пользую самый верхний вариант, поскольку удалений немного. И автоматическая чистка "мусорки" не критична. Мне важно было, чтобы выводился название раздела и темы.
OGS
Начинающий

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


Ссылка


Дата регистрации на форуме:
25 июля 2006
кто то ставил? у меня не пошло на 2.22.

---
Without afford you can't get fish
<<Назад  Вперед>>Страницы: 1 2 3
Модераторы: aerograf, wsx
Печать
Intellect Board — cистема управления сайтом »   Народные рецепты »   Мусорное ведро для сообщений
RSS

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

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

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


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