/** * 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'); } } }
/** * Méthode qui recréer les miniatures * * @param files liste des fichier à déplacer * @param width largeur des miniatures * @param height hauteur des miniatures * @return boolean faux si erreur sinon vrai * @author Stephane F **/ public function makeThumbs($files, $width, $height) { $count = 0; foreach ($files as $file) { $file = basename($file); if (is_file($this->path . $this->dir . $file)) { $thumName = plxUtils::thumbName($file); $ext = strtolower(strrchr($this->path . $this->dir . $file, '.')); if (in_array($ext, array('.gif', '.jpg', '.png'))) { if (plxUtils::makeThumb($this->path . $this->dir . $file, $this->path . $this->dir . $thumName, $width, $height, 80)) { $count++; } } } } if (sizeof($files) == 1) { if ($count == 0) { return plxMsg::Error(L_PLXMEDIAS_RECREATE_THUMB_ERR); } else { return plxMsg::Info(L_PLXMEDIAS_RECREATE_THUMB_SUCCESSFUL); } } else { if ($count == 0) { return plxMsg::Error(L_PLXMEDIAS_RECREATE_THUMBS_ERR); } else { return plxMsg::Info(L_PLXMEDIAS_RECREATE_THUMBS_SUCCESSFUL); } } }