Jump to content

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


Recommended Posts

Всем привет :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;
}

 

Вот всё вроде

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

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

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

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

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

 

  • Like 1
  • Upvote 3
Link to comment
Share on other sites

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

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

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

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

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

Edited by Tisend
  • Upvote 1
Link to comment
Share on other sites

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

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

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

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

  • Like 2
  • Upvote 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...