$val){
$_[$key]=htmlentities($val);
}
foreach($_GET as $key=>$val){
$_[$key]=htmlentities($val);
}
if(isset($_['action'])){
$event['action']=$_['action'];
switch($_['action']){
case 'addUser':
if(file_exists('../'.DCFOLDER.USERFILE)){
if(isset($user) && $user->rank=='admin'){
if($_['tpmToken']==$_SESSION['tpmToken']){
if(isset($_['login']) && isset($_['password'])){
//Vérifie que l'utilisateur n'existe pas déja
if(!existLogin($_['login'])){
$addedUser = array();
$addedUser['login'] = $_['login'];
$addedUser['avatar'] = (isset($_['avatar'])?$_['avatar']:'');
$addedUser['password'] = $_['password'];
$addedUser['rank'] = $_['rank'];
$addedUser['mail'] = $_['mail'];
$addedUser['notifMail'] = "off";
$addedUser['lang'] = DC_LANG;
addUser($addedUser);
$event['user']=$user->login;
$event['result'] = true;
$event['addedUser'] = $_['login'];
addEvent($event);
}
$error = '?openUserPanel=true';
}else{
$error = '?error='.tt('Champs obligatoires non remplis');
}
}
header('location: ../index.php'.$error);
}
}else{
$addedUser = array();
$addedUser['login'] = $_['login'];
$addedUser['avatar'] = (isset($_['avatar'])?$_['avatar']:'');
$addedUser['password'] = $_['password'];
$addedUser['rank'] = $_['rank'];
$addedUser['mail'] = $_['mail'];
$addedUser['notifMail'] = "off";
$addedUser['lang'] = DC_LANG;
addUser($addedUser);
addConfig('ROOT',(isset($_['root'])?$_['root']:''));
$event['user']=$_['login'];
$event['result'] = true;
$event['addedUser'] = $_['login'];
$event['action']= 'install';
addEvent($event);
header('location: ./action.php?action=login&login='.$_['login'].'&password='.$_['password']);
}
break;
case 'openFile':
$file = stripslashes(utf8_decode(html_entity_decode($_['file'])));
$file ='../'.UPLOAD_FOLDER.str_replace(array('../'.UPLOAD_FOLDER,UPLOAD_FOLDER),'',$file);
if(
(READ_FOR_ANONYMOUS || (isset($user) && ($user->rank=='admin' || $user->rank=='user')))
|| (isPublished($_['file']))
){
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.str_replace(' ','-',basename($file)));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
//header('Content-Length: ' . $file);
ob_clean();
flush();
readfile($file);
exit();
}else{
exit('Fichier privé, accès interdit');
}
break;
case 'publishFile':
if(isset($user) && ($user->rank=='admin' || $user->rank=='user')){
$file = stripslashes(utf8_decode(html_entity_decode("../".$_['file'])));
addPublish($file);
$javascript['succes'] = true;
$javascript['status'] = 'Fichier rendu public';
}else{
$javascript['status'] = tt('Vous n\'avez pas les droits pour publier ce fichier');
}
break;
case 'unpublishFile':
if(isset($user) && ($user->rank=='admin' || $user->rank=='user')){
$file = stripslashes(utf8_decode(html_entity_decode("../".$_['file'])));
deletePublish($file);
$javascript['succes'] = true;
$javascript['status'] = 'Fichier rendu privé';
}else{
$javascript['status'] = tt('Vous n\'avez pas les droits pour publier ce fichier');
}
break;
case 'getFiles':
if(READ_FOR_ANONYMOUS || (isset($user) && ($user->rank=='admin' || $user->rank=='user'))){
if(isset($_['folder'])){
$_['folder'] = html_entity_decode($_['folder']);
$requiredFolder = $_['folder'].'/';
}else{
$requiredFolder = '../'.UPLOAD_FOLDER;
}
if($requiredFolder =='//CURRENT/'){
$requiredFolder =$_SESSION['currentFolder'];
}else{
$_SESSION['currentFolder'] = $requiredFolder;
}
$scan = scanFolder($requiredFolder,(isset($_['keywords'])?$_['keywords']:null));
if(count($scan)==0){
$javascript['status'] = tt('aucun fichier');
}else{
$javascript['succes'] = true;
$javascript['currentFolder'] = $requiredFolder;
$javascript['status'] = $scan;
}
}
break;
case 'saveSettings':
if(isset($user) && ($user->rank=='admin' || ($user->rank=='user' && $user->login==$_['user']) )){
if($_['tpmToken']==$_SESSION['tpmToken']){
if(file_exists('../'.DCFOLDER.USERFILE)){
$_['notifMail'] = (isset($_['notifMail'])?'true':'false');
$values = array(
'password'=>$_['password'],
'mail'=>$_['mail'],
'avatar'=>$_['avatar'],
'notifMail'=>$_['notifMail'],
'lang'=>$_['lang']
);
updateUser($_['user'], $values);
$javascript['succes'] = true;
header('location: ../index.php');
}
}
}
break;
case 'zipFile':
if(isset($user) && $user->rank=='admin'){
require_once('zip.class.php');
$tempDir = '../'.DCFOLDER.'temp/';
if(!file_exists($tempDir)) mkdir($tempDir);
$filesTemp = scandir($tempDir);
foreach($filesTemp as $file){
if(is_file($tempDir.$file))unlink($tempDir.$file);
}
$file = stripslashes(utf8_decode(html_entity_decode("../".$_['file'])));
$zipName = $tempDir.'.dropFile-'.date('d-m-Y h\hi\ms').'.zip';
$archive = new PclZip($zipName);
$v_list = $archive->create($file, PCLZIP_OPT_REMOVE_PATH,'..\\'.DCFOLDER);
if ($v_list != 0){
$javascript['succes'] = true;
$javascript['status'] = str_replace('../','','./php/action.php?action=openFile&file='.$zipName);
}else{
$javascript['status'] = tt('Impossible de zipper le fichier, nom incorrect ou fichier inexistant :').$archive->errorInfo(true);
}
}else{
$javascript['status'] = tt('Vous n\'avez pas les droits pour zipper ce fichier');
}
break;
case 'moveFile':
if(isset($user)){
$file = stripslashes(utf8_decode(html_entity_decode($_['fileUrl'])));
$fileName = stripslashes(utf8_decode(html_entity_decode($_['fileName'])));
$folder = utf8_decode(html_entity_decode($_['folder']));
if(is_dir($folder)){
if(is_file('../'.$file)){
if(@rename('../'.$file,$folder.'/'.$fileName)){
if(isPublished('../'.$file)){
deletePublish('../'.$file);
addPublish($folder.'/'.$fileName);
}
$javascript['succes'] = true;
$javascript['status'] = tt('Fichier correctement deplace');
}else{
$javascript['status'] = tt('Impossible de deplacer le fichier');
}
}else{
$javascript['status'] = tt('Impossible de deplacer le fichier, fichier incorrect ou inexistant');
}
}else{
$javascript['status'] = tt('Impossible de déplacer le fichier, dossier incorrect ou inexistant');
}
}else{
$javascript['status'] = tt('Vous n\'avez pas les droits pour deplacer ce fichier');
}
break;
case 'deleteFiles':
if(isset($user) && $user->rank=='admin'){
$file = stripslashes(utf8_decode(html_entity_decode($_['file'])));
if(is_file('../'.$file)){
if(unlink('../'.$file)){
$event['user']=$user->login;
$event['result'] = true;
$event['file'] = $_['file'];
$event['type'] = 'file';
deletePublish('../'.$file);
addEvent($event);
$javascript['succes'] = true;
$javascript['status'] = tt('Fichier correctement supprime');
}else{
$javascript['status'] = tt('Impossible de supprimer le fichier, nom incorrect ou fichier inexistant');
}
}else if(is_dir($file)){
if(recursiveDelete($file)){
$event['user']=$user->login;
$event['result'] = true;
$event['file'] = $_['file'];
$event['type'] = 'folder';
addEvent($event);
$javascript['succes'] = true;
$javascript['status'] = tt('Dossier correctement supprime');
}else{
$javascript['status'] = tt('Impossible de supprimer le dossier, nom incorrect ou dossier inexistant');
}
}
}else{
$javascript['status'] = tt('Vous n\'avez pas les droits pour supprimer ce fichier');
}
break;
case 'deleteUser':
if(isset($user) && $user->rank=='admin'){
if($_['tmpToken']==$_SESSION['tpmToken']){
deleteUser($_['user']);
$event['user']=$user->login;
$event['result'] = true;
$event['deletedUser'] = $_['user'];
addEvent($event);
if($_['user']==$user->login){
header('location: ./action.php?action=logout');
}else{
header('location: ../index.php');
}
}
}
break;
case 'backup':
if(isset($user) && $user->rank=='admin'){
require_once('zip.class.php');
$zipName = '../'.UPLOAD_FOLDER.'dropFiles-'.date('d-m-Y-H\hi').'.zip';
$archive = new PclZip($zipName);
$v_list = $archive->create('../'.UPLOAD_FOLDER, PCLZIP_OPT_REMOVE_PATH,'..');
if ($v_list == 0) {die("Error : ".$archive->errorInfo(true));}
$_SESSION['backup']= file_get_contents($zipName);
$fileSize = filesize($zipName);
unlink($zipName);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($zipName));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . $fileSize);
ob_clean();
flush();
echo $_SESSION['backup'];
$javascript = null;
}
//header('location: ../index.php');
break;
case 'login':
if(isset($_['token'])){
$user = existToken($_['token']);
$_SESSION['user'] = (!$user?null:serialize($user));
$_SESSION['tpmToken'] = sha1(time().rand(0,100));
if(!$user){
header('location: ../index.php?error=Mauvais identifiant ou mot de passe');
}else{
header('location: ../php/action.php?action=rss');
}
}else{
$user = exist($_['login'],$_['password']);
$_SESSION['user'] = (!$user?null:serialize($user));
$_SESSION['tpmToken'] = sha1(time().rand(0,100));
header('location: ../index.php'.(!$user?'?error=Mauvais identifiant ou mot de passe':''));
}
break;
case 'logout':
$_SESSION = array();
session_unset();
session_destroy();
header('location: ../index.php');
break;
case 'renameFile':
if(isset($user) && ($user->rank=='admin' || $user->rank=='user')){
$file = stripslashes(utf8_decode(html_entity_decode($_['file'])));
$newPath = substr($file,0,strrpos ($file,'/')+1);
$newFileName = stripslashes(utf8_decode(html_entity_decode($_['newName'])));
$forbidenFormats = explode(',',FORBIDEN_FORMAT);
if(in_array(get_extension($_['newName']),$forbidenFormats)) $newFileName .='.txt';
if(!file_exists($newPath.$newFileName)){
if(is_file('../'.$file)){
if(@rename('../'.$file,'../'.$newPath.$newFileName)){
$event['user']=$user->login;
$event['result'] = true;
$event['file'] = $file;
$event['type'] = 'file';
$event['rename'] = $_['newName'];
addEvent($event);
$javascript['succes'] = true;
}else{
$javascript['status'] = tt('Impossible de renommer le fichier, nom incorrect ou fichier inexistant');
}
}else{
if(@rename($file,$newPath.$newFileName)){
$event['user']=$user->login;
$event['result'] = true;
$event['file'] = $file;
$event['type'] = 'folder';
$event['rename'] = $_['newName'];
addEvent($event);
$javascript['succes'] = true;
}else{
$javascript['status'] = tt('Impossible de renommer le dossier, nom incorrect ou dossier inexistant');
}
}
}else{
$javascript['status'] = tt('Impossible de renommer l element % en %, l element % existe deja',array($file,$newFileName,$newFileName));
}
}else{
$javascript['status'] = tt('Vous n\'avez pas les droits pour renommer ce fichier');
}
break;
case 'checkVersion':
echo DC_VERSION_NUMBER;
$javascript = null;
break;
case 'rss':
if(READ_FOR_ANONYMOUS || (isset($user) && ($user->rank=='admin' || $user->rank=='user'))){
header('Content-Type: text/xml; charset=utf-8');
echo rssHeader('http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=rss');
$allEvents = array_reverse(parseEvents());
$root = getConfig('ROOT');
if(isset($allEvents) && count($allEvents)!=0){
foreach($allEvents as $event){
$event = describeEvent($event,$root);
$user = $event['user'];
echo rssItem($event['title'],$event['lien'],$event['date'],$event['description'],$event['action'],$user->login,$root.$user->avatar);
}
}
echo rssFooter();
$javascript = null;
}
break;
case 'addFolder':
if(isset($user) && ($user->rank=='admin' || $user->rank=='user')){
$_['name'] = stripslashes(utf8_decode(html_entity_decode($_['name'])));
$tempName = utf8_decode($_SESSION['currentFolder']).'/'.$_['name'];
if(!isset($_['name']) || trim($_['name'])==''){
$tempName = makeName(utf8_decode($_SESSION['currentFolder']),str_replace(array("\r","\n"),'',tt('Nouveau dossier (%)')));
}
if(!file_exists($tempName)){
if(!in_array(trim($_['name']),array('/','\\',':','?','"','<','>'))){
if(mkdir($tempName)){
@chmod( utf8_decode($_SESSION['currentFolder']).$tempName , 0755);
$javascript['succes'] = true;
$javascript['tempName'] = $tempName;
$javascript['tempNameUrl'] = utf8_decode($_SESSION['currentFolder']).$tempName;
}else{
$javascript['status'] = tt('Erreur, impossible de créer le dossier');
}
}else{
$javascript['status'] = 'Erreur, un nom de fichier/dossier ne peux contenir les caractères suivants : /,\,:,?,",<,>';
}
}else{
$javascript['status'] = 'Erreur, un dossier de ce nom existe déjà!';
}
}else{
$javascript['status'] = tt('Vous ne pouvez rien envoyer car vous n\'avez aucun droits d\'ajout sur le dropCenter');
}
break;
case 'addEventForUpload':
if(isset($user) && ($user->rank=='admin' || $user->rank=='user')){
$user = getUser($user->login);
$files = json_decode(stripslashes(html_entity_decode($_['files'])));
$event['user']=$user->login;
$event['result'] = true;
foreach($files as $key=>$file){
$file->path = str_replace(getConfig('ROOT').UPLOAD_FOLDER,getConfig('ROOT').'php/action.php?action=openFile&file=',$file->path);
$files[$key] = $file;
}
$event['files'] = $files;
addEvent($event);
if (MAIL){
foreach(parseUsers('../') as $userInfos){
if($userInfos->notifMail=="true"){
$mailmembre = $userInfos->mail;
$messageMail ='';
$messageMail .=' '.$event['user'].' '.tt('a ajoute % fichier%',array(count($files),(count($files)>1?'s':''))).' :