|
Вход
Главное меню
|
| NewBB: Удаление сообщения без ответов на него |
by Andrey_Ra on 2003/6/17 23:33:51
Этот и другие хаки доступны для скачивания тут: Несколько полезных хаков
Итак, продолжаем сериал по заявкам телезрителей ;): Все тот же Xoops 2.0.2, 2.0.3 Модуль NewBB Предмет хака: Создать форму удаления сообщения с возможностью отказа от удаления всех ответов на данное сообщение.
поехали: Файл: \modules\newbb\class\class.forumposts.php, строка :251, начало функции delete(): Quote://Начало хака на предмет удаления без ответов function delete($ok = 1) { //затычка для передачи параметра if ($ok==2) { // если выбрано удаление без ответов на эту мессагу $sql = sprintf("SELECT pid FROM %s WHERE post_id = %u", $this->db->prefix("bb_posts"), $this->post_id); //выбираем конкретную мессагу и смотрим ее родительский пид if ($result = $this->db->query($sql)){ //если запрос удачный $array = $this->db->fetchArray($result); if ($array['pid']!=0){ //если это не первая мессаге в треде $mypid=$array['pid']; $sql= sprintf("UPDATE %s SET pid = %u WHERE pid = %u", $this->db->prefix("bb_posts"),$mypid,$this->post_id);//запрос: обновить все сообщения, в которых пид=пост-ид удаляемого, заменить на пид удаляемого if ( !$result = $this->db->query($sql) ) { return false; //Если не получаетя - значит вообще ничего не удаляем! }; }; } else { return false; }; }; //Конец хака на предмет удаления без ответов
2. Файл \modules\newbb\delete.php, строка 71, сразу после if ( $post->istopic() ) { Quote: //Начало хака на предмет удаления без ответов if ($ok==2){ redirect_header("viewforum.php?forum=$forum", 2, 'Данное сообщение было удалено без ответов на него'); } else { redirect_header("viewforum.php?forum=$forum", 2, _MD_POSTSDELETED); }; //Конец хака на предмет удаления без ответов
Строка 80, сразу после } else { Quote://Начало хака на предмет удаления без ответов if ($ok==2){ redirect_header("viewforum.php?forum=$forum", 2, 'Данное сообщение было удалено без ответов на него'); } else { redirect_header("viewtopic.php?topic_id=$topic_id&order=$order&viewmode=$viewmode&pid=$pid&forum=$forum", 2, _MD_POSTSDELETED); }; //Конец хака на предмет удаления без ответов
Строка 92, сразу после xoops_confirm(array('post_id' => $post_id, 'viewmode' => $viewmode, 'order' => $order, 'forum' => $forum, 'topic_id' => $topic_id, 'ok' => 1), 'delete.php', _MD_AREUSUREDEL); Quote: //Начало хака на предмет удаления без ответов xoops_confirm(array('post_id' => $post_id, 'viewmode' => $viewmode, 'order' => $order, 'forum' => $forum, 'topic_id' => $topic_id, 'ok' => 2), 'delete.php', 'Или вы хотите удалить конкретно это сообщение, без ответов на него?'); //Конец хака на предмет удаления без ответов
Все.
Недостатки: Не работает на начальных мессагах, а также не выдает об этом сообщения (там вообще-то должно быть сообщение: "Вы хотите удалить всю тему целиком?"). При удалении мессаг без потомков - как правило вылетает из топика. Впринципе лечится, но не хочу слишком коренные изменения производить, тем более что они относятся не к этому хаку, а уже к следующему, и не хаку, а багфиксу.
Остальные недостатки - жду от вас, сильно не тестировал, некогда.
ЗЫ. Возможна доработка до многоязыкового стандарта, путем прописывания любой по вкусу лексемы вместо русского текста. Но надо ли это нам?-) Если будете прописывать - не забудьте прописать в папке english прежде всего.
|
|