diff --git a/ecrire/action/iconifier.php b/ecrire/action/iconifier.php index e2ee51dab6df69447352c6574526bf3192a2a3eb..282852d9130de36f726402d880442ccf967dfbe4 100644 --- a/ecrire/action/iconifier.php +++ b/ecrire/action/iconifier.php @@ -54,7 +54,7 @@ function action_spip_image_effacer_dist($arg) { function action_spip_image_ajouter_dist($arg,$sousaction2,$source) { global $formats_logos; - include_spip('inc/getdocument'); + include_spip('inc/documents'); if (!$sousaction2) { if (!$_FILES) $_FILES = $GLOBALS['HTTP_POST_FILES']; $source = (is_array($_FILES) ? array_pop($_FILES) : ""); diff --git a/ecrire/base/dump.php b/ecrire/base/dump.php index 07d5e7441292a31b876e68d452cca8b3cabc6fa3..fac39ddae9de25d756fcdac6aa27bddf30470ded 100644 --- a/ecrire/base/dump.php +++ b/ecrire/base/dump.php @@ -10,6 +10,13 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ +/** + * + * Fonctions de base pour la sauvegarde + * Boite a outil commune, sans prejuger de la methode de sauvegarde + * + */ + if (!defined('_ECRIRE_INC_VERSION')) return; define('_VERSION_ARCHIVE', '1.3'); @@ -34,6 +41,7 @@ function base_dump_meta_name($rub){ return $meta = "status_dump_$rub_" . $GLOBALS['visiteur_session']['id_auteur']; } function base_dump_dir($meta){ + include_spip('inc/documents'); // determine upload va aussi initialiser l'index "restreint" $maindir = determine_upload(); if (!$GLOBALS['visiteur_session']['restreint']) diff --git a/ecrire/inc/actions.php b/ecrire/inc/actions.php index c15a9547ad02a5880fb2eb11952fed16f23aea6e..4b4c2aaf1abd09b8e94ac935d3b61017222d6674 100644 --- a/ecrire/inc/actions.php +++ b/ecrire/inc/actions.php @@ -216,22 +216,4 @@ function ajax_retour($corps,$xml = true) echo $debut, $corps, $fin, $e; } -// http://doc.spip.org/@determine_upload -function determine_upload($type='') { - - if (!autoriser('chargerftp') - OR $type == 'logos') # on ne le permet pas pour les logos - return false; - - $repertoire = _DIR_TRANSFERT; - if (!@is_dir($repertoire)) { - $repertoire = str_replace(_DIR_TMP, '', $repertoire); - $repertoire = sous_repertoire(_DIR_TMP, $repertoire); - } - - if (!$GLOBALS['visiteur_session']['restreint']) - return $repertoire; - else - return sous_repertoire($repertoire, $GLOBALS['visiteur_session']['login']); -} ?> diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php index f9da217935b030bce4905896bc8e0368b0d8924d..5ee56450ad09e8e6fd421da7b83fcc772296ad02 100644 --- a/ecrire/inc/documents.php +++ b/ecrire/inc/documents.php @@ -134,6 +134,32 @@ function copier_document($ext, $orig, $source) { return deplacer_fichier_upload($source, $newFile); } +/** + * Trouver le dossier utilise pour upload un fichier + * + * http://doc.spip.org/@determine_upload + * + * @param string $type + * @return bool|string + */ +function determine_upload($type='') { + + if (!autoriser('chargerftp') + OR $type == 'logos') # on ne le permet pas pour les logos + return false; + + $repertoire = _DIR_TRANSFERT; + if (!@is_dir($repertoire)) { + $repertoire = str_replace(_DIR_TMP, '', $repertoire); + $repertoire = sous_repertoire(_DIR_TMP, $repertoire); + } + + if (!$GLOBALS['visiteur_session']['restreint']) + return $repertoire; + else + return sous_repertoire($repertoire, $GLOBALS['visiteur_session']['login']); +} + /** * Deplacer ou copier un fichier * @@ -170,4 +196,53 @@ function deplacer_fichier_upload($source, $dest, $move=false) { } +// Erreurs d'upload +// renvoie false si pas d'erreur +// et true si erreur = pas de fichier +// pour les autres erreurs affiche le message d'erreur et meurt +// http://doc.spip.org/@check_upload_error +function check_upload_error($error, $msg='') { + global $spip_lang_right; + + if (!$error) return false; + + spip_log("Erreur upload $error -- cf. http://php.net/manual/fr/features.file-upload.errors.php"); + + switch ($error) { + + case 4: /* UPLOAD_ERR_NO_FILE */ + return true; + + # on peut affiner les differents messages d'erreur + case 1: /* UPLOAD_ERR_INI_SIZE */ + $msg = _T('upload_limit', + array('max' => ini_get('upload_max_filesize'))); + break; + case 2: /* UPLOAD_ERR_FORM_SIZE */ + $msg = _T('upload_limit', + array('max' => ini_get('upload_max_filesize'))); + break; + case 3: /* UPLOAD_ERR_PARTIAL */ + $msg = _T('upload_limit', + array('max' => ini_get('upload_max_filesize'))); + break; + + default: /* autre */ + if (!$msg) + $msg = _T('pass_erreur').' '. $error + . '<br />' . propre("[->http://php.net/manual/fr/features.file-upload.errors.php]"); + break; + } + + spip_log ("erreur upload $error"); + + if(_request("iframe")=="iframe") { + echo "<div class='upload_answer upload_error'>$msg</div>"; + exit; + } + + echo minipres($msg, + "<div style='text-align: $spip_lang_right'><a href='" . rawurldecode($GLOBALS['redirect']) . "'><button type='button'>" . _T('ecrire:bouton_suivant') . "</button></a></div>"); + exit; +} ?>