123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- <?php
- /**
- * Déclarations d'autorisations et utilisations de pipelines
- *
- * @plugin SVP pour SPIP
- * @license GPL
- * @package SPIP\SVP\Pipelines
- **/
- /**
- * Fonction du pipeline autoriser. N'a rien à faire
- * @pipeline autoriser
- */
- function svp_autoriser(){}
- /**
- * Autoriser l'iconification (mettre un logo) d'un dépot
- *
- * @param string $faire Action demandée
- * @param string $type Type d'objet sur lequel appliquer l'action
- * @param int $id Identifiant de l'objet
- * @param array $qui Description de l'auteur demandant l'autorisation
- * @param array $opt Options de cette autorisation
- * @return bool true s'il a le droit, false sinon
- */
- function autoriser_depot_iconifier_dist($faire, $type, $id, $qui, $opt){
- return true;
- }
- /**
- * Autoriser l'ajout d'un plugin ou d'un dépôt
- *
- * @param string $faire Action demandée
- * @param string $type Type d'objet sur lequel appliquer l'action
- * @param int $id Identifiant de l'objet
- * @param array $qui Description de l'auteur demandant l'autorisation
- * @param array $opt Options de cette autorisation
- * @return bool true s'il a le droit, false sinon
- */
- function autoriser_plugins_ajouter_dist($faire, $type, $id, $qui, $opt){
- if (!defined('_AUTORISER_TELECHARGER_PLUGINS'))
- define('_AUTORISER_TELECHARGER_PLUGINS', true);
- return _AUTORISER_TELECHARGER_PLUGINS AND autoriser('webmestre');
- }
- /**
- * Ajout de l'onglet 'Ajouter les plugins'
- *
- * L'URL dépend de l'existence ou pas d'un dépot de plugins.
- * En absence, on amène sur la page permettant de créer un premier dépot.
- *
- * @pipeline ajouter_onglets
- * @param array $flux Données du pipeline
- * @return array Données du pipeline
- */
- function svp_ajouter_onglets($flux){
- if (($flux['args']=='plugins')
- AND (autoriser('ajouter', '_plugins'))){
- $compteurs = svp_compter('depot');
- $page = ($compteurs['depot'] == 0) ? 'depots' : 'charger_plugin';
- $flux['data']['charger_plugin'] =
- new Bouton(
- find_in_theme('images/plugin-add-24.png'),
- 'plugin_titre_automatique_ajouter',
- generer_url_ecrire($page));
- }
- return $flux;
- }
- /**
- * Ne pas afficher par défaut les paquets,dépots,plugins locaux dans les boucles
- *
- * On n'affiche dans les boucles (PLUGINS) (DEPOTS) et (PAQUETS)
- * que les éléments distants par défaut (on cache les locaux).
- *
- * Utiliser {tout} pour tout avoir.
- * Utiliser {tout}{id_depot=0} pour avoir les plugins ou paquets locaux.
- *
- * @pipeline pre_boucle
- * @param Boucle $boucle Description de la boucle
- * @return Boucle Description de la boucle
- **/
- function svp_pre_boucle($boucle) {
- // DEPOTS, PAQUETS
- // Pour DEPOTS, on n'a jamais id_depot=0 dedans... donc... pas la peine.
- if (
- $boucle->type_requete == 'paquets'
- # OR $boucle->type_requete == 'depots'
- ) {
- $id_table = $boucle->id_table;
- $m_id_depot = $id_table .'.id_depot';
- // Restreindre aux depots distants
- if (
- #!isset($boucle->modificateur['criteres']['id_depot']) &&
- !isset($boucle->modificateur['tout'])) {
- $boucle->where[] = array("'>'", "'$m_id_depot'", "'\"0\"'");
- }
- }
- // PLUGINS
- elseif ($boucle->type_requete == 'plugins') {
- $id_table = $boucle->id_table;
- /*
- // les modificateurs ne se creent que sur les champs de la table principale
- // pas sur une jointure, il faut donc analyser les criteres passes pour
- // savoir si l'un deux est un 'id_depot'...
- $id_depot = false;
- foreach($boucle->criteres as $c){
- if (($c->op == 'id_depot') // {id_depot} ou {id_depot?}
- OR ($c->param[0][0]->texte == 'id_depot')) // {id_depot=x}
- {
- $id_depot = true;
- break;
- }
- }
- */
- if (
- # !$id_depot &&
- !isset($boucle->modificateur['tout'])) {
- // Restreindre aux plugins distant (id_depot > 0)
- $boucle->from["depots_plugins"] = "spip_depots_plugins";
- $boucle->where[] = array("'='", "'depots_plugins.id_plugin'", "'$id_table.id_plugin'");
- $boucle->where[] = array("'>'", "'depots_plugins.id_depot'", "'\"0\"'");
- }
- }
- return $boucle;
- }
- ?>
|