68 lines
2.5 KiB
PHP
68 lines
2.5 KiB
PHP
<?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;
|
|
|
|
?>
|