KirKMS Опубликовано 8 декабря, 2020 Жалоба Поделиться Опубликовано 8 декабря, 2020 Всем привет Решил написать новый модуль для Vii-Engine и выложить его для вас. Модуль позволяет восстанавливать удалённый пост со стены и комментарий. До начала установки, посмотри видео обзор модуля. Вот теперь и сам момент установки Спойлер Зайти в базу данных В таблице vii_wall добавить новое поле deleted int(1) По умолчанию как определенно 0 В таблице vii_news добавить новое поле deleted int(1) По умолчанию как определенно 0 Далее зайти \system\modules\wall.php Найти там строку if($xPrivasyX){ в запрос ниже добавить после SELECT tb1.id, вот это deleted, В этой же строке найти AND tb1.author_user_id = tb2.user_id и добавить сразу после AND deleted!=1 Далее найти if(!$CheckBlackList){ include ENGINE_DIR.'/classes/wall.php'; $wall = new wall(); Ниже должно быть 3 sql запроса в каждый добавить после SELECT tb1.id, вот это deleted, и в конце всех 3 запросов найти WHERE for_user_id = '{$id}' и добавить сразу после AND deleted != 1 во всех 3 запросах Далее найти if($_POST['type'] == 1) $wall->comm_template('news/news.tpl'); else if($_POST['type'] == 2) $wall->comm_template('wall/one_record.tpl'); else $wall->comm_template('wall/record.tpl'); Найти выше запрос $wall->comm_query("SELECT tb1.id, и вставить сразу после deleted, далее найти в конце WHERE tb1.author_user_id = tb2.user_id и вставить сразу после AND deleted !=1 Далее найти //################### Удаление записи со стены ###################// case "delet": Заменить полностью на //################### Удаление записи со стены ###################// case "delet": NoAjaxQuery(); $rid = intval($_POST['rid']); //Проверка на существование записи и выводим ID владельца записи и кому предназначена запись $row = $db->super_query("SELECT author_user_id, for_user_id, fast_comm_id, add_date, attach FROM `".PREFIX."_wall` WHERE id = '{$rid}'"); if($row['author_user_id'] == $user_id OR $row['for_user_id'] == $user_id){ //Ставим отметку что удалена $db->query("UPDATE `".PREFIX."_wall` SET deleted = '1' WHERE id = '{$rid}'"); //обновляем кол-во записей $db->query("UPDATE `".PREFIX."_users` SET user_wall_num = user_wall_num-1 WHERE user_id = '{$row['for_user_id']}'"); //Чистим кеш mozg_clear_cache_file('user_'.$row['for_user_id'].'/profile_'.$row['for_user_id']); //удаляем из ленты новостей $db->query("UPDATE `".PREFIX."_news` SET deleted = '1' WHERE obj_id = '{$rid}'"); } die(); break; //################### Восстановление записи на стене By Kir KMS ###################// case 'restore': NoAjaxQuery(); $rid = intval($_POST['rid']); $user_id = $user_info['user_id']; //Проверка на существование записи и выводим ID владельца записи и кому предназначена запись $row = $db->super_query("SELECT author_user_id, for_user_id, fast_comm_id, add_date, attach FROM `".PREFIX."_wall` WHERE id = '{$rid}'"); if($row['author_user_id'] == $user_id OR $row['for_user_id'] == $user_id){ //Ставим отметку что восстановлена $db->query("UPDATE `".PREFIX."_wall` SET deleted = '0' WHERE id = '{$rid}'"); //Обновляем кол-во записей $db->query("UPDATE `".PREFIX."_users` SET user_wall_num = user_wall_num+1 WHERE user_id = '{$row['for_user_id']}'"); //Чистим кеш mozg_clear_cache_file('user_'.$row['for_user_id'].'/profile_'.$row['for_user_id']); //Добавляем в ленту новостей $db->query("UPDATE `".PREFIX."_news` SET deleted = '0' WHERE obj_id = '{$rid}'"); echo $id; } die(); break; //################### Удаление коментариев на стене ###################// case "delet_comm": NoAjaxQuery(); $rid = intval($_POST['rid']); $pid = intval($_POST['pid']); //Проверка на существование записи и выводим ID владельца записи и кому предназначена запись $row = $db->super_query("SELECT author_user_id, for_user_id, fast_comm_id, add_date, attach FROM `".PREFIX."_wall` WHERE id = '{$rid}'"); if($row['author_user_id'] == $user_id OR $row['for_user_id'] == $user_id){ //Ставим отметку что удалена $db->query("UPDATE `".PREFIX."_wall` SET deleted = '1' WHERE id = '{$rid}'"); //Чистим кеш mozg_clear_cache_file('user_'.$row['for_user_id'].'/profile_'.$row['for_user_id']); //Обновляем колличество лайков $db->query("UPDATE `".PREFIX."_wall` SET fasts_num = fasts_num-1 WHERE id = '{$pid}'"); } die(); break; //################### Восстановление комменатрия By Kir KMS ###################// case 'restore_comm': NoAjaxQuery(); $rid = intval($_POST['rid']); $pid = intval($_POST['pid']); $user_id = $user_info['user_id']; //Проверка на существование записи и выводим ID владельца записи и кому предназначена запись $row = $db->super_query("SELECT author_user_id, for_user_id, fast_comm_id, add_date, attach FROM `".PREFIX."_wall` WHERE id = '{$rid}'"); if($row['author_user_id'] == $user_id OR $row['for_user_id'] == $user_id){ //Ставим отметку что восстановлена $db->query("UPDATE `".PREFIX."_wall` SET deleted = '0' WHERE id = '{$rid}'"); //Чистим кеш mozg_clear_cache_file('user_'.$row['for_user_id'].'/profile_'.$row['for_user_id']); //Обновляем колличество лайков $db->query("UPDATE `".PREFIX."_wall` SET fasts_num = fasts_num+1 WHERE id = '{$pid}'"); echo $id; } die(); break; Сохранить файл и зайти в файл news.php Найти там вот такой код $type = ''; $sql_where = " Добавить в 2 запроса перед AND subscriptions = 2 вот это AND deleted != 1 Далее найти $sql_comments = $db->super_query("SELECT tb1.id, и вставить после deleted, в этом же запросе в конце найти WHERE tb1.author_user_id = tb2.user_id и вставить после AND deleted!=1 Далее найти //Запрос на вывод из БД tb1.action_type regexp '[[:<:]]({$sql_sort})[[:>:]]' $sql_ = $db->super_query(" в запросе после , link добавить ,deleted Далее а profile.js найти delet: function(rid) { var rec_num = parseInt($('#wall_rec_num').text()) - 1; Заменить полностью delet: function(rid) { var rec_num = parseInt($('#wall_rec_num').text()) - 1; if (!rec_num) rec_num = ''; $('#wall_record_'+rid).hide(); $('#wall_fast_block_'+rid).hide(); $('#post_delete_' + rid).html('<div class="post_deleted">Запись удалена | <a href="/" onClick="wall.restorePost(\''+rid+'\'); return false;">Восстановить</a> | <a href="/" onClick="wall.removeWall(\''+rid+'\'); return false;">скрыть</a></div>'); $('#wall_rec_num').text(rec_num); $.post('/index.php?go=wall&act=delet', { rid: rid }); }, restorePost: function(rid){ var rec_num = parseInt($('#wall_rec_num').text()) + 1; if (!rec_num) rec_num = 1; $('#post_delete_'+rid).html(''); $('#wall_record_'+rid).show(); $('#wall_fast_block_'+rid).show(); $('#wall_rec_num').text(rec_num); $.post('/index.php?go=wall&act=restore', { rid: rid }); }, removeWall: function(rid){ $('#post_delete_'+rid).hide(); var rec_num = parseInt($('#wall_rec_num').text()) + 1; if (!rec_num) Page.Go('');; }, fast_comm_del: function(rid,pid) { $('#wall_fast_comment_'+rid).hide(); $('#comment_delete_'+ rid).html('<div class="removed" style="height:30px;line-height:30px;">Комментарий удалён | <a href="/" onClick="wall.restoreComm(\''+rid+'\',\''+pid+'\'); return false;">Восстановить</a> | <a href="/" onClick="wall.removeComm(\''+rid+'\'); return false;">скрыть</a> <span id="comment_tools_loader5_1_9_1_7" class="no_display"><img src="/images/loading_mini.gif" class="comments_more_loader" style="display: inline-block;"></span></div>'); $.post('/index.php?go=wall&act=delet_comm', { rid: rid, pid: pid }); }, restoreComm: function(rid,pid){ $('#comment_delete_'+rid).html(''); $('#wall_fast_comment_'+rid).show(); $.post('/index.php?go=wall&act=restore_comm', { rid: rid, pid: pid }); }, removeComm: function(rid){ $('#comment_delete_'+rid).hide(); }, до page: Далее в папке wall в дизайне зайти в record.tpl ниже <div class="wall_fast_comment_text">{text}</div> Заменить строку на <div class="wall_fast_date">{date} [not-owner] - <a href="#" onClick="wall.Answer('{rec-id}', '{comm-id}', '{name}'); return false" id="answer_lnk">Ответить</a>[/not-owner][owner]<a href="/" class="size10 fl_r no_display" id="fast_del_{comm-id}" onClick="wall.fast_comm_del('{comm-id}','{rec-id}'); return false">Удалить</a>[/owner]</div> Найти [/comment] и вставить выше <div id="comment_delete_{comm-id}"></div> Найти [/record] и вставить выше <div id="post_delete_{rec-id}"></div> Добавить стили в style.css .post_deleted { font-size: 14px; color: #666; padding: 17px 15px; } .removed { color: #666; padding: 0 30px; margin-left: 60px; margin-bottom: 5px; border-top: 1px solid #f0f0f0; padding-top: 7px; } Вот всё вроде Если я где-то ошибся, установку я обновлю. Всем спасибо за внимание. Буду благодарен если оцените пост лайком. Так-же жду от вас предложений новых модулей. Позже напишу и выложу для сообществ. 2 4 Ссылка на комментарий Поделиться на другие сайты Поделиться
KirKMS Опубликовано 8 декабря, 2020 Автор Жалоба Поделиться Опубликовано 8 декабря, 2020 Тема очищена! Модуль доступен всем. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
STapp.su Опубликовано 10 декабря, 2020 Жалоба Поделиться Опубликовано 10 декабря, 2020 (изменено) В 08.12.2020 в 20:56, KirKMS сказал: Тема очищена! Модуль доступен всем. модуль хороший но мне он вряд-ли подойдёт потому что если переписать то подойдет, но он мне не нужен пока. но модуль нормальный я вот свой пишу кароче называется сохранить запись себе только под лайк можно так сказать как избранный будет идти Изменено 10 декабря, 2020 пользователем Tisend 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Leymelki Опубликовано 10 декабря, 2020 Жалоба Поделиться Опубликовано 10 декабря, 2020 6 часов назад, Tisend сказал: модуль хороший но мне он вряд-ли подойдёт потому что если переписать то подойдет, но он мне не нужен пока. но модуль нормальный я вот свой пишу кароче называется сохранить запись себе только под лайк можно так сказать как избранный будет идти В принципе нормально говоришь потому что если ты говоришь то это нормально 2 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Klaus Опубликовано 10 декабря, 2020 Жалоба Поделиться Опубликовано 10 декабря, 2020 3 часа назад, Leymelki сказал: В принципе нормально говоришь потому что если ты говоришь то это нормально Inтереснo, on поймет прикoл? Ссылка на комментарий Поделиться на другие сайты Поделиться
wooweef Опубликовано 10 декабря, 2020 Жалоба Поделиться Опубликовано 10 декабря, 2020 (изменено) Молодец, здорово получилось 🙂 Изменено 10 декабря, 2020 пользователем wooweef 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
KirKMS Опубликовано 11 декабря, 2020 Автор Жалоба Поделиться Опубликовано 11 декабря, 2020 6 часов назад, wooweef сказал: Молодец, здорово получилось 🙂 Спасибо большое за добрые слова. Рад стараться. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
businesrobot Опубликовано 4 октября, 2021 Жалоба Поделиться Опубликовано 4 октября, 2021 В 08.12.2020 в 10:03, KirKMS сказал: Позже напишу и выложу для сообществ. Написал? Ссылка на комментарий Поделиться на другие сайты Поделиться
NaFanyA Опубликовано 4 октября, 2021 Жалоба Поделиться Опубликовано 4 октября, 2021 2 часа назад, businesrobot сказал: Написал? Не думаю что писал, ибо уже на вии что-то делать это бессмысленно. Ссылка на комментарий Поделиться на другие сайты Поделиться
businesrobot Опубликовано 5 октября, 2021 Жалоба Поделиться Опубликовано 5 октября, 2021 8 часов назад, NaFanyA сказал: Не думаю что писал, ибо уже на вии что-то делать это бессмысленно. Ну это смотря что придумать,я например считаю что можно попробовать сделать что то интересное. Ссылка на комментарий Поделиться на другие сайты Поделиться
NaFanyA Опубликовано 5 октября, 2021 Жалоба Поделиться Опубликовано 5 октября, 2021 2 часа назад, businesrobot сказал: Ну это смотря что придумать,я например считаю что можно попробовать сделать что то интересное. Например? Ссылка на комментарий Поделиться на другие сайты Поделиться
businesrobot Опубликовано 5 октября, 2021 Жалоба Поделиться Опубликовано 5 октября, 2021 6 часов назад, NaFanyA сказал: Например? Например пока оставим в секрете.Написал в лс. Ссылка на комментарий Поделиться на другие сайты Поделиться
NaFanyA Опубликовано 5 октября, 2021 Жалоба Поделиться Опубликовано 5 октября, 2021 2 часа назад, businesrobot сказал: Например пока оставим в секрете.Написал в лс. Понял-принял Ссылка на комментарий Поделиться на другие сайты Поделиться
KirKMS Опубликовано 5 октября, 2021 Автор Жалоба Поделиться Опубликовано 5 октября, 2021 В 05.10.2021 в 02:50, businesrobot сказал: Написал? Нет и не буду наверное. Ссылка на комментарий Поделиться на другие сайты Поделиться
kphp Опубликовано 15 марта, 2022 Жалоба Поделиться Опубликовано 15 марта, 2022 (изменено) В 08.12.2020 в 12:03, KirKMS сказал: Всем привет Решил написать новый модуль для Vii-Engine и выложить его для вас. Модуль позволяет восстанавливать удалённый пост со стены и комментарий. До начала установки, посмотри видео обзор модуля. Вот теперь и сам момент установки Показать контент Зайти в базу данных В таблице vii_wall добавить новое поле deleted int(1) По умолчанию как определенно 0 В таблице vii_news добавить новое поле deleted int(1) По умолчанию как определенно 0 Далее зайти \system\modules\wall.php Найти там строку if($xPrivasyX){ в запрос ниже добавить после SELECT tb1.id, вот это deleted, В этой же строке найти AND tb1.author_user_id = tb2.user_id и добавить сразу после AND deleted!=1 Далее найти if(!$CheckBlackList){ include ENGINE_DIR.'/classes/wall.php'; $wall = new wall(); Ниже должно быть 3 sql запроса в каждый добавить после SELECT tb1.id, вот это deleted, и в конце всех 3 запросов найти WHERE for_user_id = '{$id}' и добавить сразу после AND deleted != 1 во всех 3 запросах Далее найти if($_POST['type'] == 1) $wall->comm_template('news/news.tpl'); else if($_POST['type'] == 2) $wall->comm_template('wall/one_record.tpl'); else $wall->comm_template('wall/record.tpl'); Найти выше запрос $wall->comm_query("SELECT tb1.id, и вставить сразу после deleted, далее найти в конце WHERE tb1.author_user_id = tb2.user_id и вставить сразу после AND deleted !=1 Далее найти //################### Удаление записи со стены ###################// case "delet": Заменить полностью на //################### Удаление записи со стены ###################// case "delet": NoAjaxQuery(); $rid = intval($_POST['rid']); //Проверка на существование записи и выводим ID владельца записи и кому предназначена запись $row = $db->super_query("SELECT author_user_id, for_user_id, fast_comm_id, add_date, attach FROM `".PREFIX."_wall` WHERE id = '{$rid}'"); if($row['author_user_id'] == $user_id OR $row['for_user_id'] == $user_id){ //Ставим отметку что удалена $db->query("UPDATE `".PREFIX."_wall` SET deleted = '1' WHERE id = '{$rid}'"); //обновляем кол-во записей $db->query("UPDATE `".PREFIX."_users` SET user_wall_num = user_wall_num-1 WHERE user_id = '{$row['for_user_id']}'"); //Чистим кеш mozg_clear_cache_file('user_'.$row['for_user_id'].'/profile_'.$row['for_user_id']); //удаляем из ленты новостей $db->query("UPDATE `".PREFIX."_news` SET deleted = '1' WHERE obj_id = '{$rid}'"); } die(); break; //################### Восстановление записи на стене By Kir KMS ###################// case 'restore': NoAjaxQuery(); $rid = intval($_POST['rid']); $user_id = $user_info['user_id']; //Проверка на существование записи и выводим ID владельца записи и кому предназначена запись $row = $db->super_query("SELECT author_user_id, for_user_id, fast_comm_id, add_date, attach FROM `".PREFIX."_wall` WHERE id = '{$rid}'"); if($row['author_user_id'] == $user_id OR $row['for_user_id'] == $user_id){ //Ставим отметку что восстановлена $db->query("UPDATE `".PREFIX."_wall` SET deleted = '0' WHERE id = '{$rid}'"); //Обновляем кол-во записей $db->query("UPDATE `".PREFIX."_users` SET user_wall_num = user_wall_num+1 WHERE user_id = '{$row['for_user_id']}'"); //Чистим кеш mozg_clear_cache_file('user_'.$row['for_user_id'].'/profile_'.$row['for_user_id']); //Добавляем в ленту новостей $db->query("UPDATE `".PREFIX."_news` SET deleted = '0' WHERE obj_id = '{$rid}'"); echo $id; } die(); break; //################### Удаление коментариев на стене ###################// case "delet_comm": NoAjaxQuery(); $rid = intval($_POST['rid']); $pid = intval($_POST['pid']); //Проверка на существование записи и выводим ID владельца записи и кому предназначена запись $row = $db->super_query("SELECT author_user_id, for_user_id, fast_comm_id, add_date, attach FROM `".PREFIX."_wall` WHERE id = '{$rid}'"); if($row['author_user_id'] == $user_id OR $row['for_user_id'] == $user_id){ //Ставим отметку что удалена $db->query("UPDATE `".PREFIX."_wall` SET deleted = '1' WHERE id = '{$rid}'"); //Чистим кеш mozg_clear_cache_file('user_'.$row['for_user_id'].'/profile_'.$row['for_user_id']); //Обновляем колличество лайков $db->query("UPDATE `".PREFIX."_wall` SET fasts_num = fasts_num-1 WHERE id = '{$pid}'"); } die(); break; //################### Восстановление комменатрия By Kir KMS ###################// case 'restore_comm': NoAjaxQuery(); $rid = intval($_POST['rid']); $pid = intval($_POST['pid']); $user_id = $user_info['user_id']; //Проверка на существование записи и выводим ID владельца записи и кому предназначена запись $row = $db->super_query("SELECT author_user_id, for_user_id, fast_comm_id, add_date, attach FROM `".PREFIX."_wall` WHERE id = '{$rid}'"); if($row['author_user_id'] == $user_id OR $row['for_user_id'] == $user_id){ //Ставим отметку что восстановлена $db->query("UPDATE `".PREFIX."_wall` SET deleted = '0' WHERE id = '{$rid}'"); //Чистим кеш mozg_clear_cache_file('user_'.$row['for_user_id'].'/profile_'.$row['for_user_id']); //Обновляем колличество лайков $db->query("UPDATE `".PREFIX."_wall` SET fasts_num = fasts_num+1 WHERE id = '{$pid}'"); echo $id; } die(); break; Сохранить файл и зайти в файл news.php Найти там вот такой код $type = ''; $sql_where = " Добавить в 2 запроса перед AND subscriptions = 2 вот это AND deleted != 1 Далее найти $sql_comments = $db->super_query("SELECT tb1.id, и вставить после deleted, в этом же запросе в конце найти WHERE tb1.author_user_id = tb2.user_id и вставить после AND deleted!=1 Далее найти //Запрос на вывод из БД tb1.action_type regexp '[[:<:]]({$sql_sort})[[:>:]]' $sql_ = $db->super_query(" в запросе после , link добавить ,deleted Далее а profile.js найти delet: function(rid) { var rec_num = parseInt($('#wall_rec_num').text()) - 1; Заменить полностью delet: function(rid) { var rec_num = parseInt($('#wall_rec_num').text()) - 1; if (!rec_num) rec_num = ''; $('#wall_record_'+rid).hide(); $('#wall_fast_block_'+rid).hide(); $('#post_delete_' + rid).html('<div class="post_deleted">Запись удалена | <a href="/" onClick="wall.restorePost(\''+rid+'\'); return false;">Восстановить</a> | <a href="/" onClick="wall.removeWall(\''+rid+'\'); return false;">скрыть</a></div>'); $('#wall_rec_num').text(rec_num); $.post('/index.php?go=wall&act=delet', { rid: rid }); }, restorePost: function(rid){ var rec_num = parseInt($('#wall_rec_num').text()) + 1; if (!rec_num) rec_num = 1; $('#post_delete_'+rid).html(''); $('#wall_record_'+rid).show(); $('#wall_fast_block_'+rid).show(); $('#wall_rec_num').text(rec_num); $.post('/index.php?go=wall&act=restore', { rid: rid }); }, removeWall: function(rid){ $('#post_delete_'+rid).hide(); var rec_num = parseInt($('#wall_rec_num').text()) + 1; if (!rec_num) Page.Go('');; }, fast_comm_del: function(rid,pid) { $('#wall_fast_comment_'+rid).hide(); $('#comment_delete_'+ rid).html('<div class="removed" style="height:30px;line-height:30px;">Комментарий удалён | <a href="/" onClick="wall.restoreComm(\''+rid+'\',\''+pid+'\'); return false;">Восстановить</a> | <a href="/" onClick="wall.removeComm(\''+rid+'\'); return false;">скрыть</a> <span id="comment_tools_loader5_1_9_1_7" class="no_display"><img src="/images/loading_mini.gif" class="comments_more_loader" style="display: inline-block;"></span></div>'); $.post('/index.php?go=wall&act=delet_comm', { rid: rid, pid: pid }); }, restoreComm: function(rid,pid){ $('#comment_delete_'+rid).html(''); $('#wall_fast_comment_'+rid).show(); $.post('/index.php?go=wall&act=restore_comm', { rid: rid, pid: pid }); }, removeComm: function(rid){ $('#comment_delete_'+rid).hide(); }, до page: Далее в папке wall в дизайне зайти в record.tpl ниже <div class="wall_fast_comment_text">{text}</div> Заменить строку на <div class="wall_fast_date">{date} [not-owner] - <a href="#" onClick="wall.Answer('{rec-id}', '{comm-id}', '{name}'); return false" id="answer_lnk">Ответить</a>[/not-owner][owner]<a href="/" class="size10 fl_r no_display" id="fast_del_{comm-id}" onClick="wall.fast_comm_del('{comm-id}','{rec-id}'); return false">Удалить</a>[/owner]</div> Найти [/comment] и вставить выше <div id="comment_delete_{comm-id}"></div> Найти [/record] и вставить выше <div id="post_delete_{rec-id}"></div> Добавить стили в style.css .post_deleted { font-size: 14px; color: #666; padding: 17px 15px; } .removed { color: #666; padding: 0 30px; margin-left: 60px; margin-bottom: 5px; border-top: 1px solid #f0f0f0; padding-top: 7px; } Вот всё вроде Если я где-то ошибся, установку я обновлю. Всем спасибо за внимание. Буду благодарен если оцените пост лайком. Так-же жду от вас предложений новых модулей. Позже напишу и выложу для сообществ. не робит нифига после AND deleted!=1 Изменено 16 марта, 2022 пользователем kphp Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения