From 4562652a12e78bd88ed9e84a9b3868c537b00031 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Fri, 20 May 2016 19:43:37 +0200 Subject: [PATCH] #13; Fusion de 'download/phone' et 'download/facebook' en 'download/multiple' --- automate.php | 2 +- config/modules.json | 13 +---- manager/module/download.php | 110 +----------------------------------- view/js/data-min.js | 3 +- view/js/data.js | 25 +------- 5 files changed, 9 insertions(+), 144 deletions(-) diff --git a/automate.php b/automate.php index 9a1ca80..fe8f6b0 100755 --- a/automate.php +++ b/automate.php @@ -93,7 +93,7 @@ /* [4] Test download via AJAX =========================================================*/ // $_SERVER['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest'; - $req = new ModuleRequest('download/phone', array('subjects'=>array(1, 273, 341))); + $req = new ModuleRequest('download/multiple', array('subjects'=>array(1, 273, 341))); $res = $req->download(); diff --git a/config/modules.json b/config/modules.json index 5e1f17a..16bb19e 100755 --- a/config/modules.json +++ b/config/modules.json @@ -249,17 +249,8 @@ "download": { - "phone": { - "description": "Download des données relatives à une enquête téléphonique.", - "permissions": ["admin"], - "options": { "download": true }, - "parameters": { - "subjects": { "description": "Identifiants des sujets à intégrer.", "type": "array" } - } - }, - - "facebook": { - "description": "Download des données relatives à une enquête facebook.", + "multiple": { + "description": "Download des données relatives aux sujets donnés.", "permissions": ["admin"], "options": { "download": true }, "parameters": { diff --git a/manager/module/download.php b/manager/module/download.php index e065a44..6cfd015 100644 --- a/manager/module/download.php +++ b/manager/module/download.php @@ -118,7 +118,7 @@ - public static function phone($params){ + public static function multiple($params){ extract($params); @@ -211,113 +211,7 @@ 'ModuleError' => ManagerError::Success, 'headers' => array( 'Content-Type' => 'application/zip; charset=utf-8', - 'Content-Disposition' => 'attachment; filename=phone_data.zip', - 'Pragma' => 'no-cache', - 'Expires' => '0' - ), - 'body' => file_get_contents($fname) - ); - } - - - - - - - - - public static function facebook($params){ - extract($params); - - - /* [0] On récupère le dictionnaire - =========================================================*/ - $dict = ResourceDispatcher::getResource('f/json/dictionary/dy/facebook'); - - /* (2) Si une erreur pour le fichier de conf */ - if( $dict === false ) - return array( 'ModuleError' => ManagerError::UnreachableResource ); - - /* (3) On récupère la config sous forme de tableau */ - $dict = json_decode( $dict, true ); - - /* (4) Si erreur de PARSAGE */ - if( !is_array($dict) ) - return array( 'ModuleError' => ManagerError::ParsingFailed ); - - - - /* [1] On construit l'arborescence des données - =========================================================*/ - $output = array( - 'common_' => array( - 'contacts' => '', - 'relations' => '', - 'dict' => '' - ) - ); - - - - // On ouvre une instance de la base de données - $db = new lightdb('facebook_db', __ROOT__.'/src/dynamic/'); - - - /* [2] On construit les fichiers de chaque sujet - =========================================================*/ - foreach($subjects as $s=>$subjectId){ - - /* (1) On récupère les données du sujet en cours */ - $subjectData = $db->fetch($subjectId); - - // Si on ne trouve rien, on passe au suivant - if( $subjectData === false ) - continue; - - /* (2) On complète les relations */ - $output['common_']['relations'] .= self::parseCSV($subjectData['relations'], array(), strlen($output['common_']['relations']) == 0 ); // On affiche les colonnes pour la première fois uniquement - - /* (3) On ajoute les contacts à la liste */ - $output['common_']['contacts'] .= self::parseCSV($subjectData['contacts'], $dict['contacts'], strlen($output['common_']['contacts']) == 0 ); // On affiche les colonnes pour la première fois uniquement - - } - - // On ferme l'instance de la base de données - $db->close(); - - - /* [3] On ajoute le dictionnaire - =========================================================*/ - $output['common_']['dict'] .= "\"sheet\";\"field\";\"key\";\"value\"\r\n"; - foreach($dict as $ds=>$dataset) - foreach($dataset as $f=>$field) - foreach($field as $key=>$value) - $output['common_']['dict'] .= "\"$ds\";\"$f\";\"$key\";\"$value\"\r\n"; - - - /* [4] Création de l'archive - =========================================================*/ - $zip = new \ZipArchive(); - $fname = '/tmp/'.time().'.zip'; - $zip->open($fname, \ZipArchive::CREATE); - - foreach($output as $folder=>$files){ - - foreach($files as $file=>$content) - if( strlen($content) > 0 ) - $zip->addFromString($folder.$file.'.csv', $content); - } - - $zip->close(); - - - /* [5] On lance le téléchargement - =========================================================*/ - return array( - 'ModuleError' => ManagerError::Success, - 'headers' => array( - 'Content-Type' => 'application/zip; charset=utf-8', - 'Content-Disposition' => 'attachment; filename=facebook_data.zip', + 'Content-Disposition' => 'attachment; filename=export'.date('_d_m_Y_', time()).'.zip', 'Pragma' => 'no-cache', 'Expires' => '0' ), diff --git a/view/js/data-min.js b/view/js/data-min.js index 6b11cac..3e50e33 100644 --- a/view/js/data-min.js +++ b/view/js/data-min.js @@ -1,3 +1,2 @@ var subjectList=$("#subject-list"),subjectAdd=$("#add-subject"),exportDeflater=new FormDeflater(document.getElementById("export-form"),["input"],["data-name"]);subjectAdd.addEventListener("click",function(a){a=document.createElement("input");a.type="number";a.dataset.name="subjects";a.placeholder="Sujet";a.style="width: 5em; display: block;";subjectList.appendChild(a)},!1); -$("#export-form #export-all").addEventListener("click",function(a){var b=(new FormDeflater(subjectList,["input"],["data-name"])).deflate().subjects;a=[];for(var c=0;c