Skip to content
Extraits de code Groupes Projets
Valider 65154cf7 rédigé par esj's avatar esj
Parcourir les fichiers

possibilité de déballages simultanés de zip, et encore moins de IMG

parent df3843e8
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -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) {
......
......@@ -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'>";
......
......@@ -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>&nbsp;</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>&nbsp;</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 aprs le dballage
@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');
# dtruire le repertoire de deballage
if ($tmp_dir) effacer_repertoire_temporaire($tmp_dir);
}
}
$redirect = '';
if ($test_vignette) // appel de ecrire/config-fonction
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter