#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
|
/* [4] Test download via AJAX
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
// $_SERVER['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest';
|
// $_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();
|
$res = $req->download();
|
||||||
|
|
||||||
|
|
|
@ -249,17 +249,8 @@
|
||||||
|
|
||||||
"download": {
|
"download": {
|
||||||
|
|
||||||
"phone": {
|
"multiple": {
|
||||||
"description": "Download des données relatives à une enquête téléphonique.",
|
"description": "Download des données relatives aux sujets donnés.",
|
||||||
"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.",
|
|
||||||
"permissions": ["admin"],
|
"permissions": ["admin"],
|
||||||
"options": { "download": true },
|
"options": { "download": true },
|
||||||
"parameters": {
|
"parameters": {
|
||||||
|
|
|
@ -118,7 +118,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static function phone($params){
|
public static function multiple($params){
|
||||||
extract($params);
|
extract($params);
|
||||||
|
|
||||||
|
|
||||||
|
@ -211,113 +211,7 @@
|
||||||
'ModuleError' => ManagerError::Success,
|
'ModuleError' => ManagerError::Success,
|
||||||
'headers' => array(
|
'headers' => array(
|
||||||
'Content-Type' => 'application/zip; charset=utf-8',
|
'Content-Type' => 'application/zip; charset=utf-8',
|
||||||
'Content-Disposition' => 'attachment; filename=phone_data.zip',
|
'Content-Disposition' => 'attachment; filename=export'.date('_d_m_Y_', time()).'.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',
|
|
||||||
'Pragma' => 'no-cache',
|
'Pragma' => 'no-cache',
|
||||||
'Expires' => '0'
|
'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);
|
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},
|
$("#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);
|
||||||
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 //
|
// {3} On récupère les types de données que l'on veut //
|
||||||
var deflated = exportDeflater.deflate();
|
var deflated = exportDeflater.deflate();
|
||||||
|
|
||||||
// {4} Si téléchargement de données cellulaires //
|
// {4} Si téléchargement de données //
|
||||||
if( deflated.phone == '1' ){
|
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
|
// Si erreur
|
||||||
if( res.ModuleError != 0 )
|
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);
|
}, false);
|
||||||
|
|
Loading…
Reference in New Issue