Implémentation de 'input/facebook' + correction 'download/phone'

This commit is contained in:
xdrm-brackets 2016-05-18 16:21:42 +02:00
parent ccae5bf279
commit 13bc65d27a
8 changed files with 49 additions and 53 deletions

View File

@ -87,9 +87,12 @@
// } // }
$req = new ModuleRequest('download/phone', array('subjects'=>array(1, 273))); $req = new ModuleRequest('download/phone', array('subjects'=>array(1, 137, 205)));
var_dump( $req->download() );
$res = $req->download();
if( $res->error != ManagerError::Success )
var_dump( ManagerError::explicit($res->error) );
/* [4] Analyse des performances de `lightdb` /* [4] Analyse des performances de `lightdb`

View File

@ -206,6 +206,19 @@
"fiches": { "description": "Fiches relation sur les plus proches contacts de l'enquête.", "type": "array<array>" }, "fiches": { "description": "Fiches relation sur les plus proches contacts de l'enquête.", "type": "array<array>" },
"matrice": { "description": "Matrice contenant les relations entre les plus proches contacts", "type": "array<array>", "optional": true } "matrice": { "description": "Matrice contenant les relations entre les plus proches contacts", "type": "array<array>", "optional": true }
}
},
"facebook": {
"description": "Enregistre les données d'une enquête facebook.",
"permissions": ["admin"],
"parameters": {
"subject": { "description": "Données sur le sujet de l'enquête.", "type": "array" },
"contacts": { "description": "Données des contacts de l'enquête.", "type": "array<array>" },
"mini": { "description": "Mini fiches relations sur les contacts de l'enquête.", "type": "array<array>" },
"fiches": { "description": "Fiches relation sur les plus proches contacts de l'enquête.", "type": "array<array>" },
"matrice": { "description": "Matrice contenant les relations entre les plus proches contacts", "type": "array<array>", "optional": true }
} }
} }
}, },
@ -243,6 +256,15 @@
"parameters": { "parameters": {
"subjects": { "description": "Identifiants des sujets à intégrer.", "type": "array<id>" } "subjects": { "description": "Identifiants des sujets à intégrer.", "type": "array<id>" }
} }
},
"facebook": {
"description": "Download des données relatives à une enquête facebook.",
"permissions": ["admin"],
"options": { "download": true },
"parameters": {
"subjects": { "description": "Identifiants des sujets à intégrer.", "type": "array<id>" }
}
} }
} }
} }

View File

@ -51,7 +51,7 @@
/* [1] On récupère le dictionnaire des valeurs /* [1] On récupère le dictionnaire des valeurs
=========================================================*/ =========================================================*/
/* (1) On récupère le fichier */ /* (1) On récupère le fichier */
$dict = ResourceDispatcher::getResource('f/json/dictionary/upload/phone_storage'); $dict = ResourceDispatcher::getResource('f/json/dictionary/dy/phone');
/* (2) Si une erreur pour le fichier de conf */ /* (2) Si une erreur pour le fichier de conf */
if( $dict === false ) if( $dict === false )
@ -236,7 +236,7 @@
$phone_storage = json_encode($phone_storage); $phone_storage = json_encode($phone_storage);
/* (3) On l'enregistre dans le fichier */ /* (3) On l'enregistre dans le fichier */
$written = file_put_contents( __ROOT__.'/tmp/phone_storage_'.$subject_id.'.json', $phone_storage); $written = file_put_contents( __ROOT__.'/tmp/phone_'.$subject_id.'.json', $phone_storage);
// Si erreur d'écriture // Si erreur d'écriture
if( $written === false ) if( $written === false )

View File

@ -122,25 +122,25 @@
/* [0] On récupère le dictionnaire /* [0] On récupère le dictionnaire
=========================================================*/ =========================================================*/
$dict = ResourceDispatcher::getResource('f/json/dictionary/upload/phone_storage'); $dict = ResourceDispatcher::getResource('f/json/dictionary/dy/phone');
/* (2) Si une erreur pour le fichier de conf */ /* (2) Si une erreur pour le fichier de conf */
if( $dict === false ) if( $dict === false )
return ManagerError::UnreachableResource; return array( 'ModuleError' => ManagerError::UnreachableResource );
/* (3) On récupère la config sous forme de tableau */ /* (3) On récupère la config sous forme de tableau */
$dict = json_decode( $dict, true ); $dict = json_decode( $dict, true );
/* (4) Si erreur de PARSAGE */ /* (4) Si erreur de PARSAGE */
if( !is_array($dict) ) if( !is_array($dict) )
return ManagerError::ParsingFailed; return array( 'ModuleError' => ManagerError::ParsingFailed );
// Contiendra les données de tous les sujets // Contiendra les données de tous les sujets
$output = array(); $output = array();
// On ouvre une instance de la base de données // On ouvre une instance de la base de données
$db = new lightdb('db', __ROOT__.'/src/upload/phone_storage/'); $db = new lightdb('phone_db', __ROOT__.'/src/dynamic/');
/* [1] On construit les fichiers de chaque sujet /* [1] On construit les fichiers de chaque sujet
@ -184,6 +184,7 @@
foreach($output as $subjectId=>$files){ foreach($output as $subjectId=>$files){
foreach($files as $file=>$content) foreach($files as $file=>$content)
if( strlen($content) > 0 )
$zip->addFromString($subjects[$subjectId].'/'.$file.'.csv', $content); $zip->addFromString($subjects[$subjectId].'/'.$file.'.csv', $content);
} }

View File

@ -297,42 +297,7 @@
/* [1] On enregistre les données du sujet
/* [1] On récupère les logs s'ils existent
=========================================================*/
// Contiendra le contenu du fichier
$file = array( 'logs' => array() );
/* (1) On définit les 2 fichiers utiles */
$tmpfile = __ROOT__.'/tmp/facebook_'.$subject['tmp_id'].'.json';
/* (2) Si on a déja crée le fichier avec le journal d'appel dedans, on le récupère */
$storage_already = is_string($subject['tmp_id']) && strlen($subject['tmp_id']) == 40 && file_exists($tmpfile);
/* (3) Si on a déja crée le fichier, on essaie de récupérer son contenu */
if( $storage_already ){
$file = json_decode( file_get_contents($tmpfile), true );
// erreur
if( $file == null )
return array( 'ModuleRequest' => ManagerError::ParsingFailed );
// On incrémente tous les ids de l'offset
foreach($file['logs'] as $i=>$log){
$file['logs'][$i]['id'] = $offset + $log['id'];
if( $log['id'] > $maxId )
$maxId = (int) $log['id'];
}
}
/* [2] On enregistre les données du sujet
=========================================================*/ =========================================================*/
$file['subject'] = array( $file['subject'] = array(
'id' => $offset + $subject_id, 'id' => $offset + $subject_id,
@ -340,7 +305,7 @@
); );
/* [3] On enregistre les contacts des MINI /* [2] On enregistre les contacts des MINI
=========================================================*/ =========================================================*/
$file['contacts'] = array(); $file['contacts'] = array();
@ -365,7 +330,7 @@
} }
/* [4] On enregistre les contacts des FICHES /* [3] On enregistre les contacts des FICHES
=========================================================*/ =========================================================*/
foreach($fiches as $ficheData){ foreach($fiches as $ficheData){
// On récupère les données du contact associé // On récupère les données du contact associé
@ -398,7 +363,7 @@
} }
/* [5] On enregistre les relations de la MATRICE /* [4] On enregistre les relations de la MATRICE
=========================================================*/ =========================================================*/
$file['relations'] = array(); $file['relations'] = array();
@ -410,13 +375,13 @@
)); ));
/* [6] On enregistre tout dans 'lightdb' /* [5] On enregistre tout dans 'lightdb'
=========================================================*/ =========================================================*/
$db = new lightdb('facebook_db', __ROOT__.'/src/dynamic/'); $db = new lightdb('facebook_db', __ROOT__.'/src/dynamic/');
$db->insert( $subject_id, $file ); $db->insert( $subject_id, $file );
$db->close(); $db->close();
/* [7] On met à jour le nouvel ID unique /* [6] On met à jour le nouvel ID unique
=========================================================*/ =========================================================*/
// $maxId += $offset; // $maxId += $offset;
rewind($funiq); // On revient au début du fichier rewind($funiq); // On revient au début du fichier
@ -424,13 +389,13 @@
flock($funiq, LOCK_UN); // On débloque le verrou flock($funiq, LOCK_UN); // On débloque le verrou
fclose($funiq); fclose($funiq);
/* [8] On supprime le fichier temporaire si existe /* [7] On supprime le fichier temporaire si existe
=========================================================*/ =========================================================*/
if( file_exists($tmpfile) ) if( file_exists($tmpfile) )
unlink($tmpfile); unlink($tmpfile);
/* [9] Gestion du retour /* [8] Gestion du retour
=========================================================*/ =========================================================*/
return array( return array(
'ModuleError' => ManagerError::Success, 'ModuleError' => ManagerError::Success,

View File

@ -1 +1 @@
0 272

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"1":{"line":0,"hash":"423bda798fbf4363a61d945e936c6a11ce9ac057"},"69":{"line":1,"hash":"785691cf7be9f8b18eb1a298db3187bdc86c4884"},"137":{"line":2,"hash":"47fc53f817eded81eecd15b2e042722d52bd8513"},"205":{"line":3,"hash":"0a296a89a05509be912fefda7fdcc2692a244208"}}