Portage es méthodes des managers : 'input/facebook' et 'download/facebook'
This commit is contained in:
parent
13bc65d27a
commit
48e92e894e
|
@ -87,7 +87,7 @@
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
$req = new ModuleRequest('download/phone', array('subjects'=>array(1, 137, 205)));
|
$req = new ModuleRequest('download/facebook', array('subjects'=>array(1, 137)));
|
||||||
|
|
||||||
$res = $req->download();
|
$res = $req->download();
|
||||||
|
|
||||||
|
|
|
@ -452,6 +452,7 @@
|
||||||
}else
|
}else
|
||||||
// Si la verification est fausse, on retourne faux
|
// Si la verification est fausse, on retourne faux
|
||||||
if( !Database::check($paramsdata['type'], $params[$name]) ) return false;
|
if( !Database::check($paramsdata['type'], $params[$name]) ) return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* [3] Gestion du retour, si tout s'est bien passe
|
/* [3] Gestion du retour, si tout s'est bien passe
|
||||||
|
|
|
@ -205,6 +205,101 @@
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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 );
|
||||||
|
|
||||||
|
|
||||||
|
// Contiendra les données de tous les sujets
|
||||||
|
$output = array();
|
||||||
|
|
||||||
|
// On ouvre une instance de la base de données
|
||||||
|
$db = new lightdb('facebook_db', __ROOT__.'/src/dynamic/');
|
||||||
|
|
||||||
|
|
||||||
|
/* [1] 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 construit le CSV */
|
||||||
|
$output[$s] = array(
|
||||||
|
'contacts' => self::parseCSV($subjectData['contacts'], $dict['contacts']),
|
||||||
|
'relations' => self::parseCSV($subjectData['relations'], array()),
|
||||||
|
'dict' => ''
|
||||||
|
);
|
||||||
|
|
||||||
|
/* (3) On construit le fichier du dictionnaire */
|
||||||
|
$output[$s]['dict'] .= "\"sheet\";\"field\";\"key\";\"value\"\r\n";
|
||||||
|
foreach($dict as $ds=>$dataset)
|
||||||
|
foreach($dataset as $f=>$field)
|
||||||
|
foreach($field as $key=>$value)
|
||||||
|
$output[$s]['dict'] .= "\"$ds\";\"$f\";\"$key\";\"$value\"\r\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// On ferme l'instance de la base de données
|
||||||
|
$db->close();
|
||||||
|
|
||||||
|
|
||||||
|
/* [4] Création de l'archive
|
||||||
|
=========================================================*/
|
||||||
|
$zip = new \ZipArchive();
|
||||||
|
$fname = '/tmp/'.time().'.zip';
|
||||||
|
$zip->open($fname, \ZipArchive::CREATE);
|
||||||
|
|
||||||
|
foreach($output as $subjectId=>$files){
|
||||||
|
|
||||||
|
foreach($files as $file=>$content)
|
||||||
|
if( strlen($content) > 0 )
|
||||||
|
$zip->addFromString($subjects[$subjectId].'/'.$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',
|
||||||
|
'Expires' => '0'
|
||||||
|
),
|
||||||
|
'body' => file_get_contents($fname)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -389,13 +389,8 @@
|
||||||
flock($funiq, LOCK_UN); // On débloque le verrou
|
flock($funiq, LOCK_UN); // On débloque le verrou
|
||||||
fclose($funiq);
|
fclose($funiq);
|
||||||
|
|
||||||
/* [7] On supprime le fichier temporaire si existe
|
|
||||||
=========================================================*/
|
|
||||||
if( file_exists($tmpfile) )
|
|
||||||
unlink($tmpfile);
|
|
||||||
|
|
||||||
|
/* [7] Gestion du retour
|
||||||
/* [8] Gestion du retour
|
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
return array(
|
return array(
|
||||||
'ModuleError' => ManagerError::Success,
|
'ModuleError' => ManagerError::Success,
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
0
|
204
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
||||||
|
{"1":{"line":0,"hash":"b4dcd4020e3843bda4df499b6af29099c0dd5f47"},"69":{"line":1,"hash":"9efeeb367af4ef8c789164647c4f5c0035878d87"},"137":{"line":2,"hash":"3b48331c50740299531e82effd3126d2ffc12e6a"}}
|
Loading…
Reference in New Issue