File controller specialized in download
This commit is contained in:
parent
5bb6c1e24e
commit
4c01f3fd5c
329
application/modules/file/controllers/DlController.php
Normal file
329
application/modules/file/controllers/DlController.php
Normal file
@ -0,0 +1,329 @@
|
||||
<?php
|
||||
class File_DlController extends Zend_Controller_Action
|
||||
{
|
||||
/**
|
||||
* Temps de mis en cache en heure
|
||||
* @var interger
|
||||
*/
|
||||
protected $filetime = 8;
|
||||
|
||||
/**
|
||||
* Répertoire de stockage pour le fichier
|
||||
* @var string
|
||||
*/
|
||||
protected $path = '';
|
||||
|
||||
public function init()
|
||||
{
|
||||
$this->_helper->layout()->disableLayout();
|
||||
$this->_helper->viewRenderer->setNoRender(true);
|
||||
|
||||
$c = Zend_Registry::get('config');
|
||||
$this->path = $c->profil->path->shared.'/temp/files';
|
||||
|
||||
require_once 'Scores/WsScores.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie ou télécharge le fichier sur une url
|
||||
* @param string $url
|
||||
* URL of file to download
|
||||
* @param mixed $filename
|
||||
* Override filename
|
||||
*/
|
||||
protected function get($url, $filename=null)
|
||||
{
|
||||
if (!is_dir($this->path)) mkdir($this->path);
|
||||
|
||||
// --- Recuperation du nom du fichier
|
||||
if ( $filename === null ) {
|
||||
$tableau = explode('/', $url);
|
||||
$file = $tableau[sizeof($tableau) - 1];
|
||||
} else {
|
||||
$file = $filename;
|
||||
}
|
||||
|
||||
// --- Suppression du fichier si le temps de cache est depasse
|
||||
if ( $this->filetime == 0 && file_exists($this->path.'/'.$file) ){
|
||||
unlink($this->path.'/'.$file);
|
||||
} elseif ( file_exists($this->path.'/'.$file) ) {
|
||||
$dateFile = filemtime($this->path.'/'.$file);
|
||||
$now = mktime(date('G'), date('i'), date('s'),
|
||||
date('m') , date('d'), date('Y'));
|
||||
$maxTime = mktime(date('G',$dateFile)+$this->filetime, date('i',$dateFile),
|
||||
date('s',$dateFile), date('m',$dateFile),
|
||||
date('d',$dateFile), date('Y',$dateFile));
|
||||
if ( $maxTime - $now < 0 ) {
|
||||
unlink($this->path.'/'.$file);
|
||||
}
|
||||
}
|
||||
|
||||
// --- Lock file exist
|
||||
if ( file_exists($this->path.'/'.$file.'.lock') ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// --- Recuperation du fichier sur le serveur
|
||||
if ( file_exists($this->path.'/'.$file) ) {
|
||||
return $file;
|
||||
} else {
|
||||
// --- On check si le fichier est present sur l'url
|
||||
try {
|
||||
$client = new Zend_Http_Client($url);
|
||||
$client->setStream();
|
||||
$response = $client->request('GET');
|
||||
if ( $response->isSuccessful() ) {
|
||||
// --- Add a lock
|
||||
file_put_contents($this->path.'/'.$file.'.lock', '');
|
||||
if ( copy($response->getStreamName(), $this->path.'/'.$file) ) {
|
||||
// --- Remove lock
|
||||
unlink($this->path.'/'.$file.'.lock');
|
||||
return $file;
|
||||
}
|
||||
// --- Remove lock
|
||||
unlink($this->path.'/'.$file.'.lock');
|
||||
}
|
||||
return null;
|
||||
} catch (Zend_Http_Client_Exception $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Télécharge la consommation client sous forme de fichier csv et affiche le lien
|
||||
*/
|
||||
public function consommationAction()
|
||||
{
|
||||
$this->filetime = 0;
|
||||
|
||||
$request = $this->getRequest();
|
||||
$start = $request->getParam('start', false);
|
||||
|
||||
//On souhaite récupérer l'url du fichier
|
||||
if ( $start == 1 ) {
|
||||
$mois = $request->getParam('mois');
|
||||
$detail = $request->getParam('detail', 0);
|
||||
$idClient = $request->getParam('idClient', 0);
|
||||
$login = $request->getParam('login', '');
|
||||
$all = $request->getParam('all', 0);
|
||||
|
||||
$date = substr($mois, 3, 4).substr($mois, 0, 2);
|
||||
|
||||
$user = new Scores_Utilisateur();
|
||||
if (empty($login) && (!$user->isAdmin() && !$user->isSuperAdmin()) ) {
|
||||
$login = $user->getLogin();
|
||||
}
|
||||
|
||||
$ws = new WsScores();
|
||||
$reponse = $ws->getLogsClients($date, $detail, $idClient, $login, $all);
|
||||
|
||||
if ( !empty($reponse->result->Url) ) {
|
||||
echo $reponse->result->Url;
|
||||
} else {
|
||||
echo 'FALSE';
|
||||
}
|
||||
} else {
|
||||
$url = $request->getParam('url', '');
|
||||
$file = $this->get($url);
|
||||
|
||||
// --- En attente
|
||||
if ( $file === null ) {
|
||||
echo '';
|
||||
}
|
||||
// --- Fichier en erreur
|
||||
elseif ( $file === false ) {
|
||||
echo 'Erreur lors du chargement du fichier.';
|
||||
}
|
||||
// --- Fichier disponible
|
||||
elseif ( file_exists($this->path.'/'.$file) ) {
|
||||
echo '<u><a title="Télécharger le fichier"'.
|
||||
' target="_blank" href="'.$this->view->url(array('module'=>'file', 'controller'=>'index',
|
||||
'action'=>'consommation', 'q'=>$file), 'default', true).
|
||||
'">Cliquez-ici pour télécharger le fichier.</a></u>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Télécharge les surveillances sous forme de fichier csv et affiche le lien
|
||||
*/
|
||||
public function surveillanceAction()
|
||||
{
|
||||
$this->filetime = 4;
|
||||
|
||||
$request = $this->getRequest();
|
||||
$start = $request->getParam('start', false);
|
||||
|
||||
// --- Get File Url
|
||||
if ( $start == 1) {
|
||||
$source = $request->getParam('source', '');
|
||||
|
||||
$user = new Scores_Utilisateur();
|
||||
$login = $user->getLogin();
|
||||
$idClient = $user->getIdClient();
|
||||
|
||||
$ws = new WsScores();
|
||||
$reponse = $ws->getListeSurveillancesCsv($source, $login, $idClient);
|
||||
if ( !empty($reponse->result->Url) ) {
|
||||
echo $reponse->result->Url;
|
||||
} else {
|
||||
echo 'FALSE';
|
||||
}
|
||||
}
|
||||
// --- Get File
|
||||
else {
|
||||
$url = $request->getParam('url', '');
|
||||
$file = $this->get($url);
|
||||
|
||||
// --- En attente
|
||||
if ( $file === null ) {
|
||||
echo '';
|
||||
}
|
||||
// --- Fichier en erreur
|
||||
elseif ( $file === false ) {
|
||||
echo 'Erreur lors du chargement du fichier.';
|
||||
}
|
||||
// --- Fichier disponible
|
||||
elseif ( file_exists($this->path.'/'.$file) ) {
|
||||
echo '<u><a title="Télécharger le fichier"'.
|
||||
' target="_blank" href="'.$this->view->url(array('module'=>'file', 'controller'=>'index',
|
||||
'action'=>'surveillance', 'q'=>$file), 'default', true).
|
||||
'">Cliquez-ici pour télécharger le fichier.</a></u>';
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Télécharge le portefeuille sous forme de fichier csv et affiche le lien
|
||||
* Enter description here ...
|
||||
*/
|
||||
public function portefeuilleAction()
|
||||
{
|
||||
$this->filetime = 4;
|
||||
|
||||
$request = $this->getRequest();
|
||||
$start = $request->getParam('start', false);
|
||||
|
||||
if ($start==1) {
|
||||
$user = new Scores_Utilisateur();
|
||||
$login = $user->getLogin();
|
||||
$idClient = $user->getIdClient();
|
||||
|
||||
$ws = new WsScores();
|
||||
$reponse = $ws->getPortefeuilleCsv($login, $idClient);
|
||||
|
||||
if ( !empty($reponse->result->Url) ) {
|
||||
echo $reponse->result->Url;
|
||||
} else {
|
||||
echo 'FALSE';
|
||||
}
|
||||
|
||||
} else {
|
||||
$url = $request->getParam('url', '');
|
||||
$file = $this->get($url);
|
||||
|
||||
// --- En attente
|
||||
if ( $file === null ) {
|
||||
echo '';
|
||||
}
|
||||
// --- Fichier en erreur
|
||||
elseif ( $file === false ) {
|
||||
echo 'Erreur lors du chargement du fichier.';
|
||||
}
|
||||
// --- Fichier disponible
|
||||
elseif ( file_exists($this->path.'/'.$file) ) {
|
||||
echo '<u><a title="Télécharger le fichier"'.
|
||||
' target="_blank" href="'.$this->view->url(array('module'=>'file', 'controller'=>'index',
|
||||
'action'=>'portefeuille', 'q'=>$file), 'default', true).
|
||||
'">Cliquez-ici pour télécharger le fichier.</a></u>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Download pdf of bodacc history
|
||||
*/
|
||||
public function histopdfAction()
|
||||
{
|
||||
$request = $this->getRequest();
|
||||
|
||||
$q = $request->getParam('q', '');
|
||||
$host = base64_decode($request->getParam('host', ''));
|
||||
|
||||
//Authenticate info
|
||||
$auth = Zend_Auth::getInstance();
|
||||
$identity = $auth->getIdentity();
|
||||
$authinfo = '/login/'.$identity->username.'/hach/'.$identity->password;
|
||||
$url = $host.$authinfo.'/q/'.$q;
|
||||
|
||||
Zend_Registry::get('firebug')->info($url);
|
||||
|
||||
$file = $this->get($url, uniqid('histo-').'.pdf');
|
||||
|
||||
// --- En attente
|
||||
if ( $file === null ) {
|
||||
echo '';
|
||||
}
|
||||
// --- Fichier en erreur
|
||||
elseif ( $file === false ) {
|
||||
echo 'Erreur lors du chargement du fichier.';
|
||||
}
|
||||
// --- Fichier disponible
|
||||
elseif ( file_exists($this->path.'/'.$file) ) {
|
||||
if (filesize($this->path.'/'.$file) > 0) {
|
||||
echo '<u><a title="Télécharger le fichier" target="_blank" href="'.$this->view->url(array('module'=>'file',
|
||||
'controller'=>'bodacc', 'action'=>'histo', 'q'=>$file), 'default', true).
|
||||
'">Cliquez-ici pour télécharger le fichier.</a></u>';
|
||||
} else {
|
||||
echo "Erreur lors du téléchargement du fichier.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Download bilan pdf file
|
||||
*/
|
||||
public function bilanAction()
|
||||
{
|
||||
$this->filetime = 40;
|
||||
|
||||
$request = $this->getRequest();
|
||||
$siren = $request->getParam('siren');
|
||||
$dateCloture = $request->getParam('dateCloture');
|
||||
$reference = $request->getParam('reference');
|
||||
|
||||
//Récupération du l'URL
|
||||
require_once 'Scores/WsScores.php';
|
||||
$ws = new WsScores();
|
||||
$url = $ws->getPiecesBilan($siren, 'T', $dateCloture, $reference);
|
||||
|
||||
//Téléchargement
|
||||
if( $url !== false) {
|
||||
Zend_Registry::get('firebug')->info($url);
|
||||
$file = $this->get($url);
|
||||
Zend_Registry::get('firebug')->info('File:'.$this->path.'/'.$file);
|
||||
// --- En attente
|
||||
if ( $file === null ) {
|
||||
echo '';
|
||||
}
|
||||
// --- Fichier en erreur
|
||||
elseif ( $file === false ) {
|
||||
echo 'Erreur lors du chargement du fichier.';
|
||||
}
|
||||
// --- Fichier disponible
|
||||
elseif ( file_exists($this->path.'/'.$file) ) {
|
||||
if (filesize($this->path.'/'.$file) > 0) {
|
||||
echo '<br/><u><a title="Télécharger le fichier" target="_blank" href="'.$this->view->url(array(
|
||||
'module'=>'file', 'controller'=>'greffe', 'action'=>'bilan', 'q'=>$file), 'default', true).
|
||||
'">Cliquez-ici pour télécharger le fichier.</a></u>';
|
||||
} else {
|
||||
echo "<br/>Erreur lors du téléchargement du fichier.";
|
||||
}
|
||||
}
|
||||
} else {
|
||||
echo "<br/>Erreur.";
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user