diff --git a/ecrire/inc_logos.php3 b/ecrire/inc_logos.php3 index c15641e1760e0b785cce86ce7885cf998510d780..805df43c42996046f4494070fe3e69f353e3d4ad 100644 --- a/ecrire/inc_logos.php3 +++ b/ecrire/inc_logos.php3 @@ -58,14 +58,13 @@ function afficher_boite_logo($logo, $survol, $texteon, $texteoff) { echo "<p>"; debut_cadre_relief("image-24.gif"); echo "<center><font size='2' FACE='Verdana,Arial,Sans,sans-serif'>"; - - $logo_ok = get_image($logo); - $survol_ok = (!$logo_ok ? '' : get_image($survol)); - afficher_logo($logo, $texteon, $logo_ok); - - if ($logo_ok OR $survol_ok) { - echo "<br><br>"; - afficher_logo($survol, $texteoff, $survol_ok); + $desc = decrire_logo($logo); + afficher_logo($logo, $texteon, $desc); + + if ($desc) { + echo "<br /><br />"; + $desc = decrire_logo($survol); + afficher_logo($survol, $texteoff, $desc); } echo "</font></center>"; @@ -74,23 +73,30 @@ function afficher_boite_logo($logo, $survol, $texteon, $texteoff) { } } +function decrire_logo($racine) { + $logo = get_image($racine); + if ($logo) { + $taille = $logo[1]; + if ($taille) { + list($x, $y, $w, $h) = $taille; + $logo[1] = "$x x $y "._T('info_pixels'); + $taille = " width='$w' height='$h'"; + } + $logo[2] = "<img src='" . + _DIR_IMG . $logo[0] . $logo[2] . + "'$taille alt='' />"; + } + return $logo; +} + function afficher_logo($racine, $titre, $logo) { global $id_article, $coll, $id_breve, $id_auteur, $id_mot, $id_syndic, $connect_id_auteur; global $couleur_foncee, $couleur_claire; global $clean_link; include_ecrire('inc_admin.php3'); - + $redirect = $clean_link->getUrl(); - if ($logo) { - $fichier = $logo[0]; - $taille = $logo[1]; - $fid = $logo[2]; - if ($taille) { - $taille_html = " WIDTH=$taille[2] HEIGHT=$taille[3] "; - $taille_txt = "$taille[0] x $taille[1] "._T('info_pixels'); - } - } echo "<b>"; echo bouton_block_invisible(md5($titre)); @@ -98,14 +104,14 @@ function afficher_logo($racine, $titre, $logo) { echo "</b>"; echo "<font size=1>"; - if ($fichier) { + if ($logo) { + list($fichier, $taille, $img) = $logo; $hash = calculer_action_auteur("supp_image $fichier"); - echo "<p><center><img src='" . _DIR_IMG . "$fichier$fid' $taille_html alt='' />"; - + echo "<p><center>$img"; echo debut_block_invisible(md5($titre)); - echo "$taille_txt\n"; - echo "<br />[<A HREF='../spip_image.php3?"; + echo $taille; + echo "\n<br />[<a href='../spip_image.php3?"; $elements = array('id_article', 'id_breve', 'id_syndic', 'coll', 'id_mot', 'id_auteur'); while (list(,$element) = each ($elements)) { if ($$element) { diff --git a/ecrire/index.php3 b/ecrire/index.php3 index d6653fbd85074a372b5297a5592ba193903e8e02..207becf09021d8fedbdef43150ebf3ab15baf076 100644 --- a/ecrire/index.php3 +++ b/ecrire/index.php3 @@ -2,7 +2,6 @@ include ("inc.php3"); include_ecrire ("inc_calendrier.php"); -define('_DIR_IMG', ($GLOBALS['flag_ecrire'] ? "../" : "")."IMG/"); if ($HTTP_REFERER && !strpos($HTTP_REFERER, '/ecrire/')) $bonjour = 'oui'; @@ -52,15 +51,10 @@ if ($spip_display != 4) { if ($spip_display != 1) { include_ecrire("inc_logos.php3"); - $logo = get_image("rubon0"); + $logo = decrire_logo("rubon0"); if ($logo) { - $fichier = $logo[0]; - $taille = $logo[1]; $fid = $logo[2]; - if ($taille) { - $taille_html = " WIDTH=$taille[2] HEIGHT=$taille[3] "; - } - echo "<div style='text-align:center; margin-bottom: 5px;'><a href='naviguer.php3'><img src='" . _DIR_IMG . "$fichier$fid' $taille_html border='0' alt='' /></a></div>"; + echo "<div style='text-align:center; margin-bottom: 5px;'><a href='naviguer.php3'>$fid</a></div>"; } } echo "<div class='verdana1'>"; diff --git a/spip_image.php3 b/spip_image.php3 index c04c3e4c3c15cb32ac6ff938c806a961f01399c8..8792888f27473e39a792b47c61fa807668cc687d 100644 --- a/spip_image.php3 +++ b/spip_image.php3 @@ -2,7 +2,7 @@ include ("ecrire/inc_version.php3"); include_local("inc-public-global.php3"); -include_ecrire("inc_filtres.php3"); +# include_ecrire("inc_filtres.php3"); semble inutile au 2/10/2004 include_ecrire("inc_charsets.php3"); include_ecrire("inc_meta.php3"); include_ecrire("inc_admin.php3"); @@ -12,11 +12,25 @@ function creer_repertoire_documents($ext) { return _DIR_IMG . creer_repertoire(_DIR_IMG, $ext); } -function effacer_repertoire_documents($nom) { - $d = opendir(_DIR_IMG . $nom); +function copier_document($ext, $orig, $source) { + $dest = creer_repertoire_documents($ext) . + ereg_replace("[^.a-zA-Z0-9_=-]+", "_", + translitteration(ereg_replace("\.([^.]+)$", "", + ereg_replace("<[^>]*>", '', basename($orig))))); + # bien vu ? + if ($orig == ($dest . '.' . $ext)) return $orig; + $n = 0; + while (@file_exists($newFile = $dest.($n++ ? '-'.$n : '').'.'.$ext)); + $r = deplacer_fichier_upload($source, $newFile); + return ($r ? $newFile : ''); +} + +function effacer_repertoire_temporaire($nom) { + $d = opendir($nom); while ($f = readdir($d)) { - if (is_file($f = _DIR_IMG . "$nom/$f")) @unlink($f); + if (is_file($f = "$nom/$f")) @unlink($f); } + @rmdir($nom); } function scinder_repertoire_documents($nom) { @@ -195,12 +209,13 @@ function ajout_image($source, $dest) { // Ajouter un document // -function ajout_doc($orig, $source, $dest, $mode, $id_document, $doc_vignette='', $titre_vignette='', $descriptif_vignette='', $titre_automatique=true) { +function ajout_doc($orig, $source, $mode, $id_document, $titre_automatique=true) { + $doc_vignette=''; $titre_vignette=''; $descriptif_vignette=''; + global $hash_id_auteur, $hash, $id_article, $type; //die ("<li>$orig<li>$source<li>$dest<li>$mode<li>$id_document"); - // // Securite // @@ -220,15 +235,8 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document, $doc_vignette='', // // Recopier le fichier // - $dest = creer_repertoire_documents($ext) . - ereg_replace("[^.a-zA-Z0-9_=-]+", "_", - translitteration(ereg_replace("\.([^.]+)$", "", supprimer_tags(basename($orig))))); - spip_log("spip_image '$dest' '$orig'"); - $n = 0; - while (@file_exists($newFile = $dest.($n++ ? '-'.$n : '').'.'.$ext)); - $dest_path = $newFile; - - if (!deplacer_fichier_upload($source, $dest_path)) return ; + $dest_path = copier_document($ext,$orig, $source); + if (!$dest_path) return ; // // Preparation @@ -391,7 +399,6 @@ function creer_fichier_vignette($vignette) { if (!$fichier_vignette) list($fichier_vignette) = vignette_par_defaut('txt'); } - spip_log($vignette . $fichier_vignette); return $fichier_vignette; } @@ -489,127 +496,118 @@ function tourner_document($var_rot, $doc_rotate, $convert_command) { } } -// -// ajouter un document -// - -if ($ajout_doc == 'oui') { - -// image_name n'est valide que par POST http, mais pas par la methode ftp/upload -// par ailleurs, pour un fichier ftp/upload, il faut effacer l'original nous-memes -if (!$image_name AND $image2) { - $image = "ecrire/upload/".$image2; - $image_name = $image; - $supprimer_ecrire_upload = $image; -} -else { - $supprimer_ecrire_upload = ''; -} - if (eregi("\.zip$",$image_name) AND !$action_zip){ - // Pretraitement des fichiers ZIP - // Recopier le fichier - creer_repertoire_documents("tmp"); - $dest = creer_repertoire_documents("tmp_zip"); - - $dest .= ereg_replace("[^.a-zA-Z0-9_=-]+", "_", translitteration(ereg_replace("\.([^.]+)$", "", supprimer_tags(basename($image_name))))); - $dest .= ".zip"; - $n = 0; - if (!deplacer_fichier_upload($image, $dest)) - exit; - +function afficher_compactes($image_name) { - $image_name = $dest; - - require_once('ecrire/pclzip.lib.php'); - $zip = new PclZip($image_name); + $afficher_message_zip = false; + $zip = new PclZip($image_name); - if (($list = $zip->listContent()) == 0) { - // pas possible de decompacter: installer comme fichier zip joint - $afficher_message_zip = false; - } - else { - // Verifier si le contenu peut etre uploade (verif extension) - for ($i=0; $i<sizeof($list); $i++) { - for(reset($list[$i]); $key = key($list[$i]); next($list[$i])) { - - if ($key == "stored_filename") { - if (ereg("\.([^.]+)$", $list[$i][$key], $match)) { - $ext = addslashes(strtolower($match[1])); - $ext = corriger_extension($ext); - - // Regexp des fichiers a ignorer - if (!ereg("^(\.|.*/\.|.*__MACOSX/)", - $list[$i][$key])) { - $query = "SELECT * FROM spip_types_documents WHERE extension='$ext' AND upload='oui'"; - $result = spip_query($query); - if ($row = @spip_fetch_array($result)) { - $afficher_message_zip = true; - $aff_fichiers .= "<li>".$list[$i][$key]."</li>"; - } + if ($list = $zip->listContent()) { + // si pas possible de decompacter: installer comme fichier zip joint + // Verifier si le contenu peut etre uploade (verif extension) + for ($i=0; $i<sizeof($list); $i++) { + for(reset($list[$i]); $key = key($list[$i]); next($list[$i])) { + + if ($key == "stored_filename") { + if (ereg("\.([^.]+)$", $list[$i][$key], $match)) { + $ext = addslashes(strtolower($match[1])); + $ext = corriger_extension($ext); + + // Regexp des fichiers a ignorer + if (!ereg("^(\.|.*/\.|.*__MACOSX/)", + $list[$i][$key])) { + $query = "SELECT * FROM spip_types_documents WHERE extension='$ext' AND upload='oui'"; + $result = spip_query($query); + if ($row = @spip_fetch_array($result)) { + $afficher_message_zip = true; + $aff_fichiers .= "<li>".$list[$i][$key]."</li>"; } } } } } } + } - if ($afficher_message_zip) { - // presenter une interface pour choisir si fichier joint ou decompacter - include_ecrire ("inc_presentation.php3"); - install_debut_html(_T('upload_fichier_zip')); + if (!$afficher_message_zip) return false; + + // presenter une interface pour choisir si fichier joint ou decompacter + include_ecrire ("inc_presentation.php3"); + install_debut_html(_T('upload_fichier_zip')); + - - echo "<p>"._T('upload_fichier_zip_texte')."</p>"; - echo "<p>"._T('upload_fichier_zip_texte2')."</p>"; - + echo "<p>"._T('upload_fichier_zip_texte')."</p>"; + echo "<p>"._T('upload_fichier_zip_texte2')."</p>"; - if ($HTTP_POST_VARS) $vars = $HTTP_POST_VARS; - else $vars = $HTTP_GET_VARS; - - $link = new Link(); - $link->delVar("image"); - $link->delVar("image2"); - $link->addVar("image_name", $image_name); + $link = new Link(); + $link->delVar("image"); + $link->delVar("image2"); + $link->addVar("image_name", $image_name); - echo $link->getForm('POST'); - - echo _L('')."<div><input type='radio' checked name='action_zip' value='telquel'>"._T('upload_zip_telquel')."</div>"; - echo "<div><input type='radio' name='action_zip' value='decompacter'>"._T('upload_zip_decompacter')."</div>"; - - echo "<ul>$aff_fichiers</ul>"; - - echo "<div> </div>"; - echo "<div style='text-align: right;'><input class='fondo' style='font-size: 9px;' TYPE='submit' NAME='Valider' VALUE='"._T('bouton_valider')."'></div>"; + echo $link->getForm('POST'); + + echo _L('')."<div><input type='radio' checked name='action_zip' value='telquel'>"._T('upload_zip_telquel')."</div>"; + echo "<div><input type='radio' name='action_zip' value='decompacter'>"._T('upload_zip_decompacter')."</div>"; + + echo "<ul>$aff_fichiers</ul>"; + + echo "<div> </div>"; + echo "<div style='text-align: right;'><input class='fondo' style='font-size: 9px;' TYPE='submit' NAME='Valider' VALUE='"._T('bouton_valider')."'></div>"; + + echo "</form>"; + install_fin_html(); - echo "</form>"; - install_fin_html(); - - exit(); - } - else { - $image = $image_name; - $supprimer_ecrire_upload = $image; - } + return true; +} + +// +// ajouter un document +// + +if ($ajout_doc == 'oui') { + +// image_name n'est valide que par POST http, mais pas par la methode ftp/upload +// par ailleurs, pour un fichier ftp/upload, il faut effacer l'original nous-memes + if (!$image_name AND $image2) { + $image = "ecrire/upload/".$image2; + $image_name = $image; + } + if (eregi("\.zip$",$image_name)) + # action_zip indique un rappel par la fonction affiche_compactes + if (!$action_zip){ + // on va se rappeler: copier le fichier car PHP va le virer + $image_name = copier_document("zip", $image_name, $image); + // anormal, on se tire + if (!$image_name) exit; + // renvoyer un formulaire demandant si on deballe ou pas + require_once('ecrire/pclzip.lib.php'); + if (afficher_compactes($image_name)) exit; + // pas possible de deballer, on continue + $forcer_document = 'oui'; + $image = $image_name; } - else if (eregi("\.zip$",$image_name)) { + else { + // reponse au formulaire if ($action_zip == "telquel") { - $effacer_tmp = true; - - ajout_doc($image_name, $image_name, $fichier, "document", $id_document); + $forcer_document = 'oui'; } else { - require_once('ecrire/pclzip.lib.php'); $archive = new PclZip($image_name); - $image_name = _DIR_IMG . "tmp"; - $list = $archive->extract(PCLZIP_OPT_PATH, $image_name, PCLZIP_OPT_REMOVE_ALL_PATH); + $tmp_dir = creer_repertoire_documents($hash); + $archive->extract(PCLZIP_OPT_PATH, $tmp_dir, PCLZIP_OPT_REMOVE_ALL_PATH); + # virer le zip après le déballage + @unlink($image_name); + $image_name = $tmp_dir; - $effacer_tmp = true; } - } - + } - if (is_dir($image_name)) { + if (!is_dir($image_name)) { + ajout_doc($image_name, + $image, + ($forcer_document == 'oui' ? "document" : $mode), + $id_document); + } else { include_ecrire('inc_documents.php3'); $fichiers = fichiers_upload($image_name); while (list(,$f) = each($fichiers)) { @@ -621,24 +619,15 @@ else { if ($inclus) $req .= " AND inclus='$inclus'"; if (@spip_fetch_array(spip_query($req))) - ajout_doc($f, $f, '', 'document', '','','','',false); + ajout_doc($f, $f, 'document', false); } } - } else { - if ($forcer_document == 'oui') - ajout_doc($image_name, $image, $fichier, "document", $id_document); - else - ajout_doc($image_name, $image, $fichier, $mode, $id_document); - } - - - if ($effacer_tmp) { - effacer_repertoire_documents('tmp'); - effacer_repertoire_documents('tmp_zip'); +# détruire le repertoire de deballage + if ($tmp_dir) effacer_repertoire_temporaire($tmp_dir); } } - + $redirect = ''; if ($test_vignette) // appel de ecrire/config-fonction