1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/spip_ynh.git synced 2024-09-03 20:25:59 +02:00
spip_ynh/sources/plugins-dist/svp/svp_pipelines.php
2015-04-28 17:10:23 +02:00

134 lines
3.9 KiB
PHP

<?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;
}
?>