136 lines
3.7 KiB
PHP
136 lines
3.7 KiB
PHP
<?php
|
|
|
|
namespace Deblan\Bundle\BlogBundle\Controller;
|
|
|
|
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
|
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
|
|
use Trinity\Bundle\AdminBundle\Controller\BaseAdminController;
|
|
use Trinity\Bundle\UserBundle\Flash\FlashError;
|
|
|
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
|
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
|
|
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
|
|
use Deblan\Bundle\BlogBundle\Configuration\PostCrudConfiguration as CrudConfiguration;
|
|
use Deblan\Bundle\BlogBundle\Model\Post;
|
|
|
|
/**
|
|
* @Route("/admin/post")
|
|
*/
|
|
class PostAdminController extends BaseAdminController
|
|
{
|
|
public function __construct()
|
|
{
|
|
$this->configuration = new CrudConfiguration();
|
|
}
|
|
|
|
/**
|
|
* @Route("/{page}", name="DeblanBlogBundlePostAdmin_index", defaults={"page" = "1"}, requirements={"page" = "\d+"})
|
|
* @Template()
|
|
*/
|
|
public function indexAction($page, Request $request)
|
|
{
|
|
return parent::indexAction($page, $request);
|
|
}
|
|
|
|
/**
|
|
* @Route("/new", name="DeblanBlogBundlePostAdmin_new")
|
|
* @Template()
|
|
*/
|
|
public function newAction(Request $request)
|
|
{
|
|
return parent::newAction($request);
|
|
}
|
|
|
|
/**
|
|
* @Route("/edit/{id}", name="DeblanBlogBundlePostAdmin_edit")
|
|
* @Template()
|
|
* @ParamConverter("object", class="Deblan\Bundle\BlogBundle\Model\Post")
|
|
*/
|
|
public function editAction($object, Request $request)
|
|
{
|
|
if (!$this->canEditPost($object)) {
|
|
return $this->accessDenied();
|
|
}
|
|
|
|
return parent::editAction($object, $request);
|
|
}
|
|
|
|
/**
|
|
* @Route("/remove/{id}/{token}", name="DeblanBlogBundlePostAdmin_remove")
|
|
* @Template()
|
|
* @ParamConverter("object", class="Deblan\Bundle\BlogBundle\Model\Post")
|
|
*/
|
|
public function removeAction($object, $token, Request $request)
|
|
{
|
|
if (!$this->canEditPost($object)) {
|
|
return $this->accessDenied();
|
|
}
|
|
|
|
return parent::removeAction($object, $token, $request);
|
|
}
|
|
|
|
/**
|
|
* @Route("/batch", name="DeblanBlogBundlePostAdmin_batch")
|
|
* @Template()
|
|
* @Method({"POST"})
|
|
*/
|
|
public function batchAction(Request $request)
|
|
{
|
|
return parent::batchAction($request);
|
|
}
|
|
|
|
/**
|
|
* @Route("/filter/clear", name="DeblanBlogBundlePostAdmin_filter_clear")
|
|
* @Template()
|
|
*/
|
|
public function clearFilterAction(Request $request)
|
|
{
|
|
return parent::clearFilterAction($request);
|
|
}
|
|
|
|
/**
|
|
* @Route("/rank", name="DeblanBlogBundlePostAdmin_rank")
|
|
* @Template("TrinityAdminBundle:BaseAdmin:rank.html.twig")
|
|
* @Method({"POST"})
|
|
*/
|
|
public function rankAction(Request $request)
|
|
{
|
|
return parent::rankAction($request);
|
|
}
|
|
|
|
public function postSave($object, $was_new = false)
|
|
{
|
|
if ($object->getUserId() === null) {
|
|
$object->setUser($this->getUser())->save();
|
|
}
|
|
}
|
|
|
|
public function canEditPost(Post $post)
|
|
{
|
|
return $this->getUser()->hasRole('ROLE_SUPER_ADMIN') || $post->getUserId() === $this->getUser()->getId();
|
|
}
|
|
|
|
public function accessDenied()
|
|
{
|
|
$this->getSessionUser()->setFlash('message', new FlashError('Vous n\'avez pas les permissions nécessaires'), false, $this->getConfiguration()->getStorageNamespace());
|
|
|
|
return $this->redirect($this->generateUrl('DeblanBlogBundlePostAdmin_index'));
|
|
}
|
|
|
|
protected function getQuery()
|
|
{
|
|
$query = parent::getQuery();
|
|
|
|
if ($this->getUser()->hasRole('ROLE_SUPER_ADMIN')) {
|
|
return $query;
|
|
}
|
|
|
|
$query->filterByUserId($this->getUser()->getId());
|
|
|
|
return $query;
|
|
}
|
|
}
|