133 lines
4.2 KiB
PHP
133 lines
4.2 KiB
PHP
<?php
|
|
class RefController extends Zend_Controller_Action
|
|
{
|
|
protected $appConfig;
|
|
|
|
public function preDispatch()
|
|
{
|
|
//Vérification connexion utilisateur
|
|
$auth = Zend_Auth::getInstance();
|
|
if (!$auth->hasIdentity()){
|
|
$this->_redirect('/user/login');
|
|
} else {
|
|
$bootstrap = $this->getInvokeArg('bootstrap');
|
|
$this->appConfig = $bootstrap->getOptions();
|
|
}
|
|
}
|
|
|
|
public function indexAction ()
|
|
{
|
|
//Ne fait rien...
|
|
}
|
|
|
|
/**
|
|
* Donne accès au fichier
|
|
*/
|
|
public function fichierAction ()
|
|
{
|
|
//Lecture du nom du fichier
|
|
$fichier = $this->_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('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 ()
|
|
{
|
|
$requetesql = $this->_getParam('q','');
|
|
$fichierCsv = $requetesql.'.csv';
|
|
$fichierSql = $requetesql.'.sql';
|
|
|
|
//Emplacement des fichiers générés - lien symbolique en PRODUCTION
|
|
$path = DOC_WEB_LOCAL . 'fichiers/';
|
|
if (!is_dir($path)) { mkdir($path); }
|
|
if (!empty($requetesql))
|
|
{
|
|
if (!file_exists($path . $fichierCsv))
|
|
{
|
|
if (file_exists('sql/'.$fichierSql))
|
|
{
|
|
//Connexion mysql
|
|
$sql = file_get_contents('sql/'.$fichierSql);
|
|
require_once 'framework/common/mysql.php';
|
|
$db = new WDB();
|
|
$db->exportCSV($sql, $path . $fichierCsv, ',', "\n");
|
|
}
|
|
}
|
|
|
|
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 !');
|
|
}
|
|
}
|
|
|
|
}
|