Gestion de l'import par l'API + parsage après import
This commit is contained in:
parent
2556448a9c
commit
a6cb378a33
12
automate.php
12
automate.php
|
@ -18,17 +18,11 @@
|
|||
*
|
||||
*/
|
||||
function parseCallLog(){
|
||||
|
||||
/* [1] On recupere le journal d'appel
|
||||
=========================================================*/
|
||||
$file_content = file_get_contents('doc/sample.xml');
|
||||
|
||||
|
||||
/* [2] On cree la requete
|
||||
=========================================================*/
|
||||
$request = new ModuleRequest('call_log/unserialize', array(
|
||||
'file_content' => $file_content,
|
||||
'phone_number' => '01 02 03 04 05'));
|
||||
'phone_number' => '01 02 03 04 05'
|
||||
));
|
||||
$answer = $request->dispatch(); // on l'execute
|
||||
|
||||
/* [3] Si erreur
|
||||
|
@ -50,7 +44,7 @@
|
|||
echo $num.' <> '.$name.'<br>';
|
||||
}
|
||||
|
||||
// parseCallLog();
|
||||
parseCallLog();
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -89,10 +89,9 @@
|
|||
|
||||
"call_log": {
|
||||
"unserialize": {
|
||||
"description": "Recupere le contenu d'un fichier XML de journal d'appel.",
|
||||
"description": "Recupere le contenu d'un fichier XML de journal d'appel s'il a été importé au préalable.",
|
||||
"permissions": [],
|
||||
"parameters": {
|
||||
"file_content": { "description": "Contenu du fichier XML", "type": "text" },
|
||||
"phone_number": { "description": "Numéro de téléphone de l'interrogé.", "type": "phone_number" }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"root": "/src/upload/",
|
||||
"root": "/src/upload",
|
||||
"directories": [
|
||||
"call_log",
|
||||
"spss",
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
function APIClass(b){this.target=b}
|
||||
APIClass.prototype={xhr:[],send:function(b,d,e){b.hasOwnProperty("path")||d({ModuleError:4});for(var a=0;a<this.xhr.length;a++)4==this.xhr[a].readyState&&(this.xhr=this.xhr.slice(0,a-1).concat(this.xhr.slice(a,this.xhr.length-1)));this.xhr.push(null);a=this.xhr.length-1;this.xhr[a]=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHttpRequest");console.log(b);var c=this;this.xhr[a].onreadystatechange=function(){if(4==c.xhr[a].readyState)if(-1<[0,200].indexOf(c.xhr[a].status))try{d(JSON.parse(c.xhr[a].responseText))}catch(b){d({ModuleError:1})}else d({ModuleError:3})};
|
||||
var g=new FormData,f;for(f in b)g.append(f,b[f]);this.xhr[a].open("POST",this.target,!0);null!=e&&this.xhr[a].setRequestHeader("Authorization","Digest "+e);this.xhr[a].send(g)}};
|
||||
function fileUploader(b,d,e){var a=new FormData;a.append("prefix",d);a.append("file",b,b.name);var c=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHttpRequest");c.open("POST","/manager/uploader.php",!0);c.onreadystatechange=function(){4==c.readyState&&-1<[0,200].indexOf(c.status)&&e(c.responseText)};c.send(a)};
|
||||
APIClass.prototype={xhr:[],send:function(b,c,f){b.hasOwnProperty("path")||c({ModuleError:4});for(var a=0;a<this.xhr.length;a++)4==this.xhr[a].readyState&&(this.xhr=this.xhr.slice(0,a-1).concat(this.xhr.slice(a,this.xhr.length-1)));this.xhr.push(null);a=this.xhr.length-1;this.xhr[a]=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHttpRequest");console.log(b);var d=this;this.xhr[a].onreadystatechange=function(){if(4==d.xhr[a].readyState)if(-1<[0,200].indexOf(d.xhr[a].status))try{c(JSON.parse(d.xhr[a].responseText))}catch(b){c({ModuleError:1})}else c({ModuleError:3})};
|
||||
var g=new FormData,e;for(e in b)g.append(e,b[e]);this.xhr[a].open("POST",this.target,!0);null!=f&&this.xhr[a].setRequestHeader("Authorization","Digest "+f);this.xhr[a].send(g)}};
|
||||
|
|
|
@ -91,47 +91,3 @@ APIClass.prototype = {
|
|||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* GESTION DE L'UPLOAD DE FICHIER, DE SON ENREGISTREMENT+FEEDBACK
|
||||
*
|
||||
* @file<File> Fichier en question (input.files[0])
|
||||
* @prefix<String> Préfixe du futur nom du fichier
|
||||
* @handler<Function> Fonction qui s'exécutera quand le fichier sera uploadé
|
||||
*
|
||||
*/
|
||||
function fileUploader(file, prefix, handler){
|
||||
/* [1] IMPORTATION DU FICHIER
|
||||
=======================================*/
|
||||
var postdata = new FormData();
|
||||
postdata.append('prefix', prefix);
|
||||
postdata.append('file', file, file.name);
|
||||
|
||||
var xhr = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHttpRequest');
|
||||
|
||||
xhr.open('POST', '/manager/uploader.php', true);
|
||||
|
||||
xhr.onreadystatechange = function(){
|
||||
if( xhr.readyState == 4 && [0, 200].indexOf(xhr.status) > -1 )
|
||||
handler( xhr.responseText );
|
||||
};
|
||||
|
||||
xhr.send(postdata);
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
namespace manager\module;
|
||||
use \manager\Database;
|
||||
use \manager\sessionManager;
|
||||
use \manager\ResourceDispatcher;
|
||||
use \manager\ManagerError;
|
||||
use \manager\Repo;
|
||||
|
||||
|
@ -11,23 +12,50 @@
|
|||
|
||||
/* DESERIALISATION D'UN JOURNAL D'APPEL
|
||||
*
|
||||
* @content<String> Le contenu du journal d'appel a deserialiser
|
||||
* @number<String> Numéro de téléphone du propriétaire du journal d'appel
|
||||
*
|
||||
* @return sms<Array> Retourne un tableau associatif contenant les sms triees
|
||||
* @return call<Array> Retourne un tableau associatif contenant les appels triees
|
||||
* @return contact<Array> Retourne un tableau associatif contenant les correspondances numero/nom de contact
|
||||
* @return logs<Array> Retourne un tableau associatif les logs
|
||||
* @return directory<Array> Retourne un tableau associatif contenant l'annuaire des contacts
|
||||
*
|
||||
*/
|
||||
public static function unserialize($params){
|
||||
$file_content = null;
|
||||
extract($params);
|
||||
|
||||
// On formatte le numéro de téléphone
|
||||
$phone_number = Database::formatNumber($phone_number);
|
||||
|
||||
/* [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');
|
||||
|
||||
/* (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 );
|
||||
|
||||
/* (4) Si erreur de PARSAGE */
|
||||
if( !is_array($uploadAuth) )
|
||||
return ManagerError::ParsingFailed;
|
||||
|
||||
/* (5) On construit le chemin du fichier */
|
||||
$prefix = 'call_log'; $extension = 'xml';
|
||||
$path = __ROOT__.$uploadAuth['root']."/$prefix/".$_SESSION['username'].".$extension";
|
||||
|
||||
/* [1] On parse/récupère le xml
|
||||
=========================================================*/
|
||||
$xml = simplexml_load_string($file_content);
|
||||
// Si le fichier n'existe pas, on quitte
|
||||
if( !file_exists($path) )
|
||||
return array('ModuleError' => ManagerError::UnreachableResource);
|
||||
|
||||
$file_content = file_get_contents($path);
|
||||
|
||||
if( $file_content === false )
|
||||
return array('ModuleError' => ManagerError::UnreachableResource);
|
||||
|
||||
$xml = simplexml_load_string( $file_content );
|
||||
|
||||
// Si le format XML n'est pas bon, on retourne une erreur
|
||||
if( $xml === false )
|
||||
|
|
|
@ -12,12 +12,13 @@
|
|||
/* EFFECTUE UN UPLOAD D'UN fichier
|
||||
*
|
||||
* @prefix<String> Préfixe (dossier parent) du fichier
|
||||
* @extension<String> Extension du fichier
|
||||
* @file<FILE> Pointeur vers $_FILES['']
|
||||
*
|
||||
* @return error<ManagerError> Retourne l'erreur attestant de l'état de l'upload
|
||||
*
|
||||
*/
|
||||
private static function simpleFile($prefix, $file){
|
||||
private static function simpleFile($prefix, $extension, $file){
|
||||
/* [0] On formatte les entrées
|
||||
=========================================================*/
|
||||
$prefix = htmlspecialchars($prefix);
|
||||
|
@ -30,17 +31,17 @@
|
|||
/* [1] Chargement du fichier de config
|
||||
=========================================================*/
|
||||
/* (1) On récupère le fichier */
|
||||
$uploadAuthResource = new ResourceDispatcher('f/json/upload-auth/conf');
|
||||
$uploadAuth = ResourceDispatcher::getResource('f/json/upload-auth/conf');
|
||||
|
||||
/* (2) Si une erreur pour le fichier de conf */
|
||||
if( $uploadAuthResource->error != ManagerError::Success )
|
||||
return $uploadAuthResource->error;
|
||||
if( $uploadAuth === false )
|
||||
return ManagerError::UnreachableResource;
|
||||
|
||||
/* (3) On récupère la config sous forme de tableau */
|
||||
$uploadAuth = json_decode( $uploadAuthResource->getContent(), true );
|
||||
$uploadAuth = json_decode( $uploadAuth, true );
|
||||
|
||||
/* (4) Si erreur de PARSAGE */
|
||||
if( $uploadAuth == null )
|
||||
if( !is_array($uploadAuth) )
|
||||
return ManagerError::ParsingFailed;
|
||||
|
||||
/* [2] Vérification du préfixe
|
||||
|
@ -59,8 +60,7 @@
|
|||
if ( !file_exists($path) ) mkdir($path, 0775, true);
|
||||
|
||||
/* (3) On construit le nom du fichier */
|
||||
$fileName = $_SESSION['username'].'.'; // Nom
|
||||
$fileName .= pathinfo($file['name'], PATHINFO_EXTENSION); // Extension
|
||||
$fileName = $_SESSION['username'].'.'.$extension;
|
||||
|
||||
/* (4) On se place dans le dossier */
|
||||
chdir( $path );
|
||||
|
@ -91,10 +91,11 @@
|
|||
extract($params);
|
||||
|
||||
return array(
|
||||
'ModuleError' => self::simpleFile('call_log', $file)
|
||||
'ModuleError' => self::simpleFile('call_log', 'xml', $file)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,67 +0,0 @@
|
|||
<?php define('__ROOT__', dirname(dirname(__FILE__)) ); require_once __ROOT__.'/manager/autoloader.php';
|
||||
|
||||
use \manager\ResourceDispatcher;
|
||||
use \manager\ManagerError;
|
||||
|
||||
|
||||
|
||||
/* [0] On formatte les entrées
|
||||
=========================================================*/
|
||||
// Si un des params manque, on retourne une erreur
|
||||
if( !isset($_FILES['file']) || !isset($_POST['prefix']) ){
|
||||
echo ManagerError::ParamError;
|
||||
exit();
|
||||
}
|
||||
|
||||
$prefix = htmlspecialchars($_POST['prefix']);
|
||||
|
||||
// Si $prefix n'est pas au bon format
|
||||
if( !preg_match('/^[a-z0-9_-]+$/', $prefix) ){ echo ManagerError::UploadError; exit(); }
|
||||
|
||||
|
||||
|
||||
/* [1] Chargement du fichier de config
|
||||
=========================================================*/
|
||||
/* (1) On récupère le fichier */
|
||||
$uploadAuthResource = new ResourceDispatcher('f/json/upload-auth/conf');
|
||||
|
||||
/* (2) Si une erreur pour le fichier de conf */
|
||||
if( $uploadAuthResource->error != ManagerError::Success ){ echo $uploadAuthResource->error; exit(); }
|
||||
|
||||
/* (3) On récupère la config sous forme de tableau */
|
||||
$uploadAuth = json_decode( $uploadAuthResource->getContent(), true );
|
||||
|
||||
/* (4) Si erreur de PARSAGE */
|
||||
if( $uploadAuth == null ){ echo ManagerError::ParsingFailed; exit(); }
|
||||
|
||||
/* [2] Vérification du préfixe
|
||||
=========================================================*/
|
||||
// Si le préfixe n'est pas dans la config -> erreur
|
||||
if( !in_array($prefix, $uploadAuth['directories']) ){ echo ManagerError::UploadError; exit(); }
|
||||
|
||||
|
||||
/* [3] Construction du chemin
|
||||
=========================================================*/
|
||||
/* (1) On construit le chemin */
|
||||
$path = __ROOT__.$uploadAuth['root'].'/'.$_POST['prefix'].'/';
|
||||
|
||||
/* (2) On crée le dossier s'il n'existe pas */
|
||||
if ( !file_exists($path) ) mkdir($path, 0777, true);
|
||||
|
||||
/* (3) On construit le nom du fichier */
|
||||
$fileName = $_SESSION['username'].'.'; // Nom
|
||||
$fileName .= pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION); // Extension
|
||||
|
||||
/* (4) On se place dans le dossier */
|
||||
chdir( $path );
|
||||
/* [4] Création du fichier (temporaire->permanent)
|
||||
=========================================================*/
|
||||
if( move_uploaded_file($_FILES['file']['tmp_name'], $path.$fileName) ){
|
||||
// on modifie les droits du fichier
|
||||
chmod($path.$fileName, 0774);
|
||||
echo ManagerError::Success;
|
||||
}
|
||||
else
|
||||
echo ManagerError::UploadError;
|
||||
|
||||
?>
|
File diff suppressed because it is too large
Load Diff
|
@ -30,14 +30,13 @@
|
|||
|
||||
<?php /* [3] ADMIN -> Donnees du Telephone
|
||||
=========================================================*/
|
||||
?><section data-sublink='phone'> <!-- IMPORT -->
|
||||
?><section data-sublink='phone'> <!-- IMPORT ou SAISIE -->
|
||||
|
||||
<h6 class='center'>Importer un journal d'appel</h6><br>
|
||||
<br>
|
||||
<input type='file' value='test'>
|
||||
|
||||
</section>
|
||||
|
||||
<section data-sublink='phone'> <!-- SAISIE -->
|
||||
<h6 class='center'>Saisie manuelle</h6><br>
|
||||
|
||||
<!-- [1] Panel d'ajout/suppression de numero -->
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
var fileInput=document.querySelector("input[type=file]");fileInput.addEventListener("change",function(b){api.send({path:"upload/call_log",file:fileInput.files[0]},function(a){console.log(a)})},!1);
|
|
@ -0,0 +1,17 @@
|
|||
var fileInput = document.querySelector('input[type=file]');
|
||||
|
||||
|
||||
|
||||
fileInput.addEventListener('change', function(e){
|
||||
/* (1) On rédige la requête */
|
||||
var request = {
|
||||
path: 'upload/call_log',
|
||||
file: fileInput.files[0]
|
||||
};
|
||||
|
||||
/* (2) On effectue l'upload (import) */
|
||||
api.send(request, function(response){
|
||||
console.log( response );
|
||||
});
|
||||
|
||||
}, false);
|
Loading…
Reference in New Issue