Source of file ListInfoController.php
Size: 4,407 Bytes - Last Modified: 2023-11-16T22:56:03+01:00
/home/websites/teicee/packagist/site/phpdoc/conf/../vendor/teicee/list-bundle/src/Controller/ListInfoController.php
| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 | <?phpnamespace TIC\ListBundle\Controller; use TIC\CoreBundle\Base\TICController as BaseController; use TIC\DormBundle\Traits\ControllerCrudable; #use TIC\CoreBundle\Traits\ControllerItemable;#use TIC\CoreBundle\Traits\ControllerViewable;#use Symfony\Bundle\FrameworkBundle\Controller\Controller;use Symfony\Component\Routing\Annotation\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\StreamedResponse; use TIC\ListBundle\Entity\ListInfo; /** * Gestion des listes administrables. * @Route("/list") * @IsGranted("ROLE_ADMIN") */class ListInfoController extends BaseController {use ControllerCrudable; /** * Liste des listes administrables existantes. * @Route("s", name="ticlist_listinfo_list") * @Security("is_granted('ROLE_TICLIST_VIEW')") */public function list(Request $request): Response { return $this->crudList(); } /** * Fiche d'une liste avec gestion de ces éléments. * @Route("/{id}/show", name="ticlist_listinfo_show") * @Security("is_granted('ROLE_TICLIST_VIEW')") */public function show(Request $request, $id): Response { return $this->crudShow($id); } /** * Création d'une liste. * @Route("/create", name="ticlist_listinfo_create") * @Security("is_granted('ROLE_TICLIST_CREATE')") */public function create(Request $request): Response { $item = new ListInfo(2); $form = $this->getForm($item, $request, array( )); if($form->isSubmitted()) { if ($form->isValid()) { $item->generateDefaultItemsData(); return $this->saveItem($item, true, true); } } return $this->renderAction('form', array( 'form' => $form->createView(), 'item' => $item, )); } /** * Édition d'une liste. * @Route("/{id}/update", name="ticlist_listinfo_update") * @Security("is_granted('ROLE_TICLIST_UPDATE') or is_granted('ROLE_TICLIST_MOD') or is_granted('ROLE_TICLIST_ADD') or is_granted('ROLE_TICLIST_DEL')") */public function update(Request $request, $id) { $item = $this->getItem($id); $form = $this->getForm($item, $request, array( 'allow_cfg' => $this->get('security.authorization_checker')->isGranted('ROLE_TICLIST_UPDATE'), 'allow_mod' => $this->get('security.authorization_checker')->isGranted('ROLE_TICLIST_MOD'), 'allow_add' => $this->get('security.authorization_checker')->isGranted('ROLE_TICLIST_ADD'), 'allow_del' => $this->get('security.authorization_checker')->isGranted('ROLE_TICLIST_DEL'), )); if($form->isSubmitted()) { if ($form->isValid()) { $item->generateDefaultItemsData(); return $this->saveItem($item, true, true); } } return $this->renderAction('form', array( 'form' => $form->createView(), 'item' => $item, )); } /** * Suppression d'une liste administrable (avec tous ces éléments). * @Route("/{id}/delete", name="ticlist_listinfo_delete") * @Security("is_granted('ROLE_TICLIST_DELETE')") */public function delete(Request $request, $id) { return $this->crudDelete($request, $id); } /** * Export des données d'une liste administrable (fichier YAML ou JSON). * @Route("/{id}/export/{format}/{disposition}", name="ticlist_listinfo_export", defaults={"format"="yaml","disposition"="attachment"}) * @Security("is_granted('ROLE_TICLIST_EXPORT')") */public function export(Request $request, $id, $format = 'yaml', $disposition = 'attachment') { $list = $this->getItem($id); // détermination des paramètres pour le téléchargement $filename = sprintf('export_list-%s.%s', $list->getRef(), $format); $headers = array( 'Content-Disposition' => $disposition . '; filename="' . $filename . '";', 'Cache-Control' => 'private', ); switch ($format) { case 'json' : $headers['Content-Type'] = 'application/json'; break; case 'yaml' : $headers['Content-Type'] = 'text/yaml'; break; default : die("Invalid format"); } // envoi des données selon le format return new StreamedResponse(function() use ($format, $list) { switch ($format) { case 'json' : echo json_encode($list->export(true)); break; case 'yaml' : echo str_replace(": null\n", ": ~\n", \Symfony\Component\Yaml\Yaml::dump($list->export(true), 5)); break; } }, 200, $headers); } } |