3 * Déclarations d'autorisations et utilisations de pipelines
5 * @plugin SVP pour SPIP
7 * @package SPIP\SVP\Pipelines
11 * Fonction du pipeline autoriser. N'a rien à faire
14 function svp_autoriser(){}
17 * Autoriser l'iconification (mettre un logo) d'un dépot
19 * @param string $faire Action demandée
20 * @param string $type Type d'objet sur lequel appliquer l'action
21 * @param int $id Identifiant de l'objet
22 * @param array $qui Description de l'auteur demandant l'autorisation
23 * @param array $opt Options de cette autorisation
24 * @return bool true s'il a le droit, false sinon
26 function autoriser_depot_iconifier_dist($faire, $type, $id, $qui, $opt){
32 * Autoriser l'ajout d'un plugin ou d'un dépôt
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
41 function autoriser_plugins_ajouter_dist($faire, $type, $id, $qui, $opt){
42 if (!defined('_AUTORISER_TELECHARGER_PLUGINS'))
43 define('_AUTORISER_TELECHARGER_PLUGINS', true);
44 return _AUTORISER_TELECHARGER_PLUGINS
AND autoriser('webmestre');
49 * Ajout de l'onglet 'Ajouter les plugins'
51 * L'URL dépend de l'existence ou pas d'un dépot de plugins.
52 * En absence, on amène sur la page permettant de créer un premier dépot.
54 * @pipeline ajouter_onglets
55 * @param array $flux Données du pipeline
56 * @return array Données du pipeline
58 function svp_ajouter_onglets($flux){
59 if (($flux['args']=='plugins')
60 AND (autoriser('ajouter', '_plugins'))){
61 $compteurs = svp_compter('depot');
62 $page = ($compteurs['depot'] == 0) ?
'depots' : 'charger_plugin';
63 $flux['data']['charger_plugin'] =
65 find_in_theme('images/plugin-add-24.png'),
66 'plugin_titre_automatique_ajouter',
67 generer_url_ecrire($page));
74 * Ne pas afficher par défaut les paquets,dépots,plugins locaux dans les boucles
76 * On n'affiche dans les boucles (PLUGINS) (DEPOTS) et (PAQUETS)
77 * que les éléments distants par défaut (on cache les locaux).
79 * Utiliser {tout} pour tout avoir.
80 * Utiliser {tout}{id_depot=0} pour avoir les plugins ou paquets locaux.
82 * @pipeline pre_boucle
83 * @param Boucle $boucle Description de la boucle
84 * @return Boucle Description de la boucle
86 function svp_pre_boucle($boucle) {
89 // Pour DEPOTS, on n'a jamais id_depot=0 dedans... donc... pas la peine.
91 $boucle->type_requete
== 'paquets'
92 # OR $boucle->type_requete == 'depots'
94 $id_table = $boucle->id_table
;
95 $m_id_depot = $id_table .'.id_depot';
96 // Restreindre aux depots distants
98 #!isset($boucle->modificateur['criteres']['id_depot']) &&
99 !isset($boucle->modificateur
['tout'])) {
100 $boucle->where
[] = array("'>'", "'$m_id_depot'", "'\"0\"'");
104 elseif ($boucle->type_requete
== 'plugins') {
105 $id_table = $boucle->id_table
;
107 // les modificateurs ne se creent que sur les champs de la table principale
108 // pas sur une jointure, il faut donc analyser les criteres passes pour
109 // savoir si l'un deux est un 'id_depot'...
112 foreach($boucle->criteres as $c){
113 if (($c->op == 'id_depot') // {id_depot} ou {id_depot?}
114 OR ($c->param[0][0]->texte == 'id_depot')) // {id_depot=x}
123 !isset($boucle->modificateur
['tout'])) {
124 // Restreindre aux plugins distant (id_depot > 0)
125 $boucle->from
["depots_plugins"] = "spip_depots_plugins";
126 $boucle->where
[] = array("'='", "'depots_plugins.id_plugin'", "'$id_table.id_plugin'");
127 $boucle->where
[] = array("'>'", "'depots_plugins.id_depot'", "'\"0\"'");