Перейти к содержанию
CMSTOOLS.org - форум поддержки и развития CMS

[Модуль]Восстановление записи и комментариев на стене By Kir KMS


Рекомендуемые сообщения

Всем привет :emoji_1f60c:

Решил написать новый модуль для 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]&nbsp;-&nbsp; <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;
}

 

Вот всё вроде

Если я где-то ошибся, установку я обновлю.

Всем спасибо за внимание.

Буду благодарен если оцените пост лайком.

Так-же жду от вас предложений новых модулей.

Позже напишу и выложу для сообществ.

 

Ссылка на комментарий
Поделиться на другие сайты

В 08.12.2020 в 20:56, KirKMS сказал:

Тема очищена!

Модуль доступен всем.

модуль хороший но мне он вряд-ли подойдёт потому что если переписать то подойдет, но он мне не нужен пока. но модуль нормальный

я вот свой пишу кароче называется сохранить запись себе только под лайк можно так сказать как избранный будет идти 

Изменено пользователем Tisend
Ссылка на комментарий
Поделиться на другие сайты

6 часов назад, Tisend сказал:

модуль хороший но мне он вряд-ли подойдёт потому что если переписать то подойдет, но он мне не нужен пока. но модуль нормальный

я вот свой пишу кароче называется сохранить запись себе только под лайк можно так сказать как избранный будет идти 

В принципе нормально говоришь потому что если ты говоришь то это нормально  

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, Leymelki сказал:

В принципе нормально говоришь потому что если ты говоришь то это нормально  

Inтереснo, on поймет прикoл?

Ссылка на комментарий
Поделиться на другие сайты

6 часов назад, wooweef сказал:

Молодец, здорово получилось 🙂 

Спасибо большое за добрые слова. Рад стараться.:emoji_1f60c:

Ссылка на комментарий
Поделиться на другие сайты

  • 9 месяцев спустя...
8 часов назад, NaFanyA сказал:

Не думаю что писал, ибо уже на вии что-то делать это бессмысленно.

Ну это смотря что придумать,я например считаю что можно попробовать сделать что то интересное.

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, businesrobot сказал:

Ну это смотря что придумать,я например считаю что можно попробовать сделать что то интересное.

Например?

Ссылка на комментарий
Поделиться на другие сайты

  • 5 месяцев спустя...
В 08.12.2020 в 12:03, KirKMS сказал:

Всем привет :emoji_1f60c:

Решил написать новый модуль для 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]&nbsp;-&nbsp; <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

xmJDNO.png

Изменено пользователем kphp
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...