diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3 index f89579b5da5ac9336417aa84dfbe8b40dd8c864d..85e77867a437d3a0a473eeffd4b31a7131e4a7eb 100644 --- a/ecrire/inc_version.php3 +++ b/ecrire/inc_version.php3 @@ -236,7 +236,7 @@ if ($ob_exists) { // special bug Netscape Win 4.0x if (eregi("Mozilla/4\.0[^ ].*Win", $HTTP_SERVER_VARS['HTTP_USER_AGENT'])) { $use_gz = false; - } + } if ($use_gz) { @ob_start("ob_gzhandler"); diff --git a/inc-cache.php3 b/inc-cache.php3 index dce3e4a04a4cb64c03764eef78b36d1bead313c2..de81ecd9ef9730f887eb80d7ec2d6d0fe8f42158 100644 --- a/inc-cache.php3 +++ b/inc-cache.php3 @@ -6,6 +6,31 @@ if (defined("_INC_CACHE")) return; define("_INC_CACHE", "1"); +// +// Retourne true si le sous-repertoire peut etre cree, false sinon +// + +function creer_repertoire($base, $subdir) { + if (file_exists("$base/.plat")) return false; + $path = $base.'/'.$subdir; + if (file_exists($path)) return true; + + @mkdir($path, 0777); + @chmod($path, 0777); + $ok = false; + if ($f = @fopen("$path/.test", "w")) { + @fputs($f, '<?php $ok = true; ?'.'>'); + @fclose($f); + include("$path/.test"); + } + if (!$ok) { + $f = fopen("$base/.plat", "w"); + fclose($f); + } + return $ok; +} + + function purger_repertoire($dir, $age, $regexp = '') { $handle = opendir($dir); $t = time(); diff --git a/inc-public.php3 b/inc-public.php3 index a3246d52f82ec7fa34ef9408f4607d3303912dca..40bdb5942de3e7dd5e3669956124a41726768e97 100644 --- a/inc-public.php3 +++ b/inc-public.php3 @@ -2,6 +2,7 @@ $dir_ecrire = 'ecrire/'; include ("ecrire/inc_version.php3"); +include_local ("inc-cache.php3"); // // Ajouter un forum @@ -24,7 +25,10 @@ $fichier_requete = eregi_replace('&(submit|valider|(var_[^=&]*)|recalcul)=[^&]*' $fichier_cache = substr(rawurlencode($fichier_requete), 0, 128); $sousrep_cache = substr(md5($fichier_cache), 0, 1); -if (!file_exists("CACHE/.plat") AND !file_exists("CACHE/$sousrep_cache")) { +if (creer_repertoire("CACHE", $sousrep_cache)) + $fichier_cache = "$sousrep_cache/$fichier_cache"; + +/*if (!file_exists("CACHE/.plat") AND !file_exists("CACHE/$sousrep_cache")) { @mkdir("CACHE/$sousrep_cache", 0777); @chmod("CACHE/$sousrep_cache", 0777); $ok = false; @@ -42,7 +46,7 @@ if (!file_exists("CACHE/.plat") AND !file_exists("CACHE/$sousrep_cache")) { if (!file_exists("CACHE/.plat")) { $fichier_cache = "$sousrep_cache/$fichier_cache"; } - +*/ $chemin_cache = "CACHE/$fichier_cache"; diff --git a/spip_image.php3 b/spip_image.php3 index 122e9a86c6e12017fe3620c3977b6ad41655d105..e5b5769067d8ddb011a4bad2cea72fc8dbeb8f01 100644 --- a/spip_image.php3 +++ b/spip_image.php3 @@ -5,6 +5,7 @@ include ("ecrire/inc_version.php3"); include_ecrire("inc_connect.php3"); include_ecrire("inc_meta.php3"); include_ecrire("inc_admin.php3"); +include_local("inc-cache.php3"); if ($HTTP_POST_VARS) $vars = $HTTP_POST_VARS; else $vars = $HTTP_GET_VARS; @@ -102,8 +103,6 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document) { $type_upload = $row['upload']; } - echo "$orig<p>$source<p>"; - // Ne pas accepter les types non autorises if ($type_upload != 'oui') return; if ($type_inclus == 'non' AND $mode == 'vignette') return; @@ -132,22 +131,26 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document) { else $dest = "doc-$id_document"; } - $dest = ereg_replace("\.([^.]+)$", "", $dest).".$ext"; - $loc = "IMG/$dest"; + $dest = ereg_replace("\.([^.]+)$", "", $dest) . ".$ext"; - if (!deplacer_fichier_upload($source, $loc)) return; + if (creer_repertoire("IMG", $ext)) + $dest_path = "IMG/$ext/$dest"; + else + $dest_path = "IMG/$dest"; + + if (!deplacer_fichier_upload($source, $dest_path)) return; // // Recopier le fichier // - $size_image = getimagesize($loc); + $size_image = getimagesize($dest_path); $type_image = $size_image[2]; if ($type_image) { $largeur = $size_image[0]; $hauteur = $size_image[1]; } - $taille = filesize($loc); + $taille = filesize($dest_path); if ($nouveau) { if (!$mode) $mode = $type_image ? 'vignette' : 'document'; @@ -155,7 +158,7 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document) { if ($largeur && $hauteur) $update .= "titre='image $largeur x $hauteur', "; } - $query = "UPDATE spip_documents SET $update taille='$taille', largeur='$largeur', hauteur='$hauteur', fichier='$loc' ". + $query = "UPDATE spip_documents SET $update taille='$taille', largeur='$largeur', hauteur='$hauteur', fichier='$dest_path' ". "WHERE id_document=$id_document"; mysql_query($query); if ($id_document_lie) {