Rev 4 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2005 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
//
// Ce fichier ne sera execute qu'une fois
if (defined("_ECRIRE_INC_DOCUMENTS")) return;
define("_ECRIRE_INC_DOCUMENTS", "1");
include_ecrire ("inc_admin.php3");
include_ecrire ("inc_date.php3");
//
// Vignette pour les documents lies
//
function vignette_par_defaut($type_extension, $size=true) {
if (!$type_extension)
$type_extension = 'txt';
$filename = _DIR_IMG_ICONES . "$type_extension";
// Glurps !
// je dirais meme plus: Glurps ! (esj)
if (!@file_exists($v = $filename.'.png'))
if (!@file_exists($v = $filename.'.gif'))
if (!@file_exists($v = $filename.'-dist.png'))
if (!@file_exists($v = $filename.'-dist.gif'))
if (!@file_exists($v = _DIR_IMG_ICONES . "/defaut.png"))
if (!@file_exists($v = _DIR_IMG_ICONES . "/defaut.gif"))
if (!@file_exists($v = _DIR_IMG_ICONES . "/defaut-dist.png"))
if (!@file_exists($v = _DIR_IMG_ICONES . "/defaut-dist.gif"))
$v = _DIR_IMG_ICONES . "/defaut-dist.gif";
if (!$size) return $v;
if ($size = @getimagesize($v)) {
$largeur = $size[0];
$hauteur = $size[1];
}
return array($v, $largeur, $hauteur);
}
//
// Affiche le document avec sa vignette par defaut
//
// Attention : en mode 'doc', si c'est un fichier graphique on prefere
// afficher une vue reduite, quand c'est possible (presque toujours, donc)
// En mode 'vignette', l'image conserve sa taille
//
// A noter : dans le portfolio prive on pousse le vice jusqu'a reduire la taille
// de la vignette -> c'est a ca que sert la variable $portfolio
function image_pattern($vignette) {
return "<img src='"
. (_DIR_RESTREINT ? '' : '../')
. $vignette['fichier']."'
width='".$vignette['largeur']."'
height='".$vignette['hauteur']."'
style='border-width: 0px;' />";
}
function document_et_vignette($document, $url, $portfolio=false) {
// a supprimer avec spip_types_documents
list($extension) = spip_fetch_array(spip_query("SELECT extension FROM
spip_types_documents WHERE id_type=".$document['id_type']));
if ($document['id_vignette'] > 0
AND $vignette = spip_fetch_array(spip_query("SELECT * FROM spip_documents
WHERE id_document = ".$document['id_vignette']))) {
if (!$portfolio OR !(lire_meta('creer_preview') == 'oui')) {
$image = image_pattern($vignette);
} else {
$image = prive_lien_image_reduite ($vignette['largeur'],
$vignette['hauteur'], $vignette['fichier']);
}
} else if (strstr(lire_meta('formats_graphiques'), $extension)
AND lire_meta('creer_preview') == 'oui') {
include_ecrire('inc_logos.php3');
#var_dump($document);
$local = copie_locale($document['fichier']);
if ($portfolio)
$image = reduire_image_logo($local, 110, 120);
else
$image = reduire_image_logo($local);
}
if (!$image) {
list($fichier, $largeur, $hauteur) = vignette_par_defaut($extension);
$image = "<img src='$fichier' style='border-width: 0px;' height='$hauteur' width='$largeur' />";
}
if (!$url)
return $image;
else
return "<a href='$url'>$image</a>";
}
//
// Integration (embed) multimedia
//
function embed_document($id_document, $les_parametres="", $afficher_titre=true) {
global $id_doublons;
$id_doublons['documents'] .= ",$id_document";
if ($les_parametres) {
$parametres = explode("|",$les_parametres);
for ($i = 0; $i < count($parametres); $i++) {
$parametre = $parametres[$i];
if (eregi("^left|right|center$", $parametre)) {
$align = $parametre;
}
else {
$params[] = $parametre;
}
}
}
if (!($row = spip_fetch_array(spip_query("SELECT * FROM spip_documents WHERE id_document = " . intval($id_document)))))
return '';
$id_document = $row['id_document'];
$id_type = $row['id_type'];
$titre = propre($row ['titre']);
$descriptif = propre($row['descriptif']);
$fichier = generer_url_document($id_document);
$largeur = $row['largeur'];
$hauteur = $row['hauteur'];
$taille = $row['taille'];
$mode = $row['mode'];
$result_type = spip_query("SELECT * FROM spip_types_documents WHERE id_type=" . intval($id_type));
if ($row_type = @spip_fetch_array($result_type)) {
$type = $row_type['titre'];
$inclus = $row_type['inclus'];
$extension = $row_type['extension'];
}
else $type = 'fichier';
// Pour RealVideo
$real = ((!ereg("^controls", $les_parametres)) AND (ereg("^(rm|ra|ram)$", $extension)));
if ($inclus == "embed" AND !$real) {
for ($i = 0; $i < count($params); $i++) {
if (ereg("([^\=]*)\=([^\=]*)", $params[$i], $vals)){
$nom = $vals[1];
$valeur = $vals[2];
$inserer_vignette .= "<param name='$nom' value='$valeur'>";
$param_emb .= " $nom='$valeur'";
if ($nom == "controls" AND $valeur == "PlayButton") {
$largeur = 40;
$hauteur = 25;
}
else if ($nom == "controls" AND $valeur == "PositionSlider") {
$largeur = $largeur - 40;
$hauteur = 25;
}
}
}
$vignette = "<object width='$largeur' height='$hauteur'>\n";
$vignette .= "<param name='movie' value='$fichier'>\n";
$vignette .= "<param name='src' value='$fichier'>\n";
$vignette .= $inserer_vignette;
$vignette .= "<embed src='$fichier' $param_emb width='$largeur' height='$hauteur'></embed></object>\n";
}
else if ($inclus == "embed" AND $real) {
$vignette .= "<div>".embed_document ($id_document, "controls=ImageWindow|type=audio/x-pn-realaudio-plugin|console=Console$id_document|nojava=true|$les_parametres", false)."</div>";
$vignette .= embed_document ($id_document, "controls=PlayButton|type=audio/x-pn-realaudio-plugin|console=Console$id_document|nojava=true|$les_parametres", false);
$vignette .= embed_document ($id_document, "controls=PositionSlider|type=audio/x-pn-realaudio-plugin|console=Console$id_document|nojava=true|$les_parametres", false);
}
else if ($inclus == "image") {
$fichier_vignette = $fichier;
$largeur_vignette = $largeur;
$hauteur_vignette = $hauteur;
if ($fichier_vignette) {
$vignette = "<img src='$fichier_vignette' style='border-width: 0px;'";
if ($largeur_vignette && $hauteur_vignette)
$vignette .= " width='$largeur_vignette' height='$hauteur_vignette'";
if ($titre) {
$titre_ko = ($taille > 0) ? ($titre . " - ". taille_en_octets($taille)) : $titre;
$titre_ko = supprimer_tags(propre($titre_ko));
$vignette .= " alt=\"$titre_ko\" title=\"$titre_ko\"";
}else{ $vignette .= " alt=\"\" title=\"\""; }
$vignette .= " />";
}
}
if (!$afficher_titre) return $vignette;
if ($largeur_vignette < 120) $largeur_vignette = 120;
$forcer_largeur = " width = '$largeur_vignette'";
if ($align != 'center') $float = " style='float: $align;'";
$retour .= "<div class='spip_documents spip_documents_$align'$float>\n";
$retour .= $vignette;
if ($titre) $retour .= "<div class='spip_doc_titre'><strong>$titre</strong></div>";
if ($descriptif) {
$retour .= "<div class='spip_doc_descriptif'>$descriptif</div>";
}
$retour .= "</div>\n";
return $retour;
}
//
// Integration des images et documents
//
function integre_image($id_document, $align, $type_aff) {
global $id_doublons;
$id_doublons['documents'] .= ",$id_document";
if (!($row = spip_fetch_array(spip_query("SELECT * FROM spip_documents WHERE id_document = " . intval($id_document))))) return "";
$id_document = $row['id_document'];
$id_type = $row['id_type'];
$titre = typo($row['titre']);
$descriptif = propre($row['descriptif']);
$fichier = $row['fichier'];
$url_fichier = generer_url_document($id_document);
$largeur = $row['largeur'];
$hauteur = $row['hauteur'];
$taille = $row['taille'];
$mode = $row['mode'];
$id_vignette = $row['id_vignette'];
// on construira le lien en fonction du type de doc
if ($t = @spip_fetch_array(spip_query(
"SELECT titre,extension FROM spip_types_documents
WHERE id_type = $id_type"))) {
$extension = $t['extension']; # jpg, tex
$type = $t['titre']; # JPEG, LaTeX
}
// Attention ne pas confondre :
// pour un document affiche avec le raccourci <IMG> on a
// $mode == 'document' et $type_aff == 'IMG'
// inversement, pour une image presentee en mode 'DOC',
// $mode == 'vignette' et $type_aff == 'DOC'
// Type : vignette ou document ?
if ($mode == 'document') {
$vignette = document_et_vignette($row, $url_fichier);
} else {
$vignette = image_pattern($row);
}
//
// Regler le alt et title
//
$alt_titre_doc = entites_html(texte_backend(supprimer_tags($titre)));
$alt_infos_doc = entites_html($type
. (($taille>0) ? ' - '.texte_backend(taille_en_octets($taille)) : ''));
if ($row['distant'] == 'oui')
$alt_infos_doc .= ", ".$url_fichier;
if ($alt_titre_doc) $alt_sep = ', ';
// documents presentes en mode <DOC> : alt et title "JPEG, 54 ko"
// mais pas de titre puisqu'il est en dessous
if ($mode == 'document' AND $type_aff == 'DOC') {
$alt = " alt=\"$alt_infos_doc\" title=\"$alt_infos_doc\"";
}
// document en mode <IMG> : alt + title detailles
else if ($mode == 'document' AND $type_aff == 'IMG') {
$alt = " alt=\"$alt_titre_doc$alt_sep$alt_infos_doc\"
title=\"$alt_titre_doc$alt_sep$alt_infos_doc\"";
}
// vignette en mode <DOC> : alt disant "JPEG", pas de title
else if ($mode == 'vignette' AND $type_aff == 'DOC') {
$alt = " alt=\"($type)\"";
}
// vignette en mode <IMG> : alt + title s'il y a un titre
else if ($mode == 'vignette' AND $type_aff == 'IMG') {
if (strlen($titre))
$alt = " alt=\"$alt_titre_doc ($type)\" title=\"$alt_titre_doc\"";
else
$alt = " alt=\"($type)\"";
}
$vignette = str_replace(' />', "$alt />", $vignette); # inserer l'attribut
// Preparer le texte sous l'image pour les <DOC>
if ($type_aff == 'DOC') {
if (strlen($titre))
$txt = "\n<div class='spip_doc_titre'><strong>"
. $titre
. "</strong></div>\n";
if (strlen($descriptif))
$txt .= "<div class='spip_doc_descriptif'>$descriptif</div>\n";
}
// Passer un DIV pour les images centrees et, dans tous les cas, les <DOC>
if ($align == 'center' OR $type_aff =='DOC') {
$span = "div";
} else {
$span = "span";
}
if ($align != 'center') {
// Largeur de la div = celle de l'image ; mais s'il y a une legende
// mettre au moins 120px
$width = extraire_attribut($vignette, 'width');
if (strlen($txt) AND $width < 120) $width = 120;
$width = 'width: '.$width.'px;';
$style = " style='float: $align; $width'";
}
return
"<$span class='spip_documents spip_documents_$align' $style>"
. $vignette
. $txt
. "</$span>\n";
}
//
// Parcourt recursivement le repertoire upload/ (ou tout autre repertoire, d'ailleurs)
//
function fichiers_upload($dir) {
$fichiers = array();
$d = opendir($dir);
while ($f = readdir($d)) {
if (is_file("$dir/$f") AND is_readable("$dir/$f")
AND $f != 'remove.txt')
$fichiers[] = "$dir/$f";
else
if (is_dir("$dir/$f") AND is_readable("$dir/$f")
AND $f != '.' AND $f != '..')
$fichiers = array_merge($fichiers, fichiers_upload("$dir/$f"));
}
closedir($d);
sort($fichiers);
return $fichiers;
}
//
// Retourner le code HTML d'utilisation de fichiers uploades a la main
//
function texte_upload_manuel($dir, $inclus = '') {
$fichiers = fichiers_upload($dir);
$exts = array();
foreach ($fichiers as $f) {
$f = ereg_replace("^$dir/","",$f);
if (ereg("\.([^.]+)$", $f, $match)) {
$ext = strtolower($match[1]);
if (!$exts[$ext]) {
if ($ext == 'jpeg') $ext = 'jpg';
$req = "SELECT extension FROM spip_types_documents WHERE extension='$ext'";
if ($inclus) $req .= " AND inclus='$inclus'";
if (@spip_fetch_array(spip_query($req))) $exts[$ext] = 'oui';
else $exts[$ext] = 'non';
}
$ledossier = substr($f, 0, strrpos($f,"/"));
$lefichier = substr($f, strrpos($f, "/"), strlen($f));
if ($ledossier != $ledossier_prec) {
$texte_upload .= "\n<option value=\"$ledossier\" style='font-weight: bold;'>"
._T('tout_dossier_upload', array('upload' => $ledossier))
."</option>";
}
$ledossier_prec = $ledossier;
if ($exts[$ext] == 'oui') $texte_upload .= "\n<option value=\"$f\"> $lefichier</option>";
}
}
if ($texte_upload) {
$texte_upload = "\n<option value=\"/\" style='font-weight: bold;'>"
._T('info_installer_tous_documents')
."</option>" . $texte_upload;
}
return $texte_upload;
}
//
// Retourne le lien HTML vers l'image reduite (pour l'espace prive)
//
function prive_lien_image_reduite ($largeur_vignette, $hauteur_vignette, $fichier_vignette) {
global $connect_id_auteur;
include_ecrire("inc_logos.php3");
return reduire_image_logo('../'.$fichier_vignette, 120, 110);
}
// Bloc d'edition de la taille du doc (pour embed)
function afficher_formulaire_taille($document, $type_inclus='AUTO') {
// (on ne le propose pas pour les images qu'on sait
// lire, id_type<=3), sauf bug, ou document distant
if ($document['id_type'] <= 3
AND $document['hauteur']*$document['largeur']>0
AND $document['distant']!='oui')
return '';
// Si on n'a pas le type_inclus, on va le chercher dans spip_types_documents
if ($type_inclus == 'AUTO'
AND $r = spip_query("SELECT * FROM spip_types_documents
WHERE id_type=".$document['id_type'])
AND $type = @spip_fetch_array($r))
$type_inclus = $type['inclus'];
if (($type_inclus == "embed" #meme pour le MP3 : "l x h pixels"?
OR $type_inclus == "image")) {
echo "<br /><b>"._T('entree_dimensions')."</b><br />\n";
echo "<input type='text' name='largeur_document' class='fondl' style='font-size:9px;' value=\"".$document['largeur']."\" size='5'>";
echo " × <input type='text' name='hauteur_document' class='fondl' style='font-size:9px;' value=\"".$document['hauteur']."\" size='5'> "._T('info_pixels');
}
}
//
// Afficher un formulaire d'upload
//
function afficher_upload($link, $redirect='', $intitule, $inclus = '', $envoi_multiple = true, $forcer_document = false) {
global $clean_link, $connect_statut, $connect_toutes_rubriques, $options, $spip_lang_right;
static $num_form = 0; $num_form ++;
if (!$redirect)
$redirect = $clean_link->getUrl();
$link->addVar('redirect', $redirect);
if ($forcer_document)
$link->addVar('forcer_document', 'oui');
echo $link->getForm('POST', '', 'multipart/form-data');
echo "<div>";
// bouton permettant de telecharger 10 images ou docs a la fois
$envoi_multiple &= ($options == "avancees");
if ($envoi_multiple OR $forcer_document)
echo bouton_block_invisible("ftp$num_form");
if (tester_upload()) {
echo "$intitule</div>";
// un modele de selecteur de fichier
$upload = "<div><input name='fichier*' type='File' style='font-size: 10px;' class='forml' size='15'></div>";
// afficher le premier
echo str_replace('*', '1', $upload);
/* (TESTS POUR ENVOI MULTIPLE ; DESACTIVE)
// afficher les suivants, masques
if ($envoi_multiple) {
echo debut_block_invisible ("upload$num_form");
for ($i=2; $i<=10; $i++)
echo str_replace('*', "$i", $upload);
echo fin_block();
}
*/
echo "<div align='".$GLOBALS['spip_lang_right']."'><input name='ok_post' type='Submit' VALUE='"._T('bouton_telecharger')."' CLASS='fondo'></div>\n<div>";
}
echo debut_block_invisible("ftp$num_form");
if ($connect_statut == '0minirezo' AND $connect_toutes_rubriques
AND $envoi_multiple) {
$texte_upload = texte_upload_manuel(_DIR_TRANSFERT, $inclus);
if ($texte_upload) {
echo "<p><div style='color: #505050;'>";
if ($forcer_document) echo '<input type="hidden" name="forcer_document" value="oui">';
echo "\n"._T('info_selectionner_fichier')." :<br />";
echo "\n<select name='image2' size='1' class='fondl'>";
echo $texte_upload;
echo "\n</select>";
echo "\n <div align='".$GLOBALS['spip_lang_right']."'><input name='ok_ftp' type='Submit' value='"._T('bouton_choisir')."' class='fondo'></div>";
echo "</div>\n";
}
else {
echo "<div style='border: 1px #303030 solid; padding: 4px; color: #505050;'>";
echo _T('info_installer_ftp').aide("ins_upload");
echo "</div>";
}
}
// Lien document distant, jamais en mode image
if ($forcer_document) {
echo "<p /><div style='border: 1px #303030 solid; padding: 4px; color: #505050;'>";
echo "<img src='"._DIR_IMG_PACK.'attachment.gif',
"' style='float: $spip_lang_right;' alt=\"\" />\n";
echo "\n"._T('info_referencer_doc_distant')."<br />";
echo "\n<input name='image_url' size='32' class='fondo' value='http://' />";
echo "\n <div align='".$GLOBALS['spip_lang_right']."'><input name='ok_url' type='Submit' value='"._T('bouton_choisir')."' class='fondo'></div>";
echo "</div>\n";
}
echo "</div>\n";
echo fin_block();
echo "</form>\n";
}
//
// Afficher les documents non inclus
// (page des articles)
function afficher_portfolio (
$documents = array(), # liste des documents, avec toutes les donnees
$id_article, # numero de l'article ou de la rubrique
$type = "article", # article ou rubrique ?
$album = 'portfolio', # album d'images ou de documents ?
$flag_modif = false, # a-t-on le droit de modifier ?
$image_url, # adresse du lien spip_image
$redirect_url, # adresse du retour apres spip-image
$couleur # couleur des cases du tableau
) {
global $connect_id_auteur, $connect_statut;
global $id_doublons, $options;
global $spip_lang_left, $spip_lang_right;
// la derniere case d'une rangee
$bord_droit = ($album == 'portfolio' ? 2 : 1);
foreach ($documents as $document) {
$id_document = $document['id_document'];
$id_vignette = $document['id_vignette'];
$id_type = $document['id_type'];
$titre = $document['titre'];
$descriptif = $document['descriptif'];
$url = generer_url_document($id_document);
$fichier = $document['fichier'];
$largeur = $document['largeur'];
$hauteur = $document['hauteur'];
$taille = $document['taille'];
$date = $document['date'];
$mode = $document['mode'];
$flag_deplie = teste_doc_deplie($id_document);
if ($case == 0) {
echo "<tr style='border-top: 1px solid black;'>";
}
$style = "border-$spip_lang_left: 1px solid $couleur; border-bottom: 1px solid $couleur;";
if ($case == $bord_droit) $style .= " border-$spip_lang_right: 1px solid $couleur;";
echo "<td width='33%' style='text-align: $spip_lang_left; $style' valign='top'>";
// Signaler les documents distants par une icone de trombone
if ($document['distant'] == 'oui') {
echo "<img src='"._DIR_IMG_PACK.'attachment.gif'."' style='float: $spip_lang_right;' alt=\"".entites_html($document['fichier'])."\" title=\"" .
entites_html($document['fichier'])."\" />\n";
}
// bloc vignette + rotation
echo "<div style='text-align:center;'>";
# 'extension', a ajouter dans la base quand on supprimera spip_types_documents
switch ($id_type) {
case 1:
$document['extension'] = "jpg";
break;
case 2:
$document['extension'] = "png";
break;
case 3:
$document['extension'] = "gif";
break;
}
// bloc rotation de l'image
// si c'est une image, qu'on sait la faire tourner, qu'elle
// n'est pas distante, et qu'elle n'a pas de vignette perso !
if ($flag_modif
AND strstr(lire_meta('formats_graphiques'), $document['extension'])
AND $document['distant']!='oui'
AND !$id_vignette) {
echo "<div class='verdana1' style='float: $spip_lang_right; text-align: $spip_lang_right;'>";
$process = lire_meta('image_process');
if ($process == 'imagick' OR $process == 'gd2'
OR $process == 'convert' OR $process == 'netpbm') {
// tourner a gauche
$link_rot = new Link ($image_url);
$link_rot->addVar('hash', calculer_action_auteur("rotate ".$id_document));
$link_rot->addVar('hash_id_auteur', $connect_id_auteur);
$link_rot->addVar('doc_rotate', $id_document);
$link_rot->addVar('var_rot', -90);
$link_rot->addVar('redirect',
$redirect_url.'&show_docs='.$id_document);
$link_rot->addVar('ancre', $album);
echo http_href_img($link_rot->getUrl(), 'tourner-gauche.gif', "style='border-width: 0px;'", _T('image_tourner_gauche'), '', 'bouton_rotation');
echo "<br />";
// tourner a droite
$link_rot = new Link ($image_url);;
$link_rot->addVar('hash', calculer_action_auteur("rotate ".$id_document));
$link_rot->addVar('hash_id_auteur', $connect_id_auteur);
$link_rot->addVar('doc_rotate', $id_document);
$link_rot->addVar('var_rot', 90);
$link_rot->addVar('redirect',
$redirect_url.'&show_docs='.$id_document);
$link_rot->addVar('ancre', $album);
echo http_href_img($link_rot->getUrl(),
'tourner-droite.gif', "style='border-width: 0px;'",
_T('image_tourner_droite'), '', 'bouton_rotation');
echo "<br />";
// tourner 180
$link_rot = new Link ($image_url);;
$link_rot->addVar('hash', calculer_action_auteur("rotate ".$id_document));
$link_rot->addVar('hash_id_auteur', $connect_id_auteur);
$link_rot->addVar('doc_rotate', $id_document);
$link_rot->addVar('var_rot', 180);
$link_rot->addVar('redirect',
$redirect_url.'&show_docs='.$id_document);
$link_rot->addVar('ancre', $album);
echo http_href_img($link_rot->getUrl(),
'tourner-180.gif', "style='border-width: 0px;'",
_T('image_tourner_180'), '', 'bouton_rotation');
}
echo "</div>\n";
} // fin bloc rotation
//
// Recuperer la vignette et afficher le doc
//
echo document_et_vignette($document, $url, true);
echo "</div>"; // fin du bloc vignette + rotation
// bloc titre et descriptif
if ($flag_modif) {
if ($flag_deplie)
$triangle = bouton_block_visible("port$id_document");
else
$triangle = bouton_block_invisible("port$id_document");
}
if (strlen($titre) > 0) {
echo "<div class='verdana2'><b>$triangle".typo($titre)."</b></div>";
} else {
$nom_fichier = basename($fichier);
if (strlen($nom_fichier) > 20) {
$nom_fichier = substr($nom_fichier, 0, 10)."...".substr($nom_fichier, strlen($nom_fichier)-10, strlen($nom_fichier));
}
echo "<div class='verdana1'>$triangle$nom_fichier</div>";
}
if (strlen($descriptif) > 0) {
echo "<div class='verdana1'>".propre($descriptif)."</div>";
}
// Taille de l'image ou poids du document
echo "<div class='verdana1' style='text-align: center;'>";
if ($largeur * $hauteur)
echo _T('info_largeur_vignette',
array('largeur_vignette' => $largeur,
'hauteur_vignette' => $hauteur));
else
echo taille_en_octets($taille);
echo "</div>";
if ($flag_modif) {
if ($flag_deplie)
echo debut_block_visible("port$id_document");
else
echo debut_block_invisible("port$id_document");
echo "<div class='verdana1' style='color: $couleur_foncee; border: 1px solid $couleur_foncee; padding: 5px; margin-top: 3px;'>";
$link = new Link($redirect_url);
$link->addVar('modif_document', 'oui');
$link->addVar('id_document', $id_document);
$link->addVar('show_docs', $id_document);
if ($document['id_article'])
$query = '?id_article='.$document['id_article'];
if ($document['id_rubrique'])
$query = '?id_rubrique='.$document['id_rubrique'];
echo $link->getForm('POST', "$query#$album");
echo "<b>"._T('titre_titre_document')."</b><br />\n";
echo "<input type='text' onFocus=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\" name='titre_document' class='formo' style='font-size:11px;' value=\"".entites_html($titre)."\" size='40'><br />\n";
// modifier la date (seulement dans les rubriques - et encore)
if ($type == 'rubrique'
AND $options == "avancees"
AND $connect_statut == '0minirezo') {
if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})", $date, $regs)) {
$mois = $regs[2];
$jour = $regs[3];
$annee = $regs[1];
}
echo "<b>"._T('info_mise_en_ligne')."</b><br />\n",
afficher_jour($jour, "NAME='jour_doc' SIZE='1' CLASS='fondl' style='font-size:9px;'\n\tonChange=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\""),
afficher_mois($mois, "NAME='mois_doc' SIZE='1' CLASS='fondl' style='font-size:9px;'\n\tonChange=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\""),
afficher_annee($annee, "NAME='annee_doc' SIZE='1' CLASS='fondl' style='font-size:9px;'\n\tonChange=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block')\""),
"<br />\n";
}
// bloc descriptif (affiche ou hidden)
if ($options == "avancees") {
echo "<b>"._T('info_description')."</b><br />\n";
echo "<textarea name='descriptif_document' rows='4' class='forml' style='font-size:10px;' cols='*' wrap='soft' onFocus=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\">";
echo entites_html($descriptif);
echo "</textarea>\n";
if ($options == "avancees")
afficher_formulaire_taille($document);
} else {
echo "<input type='hidden' name='descriptif_document' value=\"".entites_html($descriptif)."\" />\n";
}
echo "<div class='display_au_chargement' id='valider_doc$id_document' align='".$GLOBALS['spip_lang_right']."'>";
echo "<input TYPE='submit' class='fondo' NAME='Valider' VALUE='"._T('bouton_enregistrer')."'>";
echo "</div>";
echo "</form>";
// bloc mettre a jour la vignette
echo "<hr />";
bloc_gerer_vignette($document, $image_url, $redirect_url, $album);
echo "</div>";
// bouton "supprimer le doc"
$link_supp = new Link ($image_url);
$link_supp->addVar('redirect', $redirect_url);
$link_supp->addVar('hash',
calculer_action_auteur("supp_doc ".$id_document));
$link_supp->addVar('hash_id_auteur', $connect_id_auteur);
$link_supp->addVar('doc_supp', $id_document);
$link_supp->addVar('ancre', $album);
icone_horizontale(_T('icone_supprimer_document'),
$link_supp->getUrl(), "image-24.gif", "supprimer.gif");
} // fin block modifs
// fin bloc titre + descriptif
echo fin_block();
echo "</td>\n";
$case ++;
if ($case > $bord_droit) {
$case = 0;
echo "</tr>\n";
}
$id_doublons['documents'] .= ",$id_document";
}
// fermer la derniere ligne
if ($case > 0) {
echo "<td style='border-$spip_lang_left: 1px solid $couleur;'> </td>";
echo "</tr>";
}
}
function bloc_gerer_vignette($document, $image_url, $redirect_url, $album) {
global $connect_id_auteur;
$id_document = $document['id_document'];
$id_vignette = $document['id_vignette'];
echo bouton_block_invisible("gerer_vignette$id_document");
echo "<b>"._T('info_vignette_personnalisee')."</b>\n";
echo debut_block_invisible("gerer_vignette$id_document");
if ($id_vignette) {
$link = new Link ($image_url);
$link->addVar('redirect',
$redirect_url.'&show_docs='.$id_document);
$link->addVar('hash',
calculer_action_auteur("supp_doc ".$id_vignette));
$link->addVar('hash_id_auteur', $connect_id_auteur);
$link->addVar('doc_supp', $id_vignette);
$link->addVar('ancre', $album);
icone_horizontale (_T('info_supprimer_vignette'),
$link->getUrl(), "vignette-24.png", "supprimer.gif");
}
else {
/****
OBSOLETE
// lien "creation automatique"
if (strstr(lire_meta('formats_graphiques'), $document['extension'])
AND lire_meta('creer_preview') == 'oui'
AND $document['distant'] != 'oui') {
$link = new Link($image_url);
$link->addvar('creer_vignette', 'oui');
$link->addVar('redirect',
$redirect_url.'&show_docs='.$id_document);
$link->addvar('vignette', $document['fichier']);
$link->addVar('hash',
calculer_action_auteur("vign ".$document['fichier']));
$link->addVar('hash_id_auteur', $connect_id_auteur);
$link->addVar('id_document', $id_document);
$link->addVar('ancre', $album);
icone_horizontale(_T('info_creer_vignette'),
$link->getUrl(), "vignette-24.png", "creer.gif");
}
*****/
// lien "upload vignette"
$link = new Link ($image_url);
$link->addVar('hash', calculer_action_auteur("ajout_doc"));
$link->addVar('hash_id_auteur', $connect_id_auteur);
$link->addVar('ajout_doc', 'oui');
$link->addVar('id_document', $id_document);
$link->addVar('mode', 'vignette');
$link->addVar('ancre', $album);
afficher_upload($link,
$redirect_url.'&show_docs='.$id_document,
/* _T('info_remplacer_vignette') */'', 'portfolio', false);
}
echo fin_block();
}
function afficher_documents_non_inclus($id_article, $type = "article", $flag_modif) {
global $couleur_foncee, $couleur_claire;
global $connect_id_auteur, $connect_statut;
global $id_doublons, $options;
global $spip_lang_left, $spip_lang_right;
$image_url = '../spip_image.php3?';
if ($id_article)
$image_url .= 'id_article='.$id_article;
else if ($id_rubrique)
$image_url .= 'id_article='.$id_rubrique;
$redirect_url = new Link();
if ($type == "rubrique")
$redirect_url->addVar('modifier_rubrique', 'oui');
$redirect_url = $redirect_url->getUrl();
// Afficher portfolio
/////////
$query = "SELECT docs.* FROM spip_documents AS docs, spip_documents_".$type."s AS l, spip_types_documents AS lestypes ".
"WHERE l.id_$type=$id_article AND l.id_document=docs.id_document ".
"AND docs.mode='document'".
" AND docs.id_type=lestypes.id_type AND lestypes.extension IN ('gif', 'jpg', 'png')";
if ($id_doublons['documents']) $query .= " AND docs.id_document NOT IN (0".$id_doublons['documents'].") ";
$query .= " ORDER BY docs.id_document";
//
// recuperer tout le tableau des images du portfolio
//
$images_liees = spip_query($query);
$documents = array();
while ($document = spip_fetch_array($images_liees))
$documents[] = $document;
if (count($documents)) {
echo "<a name='portfolio'></a>";
echo "<div> </div>";
echo "<div style='background-color: $couleur_claire; padding: 4px; color: black; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px;' class='verdana2'><b>".majuscules(_T('info_portfolio'))."</b></div>";
echo "<table width='100%' cellspacing='0' cellpadding='3'>";
afficher_portfolio ($documents, $id_article, $type, 'portfolio', $flag_modif, $image_url, $redirect_url, $couleur_claire);
echo "</table>\n";
}
//// Documents associes
$query = "SELECT * FROM spip_documents AS docs, spip_documents_".$type."s AS l ".
"WHERE l.id_$type=$id_article AND l.id_document=docs.id_document ".
"AND docs.mode='document'";
if ($id_doublons['documents']) $query .= " AND docs.id_document NOT IN (0".$id_doublons['documents'].") ";
$query .= " ORDER BY docs.id_document";
$documents_lies = spip_query($query);
$documents = array();
while ($document = spip_fetch_array($documents_lies))
$documents[] = $document;
if (count($documents)) {
echo "<a id='documents'></a>";
echo "<div> </div>";
echo "<div style='background-color: #aaaaaa; padding: 4px; color: black; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px;' class='verdana2'><b>". majuscules(_T('info_documents')) ."</b></div>";
echo "<table width='100%' cellspacing='0' cellpadding='5'>";
afficher_portfolio ($documents, $id_article, $type, 'documents', $flag_modif, $image_url, $redirect_url, '#aaaaaa');
echo "</table>";
}
if (lire_meta("documents_$type") != 'non' AND $flag_modif) {
/// Ajouter nouveau document/image
echo "<p> </p>";
echo "<div align='right'>";
echo "<table width='50%' cellpadding=0 cellspacing=0 border=0><tr><td style='text-align: $spip_lang_left;'>";
echo debut_cadre_relief("image-24.gif", false, "", _T('titre_joindre_document'));
$link = new Link ($image_url);
$link->addVar('hash', calculer_action_auteur("ajout_doc"));
$link->addVar('hash_id_auteur', $connect_id_auteur);
$link->addVar('ajout_doc', 'oui');
$link->addVar('type', $type);
afficher_upload($link, $redirect_url, _T('info_telecharger_ordinateur'), '', true, true);
echo fin_cadre_relief();
echo "</td></tr></table>";
echo "</div>";
}
}
//
// Afficher un document dans la colonne de gauche
// (edition des articles)
function afficher_documents_colonne($id_article, $type="article", $flag_modif = true) {
global $connect_id_auteur, $connect_statut;
global $couleur_foncee, $couleur_claire, $options;
global $clean_link;
$image_url = '../spip_image.php3';
if ($id_article) $image_url .= '?id_article='.$id_article;
$id_doc_actif = $id_document;
# HACK!!! simule une mise en page pour affecter la globale id_doublons
# referencee dans afficher_case_document appelee plus loin :
# utile pour un affichage differencie des image "libres" et des images
# integrees via <imgXX|left> dans le texte
propre($GLOBALS['descriptif']." ".$GLOBALS['texte']." ".$GLOBALS['chapo']);
/// Ajouter nouvelle image
echo "<a id='images'></a>\n";
$titre_cadre = _T('bouton_ajouter_image').aide("ins_img");
debut_cadre_relief("image-24.gif", false, "creer.gif", $titre_cadre);
$link = new Link ($image_url);
$link->addVar('hash', calculer_action_auteur("ajout_doc"));
$link->addVar('hash_id_auteur', $connect_id_auteur);
$link->addVar('ajout_doc', 'oui');
$link->addVar('mode', 'vignette');
$link->addVar('type', $type);
afficher_upload($link, $redirect_url, _T('info_telecharger'));
fin_cadre_relief();
//// Documents associes
$query = "SELECT docs.id_document FROM spip_documents AS docs, spip_documents_".$type."s AS l ".
"WHERE l.id_".$type."=$id_article AND l.id_document=docs.id_document ".
"AND docs.mode='document' ORDER BY docs.id_document";
$res = spip_query($query);
$documents_lies = array();
while ($row = spip_fetch_array($res))
$documents_lies[]= $row['id_document'];
if (count($documents_lies)) {
$res = spip_query("SELECT DISTINCT id_vignette FROM spip_documents ".
"WHERE id_document in (".join(',', $documents_lies).")");
while ($v = spip_fetch_array($res))
$vignettes[]= $v['id_vignette'];
$docs_exclus = ereg_replace('^,','',join(',', $vignettes).','.join(',', $documents_lies));
if ($docs_exclus)
$docs_exclus = "AND l.id_document NOT IN ($docs_exclus) ";
}
//// Images sans documents
$query = "SELECT docs.id_document FROM spip_documents AS docs, spip_documents_".$type."s AS l ".
"WHERE l.id_".$type."=$id_article AND l.id_document=docs.id_document ".$docs_exclus.
"AND docs.mode='vignette' ORDER BY docs.id_document";
$images_liees = spip_query($query);
echo "\n<p />";
while ($document = spip_fetch_array($images_liees)) {
$id_document = $document['id_document'];
afficher_case_document($id_document, $image_url, $redirect_url, $id_doc_actif == $id_document);
}
/// Ajouter nouveau document
echo "<p> </p>\n";
echo "<a name='documents'></a>\n";
echo "<a name='portfolio'></a>\n";
if ($type == "article" AND lire_meta("documents_$type") != 'non') {
$titre_cadre = _T('bouton_ajouter_document').aide("ins_doc");
debut_cadre_enfonce("doc-24.gif", false, "creer.gif", $titre_cadre);
$link = new Link ($image_url);
$link->addVar('hash', calculer_action_auteur("ajout_doc"));
$link->addVar('hash_id_auteur', $connect_id_auteur);
$link->addVar('ajout_doc', 'oui');
$link->addVar('mode', 'document');
$link->addVar('type', $type);
afficher_upload($link, $redirect_url,
_T('info_telecharger_ordinateur'));
fin_cadre_enfonce();
}
// Afficher les documents lies
echo "<p />\n";
if ($type == "article") {
if ($documents_lies) {
reset($documents_lies);
while (list(, $id_document) = each($documents_lies)) {
afficher_case_document($id_document, $image_url, $redirect_url, $id_doc_actif == $id_document);
}
}
}
}
//
// Affiche le raccourci <doc123|left>
// et l'insere quand on le clique
//
function affiche_raccourci_doc($doc, $id, $align) {
if ($align) {
$pipe = "|$align";
if ($GLOBALS['browser_barre'])
$onclick = " ondblclick='barre_inserer(\"<$doc$id$pipe>\", document.formulaire.texte);' title=\"". entites_html(_T('double_clic_inserer_doc'))."\"";
} else {
$align='center';
}
return "<div align='$align'$onclick><$doc$id$pipe></div>\n";
}
//
// Afficher un document sous forme de ligne depliable
//
function afficher_case_document($id_document, $image_url, $redirect_url = "", $deplier = false) {
global $connect_id_auteur, $connect_statut;
global $couleur_foncee, $couleur_claire;
global $clean_link;
global $options;
global $id_doublons;
global $spip_lang_left, $spip_lang_right;
$flag_deplie = teste_doc_deplie($id_document);
$doublons = $id_doublons['documents'].",";
if (!$redirect_url) $redirect_url = $clean_link->getUrl();
$document = spip_fetch_array(spip_query("SELECT * FROM spip_documents WHERE id_document = " . intval($id_document)));
$id_vignette = $document['id_vignette'];
$id_type = $document['id_type'];
$titre = $document['titre'];
$descriptif = $document['descriptif'];
$url = generer_url_document($id_document);
$fichier = $document['fichier'];
$largeur = $document['largeur'];
$hauteur = $document['hauteur'];
$taille = $document['taille'];
$mode = $document['mode'];
if (!$titre) {
$titre_fichier = _T('info_sans_titre_2');
$titre_fichier .= " <small>(".ereg_replace("^[^\/]*\/[^\/]*\/","",$fichier).")</small>";
}
$result = spip_query("SELECT * FROM spip_types_documents WHERE id_type=$id_type");
if ($type = @spip_fetch_array($result)) {
$type_extension = $type['extension'];
$type_inclus = $type['inclus'];
$type_titre = $type['titre'];
}
//
// Afficher un document
//
if ($mode == 'document') {
$titre_cadre = lignes_longues(typo($titre).typo($titre_fichier), 30);
debut_cadre_enfonce("doc-24.gif", false, "", $titre_cadre);
echo "<div style='float: $spip_lang_left;'>";
$block = "document $id_document";
if ($flag_deplie) echo bouton_block_visible($block);
else echo bouton_block_invisible($block);
echo "</div>";
//
// Affichage de la vignette
//
echo "<div align='center'>\n";
echo document_et_vignette($document, $url, true);
echo "</div>\n";
// Affichage du raccourci <doc...> correspondant
if (!ereg(",$id_document,", $doublons)) {
echo "<div style='padding:2px;'><font size='1' face='arial,helvetica,sans-serif'>";
if ($options == "avancees" AND ($type_inclus == "embed" OR $type_inclus == "image") AND $largeur > 0 AND $hauteur > 0) {
echo "<b>"._T('info_inclusion_vignette')."</b><br />";
}
echo "<font color='333333'>"
. affiche_raccourci_doc('doc', $id_document, 'left')
. affiche_raccourci_doc('doc', $id_document, 'center')
. affiche_raccourci_doc('doc', $id_document, 'right')
. "</font>\n";
echo "</font></div>";
if ($options == "avancees" AND ($type_inclus == "embed" OR $type_inclus == "image") AND $largeur > 0 AND $hauteur > 0) {
echo "<div style='padding:2px;'><font size='1' face='arial,helvetica,sans-serif'>";
echo "<b>"._T('info_inclusion_directe')."</b></br>";
echo "<font color='333333'>"
. affiche_raccourci_doc('emb', $id_document, 'left')
. affiche_raccourci_doc('emb', $id_document, 'center')
. affiche_raccourci_doc('emb', $id_document, 'right')
. "</font>\n";
echo "</font></div>";
}
}
//
// Edition des champs
//
if ($flag_deplie)
echo debut_block_visible($block);
else
echo debut_block_invisible($block);
if (ereg(",$id_document,", $doublons)) {
echo "<div style='padding:2px;'><font size='1' face='arial,helvetica,sans-serif'>";
echo affiche_raccourci_doc('doc', $id_document, '');
echo "</font></div>";
}
echo "<div class='verdana1' style='color: $couleur_foncee; border: 1px solid $couleur_foncee; padding: 5px; margin-top: 3px; text-align: left; background-color: white;'>";
if (strlen($descriptif) > 0) echo propre($descriptif)."<br />";
if ($options == "avancees") {
echo "<div style='color: black;'>";
if ($type_titre){
echo "$type_titre";
} else {
echo _T('info_document').' '.majuscules($type_extension);
}
if ($largeur * $hauteur)
echo ", "._T('info_largeur_vignette',
array('largeur_vignette' => $largeur,
'hauteur_vignette' => $hauteur));
echo ', '.taille_en_octets($taille);
echo "</div>";
}
$link = new Link($redirect_url);
$link->addVar('modif_document', 'oui');
$link->addVar('id_document', $id_document);
$link->addVar('show_docs', $id_document);
echo $link->getForm('POST');
echo "<b>"._T('entree_titre_document')."</b><br />\n";
echo "<input type='text' name='titre_document' class='formo' value=\"".entites_html($titre)."\" size='40'><br />\n";
if ($descriptif OR $options == "avancees") {
echo "<b>"._T('info_description_2')."</b><br />\n";
echo "<textarea name='descriptif_document' rows='4' class='formo' cols='*' wrap='soft'>";
echo entites_html($descriptif);
echo "</textarea>\n";
}
if ($options == "avancees")
afficher_formulaire_taille($document, $type_inclus);
echo "<div align='".$GLOBALS['spip_lang_right']."'>";
echo "<input TYPE='submit' class='fondo' style='font-size:9px;' NAME='Valider' VALUE='"._T('bouton_enregistrer')."'>";
echo "</div>";
echo "</form>";
$link_supp = new Link ($image_url);
$link_supp->addVar('redirect', $redirect_url);
$link_supp->addVar('hash', calculer_action_auteur("supp_doc ".$id_document));
$link_supp->addVar('hash_id_auteur', $connect_id_auteur);
$link_supp->addVar('doc_supp', $id_document);
$link_supp->addVar('ancre', 'documents');
echo "</div>";
echo fin_block();
// Fin edition des champs
echo "<p /><div align='center'>";
icone_horizontale(_T('icone_supprimer_document'), $link_supp->getUrl(), "doc-24.gif", "supprimer.gif");
echo "</div>";
// Bloc edition de la vignette
if ($options == 'avancees') {
echo "<div class='verdana1' style='color: $couleur_foncee; border: 1px solid $couleur_foncee; padding: 5px; margin-top: 3px;'>";
# 'extension', a ajouter dans la base quand on supprimera spip_types_documents
switch ($id_type) {
case 1:
$document['extension'] = "jpg";
break;
case 2:
$document['extension'] = "png";
break;
case 3:
$document['extension'] = "gif";
break;
}
bloc_gerer_vignette($document, $image_url, $redirect_url, 'documents');
echo "</div>\n";
}
fin_cadre_enfonce();
}
//
// Afficher une image inserable dans l'article
//
else if ($mode == 'vignette') {
$block = "image $id_document";
$titre_cadre = lignes_longues(typo($titre).typo($titre_fichier), 30);
debut_cadre_relief("image-24.gif", false, "", $titre_cadre);
echo "<div style='float: $spip_lang_left;'>";
if ($flag_deplie) echo bouton_block_visible($block);
else echo bouton_block_invisible($block);
echo "</div>";
//
// Preparer le raccourci a afficher sous la vignette ou sous l'apercu
//
$raccourci_doc = "<div style='padding:2px;'>
<font size='1' face='arial,helvetica,sans-serif'>";
if (strlen($descriptif) > 0 OR strlen($titre) > 0)
$doc = 'doc';
else
$doc = 'img';
if (!ereg(",$id_document,", $doublons)) {
$raccourci_doc .=
affiche_raccourci_doc($doc, $id_document, 'left')
. affiche_raccourci_doc($doc, $id_document, 'center')
. affiche_raccourci_doc($doc, $id_document, 'right');
} else {
$raccourci_doc .= affiche_raccourci_doc($doc, $id_document, '');;
}
$raccourci_doc .= "</font></div>\n";
//
// Afficher un apercu (pour les images)
//
if ($type_inclus == 'image') {
echo "<div style='text-align: center; padding: 2px;'>\n";
echo document_et_vignette($document, $url, true);
echo "</div>\n";
if (strlen($descriptif)>0)
echo "<font face='Verdana,Arial,Sans,sans-serif' size='2'>"
. propre($descriptif)
. "</font>";
if (!ereg(",$id_document,", $doublons))
echo $raccourci_doc;
}
if ($flag_deplie) echo debut_block_visible($block);
else echo debut_block_invisible($block);
if (ereg(",$id_document,", $doublons))
echo $raccourci_doc;
echo "\n<div class='verdana1' align='center'>",
_T('info_largeur_vignette', array('largeur_vignette' => $largeur, 'hauteur_vignette' => $hauteur)),
"</div>\n";
$link = new Link($redirect_url);
$link->addVar('modif_document', 'oui');
$link->addVar('id_document', $id_document);
$link->addVar('show_docs', $id_document);
echo $link->getForm('POST');
echo "<div class='verdana1' style='color: #999999; border: 1px solid #999999; padding: 5px; margin-top: 3px; text-align: left; background-color: #eeeeee;'>";
echo "<b>"._T('entree_titre_image')."</b><br />\n";
echo "<input type='text' name='titre_document' class='formo' value=\"".entites_html($titre)."\" size='40'><br />";
if ($descriptif OR $options == "avancees") {
echo "<b>"._T('info_description_2')."</b><br />\n";
echo "<textarea name='descriptif_document' rows='4' class='formo' cols='*' style='font-size:9px;' wrap='soft'>";
echo entites_html($descriptif);
echo "</textarea>\n";
}
echo "<div align='".$GLOBALS['spip_lang_right']."'>";
echo "<input class='fondo' style='font-size: 9px;' TYPE='submit' NAME='Valider' VALUE='"._T('bouton_enregistrer')."'>";
echo "</div>";
echo "</div>";
echo "</form>";
echo "<center>";
$link = new Link ($image_url);
$link->addVar('redirect', $redirect_url);
$link->addVar('hash', calculer_action_auteur("supp_doc ".$id_document));
$link->addVar('hash_id_auteur', $connect_id_auteur);
$link->addVar('doc_supp', $id_document);
$link->addVar('ancre', 'images');
icone_horizontale (_T('icone_supprimer_image'), $link->getUrl(), "image-24.gif", "supprimer.gif");
echo "</center>\n";
echo fin_block();
fin_cadre_relief();
}
}
function teste_doc_deplie($id_document) {
global $show_docs;
static $deplies;
if (!$deplies)
$deplies = split('-',$show_docs);
return in_array($id_document, $deplies);
}
// Mettre a jour la description du document postee par le redacteur
// TODO: pour le moment cette fonction ne sait traiter qu'un document...
function maj_documents ($id_objet, $type) {
global $_POST;
if ($id_objet
AND $id_document = intval($_POST['id_document'])
AND $_POST['modif_document'] == 'oui') {
// "securite" : verifier que le document est bien lie a l'objet
$result_doc = spip_query("SELECT * FROM spip_documents_".$type."s
WHERE id_document=".$id_document."
AND id_".$type." = $id_objet");
if (spip_num_rows($result_doc) > 0) {
$titre_document = addslashes(corriger_caracteres(
$_POST['titre_document']));
$descriptif_document = addslashes(corriger_caracteres(
$_POST['descriptif_document']));
$query = "UPDATE spip_documents
SET titre='$titre_document', descriptif='$descriptif_document'";
// taille du document (cas des embed)
if ($largeur_document = intval($_POST['largeur_document'])
AND $hauteur_document = intval($_POST['hauteur_document']))
$query .= ", largeur='$largeur_document',
hauteur='$hauteur_document'";
$query .= " WHERE id_document=".$_POST['id_document'];
spip_query($query);
// Date du document (uniquement dans les rubriques)
if ($_POST['jour_doc']) {
if ($_POST['annee_doc'] == "0000")
$_POST['mois_doc'] = "00";
if ($_POST['mois_doc'] == "00")
$_POST['jour_doc'] = "00";
$date = $_POST['annee_doc'].'-'
.$_POST['mois_doc'].'-'.$_POST['jour_doc'];
if (preg_match('/^[0-9-]+$/', $date)) {
spip_query("UPDATE spip_documents
SET date='$date'
WHERE id_document=$id_document");
// Changement de date, ce qui nous oblige a :
calculer_rubriques();
}
}
}
// Demander l'indexation du document
include_ecrire('inc_index.php3');
marquer_indexer('document', $id_document);
}
}
?>