Rajout d'un diagramme (galerie/pie pour index)
[zf2.biz/galerie.git] / module / Galerie / src / Galerie / Controller / IndexController.php
index fefa823..d814b1a 100644 (file)
@@ -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,6 +62,34 @@ 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() 
@@ -61,6 +97,96 @@ class IndexController extends AbstractActionController
         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