From 12557cded4e09175aab9f520c3a27f4a194fa6b8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20CHAZALLET?= Date: Tue, 27 Nov 2012 16:15:23 +0100 Subject: [PATCH] Rajout de l'export CSV --- data/jeu_essai.db | Bin 41984 -> 43008 bytes data/scripts/schema.sql | 7 ++++++ module/Galerie/config/module.config.php | 13 ++++++++++- .../src/Galerie/Controller/IndexController.php | 24 ++++++++++++++++++++ module/Galerie/src/Galerie/Model/GalerieInfo.php | 9 ++++++++ .../Galerie/src/Galerie/Model/GalerieInfoTable.php | 4 ++++ 6 files changed, 56 insertions(+), 1 deletion(-) diff --git a/data/jeu_essai.db b/data/jeu_essai.db index 6954bf80c8dc7064786a7733840a8b67af4f98ff..cdb9c1133a442452ee0815b4c43fb6d3fc150b9a 100644 GIT binary patch delta 525 zcmZoT!PIbpX@az%D+2?A77)XL(nK9&Wmg8>M~bXKAx`GYAPFtz-^|~bKQg~ze$M=e z`7ZMf=F1x!LztN~H8$U1)>trU0V^w0AOln2#zuFh`eq$Xc2QMT#x~iq%+&Jq#GIVe zqRRNpytI5|HiL7Jt7C|(LYSv(xB{|-f@3h30uThd`nWoWz@+ptQ*_|$yu{p81TQ7E zIJqdZpd>RtPe-A&xIVQ=FDR`_t3lpF_8lS&K>h%0^bay}0XmR0 FodDAXsFeT! delta 73 zcmZp;z|?SpX@az%3j+g#CJ@7b;zS)|MHdF$M~bXKAr9snAPG(8-^|~bKQg~ze$M=e T`7ZN~&4L`!%$sjBt1bWlG1d}c diff --git a/data/scripts/schema.sql b/data/scripts/schema.sql index 14a9f1f..ebf8a4b 100644 --- a/data/scripts/schema.sql +++ b/data/scripts/schema.sql @@ -215,3 +215,10 @@ BEGIN END; END; +CREATE VIEW gallery_info AS + SELECT gallery.id, gallery.name, gallery.description, user.firstname || ' ' || user.lastname AS username, count(photo.id) as nb + INNER JOIN user ON gallery.id_user = user.id + LEFT JOIN photo ON gallery.id = photo.id_gallery + GROUP BY user.lastname, user.firstname, gallery.name + ORDER BY user.lastname, user.firstname, gallery.name +; diff --git a/module/Galerie/config/module.config.php b/module/Galerie/config/module.config.php index 5c06d9c..5f96569 100644 --- a/module/Galerie/config/module.config.php +++ b/module/Galerie/config/module.config.php @@ -117,7 +117,18 @@ return array( ), ), 'verb' => 'get', - ),/* + ), + 'csv' => array( + 'type' => 'Literal', + 'options' => array( + 'route' => '/csv', + 'defaults' => array( + 'action' => 'csv', + ), + ), + 'verb' => 'get', + ), +/* 'default' => array( 'type' => 'Segment', 'options' => array( diff --git a/module/Galerie/src/Galerie/Controller/IndexController.php b/module/Galerie/src/Galerie/Controller/IndexController.php index fefa823..1f358f3 100644 --- a/module/Galerie/src/Galerie/Controller/IndexController.php +++ b/module/Galerie/src/Galerie/Controller/IndexController.php @@ -61,6 +61,30 @@ 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); + + $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 listAction() { // Récupération de l'objet requête diff --git a/module/Galerie/src/Galerie/Model/GalerieInfo.php b/module/Galerie/src/Galerie/Model/GalerieInfo.php index 2abe6ca..954ee71 100644 --- a/module/Galerie/src/Galerie/Model/GalerieInfo.php +++ b/module/Galerie/src/Galerie/Model/GalerieInfo.php @@ -27,4 +27,13 @@ class GalerieInfo extends Entity protected $primary_columns = array( ); + public function csvFormat() + { + return $this->id + . ';' . $this->name + . ';' . $this->description + . ';' . $this->username + . ';' . $this->nb; + } + } diff --git a/module/Galerie/src/Galerie/Model/GalerieInfoTable.php b/module/Galerie/src/Galerie/Model/GalerieInfoTable.php index 3d5890b..939f8b3 100644 --- a/module/Galerie/src/Galerie/Model/GalerieInfoTable.php +++ b/module/Galerie/src/Galerie/Model/GalerieInfoTable.php @@ -157,6 +157,10 @@ class GalerieInfoTable implements TableGatewayInterface } + public function csvHeader() + { + return "Id;Nom;Description;Propriétaire;Nombre"; + } } -- 1.7.10.4