_getParam('q',''); $fichier = $fichier . '.csv'; if (!empty($fichier) && file_exists('fichiers/'.$fichier)) { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); list($nomFichier, $extFichier) = explode('.',$fichier); //Distribution du fichier sur la sortie standard switch ($extFichier) { case 'png' : $content_type = 'image/png'; break; case 'gif' : $content_type = 'image/gif'; break; case 'jpeg': case 'jpg' : $content_type = 'image/jpeg'; break; case 'pdf' : $content_type = 'application/pdf'; break; case 'csv' : $content_type = 'application/csv-tab-delimited-table'; break; } $this->getResponse()->setHeader('Content-Type', $content_type); $contentDisposition = 'attachment'; switch ($contentDisposition) { case 'inline': $this->getResponse()->setHeader('Content-Disposition', 'inline'); break; case 'attachment': $this->getResponse()->setHeader('Content-Disposition', "attachment; filename=\"$fichier\""); break; } $data = file_get_contents('assets/fichiers/'.$fichier); $this->getResponse()->setHeader('Content-Length', strlen($data)) ->setHeader('Cache-Control', 'private, max-age=0, must-revalidate') ->setHeader('Pragma', 'public') ->setBody($data); } else { $this->view->assign('message', 'Fichier introuvable !'); } } /** * Donne accès aux données contenues dans une table de base de données */ public function tableAction() { $request = $this->getRequest(); $requetesql = $request->getParam('q',''); $fichierCsv = $requetesql.'.csv'; $fichierSql = $requetesql.'.sql'; //Emplacement des fichiers générés - lien symbolique en PRODUCTION $c = Zend_Registry::get('config'); $path = $c->profil->path->shared . '/files/fichiers/'; if (!is_dir($path)) { mkdir($path); } if (!empty($requetesql)) { if (!file_exists($path . $fichierCsv)) { if (file_exists('assets/sql/'.$fichierSql)) { /** * @var \Doctrine\DBAL\Connection $conn */ $conn = Zend_Registry::get('doctrine'); $sql = file_get_contents('assets/sql/'.$fichierSql); $stmt = $conn->prepare($sql); $stmt->setFetchMode(\PDO::FETCH_ASSOC); $stmt->execute(); if ($stmt->rowCount() > 0) { $csv = Writer::createFromPath($path . $fichierCsv.'.tmp', 'w'); $csv->setNewline("\r\n"); $headers = array_keys($stmt->fetch()); $csv->insertOne($headers); $csv->insertAll($stmt); } rename($path . $fichierCsv.'.tmp', $path . $fichierCsv); } } if (file_exists($path . $fichierCsv)) { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); //Distribution du fichier sur la sortie standard list($nomFichier, $extFichier) = explode('.',$fichierCsv); switch ($extFichier) { case 'png' : $content_type = 'image/png'; break; case 'gif' : $content_type = 'image/gif'; break; case 'jpeg': case 'jpg' : $content_type = 'image/jpeg'; break; case 'pdf' : $content_type = 'application/pdf'; break; case 'csv' : $content_type = 'application/csv-tab-delimited-table'; break; } $this->getResponse()->setHeader('Content-Type', $content_type); $contentDisposition = 'attachment'; switch ($contentDisposition) { case 'inline': $this->getResponse()->setHeader('Content-Disposition', 'inline'); break; case 'attachment': $this->getResponse()->setHeader('Content-Disposition', "attachment; filename=\"$fichierCsv\""); break; } $data = file_get_contents($path . $fichierCsv); $this->getResponse()->setHeader('Content-Length', strlen($data)) ->setHeader('Cache-Control', 'private, max-age=0, must-revalidate') ->setHeader('Pragma', 'public') ->setBody($data); } } else { $this->view->assign('message', 'Paramètres incorrects !'); } } }