/** * Méthode qui envoie un fichier sur le serveur * * @param file fichier à uploader * @param resize taille du fichier à redimensionner si renseigné * @param thumb taille de la miniature à créer si renseigné * @return msg message contenant le résultat de l'envoi du fichier * @author Stephane F **/ private function _uploadFile($file, $resize, $thumb) { if ($file['name'] == '') { return false; } if ($file['size'] > $this->maxUpload['value']) { return L_PLXMEDIAS_WRONG_FILESIZE; } if (!preg_match($this->img_exts, $file['name']) and !preg_match($this->doc_exts, $file['name'])) { return L_PLXMEDIAS_WRONG_FILEFORMAT; } # On teste l'existence du fichier et on formate le nom du fichier pour éviter les doublons $i = 1; $upFile = $this->path . $this->dir . plxUtils::title2filename($file['name']); $name = substr($upFile, 0, strrpos($upFile, '.')); $ext = strrchr($upFile, '.'); while (file_exists($upFile)) { $upFile = $this->path . $this->dir . $name . '.' . $i++ . $ext; } if (!move_uploaded_file($file['tmp_name'], $upFile)) { # Erreur de copie return L_PLXMEDIAS_UPLOAD_ERR; } else { # Ok if (preg_match($this->img_exts, $file['name'])) { plxUtils::makeThumb($upFile, $this->path . '.thumbs/' . $this->dir . basename($upFile), 48, 48); if ($resize) { plxUtils::makeThumb($upFile, $upFile, $resize['width'], $resize['height'], 80); } if ($thumb) { plxUtils::makeThumb($upFile, plxUtils::thumbName($upFile), $thumb['width'], $thumb['height'], 80); } } } return L_PLXMEDIAS_UPLOAD_SUCCESSFUL; }
if (isset($_POST['selection']) and $_POST['selection'] == 'delete' and isset($_POST['idArt'])) { foreach ($_POST['idArt'] as $k => $v) { $plxAdmin->delArticle($v); } header('Location: index.php'); exit; } # Check des variables GET pour la recherche $_GET['catId'] = !empty($_GET['catId']) ? plxUtils::unSlash(trim($_GET['catId'])) : ''; $_GET['artTitle'] = !empty($_GET['artTitle']) ? plxUtils::unSlash(trim($_GET['artTitle'])) : ''; # On génère notre motif de recherche $userId = $_SESSION['profil'] < PROFIL_WRITER ? '[0-9]{3}' : $_SESSION['user']; if ($_GET['catId'] != '') { $motif = '/^[0-9]{4}.(.*)' . $_GET['catId'] . '(.*).' . $userId . '.[0-9]{12}.(.*)' . plxUtils::title2filename($_GET['artTitle']) . '(.*).xml$/'; } else { $motif = '/^[0-9]{4}.([0-9,|home|draft]*).' . $userId . '.[0-9]{12}.(.*)' . plxUtils::title2filename($_GET['artTitle']) . '(.*).xml$/'; } # Traitement $plxAdmin->prechauffage('admin', $motif, $plxAdmin->aConf['bypage_admin']); $plxAdmin->getPage(); # Recuperation de la page $plxAdmin->getFiles('all'); # Recuperation des fichiers $plxAdmin->getArticles(); # Recuperation des articles # Génération de notre tableau des catégories if ($plxAdmin->aCats) { foreach ($plxAdmin->aCats as $k => $v) { $aCat[$k] = plxUtils::strCheck($v['name']); } $aAllCat['Catégories'] = $aCat;
if (empty($_SESSION['medias'])) { $_SESSION['medias'] = $plxAdmin->aConf['medias']; $_SESSION['folder'] = ''; } elseif (!empty($_POST['folder'])) { $_SESSION['currentfolder'] = isset($_SESSION['folder']) ? $_SESSION['folder'] : ''; $_SESSION['folder'] = $_POST['folder'] == '.' ? '' : $_POST['folder']; } # Nouvel objet de type plxMedias if ($plxAdmin->aConf['userfolders'] and $_SESSION['profil'] == PROFIL_WRITER) { $plxMedias = new plxMedias(PLX_ROOT . $_SESSION['medias'] . $_SESSION['user'] . '/', $_SESSION['folder']); } else { $plxMedias = new plxMedias(PLX_ROOT . $_SESSION['medias'], $_SESSION['folder']); } #---- if (!empty($_POST['btn_newfolder']) and !empty($_POST['newfolder'])) { $newdir = plxUtils::title2filename(trim($_POST['newfolder'])); if ($plxMedias->newDir($newdir)) { $_SESSION['folder'] = $_SESSION['folder'] . $newdir . '/'; } header('Location: medias.php'); exit; } elseif (!empty($_POST['folder']) and $_POST['folder'] != '.' and !empty($_POST['btn_delete'])) { if ($plxMedias->deleteDir($_POST['folder'])) { $_SESSION['folder'] = ''; } header('Location: medias.php'); exit; } elseif (!empty($_POST['btn_upload'])) { $plxMedias->uploadFiles($_FILES, $_POST); header('Location: medias.php'); exit;
/** * Méthode qui envoi un fichier sur le serveur * * @param dir répertoire de lecture * @param files données sur les fichiers à uploader de type $_FILES * @param medias type de medias uploadé (images ou documents) * @return msg message contenant le résultat de l'envoie du fichier * @author Stephane F **/ public function upload($dir, $files, $medias) { $nbfile = 0; if (($nbfiles = sizeof($files['name'])) > 0) { for ($numfile = 0; $numfile < $nbfiles; $numfile++) { if ($files['name'][$numfile] != '') { # controle de l'extension du fichier si envoie d'une image $ext = strtolower(strrchr(basename($files['name'][$numfile]), '.')); if ($medias == 'images' and !in_array($ext, array('.gif', '.jpg', '.png'))) { $msg_error = 'Vérifiez le format de vos images: gif, jpg et png uniquement'; } elseif ($medias == 'documents' and (substr($ext, 0, 4) == '.php' or in_array($ext, array('.cgi')))) { $msg_error = "Type de fichier non autorisé: php, cgi"; } else { # On teste l'existence du fichier et on formate le nom du fichier $i = 0; $upFile = $this->path . $dir . '/' . plxUtils::title2filename(basename($files['name'][$numfile])); while (file_exists($upFile)) { $upFile = $this->path . $dir . '/' . $i . plxUtils::title2filename(basename($files['name'][$numfile])); $i++; } if ($files['size'][$numfile] > $this->maxUpload['value']) { $msg_error = 'La taille d\'un fichier est supérieure à ' . $this->maxUpload['display']; } elseif (!@move_uploaded_file($files['tmp_name'][$numfile], $upFile)) { # Erreur de copie $msg_error = 'Impossible d\'envoyer les fichiers (problème d\'écriture dans le dossier)'; } else { # Ok @chmod($upfile, 0644); @plxUtils::makeThumb($upFile, $upFile . '.tb', $this->miniWidth, $this->miniHeight, $this->imgQuality); @chmod($upfile . '.tb', 0644); $nbfile++; } } } # Si erreur détectée on retourne le message if (!empty($msg_error)) { return plxMsg::Error($msg_error); } if (!empty($msg_info)) { return plxMsg::Info($msg_info); } } if ($nbfile > 1) { return plxMsg::Info('Fichiers envoyés avec succès'); } else { return plxMsg::Info('Fichier envoyé avec succès'); } } }
case 'home': $catIdSel = str_replace('FILTER', 'home', $catIdSel); break; case preg_match('/^[0-9]{3}$/', $_SESSION['sel_cat']) == 1: $catIdSel = str_replace('FILTER', $_SESSION['sel_cat'], $catIdSel); } # Nombre d'article sélectionnés $nbArtPagination = $plxAdmin->nbArticles($catIdSel, $userId); # Récupération du texte à rechercher $artTitle = !empty($_GET['artTitle']) ? plxUtils::unSlash(trim(urldecode($_GET['artTitle']))) : ''; if (empty($artTitle)) { $artTitle = !empty($_POST['artTitle']) ? plxUtils::unSlash(trim(urldecode($_POST['artTitle']))) : ''; } $_GET['artTitle'] = $artTitle; # On génère notre motif de recherche $motif = '/^' . $mod . '[0-9]{4}.' . $catIdSel . '.' . $userId . '.[0-9]{12}.(.*)' . plxUtils::title2filename($_GET['artTitle']) . '(.*).xml$/'; # Calcul du nombre de page si on fait une recherche if ($_GET['artTitle'] != '') { if ($arts = $plxAdmin->plxGlob_arts->query($motif)) { $nbArtPagination = sizeof($arts); } } # Traitement $plxAdmin->prechauffage($motif); $plxAdmin->getPage(); $arts = $plxAdmin->getArticles('all'); # Recuperation des articles # Génération de notre tableau des catégories $aFilterCat['all'] = L_ARTICLES_ALL_CATEGORIES; $aFilterCat['home'] = L_CATEGORY_HOME; $aFilterCat['000'] = L_UNCLASSIFIED;