<?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');
}
}