X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=module%2FGalerie%2Fsrc%2FGalerie%2FController%2FIndexController.php;h=d814b1ab582c6d4cf906a691175a96e965fd5bc7;hb=fb4b054068ef44c4031b88313636619641c8ee60;hp=dfe9a5ffa9155c93d3a3b2562c7a0b12d767909f;hpb=709825fa5a4a684beb5f484ba19e976543493f48;p=zf2.biz%2Fgalerie.git diff --git a/module/Galerie/src/Galerie/Controller/IndexController.php b/module/Galerie/src/Galerie/Controller/IndexController.php index dfe9a5f..d814b1a 100644 --- a/module/Galerie/src/Galerie/Controller/IndexController.php +++ b/module/Galerie/src/Galerie/Controller/IndexController.php @@ -2,11 +2,16 @@ namespace Galerie\Controller; + use Zend\Mvc\Controller\AbstractActionController; use Zend\View\Model\ViewModel; use Zend\View\Model\JsonModel; +use Zend\View\Renderer\PhpRenderer; + + use Galerie\Model\Galerie; +use Galerie\Graph\Test as TestPie; class IndexController extends AbstractActionController { @@ -14,6 +19,9 @@ class IndexController extends AbstractActionController private $_galerieTable; private $_galerieInfoTable; private $_galerieForm; + private $_galerieInfoExporter; + private $_galerieMailSender; + private $_viewResolver; private $_translator; @@ -54,13 +62,131 @@ class IndexController extends AbstractActionController return $this->_galerieForm; } + private function _getGalerieInfoExporter() + { + if (!$this->_galerieInfoExporter) { + $sm = $this->getServiceLocator(); + $this->_galerieInfoExporter = $sm->get('Galerie\Export\GalerieWorkbook'); + } + return $this->_galerieInfoExporter; + } + + private function _getGalerieMailSender() + { + if (!$this->_galerieMailSender) { + $sm = $this->getServiceLocator(); + $this->_galerieMailSender = $sm->get('Galerie\Mail\MailSender'); + } + return $this->_galerieMailSender; + } + + private function _getViewResolver() + { + if (!$this->_viewResolver) { + $sm = $this->getServiceLocator(); + $this->_viewResolver = $sm->get('ViewResolver'); + } + return $this->_viewResolver; + } + + public function indexAction() - { - return new ViewModel(array()); + { + return new ViewModel($this->MessageGetter()); } + public function csvAction() { + // Récupération des informations brutes + $modelManager = $this->_getGalerieInfoTable(); + $datas = $modelManager->all(); + + // Mise en forme des résultats + $content = array($modelManager->csvHeader()); + foreach($datas as $d) { + $content[] = $d->csvFormat(); + } + + // Création de la réponse + $response = $this->getResponse(); + $response->setStatusCode(200); + + // Modification des entêtes + $headers = $this->getResponse()->getHeaders(); + $headers->addHeaderLine('Content-Type', 'text/csv; charset=utf-8'); + $headers->addHeaderLine('Content-Disposition', 'attachment; filename="export_galerie.csv"'); + + $response->setContent(implode("\r\n", $content)); + + return $response; + } + + + public function excelAction() { + // Récupération des informations brutes + $modelManager = $this->_getGalerieInfoTable(); + $datas = $modelManager->all(); + + $exporter = $this->_getGalerieInfoExporter(); + $exporter->build($datas); + + // Renvoi d'une réponse vide pour désactiver le rendu de la vue + return $this->getResponse(); + } + + + public function mailAction() + { + //Construction du courriel au format HTML. + $mail_viewmodel = new ViewModel(array( + 'who' => 'World', + )); + $mail_viewmodel->setTemplate('galerie/mail/test'); + $renderer = new PhpRenderer; + $renderer->setResolver($this->_getViewResolver()); + $body_html = $renderer->render($mail_viewmodel); + + // Envoi du courriel + $mailSender = $this->_getGalerieMailSender(); + $mailSender->send( + 's.chazallet@gmail.com', 'Moi',//'sender@example.com', 'Moi', + 's.chazallet@gmail.com', 'Toi',//'to@example.com', 'Toi', + 'Test', 'Hello World 4.', $body_html + ); + + // Création de la réponse + $response = $this->getResponse(); + $response->setStatusCode(200); + $response->setContent('Mail Sent.'); + + return $response; + } + + public function pieAction() + { + // Accès aux modèles + $modelManager = $this->_getGalerieInfoTable(); + $datas = $modelManager->all(); + + // Mise en forme des résultats + $nombres = array(); + $noms = array(); + foreach($datas as $d) { + $nombres[] = $d->nb; + $noms[] = $d->name; + } + + // Construction (et envoi) du diagramme + $pie = new TestPie($nombres, $noms); + + $response = $this->getResponse(); + $response->setStatusCode(200); + $response->setContent(''); + + return $response; + } + public function listAction() { // Récupération de l'objet requête @@ -161,8 +287,20 @@ class IndexController extends AbstractActionController } $this->_getGalerieTable()->save($galerie); - // Redirection - return $this->redirect()->toRoute('galerie'); + $translator = $this->_getTranslator(); + $messenger = $this->flashMessenger(); + $messenger->setNamespace('infos'); + if ($is_new) { + $messenger->addMessage($translator->translate('Galerie_added', 'galerie')); + } else { + $messenger->addMessage($translator->translate('Galerie_updated', 'galerie')); + } + // Redirection à l'ancienne mode + //return $this->redirect()->toRoute('galerie'); + // Redirection vers le contrôleur courant + //return $this->postRedirectGet(); + // Redirection vers la page Galerie/Index + return $this->postRedirectGet('galerie'); } }