Files
le-matelot/local/modules/Contest/Controller/Base/GameController.php
2020-01-27 08:56:08 +01:00

238 lines
5.6 KiB
PHP

<?php
/**
* This class has been generated by TheliaStudio
* For more information, see https://github.com/thelia-modules/TheliaStudio
*/
namespace Contest\Controller\Base;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Thelia\Controller\Admin\AbstractCrudController;
use Thelia\Core\Security\Resource\AdminResources;
use Thelia\Tools\URL;
use Contest\Event\GameEvent;
use Contest\Event\GameEvents;
use Contest\Model\GameQuery;
use Thelia\Core\Event\ToggleVisibilityEvent;
/**
* Class GameController
* @package Contest\Controller\Base
* @author TheliaStudio
*/
class GameController extends AbstractCrudController
{
public function __construct()
{
parent::__construct(
"game",
"id",
"order",
AdminResources::MODULE,
GameEvents::CREATE,
GameEvents::UPDATE,
GameEvents::DELETE,
GameEvents::TOGGLE_VISIBILITY,
null,
"Contest"
);
}
/**
* Return the creation form for this object
*/
protected function getCreationForm()
{
return $this->createForm("game.create");
}
/**
* Return the update form for this object
*/
protected function getUpdateForm($data = array())
{
if (!is_array($data)) {
$data = array();
}
return $this->createForm("game.update", "form", $data);
}
/**
* Hydrate the update form for this object, before passing it to the update template
*
* @param mixed $object
*/
protected function hydrateObjectForm($object)
{
$data = array(
"id" => $object->getId(),
"visible" => (bool) $object->getVisible(),
"title" => $object->getTitle(),
"description" => $object->getDescription(),
);
return $this->getUpdateForm($data);
}
/**
* Creates the creation event with the provided form data
*
* @param mixed $formData
* @return \Thelia\Core\Event\ActionEvent
*/
protected function getCreationEvent($formData)
{
$event = new GameEvent();
$event->setVisible($formData["visible"]);
$event->setTitle($formData["title"]);
$event->setDescription($formData["description"]);
return $event;
}
/**
* Creates the update event with the provided form data
*
* @param mixed $formData
* @return \Thelia\Core\Event\ActionEvent
*/
protected function getUpdateEvent($formData)
{
$event = new GameEvent();
$event->setId($formData["id"]);
$event->setVisible($formData["visible"]);
$event->setTitle($formData["title"]);
$event->setDescription($formData["description"]);
return $event;
}
/**
* Creates the delete event with the provided form data
*/
protected function getDeleteEvent()
{
$event = new GameEvent();
$event->setId($this->getRequest()->request->get("game_id"));
return $event;
}
/**
* Return true if the event contains the object, e.g. the action has updated the object in the event.
*
* @param mixed $event
*/
protected function eventContainsObject($event)
{
return null !== $this->getObjectFromEvent($event);
}
/**
* Get the created object from an event.
*
* @param mixed $event
*/
protected function getObjectFromEvent($event)
{
return $event->getGame();
}
/**
* Load an existing object from the database
*/
protected function getExistingObject()
{
return GameQuery::create()
->findPk($this->getRequest()->query->get("game_id"))
;
}
/**
* Returns the object label form the object event (name, title, etc.)
*
* @param mixed $object
*/
protected function getObjectLabel($object)
{
return $object->getTitle();
}
/**
* Returns the object ID from the object
*
* @param mixed $object
*/
protected function getObjectId($object)
{
return $object->getId();
}
/**
* Render the main list template
*
* @param mixed $currentOrder , if any, null otherwise.
*/
protected function renderListTemplate($currentOrder)
{
$this->getParser()
->assign("order", $currentOrder)
;
return $this->render("games");
}
/**
* Render the edition template
*/
protected function renderEditionTemplate()
{
$this->getParserContext()
->set(
"game_id",
$this->getRequest()->query->get("game_id")
)
;
return $this->render("game-edit");
}
/**
* Must return a RedirectResponse instance
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
protected function redirectToEditionTemplate()
{
$id = $this->getRequest()->query->get("game_id");
return new RedirectResponse(
URL::getInstance()->absoluteUrl(
"/admin/module/Contest/game/edit",
[
"game_id" => $id,
]
)
);
}
/**
* Must return a RedirectResponse instance
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
protected function redirectToListTemplate()
{
return new RedirectResponse(
URL::getInstance()->absoluteUrl("/admin/module/Contest/game")
);
}
protected function createToggleVisibilityEvent()
{
return new ToggleVisibilityEvent($this->getRequest()->query->get("game_id"));
}
}