namespace Galerie\Controller;
+
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\View\Model\JsonModel;
+use Zend\View\Renderer\PhpRenderer;
+
+use Zend\Session\Container;
+
use Galerie\Model\Galerie;
+use Galerie\Graph\Test as TestPie;
class IndexController extends AbstractActionController
{
private $_galerieTable;
private $_galerieInfoTable;
private $_galerieForm;
+ private $_galerieInfoExporter;
+ private $_galerieMailSender;
+ private $_viewResolver;
+ private $_galeriePairTable;
private $_translator;
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;
+ }
+
+ private function _getGaleriePairTable()
+ {
+ if (!$this->_galeriePairTable) {
+ $sm = $this->getServiceLocator();
+ $this->_galeriePairTable = $sm->get('Galerie\Model\GaleriePairTable');
+ }
+ return $this->_galeriePairTable;
+ }
+
+
public function indexAction()
- {
- return new ViewModel(array(
- 'messages' => $this->flashMessenger()->getMessages(),
- ));
+ {
+ $session = new Container('test');
+ if ($session->offsetExists('last')) {
+ $last = $email = $session->offsetGet('last');
+ } else {
+ $last = null;
+ }
+ return new ViewModel(array('last' => $last));
}
+ 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
} else {
// Nous sommes en modification
$form->get('submit')->setValue('Modifier');
- // Il faut préremplir le formulaire avec les données actuelles
- $form->bind($galerie);
// Garder cette information pour la vue
$is_new = false;
}
+
+ // Il faut préremplir le formulaire avec les données actuelles
+ $form->bind($galerie);
+
// Récupération de l'objet requête
$request = $this->getRequest();
if ($request->isPost()) {
$this->_getGalerieTable()->save($galerie);
$translator = $this->_getTranslator();
+ $messenger = $this->flashMessenger();
+ $messenger->setNamespace('infos');
if ($is_new) {
- $this->flashMessenger()->addMessage($translator->translate('Galerie_added', 'galerie'));
+ $messenger->addMessage($translator->translate('Galerie_added', 'galerie'));
} else {
- $this->flashMessenger()->addMessage($translator->translate('Galerie_updated', 'galerie'));
+ $messenger->addMessage($translator->translate('Galerie_updated', 'galerie'));
}
// Redirection à l'ancienne mode
//return $this->redirect()->toRoute('galerie');
{
$id = $this->params()->fromRoute('id', null);
$galerie = $this->_getGalerieInfoTable()->any($id);
+
+ $pairs = $this->_getGaleriePairTable()->all();
+ unset($pairs[$id]);
+
+ $session = new Container('test');
+ $session->offsetSet('last', $id);
+
return new ViewModel(array(
'id' => $id,
'galerie' => $galerie,
+ 'pairs' => $pairs,
));
}