Gestion de l'id unique
This commit is contained in:
parent
2aff126d43
commit
c26cfb9a48
17
automate.php
17
automate.php
|
@ -7,7 +7,6 @@
|
|||
use \manager\ManagerError;
|
||||
use \manager\Repo;
|
||||
use \manager\Database;
|
||||
use \manager\lightdb;
|
||||
|
||||
use \api\client;
|
||||
|
||||
|
@ -70,10 +69,12 @@
|
|||
|
||||
/* [3] Test de la vérification du format de fichier pour l'upload
|
||||
=========================================================*/
|
||||
// <!-- <form action='' method='POST' enctype='multipart/form-data'>
|
||||
// <input type='file' name='file'>
|
||||
// <input type='submit' value='Upload'>
|
||||
// </form>
|
||||
?>
|
||||
<!-- <form action='' method='POST' enctype='multipart/form-data'>
|
||||
<input type='file' name='file'>
|
||||
<input type='submit' value='Upload'>
|
||||
</form> -->
|
||||
<?php
|
||||
// var_dump($_FILES);
|
||||
//
|
||||
// if( isset($_FILES) ){
|
||||
|
@ -85,8 +86,4 @@
|
|||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
// Lancement du téléchargement
|
||||
// $req = new ModuleRequest('download/phone', array('subjects'=>[200]));
|
||||
// $res = $req->download();
|
||||
?>
|
||||
|
|
|
@ -36,8 +36,11 @@
|
|||
/* [2] Création du fichier d'index ou récupération
|
||||
=========================================================*/
|
||||
/* (1) Si le fichier n'existe pas, on le crée */
|
||||
if( !file_exists($this->dir.'index') )
|
||||
file_put_contents($this->dir.'index', json_encode(array()) );
|
||||
if( !file_exists($this->dir.'index') ){
|
||||
$fIndex = new \SplFileObject($this->dir.'index', 'w');
|
||||
$fIndex->fwrite('[]');
|
||||
$fIndex = null;
|
||||
}
|
||||
|
||||
|
||||
/* (2) On récupère le contenu du fichier */
|
||||
|
|
|
@ -29,18 +29,18 @@
|
|||
/* [0] On récupère dans la config le chemin du fichier
|
||||
=========================================================*/
|
||||
/* (1) On récupère le fichier */
|
||||
$uploadAuth = ResourceDispatcher::getResource('f/json/upload-auth/conf');
|
||||
$uploadAuth = ResourceDispatcher::getResource('f/json/upload-auth/conf');
|
||||
|
||||
/* (2) Si une erreur pour le fichier de conf */
|
||||
if( $uploadAuth === false )
|
||||
return ManagerError::UnreachableResource;
|
||||
/* (2) Si une erreur pour le fichier de conf */
|
||||
if( $uploadAuth === false )
|
||||
return ManagerError::UnreachableResource;
|
||||
|
||||
/* (3) On récupère la config sous forme de tableau */
|
||||
$uploadAuth = json_decode( $uploadAuth, true );
|
||||
/* (3) On récupère la config sous forme de tableau */
|
||||
$uploadAuth = json_decode( $uploadAuth, true );
|
||||
|
||||
/* (4) Si erreur de PARSAGE */
|
||||
if( !is_array($uploadAuth) )
|
||||
return ManagerError::ParsingFailed;
|
||||
/* (4) Si erreur de PARSAGE */
|
||||
if( !is_array($uploadAuth) )
|
||||
return ManagerError::ParsingFailed;
|
||||
|
||||
/* (5) On construit le chemin du fichier */
|
||||
$prefix = 'call_log'; $extension = 'xml';
|
||||
|
@ -53,16 +53,16 @@
|
|||
/* (1) On récupère le fichier */
|
||||
$dict = ResourceDispatcher::getResource('f/json/dictionary/upload/phone_storage');
|
||||
|
||||
/* (2) Si une erreur pour le fichier de conf */
|
||||
if( $dict === false )
|
||||
return ManagerError::UnreachableResource;
|
||||
/* (2) Si une erreur pour le fichier de conf */
|
||||
if( $dict === false )
|
||||
return ManagerError::UnreachableResource;
|
||||
|
||||
/* (3) On récupère la config sous forme de tableau */
|
||||
$dict = json_decode( $dict, true );
|
||||
/* (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 ManagerError::ParsingFailed;
|
||||
/* (4) Si erreur de PARSAGE */
|
||||
if( !is_array($dict) )
|
||||
return ManagerError::ParsingFailed;
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -115,20 +115,20 @@
|
|||
|
||||
|
||||
|
||||
public static function phone($params){
|
||||
extract($params);
|
||||
public static function phone($params){
|
||||
extract($params);
|
||||
|
||||
// TODO: Implémenter proprement en utilisant le système de retour + utilisant la liste de sujets dans les paramètres
|
||||
// TODO: Implémenter proprement en utilisant le système de retour + utilisant la liste de sujets dans les paramètres
|
||||
|
||||
$file_name = sessionManager::sha1($subjects[0]);
|
||||
$file_name = sessionManager::sha1($subjects[0]);
|
||||
|
||||
$phone_log = json_decode( file_get_contents(__ROOT__.'/src/upload/phone_storage/'.$file_name.'.json'), true );
|
||||
$phone_log = json_decode( file_get_contents(__ROOT__.'/src/upload/phone_storage/'.$file_name.'.json'), true );
|
||||
|
||||
// Si erreur
|
||||
if( $phone_log == null )
|
||||
return array( 'ModuleError' => ManagerError::ParsingFailed );
|
||||
|
||||
$dict = json_decode( file_get_contents(__ROOT__.'/src/upload/phone_storage/dictionary.json'), true );
|
||||
$dict = json_decode( file_get_contents(__ROOT__.'/src/upload/phone_storage/dictionary.json'), true );
|
||||
|
||||
// Si erreur
|
||||
if( $dict == null )
|
||||
|
@ -137,9 +137,9 @@
|
|||
|
||||
|
||||
|
||||
/* [2] On construit le CSV
|
||||
=========================================================*/
|
||||
$output = array(
|
||||
/* [2] On construit le CSV
|
||||
=========================================================*/
|
||||
$output = array(
|
||||
'logs' => self::parseCSV($phone_log['logs'], $dict['logs']),
|
||||
'contacts' => self::parseCSV($phone_log['contacts'], $dict['contacts']),
|
||||
'relations' => self::parseCSV($phone_log['relations'], null),
|
||||
|
@ -155,20 +155,20 @@
|
|||
$output['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);
|
||||
/* [4] Création de l'archive
|
||||
=========================================================*/
|
||||
$zip = new \ZipArchive();
|
||||
$fname = '/tmp/'.time().'.zip';
|
||||
$zip->open($fname, \ZipArchive::CREATE);
|
||||
|
||||
foreach($output as $name=>$content)
|
||||
$zip->addFromString($name.'.csv', $content);
|
||||
foreach($output as $name=>$content)
|
||||
$zip->addFromString($name.'.csv', $content);
|
||||
|
||||
$zip->close();
|
||||
$zip->close();
|
||||
|
||||
|
||||
/* [5] On lance le téléchargement
|
||||
=========================================================*/
|
||||
/* [5] On lance le téléchargement
|
||||
=========================================================*/
|
||||
return array(
|
||||
'ModuleError' => ManagerError::Success,
|
||||
'headers' => array(
|
||||
|
@ -179,7 +179,7 @@
|
|||
),
|
||||
'body' => file_get_contents($fname)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
use \manager\ManagerError;
|
||||
use \manager\ModuleRequest;
|
||||
use \manager\Repo;
|
||||
use \manager\lightdb;
|
||||
|
||||
class input{
|
||||
|
||||
|
@ -64,137 +65,21 @@
|
|||
extract($params);
|
||||
|
||||
// TODO: Tout enregistrer dans le .json et non dans la bdd
|
||||
/* [1] On crée le sujet de l'enquête
|
||||
/* [1] On récupère l'id unique actuel
|
||||
=========================================================*/
|
||||
/* (1) On rédige la requête */
|
||||
// $create_subject_request = new ModuleRequest('subject/create', array(
|
||||
// 'username' => $subject['username'],
|
||||
// 'firstname' => $subject['firstname'],
|
||||
// 'lastname' => $subject['lastname'],
|
||||
// 'number' => $subject['number']
|
||||
// ));
|
||||
//
|
||||
// /* (2) On exécute la requête (création) */
|
||||
// $create_subject_response = $create_subject_request->dispatch();
|
||||
//
|
||||
// /* (3) Gestion de l'erreur, si erreur de création */
|
||||
// if( $create_subject_response->error != ManagerError::Success )
|
||||
// return array( 'ModuleError' => $create_subject_response->error );
|
||||
//
|
||||
// /* (4) On récupère l'id du sujet */
|
||||
// $subject_id = $create_subject_response->get('id_subject');
|
||||
//
|
||||
//
|
||||
//
|
||||
// /* [2] On extrait les contacts des 2 top 10 (sans duplication)
|
||||
// =========================================================*/
|
||||
// $closest = array();
|
||||
//
|
||||
// foreach($fiches as $i=>$fiche){
|
||||
// /* (1) Si le contact n'est pas déja enregistré, on l'enregistre */
|
||||
// if( !array_key_exists($fiche['contact'], $closest) )
|
||||
// $closest[ $fiche['contact'] ] = array();
|
||||
//
|
||||
// /* (2) Si c'est un lien par CALL, on l'ajoute */
|
||||
// if( $i < 10 )
|
||||
// array_push( $closest[ $fiche['contact'] ], 'CALL' );
|
||||
// /* (3) Si c'est un lien par SMS, on l'ajoute */
|
||||
// else
|
||||
// array_push( $closest[ $fiche['contact'] ], 'SMS' );
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
// /* [3] On crée les contacts les plus proches
|
||||
// =========================================================*/
|
||||
// $closest_id = array();
|
||||
// // Pour chacun des top 10*2 plus proches
|
||||
// foreach($closest as $contact=>$relations){
|
||||
//
|
||||
// /* (1) On rédige la requête de création de sujet*/
|
||||
// $create_contact_request = new ModuleRequest('subject/create', array(
|
||||
// 'username' => $contacts[$contact]['username'],
|
||||
// 'firstname' => $contacts[$contact]['firstname'],
|
||||
// 'lastname' => $contacts[$contact]['lastname'],
|
||||
// 'number' => $contacts[$contact]['number']
|
||||
// ));
|
||||
//
|
||||
// /* (2) On exécute la requête (création) */
|
||||
// $create_contact_response = $create_contact_request->dispatch();
|
||||
//
|
||||
// /* (3) Gestion de l'erreur, si erreur de création */
|
||||
// if( $create_contact_response->error != ManagerError::Success )
|
||||
// return array( 'ModuleError' => $create_contact_response->error );
|
||||
//
|
||||
// /* (4) On récupère l'id du sujet */
|
||||
// $closest_id[$contact] = $create_contact_response->get('id_subject');
|
||||
//
|
||||
//
|
||||
//
|
||||
// /* [4] On crée les relations avec le sujet de l'enquête
|
||||
// =========================================================*/
|
||||
// /* (1) Relation de type _CALL_ */
|
||||
// if( in_array('CALL', $relations) ){
|
||||
// $call_rel_request = new Repo('subject/link', array( $subject_id, $closest_id[$contact], '_CALL_' ));
|
||||
//
|
||||
// $call_rel_response = $call_rel_request->answer();
|
||||
//
|
||||
// // Si erreur de création de relation
|
||||
// if( $call_rel_response === false )
|
||||
// return array( 'ModuleError' => ManagerError::ModuleError );
|
||||
//
|
||||
// }
|
||||
//
|
||||
// /* (2) Relation de type _SMS_ */
|
||||
// if( in_array('SMS', $relations) ){
|
||||
// $sms_rel_request = new Repo('subject/link', array( $subject_id, $closest_id[$contact], '_SMS_' ));
|
||||
//
|
||||
// $sms_rel_response = $sms_rel_request->answer();
|
||||
//
|
||||
// // Si erreur de création de relation
|
||||
// if( $sms_rel_response === false )
|
||||
// return array( 'ModuleError' => ManagerError::ModuleError );
|
||||
//
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
//
|
||||
// /* [4] Ajout des relations de la matrice
|
||||
// =========================================================*/
|
||||
// // Pour chacun des top 10*2 plus proches
|
||||
// foreach($closest as $A=>$rels){
|
||||
//
|
||||
// // Pour chaque relation avec le contact actuel (s'il y en a)
|
||||
// if( isset($matrice[$A]) && is_array($matrice[$A]) ){
|
||||
// foreach($matrice[$A] as $B){
|
||||
// $relation_request = new Repo('subject/link', array( $closest_id[$A], $closest_id[$B], '' ));
|
||||
//
|
||||
// $relation_response = $relation_request->answer();
|
||||
//
|
||||
// // Si erreur de création de relation
|
||||
// if( $relation_response === false )
|
||||
// return array( 'ModuleError' => ManagerError::ModuleError );
|
||||
//
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
$subject_id = '200';
|
||||
$uniqid = file_get_contents( __ROOT__.'/src/upload/phone_storage/uniqid' );
|
||||
|
||||
// on hash son id
|
||||
$subject_id = sessionManager::sha1($subject_id);
|
||||
if( !is_numeric($uniqid) )
|
||||
$uniqid = 0;
|
||||
|
||||
// Décalage à appliquer à tous les ids
|
||||
$offset = $uniqid + 2;
|
||||
|
||||
// Contiendra la valeur de l'id maximum
|
||||
$maxId = $offset;
|
||||
|
||||
|
||||
|
||||
|
||||
/* [5] Enregistrement des données des FICHES dans la base de données
|
||||
=========================================================*/
|
||||
// TODO: Enregistrer les données des fiches dans la base de données
|
||||
|
||||
|
||||
// on enregistre l'id du sujet
|
||||
$subject_id = $offset - 1;
|
||||
|
||||
|
||||
|
||||
|
@ -207,19 +92,23 @@
|
|||
$storage_already = is_string($subject['tmp_id']) && strlen($subject['tmp_id']) == 40;
|
||||
|
||||
/* (2) On définit les 2 fichiers utiles */
|
||||
$filename = array(
|
||||
'old' => __ROOT__.'/tmp/phone_storage_'.$subject['tmp_id'].'.json',
|
||||
'new' => __ROOT__.'/src/upload/phone_storage/'.$subject_id.'.json'
|
||||
);
|
||||
$tmpfile = __ROOT__.'/tmp/phone_storage_'.$subject['tmp_id'].'.json';
|
||||
|
||||
|
||||
/* (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($filename['old']), true );
|
||||
$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'];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -229,7 +118,7 @@
|
|||
/* [1] On enregistre les données du sujet
|
||||
=========================================================*/
|
||||
$file['subject'] = array(
|
||||
'id' => $subject_id,
|
||||
'id' => $offset + $subject_id,
|
||||
'number' => $subject['number'],
|
||||
'name' => self::readableName($subject['username'], $subject['firstname'], $subject['lastname'])
|
||||
);
|
||||
|
@ -243,9 +132,12 @@
|
|||
// On récupère les données du contact associé
|
||||
$contact = $contacts[ $miniData['uid'] ];
|
||||
|
||||
if( $miniData['uid'] > $maxId )
|
||||
$maxId = (int) $miniData['uid'];
|
||||
|
||||
// On remplit les données qui iront dans le fichier pour ce contact
|
||||
array_push($file['contacts'], array(
|
||||
'id' => $miniData['uid'],
|
||||
'id' => $offset + $miniData['uid'],
|
||||
'number' => $contact['number'],
|
||||
'name' => self::readableName($contact['username'], $contact['firstname'], $contact['lastname']),
|
||||
'sexe' => $miniData['sexe'],
|
||||
|
@ -264,9 +156,12 @@
|
|||
// On récupère les données du contact associé
|
||||
$contact = $contacts[ $ficheData['uid'] ];
|
||||
|
||||
if( $ficheData['uid'] > $maxId )
|
||||
$maxId = (int) $ficheData['uid'];
|
||||
|
||||
// On remplit les données qui iront dans le fichier pour ce contact
|
||||
array_push($file['contacts'], array(
|
||||
'id' => $ficheData['uid'],
|
||||
'id' => $offset + $ficheData['uid'],
|
||||
'number' => $contact['number'],
|
||||
'name' => self::readableName($contact['username'], $contact['firstname'], $contact['lastname']),
|
||||
'sexe' => $ficheData['sexe'],
|
||||
|
@ -296,43 +191,23 @@
|
|||
foreach($matrice as $A=>$Bs)
|
||||
foreach($Bs as $B)
|
||||
array_push($file['relations'], array(
|
||||
'idA' => $A,
|
||||
'idB' => $B
|
||||
'idA' => $offset + $A,
|
||||
'idB' => $offset + $B
|
||||
));
|
||||
|
||||
|
||||
|
||||
|
||||
/* (5) On met le contenu en json */
|
||||
$file = json_encode($file);
|
||||
|
||||
/* (6) On l'enregistre dans le fichier */
|
||||
$written = file_put_contents( $filename['old'], $file);
|
||||
|
||||
// Si erreur d'écriture
|
||||
if( $written === false )
|
||||
return array( 'ModuleError' => ManagerError::ModuleError );
|
||||
|
||||
/* (7) On renomme le fichier avec le nouvel identifiant */
|
||||
if( !rename($filename['old'], $filename['new']) )
|
||||
return array( 'ModuleError' => ManagerError::ModuleError ); // si erreur -> erreur
|
||||
|
||||
|
||||
/* [6] Enregistrement des mini-fiches dans un fichier '.json'
|
||||
/* [5] On enregistre tout dans 'lightdb'
|
||||
=========================================================*/
|
||||
$file = array();
|
||||
$db = new lightdb('phone_storage/db');
|
||||
$db->insert( $subject_id, $file );
|
||||
$db->close();
|
||||
|
||||
/* [6] On met à jour le nouvel ID unique
|
||||
=========================================================*/
|
||||
$maxId += $offset;
|
||||
file_put_contents( __ROOT__.'/src/upload/phone_storage/uniqid', $maxId );
|
||||
|
||||
/* (1) On enregistre les données des fiches */
|
||||
foreach($mini as $id=>$miniFiche){
|
||||
$data = array(
|
||||
'number' => $contacts[$id]['number'],
|
||||
'username' => $contacts[$id]['username'],
|
||||
'firstname' => $contacts[$id]['firstname'],
|
||||
'lastname' => $contacts[$id]['lastname'],
|
||||
);
|
||||
}
|
||||
|
||||
>>>>>>> Stashed changes
|
||||
|
||||
/* [9] Gestion du retour
|
||||
=========================================================*/
|
||||
|
|
File diff suppressed because it is too large
Load Diff
0
src/upload/phone_storage/4409d50ba9e7f559c053839f888e88ebc53c951e.json
Normal file → Executable file
0
src/upload/phone_storage/4409d50ba9e7f559c053839f888e88ebc53c951e.json
Normal file → Executable file
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
{"1":{"line":0,"hash":"e87fa66f038f05904a1f4992c45b9f6430cbd78b"},"98":{"line":1,"hash":"3f04358b47ac0d1e9b5abcf1c5736a3231f46ed9"}}
|
|
@ -1 +1 @@
|
|||
0
|
||||
198
|
|
@ -137,8 +137,6 @@
|
|||
</h4>
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
<span data-space></span>
|
||||
|
||||
|
|
Loading…
Reference in New Issue