107 lines
3.4 KiB
PHP
107 lines
3.4 KiB
PHP
<?php
|
|
|
|
namespace manager\module;
|
|
use \manager\Database;
|
|
use \manager\ResourceDispatcher;
|
|
use \manager\sessionManager;
|
|
use \manager\ManagerError;
|
|
use \manager\Repo;
|
|
|
|
class upload{
|
|
|
|
/* 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, $extension, $file){
|
|
|
|
// Si on est pas connecté, on retourne une erreur -> impossible via token
|
|
if( !connected() ) return ManagerError::PermissionError;
|
|
|
|
/* [0] On formatte les entrées
|
|
=========================================================*/
|
|
$prefix = htmlspecialchars($prefix);
|
|
|
|
// Si $prefix n'est pas au bon format
|
|
if( !preg_match('/^[a-z0-9_-]+$/', $prefix) )
|
|
return ManagerError::UploadError;
|
|
|
|
|
|
/* [1] Chargement du fichier de config
|
|
=========================================================*/
|
|
/* (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;
|
|
|
|
/* [2] Vérification du préfixe
|
|
=========================================================*/
|
|
// Si le préfixe n'est pas dans la config -> erreur
|
|
if( !in_array($prefix, $uploadAuth['directories']) )
|
|
returnManagerError::UploadError;
|
|
|
|
|
|
/* [3] Construction du chemin
|
|
=========================================================*/
|
|
/* (1) On construit le chemin */
|
|
$path = __ROOT__.$uploadAuth['root'].'/'.$prefix.'/';
|
|
|
|
/* (2) On crée le dossier s'il n'existe pas */
|
|
if ( !file_exists($path) ) mkdir($path, 0775, true);
|
|
|
|
/* (3) On construit le nom du fichier */
|
|
$fileName = $_SESSION['username'].'.'.$extension;
|
|
|
|
/* (4) On se place dans le dossier */
|
|
chdir( $path );
|
|
|
|
/* [4] Création du fichier (temporaire->permanent)
|
|
=========================================================*/
|
|
if( move_uploaded_file($file['tmp_name'], $path.$fileName) ){
|
|
// on modifie les droits du fichier
|
|
chmod($path.$fileName, 0774);
|
|
|
|
return ManagerError::Success;
|
|
|
|
}else
|
|
return ManagerError::UploadError;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* IMPORT D'UN JOURNAL D'APPEL
|
|
*
|
|
* @file<FILE> Pointeur vers $_FILES['']
|
|
*
|
|
*/
|
|
public static function call_log($params){
|
|
extract($params);
|
|
|
|
return array(
|
|
'ModuleError' => self::simpleFile('call_log', 'xml', $file)
|
|
);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
?>
|