FeedAction::removeFeed PHP Метод

removeFeed() публичный Метод

删除分享操作,用于AJAX
public removeFeed ( ) : json
Результат json 删除分享后的结果信息JSON数据
    public function removeFeed()
    {
        $return = array('status' => 0, 'data' => L('PUBLIC_DELETE_FAIL'), 'msg' => '');
        // 删除失败
        $feed_id = intval($_POST['feed_id']);
        $feed = model('Feed')->getFeedInfo($feed_id);
        // 不存在时
        if (!$feed) {
            $return['msg'] = '不存在';
            exit(json_encode($return));
        }
        // 非作者时
        if ($feed['uid'] != $this->mid) {
            // 没有管理权限不可以删除
            if (!CheckPermission('core_admin', 'feed_del')) {
                $return['msg'] = '没有权限';
                exit(json_encode($return));
            }
            // 是作者时
        } else {
            // 没有前台权限不可以删除
            if (!CheckPermission('core_normal', 'feed_del')) {
                $return['msg'] = '没有前台权限';
                exit(json_encode($return));
            }
        }
        // 执行删除操作
        $return = model('Feed')->doEditFeed($feed_id, 'delFeed', '', $this->mid);
        // 执行应用信息相关删除
        switch ($feed['type']) {
            case 'photo_post':
                $photoList = D('photo')->where('feed_id=' . $feed_id)->findAll();
                foreach ($photoList as $photoInfo) {
                    $photoId = $photoInfo['id'];
                    if (D('Album', 'photo')->deletePhoto($photoId, $photoInfo['userId'])) {
                        model('Credit')->setUserCredit($photoInfo['userId'], 'delete_photo');
                    }
                }
                break;
            case 'vote_post':
                $voteInfo = D('vote')->where('feed_id=' . $feed_id)->find();
                $voteId = $voteInfo['id'];
                if (D('Vote', 'vote')->doDeleteVote($voteId)) {
                    model('Credit')->setUserCredit($voteInfo['uid'], 'delete_vote');
                }
                break;
            case 'event_post':
                $eventInfo = D('event')->where('feed_id=' . $feed_id)->find();
                $eventId = $eventInfo['id'];
                D('Event', 'event')->doDeleteEvent($eventId);
                break;
            case 'blog_post':
                $blogInfo = D('blog')->where('feed_id=' . $feed_id)->find();
                $blogId = $blogInfo['id'];
                $bmap['id'] = $blogId;
                if (D('Blog', 'blog')->doDeleteblog($bmap, $blogInfo['uid'])) {
                    model('Credit')->setUserCredit($blogInfo['uid'], 'delete_blog');
                }
                break;
            case 'weiba_post':
                $postInfo = D('weiba_post')->where('feed_id=' . $feed_id)->find();
                $postId = $postInfo['post_id'];
                $weibaId = $postInfo['weiba_id'];
                if (D('weiba_post')->where('post_id=' . $postId)->setField('is_del', 1)) {
                    $postDetail = D('weiba_post')->where('post_id=' . $postId)->find();
                    D('Log', 'weiba')->writeLog($postDetail['weiba_id'], $this->mid, '删除了帖子“' . $postDetail['title'] . '”', 'posts');
                    D('weiba')->where('weiba_id=' . $weibaId)->setDec('thread_count');
                    model('Credit')->setUserCredit($postInfo['post_uid'], 'delete_topic');
                }
                break;
        }
        // 删除失败或删除成功的消息
        $return['data'] = $return['status'] == 0 ? L('PUBLIC_DELETE_FAIL') : L('PUBLIC_DELETE_SUCCESS');
        // 批注:下面的代码应该挪到FeedModel中
        // 删除话题相关信息
        $return['status'] == 1 && model('FeedTopic')->deleteWeiboJoinTopic($feed_id);
        // 删除频道关联信息
        D('Channel', 'channel')->deleteChannelLink($feed_id);
        // 删除@信息
        model('Atme')->setAppName('Public')->setAppTable('feed')->deleteAtme(null, $feed_id, null);
        // 删除话题信息
        $topics = D('feed_topic_link')->where('feed_id=' . $feed_id)->field('topic_id')->findAll();
        D('feed_topic_link')->where('feed_id=' . $feed)->delete();
        $tpmap['topic_id'] = array('in', getSubByKey($topics, 'topic_id'));
        model('FeedTopic')->where($tpmap)->setDec('count');
        exit(json_encode($return));
    }