View file upload/src/addons/xenMade/ACPE/Admin/Controller/SoftDeleted.php

File size: 4.57Kb
<?php

namespace xenMade\ACPE\Admin\Controller;

use XF\Mvc\ParameterBag;

class SoftDeleted extends \XF\Admin\Controller\AbstractController
{
    public function actionThreads()
    {
        $page = $this->filterPage();
        $perPage = 100;

        $finder = $this->finder('XF:Thread');
        $finder->with('DeletionLog');
        $finder->limitByPage($page, $perPage);
        $finder->where('discussion_state', '=', 'deleted');


        $viewParams = array(
            'threads' => $finder->fetch(),
            'total' => $finder->total(),

            'page' => $page,
            'perPage' => $perPage,
        );

        return $this->view('xenMade:ACPE\SoftDeleted\Threads', 'acpe_soft_deleted_thread_list', $viewParams);
    }

    public function actionPosts()
    {
        $page = $this->filterPage();
        $perPage = 100;

        $finder = $this->finder('XF:Post');
        $finder->with('DeletionLog');
        $finder->with('Thread');
        $finder->with('Thread.Forum');
        $finder->limitByPage($page, $perPage);
        $finder->where('message_state', '=', 'deleted');


        $viewParams = array(
            'posts' => $finder->fetch(),
            'total' => $finder->total(),

            'page' => $page,
            'perPage' => $perPage,
        );

        return $this->view('xenMade:ACPE\SoftDeleted\Posts', 'acpe_soft_deleted_post_list', $viewParams);
    }


    public function actionThreadsdelete(ParameterBag $params)
    {
        $threadIds = $this->filter('thread_ids', 'array-uint');

        if ($threadId = $this->filter('thread_id', 'uint', $params->thread_id))
        {
            $threadIds[] = $threadId;
        }

        if (!$threadIds)
        {
            return $this->redirect($this->buildLink('soft-deleted/threads'));
        }


        if ($this->isPost() && !$this->request->exists('delete_threads'))
        {
            foreach ($threadIds AS $threadId)
            {
                /** @var \XF\Entity\Thread $thread */
                $thread = $this->em()->find('XF:Thread', $threadId);
                $thread->delete(false);
            }

            return $this->redirect($this->buildLink('soft-deleted/threads'));
        }
        else
        {
            $viewParams = [
                'threadIds' => $threadIds,
            ];

            if (count($threadIds) == 1)
            {
                /** @var \XF\Entity\Post $thread */
                $thread = $this->em()->find('XF:Thread', reset($threadIds));
                if (!$thread)
                {
                    throw $this->exception($this->notFound());
                }

                $viewParams['thread'] = $thread;
            }

            return $this->view('xenMade\ACPE:SoftDelete\Thread\Delete', 'acpe_soft_delete_thread_delete', $viewParams);
        }
    }

    public function actionPostsdelete(ParameterBag $params)
    {

        $postIds = $this->filter('post_ids', 'array-uint');

        if ($postId = $this->filter('post_id', 'uint', $params->post_id))
        {
            $postIds[] = $postId;
        }

        if (!$postIds)
        {
            return $this->redirect($this->buildLink('soft-deleted/posts'));
        }

        if ($this->isPost() && !$this->request->exists('delete_posts'))
        {
            foreach ($postIds AS $postId)
            {
                /** @var \XF\Entity\Post $post */
                $post = $this->em()->find('XF:Post', $postId);
                $post->delete(false);
            }

            return $this->redirect($this->buildLink('soft-deleted/posts'));
        }
        else
        {
            $viewParams = [
                'postIds' => $postIds,
            ];

            if (count($postIds) == 1)
            {
                /** @var \XF\Entity\Post $post */
                $post = $this->em()->find('XF:Post', reset($postIds));
                if (!$post)
                {
                    throw $this->exception($this->notFound());
                }

                $viewParams['post'] = $post;
            }

            return $this->view('xenMade\ACPE:SoftDelete\Post\Delete', 'acpe_soft_delete_post_delete', $viewParams);
        }
    }


    /**
     * @return \XF\Repository\Thread
     */
    protected function getThreadRepo()
    {
        return $this->repository('XF:Thread');
    }

    /**
     * @return \XF\Repository\Post
     */
    protected function getPostRepo()
    {
        return $this->repository('XF:Post');
    }
}