[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins-dist / svp / svp_pipelines.php
1 <?php
2 /**
3 * Déclarations d'autorisations et utilisations de pipelines
4 *
5 * @plugin SVP pour SPIP
6 * @license GPL
7 * @package SPIP\SVP\Pipelines
8 **/
9
10 /**
11 * Fonction du pipeline autoriser. N'a rien à faire
12 *
13 * @pipeline autoriser
14 */
15 function svp_autoriser() { }
16
17 /**
18 * Autoriser l'iconification (mettre un logo) d'un dépot
19 *
20 * @param string $faire Action demandée
21 * @param string $type Type d'objet sur lequel appliquer l'action
22 * @param int $id Identifiant de l'objet
23 * @param array $qui Description de l'auteur demandant l'autorisation
24 * @param array $opt Options de cette autorisation
25 * @return bool true s'il a le droit, false sinon
26 */
27 function autoriser_depot_iconifier_dist($faire, $type, $id, $qui, $opt) {
28 return true;
29 }
30
31 /**
32 * Autoriser l'ajout d'un plugin ou d'un dépôt
33 *
34 * @param string $faire Action demandée
35 * @param string $type Type d'objet sur lequel appliquer l'action
36 * @param int $id Identifiant de l'objet
37 * @param array $qui Description de l'auteur demandant l'autorisation
38 * @param array $opt Options de cette autorisation
39 * @return bool true s'il a le droit, false sinon
40 */
41 function autoriser_plugins_ajouter_dist($faire, $type, $id, $qui, $opt) {
42 if (!defined('_AUTORISER_TELECHARGER_PLUGINS')) {
43 define('_AUTORISER_TELECHARGER_PLUGINS', true);
44 }
45
46 return _AUTORISER_TELECHARGER_PLUGINS and autoriser('webmestre');
47 }
48
49
50 /**
51 * Ajout de l'onglet 'Ajouter les plugins'
52 *
53 * L'URL dépend de l'existence ou pas d'un dépot de plugins.
54 * En absence, on amène sur la page permettant de créer un premier dépot.
55 *
56 * @pipeline ajouter_onglets
57 * @param array $flux Données du pipeline
58 * @return array Données du pipeline
59 */
60 function svp_ajouter_onglets($flux) {
61 if (($flux['args'] == 'plugins')
62 and (autoriser('ajouter', '_plugins'))
63 ) {
64 $compteurs = svp_compter('depot');
65 $page = ($compteurs['depot'] == 0) ? 'depots' : 'charger_plugin';
66 $flux['data']['charger_plugin'] =
67 new Bouton(
68 find_in_theme('images/plugin-add-24.png'),
69 'plugin_titre_automatique_ajouter',
70 generer_url_ecrire($page));
71 }
72
73 return $flux;
74 }
75
76
77 /**
78 * Ne pas afficher par défaut les paquets,dépots,plugins locaux dans les boucles
79 *
80 * On n'affiche dans les boucles (PLUGINS) (DEPOTS) et (PAQUETS)
81 * que les éléments distants par défaut (on cache les locaux).
82 *
83 * Utiliser {tout} pour tout avoir.
84 * Utiliser {tout}{id_depot=0} pour avoir les plugins ou paquets locaux.
85 *
86 * @pipeline pre_boucle
87 * @param Boucle $boucle Description de la boucle
88 * @return Boucle Description de la boucle
89 **/
90 function svp_pre_boucle($boucle) {
91
92 // DEPOTS, PAQUETS
93 // Pour DEPOTS, on n'a jamais id_depot=0 dedans... donc... pas la peine.
94 if (
95 $boucle->type_requete == 'paquets'
96 # OR $boucle->type_requete == 'depots'
97 ) {
98 $id_table = $boucle->id_table;
99 $m_id_depot = $id_table . '.id_depot';
100 // Restreindre aux depots distants
101 if (
102 #!isset($boucle->modificateur['criteres']['id_depot']) &&
103 !isset($boucle->modificateur['tout'])
104 ) {
105 $boucle->where[] = array("'>'", "'$m_id_depot'", "'\"0\"'");
106 }
107 } // PLUGINS
108 elseif ($boucle->type_requete == 'plugins') {
109 $id_table = $boucle->id_table;
110 /*
111 // les modificateurs ne se creent que sur les champs de la table principale
112 // pas sur une jointure, il faut donc analyser les criteres passes pour
113 // savoir si l'un deux est un 'id_depot'...
114
115 $id_depot = false;
116 foreach($boucle->criteres as $c){
117 if (($c->op == 'id_depot') // {id_depot} ou {id_depot?}
118 OR ($c->param[0][0]->texte == 'id_depot')) // {id_depot=x}
119 {
120 $id_depot = true;
121 break;
122 }
123 }
124 */
125 if (
126 # !$id_depot &&
127 !isset($boucle->modificateur['tout'])
128 ) {
129 // Restreindre aux plugins distant (id_depot > 0)
130 $boucle->from["depots_plugins"] = "spip_depots_plugins";
131 $boucle->where[] = array("'='", "'depots_plugins.id_plugin'", "'$id_table.id_plugin'");
132 $boucle->where[] = array("'>'", "'depots_plugins.id_depot'", "'\"0\"'");
133 }
134 }
135
136 return $boucle;
137
138 }