minmod
This commit is contained in:
parent
38b05ae634
commit
3ecfae2831
23
automate.php
23
automate.php
|
@ -87,26 +87,7 @@
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
$db = new lightdb('phone_storage/db');
|
$req = new ModuleRequest('download/phone', array('subjects'=>array(1)));
|
||||||
|
$req->download();
|
||||||
for( $i = 0 ; $i < 10 ; $i ++)
|
|
||||||
$db->insert("i$i", 'test'.$i);
|
|
||||||
|
|
||||||
var_dump( $db->fetch('i0') );
|
|
||||||
var_dump( $db->fetch('i1') );
|
|
||||||
var_dump( $db->fetch('i2') );
|
|
||||||
var_dump( $db->fetch('i3') );
|
|
||||||
|
|
||||||
$last = $db->index();
|
|
||||||
$db->delete('i2');
|
|
||||||
$db->delete('i3');
|
|
||||||
$db->delete('i6');
|
|
||||||
|
|
||||||
foreach($last as $i=>$d)
|
|
||||||
echo $i.' -> '.$d['line'].' -> '.( isset($db->index()[$i]) ? $db->index()[$i]['line'] : '.').'<br>';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$db->close();
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -109,8 +109,6 @@
|
||||||
$this->line++;
|
$this->line++;
|
||||||
$written = $this->driver->fwrite( $json_data.PHP_EOL );
|
$written = $this->driver->fwrite( $json_data.PHP_EOL );
|
||||||
|
|
||||||
var_dump($written);
|
|
||||||
|
|
||||||
// Si erreur d'écriture, on retourne FALSE
|
// Si erreur d'écriture, on retourne FALSE
|
||||||
if( is_null($written) )
|
if( is_null($written) )
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
use \manager\ModuleRequest;
|
use \manager\ModuleRequest;
|
||||||
use \manager\ManagerError;
|
use \manager\ManagerError;
|
||||||
use \manager\Repo;
|
use \manager\Repo;
|
||||||
|
use \manager\lightdb;
|
||||||
|
|
||||||
class download{
|
class download{
|
||||||
|
|
||||||
|
@ -118,41 +119,53 @@
|
||||||
public static function phone($params){
|
public static function phone($params){
|
||||||
extract($params);
|
extract($params);
|
||||||
|
|
||||||
// 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]);
|
/* [0] On récupère le dictionnaire
|
||||||
|
=========================================================*/
|
||||||
|
$dict = json_decode( file_get_contents( __ROOT__.'/src/upload/phone_storage/dictionary.json'), true );
|
||||||
|
|
||||||
$phone_log = json_decode( file_get_contents(__ROOT__.'/src/upload/phone_storage/'.$file_name.'.json'), true );
|
// Si erreur de lecture
|
||||||
|
if( is_null($dict) )
|
||||||
// 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 );
|
|
||||||
|
|
||||||
// Si erreur
|
|
||||||
if( $dict == null )
|
|
||||||
return array( 'ModuleError' => ManagerError::ParsingFailed );
|
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('phone_storage/db');
|
||||||
|
|
||||||
|
|
||||||
/* [2] On construit le CSV
|
/* [1] On construit les fichiers de chaque sujet
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$output = array(
|
foreach($subjects as $s=>$subjectId){
|
||||||
'logs' => self::parseCSV($phone_log['logs'], $dict['logs']),
|
|
||||||
'contacts' => self::parseCSV($phone_log['contacts'], $dict['contacts']),
|
|
||||||
'relations' => self::parseCSV($phone_log['relations'], null),
|
|
||||||
'dict' => ''
|
|
||||||
);
|
|
||||||
|
|
||||||
/* [3] On construit le fichier du dictionnaire
|
/* (1) On récupère les données du sujet en cours */
|
||||||
=========================================================*/
|
$subjectData = $db->fetch($subjectId);
|
||||||
$output['dict'] .= "\"sheet\";\"field\";\"key\";\"value\"\r\n";
|
|
||||||
foreach($dict as $ds=>$dataset)
|
// Si on ne trouve rien, on passe au suivant
|
||||||
foreach($dataset as $f=>$field)
|
if( $subjectData === false )
|
||||||
foreach($field as $key=>$value)
|
continue;
|
||||||
$output['dict'] .= "\"$ds\";\"$f\";\"$key\";\"$value\"\r\n";
|
|
||||||
|
/* (2) On construit le CSV */
|
||||||
|
$output[$s] = array(
|
||||||
|
'logs' => self::parseCSV($subjectData['logs'], $dict['logs']),
|
||||||
|
'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
|
/* [4] Création de l'archive
|
||||||
|
@ -161,8 +174,11 @@
|
||||||
$fname = '/tmp/'.time().'.zip';
|
$fname = '/tmp/'.time().'.zip';
|
||||||
$zip->open($fname, \ZipArchive::CREATE);
|
$zip->open($fname, \ZipArchive::CREATE);
|
||||||
|
|
||||||
foreach($output as $name=>$content)
|
foreach($output as $subjectId=>$files){
|
||||||
$zip->addFromString($name.'.csv', $content);
|
|
||||||
|
foreach($files as $file=>$content)
|
||||||
|
$zip->addFromString($subjects[$subjectId].'/'.$file.'.csv', $content);
|
||||||
|
}
|
||||||
|
|
||||||
$zip->close();
|
$zip->close();
|
||||||
|
|
||||||
|
|
|
@ -76,11 +76,12 @@
|
||||||
// Décalage à appliquer à tous les ids
|
// Décalage à appliquer à tous les ids
|
||||||
$offset = intval($uniqid) + 2;
|
$offset = intval($uniqid) + 2;
|
||||||
|
|
||||||
// Contiendra la valeur de l'id maximum
|
|
||||||
$maxId = $offset;
|
|
||||||
|
|
||||||
// on enregistre l'id du sujet
|
// on enregistre l'id du sujet
|
||||||
$subject_id = $offset - 1;
|
$subject_id = intval($uniqid) + 1;
|
||||||
|
|
||||||
|
// Contiendra la valeur de l'id maximum
|
||||||
|
$maxId = 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -108,6 +109,7 @@
|
||||||
// On incrémente tous les ids de l'offset
|
// On incrémente tous les ids de l'offset
|
||||||
foreach($file['logs'] as $i=>$log){
|
foreach($file['logs'] as $i=>$log){
|
||||||
$file['logs'][$i]['id'] = $offset + $log['id'];
|
$file['logs'][$i]['id'] = $offset + $log['id'];
|
||||||
|
|
||||||
if( $log['id'] > $maxId )
|
if( $log['id'] > $maxId )
|
||||||
$maxId = (int) $log['id'];
|
$maxId = (int) $log['id'];
|
||||||
}
|
}
|
||||||
|
@ -206,9 +208,9 @@
|
||||||
|
|
||||||
/* [7] On met à jour le nouvel ID unique
|
/* [7] 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
|
||||||
fwrite($funiq, $maxId); // On écrit la nouvelle valeur (forcément plus grande)
|
fwrite($funiq, $offset+$maxId); // On écrit la nouvelle valeur (forcément plus grande)
|
||||||
flock($funiq, LOCK_UN); // On débloque le verrou
|
flock($funiq, LOCK_UN); // On débloque le verrou
|
||||||
fclose($funiq);
|
fclose($funiq);
|
||||||
|
|
||||||
|
@ -223,7 +225,6 @@
|
||||||
return array(
|
return array(
|
||||||
'ModuleError' => ManagerError::Success,
|
'ModuleError' => ManagerError::Success,
|
||||||
'subject_id' => $subject_id
|
'subject_id' => $subject_id
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue