/** * Returns array('success'=>true) or array('error'=>'error message') */ function handleUpload($uploadDirectory, $replaceOldFile = FALSE) { if (!is_writable($uploadDirectory)) { return array('error' => "Le dossier de téléchargement n'est pas accessible en écriture."); } if (!$this->file) { return array('error' => 'Pas de fichiers envoyés.'); } $size = $this->file->getSize(); if ($size == 0) { return array('error' => 'Le fichier est vide.'); } if ($size > $this->sizeLimit) { return array('error' => 'Le fichier est trop large.'); } $pathinfo = pathinfo($this->file->getName()); $filename = $pathinfo['filename']; //$filename = md5(uniqid()); $ext = strtolower($pathinfo['extension']); if ($this->allowedExtensions && !in_array($ext, $this->allowedExtensions)) { $these = implode(', ', $this->allowedExtensions); return array('error' => "Le fichier n'a pas une extension autorisée, voici les autorisées : " . $these . '.'); } /*if(!$replaceOldFile){ /// don't overwrite previous files that were uploaded while (file_exists($uploadDirectory . $filename . '.' . $ext)) { $filename .= rand(10, 99); } }*/ // on enleve les espaces et les accents pour le nom de fichier $search = array('@[éèêëÊË]@i', '@[àâäÂÄ]@i', '@[îïÎÏ]@i', '@[ûùüÛÜ]@i', '@[ôöÔÖ]@i', '@[ç]@i', '@[ ]@i', '@[^a-zA-Z0-9_]@'); $replace = array('e', 'a', 'i', 'u', 'o', 'c', '_', ''); $filename = preg_replace($search, $replace, utf8_decode($filename)); $attach = new Attach($GLOBALS['wiki']); $GLOBALS['wiki']->setParameter("desc", $filename); $GLOBALS['wiki']->setParameter("file", $filename . '.' . $ext); // dans le cas d'une nouvelle page, on donne une valeur a la date de création if ($GLOBALS['wiki']->page['time'] == '') { $GLOBALS['wiki']->page['time'] = date('YmdHis'); } // on envoi l'attachement en retenant l'affichage du résultat dans un buffer ob_start(); $attach->doAttach(); $fullfilename = $attach->GetFullFilename(true); ob_end_clean(); if ($this->file->save($fullfilename)) { return array_map('utf8_encode', array('success' => true, 'filename' => $fullfilename, 'simplefilename' => $filename . '.' . $ext, 'extension' => $ext)); } else { return array_map('utf8_encode', array('error' => 'Impossible de sauver le fichier.' . "L'upload a été annulé ou le serveur a planté.")); } }