Author: alain@barbason.be
Date: Tue Aug 8 07:59:23 2006
New Revision: 4424
Log:
original
Added:
_contribs_/_ecrire_/accessibilite/inc_documents.php3
Added: _contribs_/_ecrire_/accessibilite/inc_documents.php3
--- _contribs_/_ecrire_/accessibilite/inc_documents.php3 (added)
+++ _contribs_/_ecrire_/accessibilite/inc_documents.php3 Tue Aug 8 07:59:23 2006
@@ -0,0 +1,1435 @@
+<?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;
[... 1158 lines stripped ...]