#13; Fusion de 'download/phone' et 'download/facebook' en 'download/multiple'
This commit is contained in:
parent
7187cab4f6
commit
4562652a12
|
@ -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();
|
||||
|
||||
|
|
|
@ -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<id>" }
|
||||
}
|
||||
},
|
||||
|
||||
"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": {
|
||||
|
|
|
@ -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'
|
||||
),
|
||||
|
|
|
@ -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<b.length;c++)0<b[c].length&&!isNaN(b[c])&&a.push(b[c]);b=exportDeflater.deflate();"1"==b.phone&&api.send({path:"download/phone",subjects:a},function(a){if(0!=a.ModuleError)return!1;document.location=a.link;Notification.success("OK","Lancement du t\u00e9l\u00e9chargement..")});"1"==b.facebook&&api.send({path:"download/facebook",subjects:a},
|
||||
function(a){if(0!=a.ModuleError)return!1;document.location=a.link;Notification.success("OK","Lancement du t\u00e9l\u00e9chargement..")})},!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<b.length;c++)0<b[c].length&&!isNaN(b[c])&&a.push(b[c]);b=exportDeflater.deflate();"1"!=b.phone&&"1"!=b.facebook||api.send({path:"download/multiple",subjects:a},function(a){if(0!=a.ModuleError)return!1;document.location=a.link;Notification.success("OK","Lancement du t\u00e9l\u00e9chargement..")})},!1);
|
||||
|
|
|
@ -44,11 +44,11 @@ $('#export-form #export-all').addEventListener('click', function(e){
|
|||
// {3} On récupère les types de données que l'on veut //
|
||||
var deflated = exportDeflater.deflate();
|
||||
|
||||
// {4} Si téléchargement de données cellulaires //
|
||||
if( deflated.phone == '1' ){
|
||||
// {4} Si téléchargement de données //
|
||||
if( deflated.phone == '1' || deflated.facebook == '1' ){
|
||||
|
||||
|
||||
api.send({ 'path': 'download/phone', 'subjects': subjects }, function(res){
|
||||
api.send({ 'path': 'download/multiple', 'subjects': subjects }, function(res){
|
||||
|
||||
// Si erreur
|
||||
if( res.ModuleError != 0 )
|
||||
|
@ -61,23 +61,4 @@ $('#export-form #export-all').addEventListener('click', function(e){
|
|||
});
|
||||
|
||||
}
|
||||
|
||||
// {5} Si téléchargement de données Facebook //
|
||||
if( deflated.facebook == '1' ){
|
||||
|
||||
|
||||
api.send({ 'path': 'download/facebook', 'subjects': subjects }, function(res){
|
||||
|
||||
// Si erreur
|
||||
if( res.ModuleError != 0 )
|
||||
return false;
|
||||
|
||||
// Sinon on lance le téléchargement
|
||||
document.location = res.link;
|
||||
|
||||
Notification.success('OK', 'Lancement du téléchargement..');
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}, false);
|
||||
|
|
Loading…
Reference in New Issue