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');
|
||||
|
||||
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();
|
||||
$req = new ModuleRequest('download/phone', array('subjects'=>array(1)));
|
||||
$req->download();
|
||||
|
||||
?>
|
||||
|
|
|
@ -109,8 +109,6 @@
|
|||
$this->line++;
|
||||
$written = $this->driver->fwrite( $json_data.PHP_EOL );
|
||||
|
||||
var_dump($written);
|
||||
|
||||
// Si erreur d'écriture, on retourne FALSE
|
||||
if( is_null($written) )
|
||||
return false;
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
use \manager\ModuleRequest;
|
||||
use \manager\ManagerError;
|
||||
use \manager\Repo;
|
||||
use \manager\lightdb;
|
||||
|
||||
class download{
|
||||
|
||||
|
@ -118,41 +119,53 @@
|
|||
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
|
||||
|
||||
$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
|
||||
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 )
|
||||
// Si erreur de lecture
|
||||
if( is_null($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('phone_storage/db');
|
||||
|
||||
|
||||
/* [2] On construit le CSV
|
||||
/* [1] On construit les fichiers de chaque sujet
|
||||
=========================================================*/
|
||||
$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),
|
||||
'dict' => ''
|
||||
);
|
||||
foreach($subjects as $s=>$subjectId){
|
||||
|
||||
/* [3] On construit le fichier du dictionnaire
|
||||
=========================================================*/
|
||||
$output['dict'] .= "\"sheet\";\"field\";\"key\";\"value\"\r\n";
|
||||
foreach($dict as $ds=>$dataset)
|
||||
foreach($dataset as $f=>$field)
|
||||
foreach($field as $key=>$value)
|
||||
$output['dict'] .= "\"$ds\";\"$f\";\"$key\";\"$value\"\r\n";
|
||||
/* (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(
|
||||
'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
|
||||
|
@ -161,8 +174,11 @@
|
|||
$fname = '/tmp/'.time().'.zip';
|
||||
$zip->open($fname, \ZipArchive::CREATE);
|
||||
|
||||
foreach($output as $name=>$content)
|
||||
$zip->addFromString($name.'.csv', $content);
|
||||
foreach($output as $subjectId=>$files){
|
||||
|
||||
foreach($files as $file=>$content)
|
||||
$zip->addFromString($subjects[$subjectId].'/'.$file.'.csv', $content);
|
||||
}
|
||||
|
||||
$zip->close();
|
||||
|
||||
|
|
|
@ -76,11 +76,12 @@
|
|||
// Décalage à appliquer à tous les ids
|
||||
$offset = intval($uniqid) + 2;
|
||||
|
||||
// Contiendra la valeur de l'id maximum
|
||||
$maxId = $offset;
|
||||
|
||||
// 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
|
||||
foreach($file['logs'] as $i=>$log){
|
||||
$file['logs'][$i]['id'] = $offset + $log['id'];
|
||||
|
||||
if( $log['id'] > $maxId )
|
||||
$maxId = (int) $log['id'];
|
||||
}
|
||||
|
@ -206,9 +208,9 @@
|
|||
|
||||
/* [7] On met à jour le nouvel ID unique
|
||||
=========================================================*/
|
||||
$maxId += $offset;
|
||||
// $maxId += $offset;
|
||||
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
|
||||
fclose($funiq);
|
||||
|
||||
|
@ -223,7 +225,6 @@
|
|||
return array(
|
||||
'ModuleError' => ManagerError::Success,
|
||||
'subject_id' => $subject_id
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue