source: spip-zone/_core_/plugins/medias/medias_fonctions.php @ 70340

Last change on this file since 70340 was 70340, checked in by spip.franck@…, 7 years ago

Coquille de 70192, il manquait une lettre "r" à retourne.

File size: 6.3 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2013                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13/**
14 * Fonctions utiles pour les squelettes et déclarations de boucle
15 * pour le compilateur
16 *
17 * @package SPIP\Medias\Fonctions
18**/
19
20// sécurité
21if (!defined('_ECRIRE_INC_VERSION')) return;
22
23
24/**
25 * Afficher la puce de statut pour les documents
26 *
27 * @param int $id_document
28 *     Identifiant du document
29 * @param string $statut
30 *     Statut du document
31 * @return string
32 *     Code HTML de l'image de puce
33 */
34function medias_puce_statut_document($id_document, $statut){
35        if ($statut=='publie') {
36                $puce='puce-verte.gif';
37        }
38        else if ($statut == "prepa") {
39                $puce = 'puce-blanche.gif';
40        }
41        else if ($statut == "poubelle") {
42                $puce = 'puce-poubelle.gif';
43        }
44        else
45                $puce = 'puce-blanche.gif';
46
47        return http_img_pack($puce, $statut, "class='puce'");
48}
49
50
51/**
52 * Compile la boucle `DOCUMENTS` qui retourne une liste de documents multimédia
53 *
54 * `<BOUCLE(DOCUMENTS)>`
55 *
56 * @param string $id_boucle
57 *     Identifiant de la boucle
58 * @param array $boucles
59 *     AST du squelette
60 * @return string
61 *     Code PHP compilé de la boucle
62**/
63function boucle_DOCUMENTS($id_boucle, &$boucles) {
64        $boucle = &$boucles[$id_boucle];
65        $id_table = $boucle->id_table;
66
67        // on ne veut pas des fichiers de taille nulle,
68        // sauf s'ils sont distants (taille inconnue)
69        array_unshift($boucle->where,array("'($id_table.taille > 0 OR $id_table.distant=\\'oui\\')'"));
70
71        /**
72         * N'afficher que les modes de documents que l'on accepte
73         * Utiliser le "pipeline medias_documents_visibles" pour en ajouter
74         */
75        if (!isset($boucle->modificateur['criteres']['mode'])
76        AND !isset($boucle->modificateur['tout'])) {
77                $modes = pipeline('medias_documents_visibles',array('image','document'));
78                $f = sql_serveur('quote', $boucle->sql_serveur, true);
79                $modes = addslashes(join(',', array_map($f, array_unique($modes))));
80                array_unshift($boucle->where,array("'IN'", "'$id_table.mode'", "'($modes)'"));
81        }
82
83        return calculer_boucle($id_boucle, $boucles);
84}
85
86
87function lien_objet($id,$type,$longueur=80,$connect=NULL){
88        include_spip('inc/liens');
89        $titre = traiter_raccourci_titre($id, $type, $connect);
90        // lorsque l'objet n'est plus declare (plugin desactive par exemple)
91        // le raccourcis n'est plus valide
92        $titre = isset($titre['titre']) ? typo($titre['titre']) : '';
93        if (!strlen($titre))
94                $titre = _T('info_sans_titre');
95        $url = generer_url_entite($id,$type);
96        return "<a href='$url' class='$type'>".couper($titre,$longueur)."</a>";
97}
98
99/**
100 * critere {orphelins} selectionne les documents sans liens avec un objet editorial
101 *
102 * @param string $idb
103 * @param object $boucles
104 * @param object $crit
105 */
106function critere_DOCUMENTS_orphelins_dist($idb, &$boucles, $crit) {
107
108        $boucle = &$boucles[$idb];
109        $cond = $crit->cond;
110        $not = $crit->not?"":"NOT";
111
112        $select = sql_get_select("DISTINCT id_document","spip_documents_liens as oooo");
113        $where = "'".$boucle->id_table.".id_document $not IN ($select)'";
114        if ($cond){
115                $_quoi = '@$Pile[0]["orphelins"]';
116                $where = "($_quoi)?$where:''";
117        }
118
119        $boucle->where[]= $where;
120}
121
122/**
123 * critere {portrait} qui selectionne
124 * - les documents dont les dimensions sont connues
125 * - les documents dont la hauteur est superieure a la largeur
126 *
127 * {!portrait} exclus ces documents
128 *
129 * @param string $idb
130 * @param object $boucles
131 * @param object $crit
132 */
133function critere_DOCUMENTS_portrait_dist($idb, &$boucles, $crit) {
134        $boucle = &$boucles[$idb];
135        $table = $boucle->id_table;
136        $not = ($crit->not?"NOT ":"");
137        $boucle->where[] = "'$not($table.largeur>0 AND $table.hauteur > $table.largeur)'";
138}
139
140/**
141 * critere {paysage} qui selectionne
142 * - les documents dont les dimensions sont connues
143 * - les documents dont la hauteur est inferieure a la largeur
144 *
145 * {!paysage} exclus ces documents
146 *
147 * @param string $idb
148 * @param object $boucles
149 * @param object $crit
150 */
151function critere_DOCUMENTS_paysage_dist($idb, &$boucles, $crit) {
152        $boucle = &$boucles[$idb];
153        $table = $boucle->id_table;
154        $not = ($crit->not?"NOT ":"");
155        $boucle->where[] = "'$not($table.largeur>0 AND $table.largeur > $table.hauteur)'";
156}
157
158/**
159 * critere {carre} qui selectionne
160 * - les documents dont les dimensions sont connues
161 * - les documents dont la hauteur est egale a la largeur
162 *
163 * {!carre} exclus ces documents
164 *
165 * @param string $idb
166 * @param object $boucles
167 * @param object $crit
168 */
169function critere_DOCUMENTS_carre_dist($idb, &$boucles, $crit) {
170        $boucle = &$boucles[$idb];
171        $table = $boucle->id_table;
172        $not = ($crit->not?"NOT ":"");
173        $boucle->where[] = "'$not($table.largeur>0 AND $table.largeur = $table.hauteur)'";
174}
175
176
177/**
178 * Calcule la vignette d'une extension (l'image du type de fichier)
179 *
180 * Utile dans une boucle DOCUMENTS pour afficher une vignette du type
181 * du document (#EXTENSION) alors que ce document a déjà une vignette
182 * personnalisée (affichable par #LOGO_DOCUMENT).
183 *
184 * @example
185 *     [(#EXTENSION|vignette)] produit une balise <img ... />
186 *     [(#EXTENSION|vignette{true})] retourne le chemin de l'image
187 *
188 * @param string $extension
189 *     L'extension du fichier, exemple : png ou pdf
190 * @param bool $get_chemin
191 *     false pour obtenir une balise img de l'image,
192 *     true pour obtenir seulement le chemin du fichier
193 * @return string
194 *     Balise HTML <img...> ou chemin du fichier
195**/
196function filtre_vignette_dist($extension='defaut', $get_chemin = false) {
197        static $vignette = false;
198        static $balise_img = false;
199
200        if (!$vignette) {
201                $vignette = charger_fonction('vignette', 'inc');
202                $balise_img = charger_filtre('balise_img');
203        }
204
205        $fichier = $vignette($extension, false);
206        // retourne simplement le chemin du fichier
207        if ($get_chemin) {
208                return $fichier;
209        }
210        // retourne une balise <img ... />
211        return $balise_img($fichier);
212}
213
214?>
Note: See TracBrowser for help on using the repository browser.