source: spip-zone/_plugins_/couteau_suisse/cout_define.php @ 33520

Last change on this file since 33520 was 33520, checked in by patfr@…, 11 years ago

+1. Refonte des autorisations sur le Couteau Suisse, compatibles avec la mutualisation.

Compatibilité avec d'autres plugins (comme Autorité?) à tester...
On peut désormais choisir :

  • L'autorisation générale de configuration du plugin. Par exemple : juste les webmestres. Par défaut, on conserve le droit aux Admins non restreints.
  • L'autorisation particulière d'un outil
  • L'autorisation d'une catégorie entière d'outils

Tout passe par l'autorisation 'configurer'.
Quelques exemples indépendants (à réinterpréter bien sûr !) :

Facon rapide d'interdire des lames a la configuration et jouant sur une constante
switch($_SERVERHTTP_HOST?) {

case 'www.toto.org': break;
default: define('_CS_OUTILS_CACHES','maj_auto');

}

Peut-on configurer/voir l'outil maj_auto ?
function autoriser_outil_maj_auto_configurer($faire, $type, $id, $qui, $opt) {

return false;
return $_SERVERHTTP_HOST?==='www.toto.org';
return ...

}

Peut-on configurer/voir la categorie admin ?
function autoriser_categorie_admin_configurer($faire, $type, $id, $qui, $opt) {

return false;
return $_SERVERHTTP_HOST?==='www.toto.org';
return ...

}

Droits par defaut pour manipuler le CS : les admins non restreints
Attention cette surcharge ne doit etre presente qu'une seule fois !
function autoriser_cs_configurer($faire, $type, $id, $qui, $opt) {

Moi je veux les droits par defaut (suis un peu bete !)
return autoriser_cs_configurer_dist($faire, $type, $id, $qui, $opt);
Moi je veux uniquement l'auteur number one sur tous mes sites ;-)
return $quiid?===1;
Moi je veux uniquement kifkif sur tous mes sites !
return $quinom?==='kifkif';
Moi je veux uniquement les webmestres sur tous mes sites !
return autoriser('webmestre', $type, $id, $qui, $opt);
Moi je veux uniquement les webmestres, sauf sur 'www.toto.org' !
return $_SERVERHTTP_HOST?==='www.toto.org'

?autoriser_cs_configurer_dist($faire, $type, $id, $qui, $opt)
:autoriser('webmestre', $type, $id, $qui, $opt);

return ...

}

+2. Correction en langues de qq aberrations typo

+3. Première vague de corrections sur la gestion du fichier d'options SPIP en vue d'une compatibilité avec la mutualisation

File size: 5.8 KB
Line 
1<?php
2#-----------------------------------------------------#
3#  Plugin  : Couteau Suisse - Licence : GPL           #
4#  Auteur  : Patrice Vanneufville, 2006               #
5#  Contact : patrice¡.!vanneufville¡@!laposte¡.!net   #
6#  Infos : http://www.spip-contrib.net/?article2166   #
7#-----------------------------------------------------#
8if (!defined("_ECRIRE_INC_VERSION")) return;
9
10// Les constantes utilisees dans la description des outils ont la forme @_CS_MACONSTANTE@
11
12function cout_define($contexte) {
13$rss_source = 'http://zone.spip.org/trac/spip-zone/log/_plugins_/couteau_suisse?format=rss&mode=stop_on_copy&limit=20';
14switch($contexte) {
15        case 'distant':
16                // RSS de trac
17                @define('_CS_RSS_SOURCE', $rss_source);
18                // Doc de spip-contrib.net
19                @define('_URL_CONTRIB', 'http://www.spip-contrib.net/?article');
20                // Revisions du CS
21                @define('_URL_CS_PLUGIN_XML', 'http://zone.spip.org/trac/spip-zone/browser/_plugins_/couteau_suisse/plugin.xml?format=txt');
22                // on met a jour le flux rss toutes les 2 heures
23                // contrib ici qui devra passer en fond et utiliser le cache de SPIP !
24                define('_CS_RSS_UPDATE', 2*3600);
25                define('_CS_RSS_COUNT', 15);
26                break;
27
28        // contexte general lie au descriptions d'outils
29        case 'description_outils':
30                define('_VAR_OUTIL', '@@CS_VAR_OUTIL@@');
31                @define('_CS_CHOIX', _T('couteauprive:votre_choix'));
32                @define('_CS_ASTER', '<sup>(*)</sup>');
33                @define('_CS_PLUGIN_JQUERY192', defined('_SPIP19300')?'':_T('couteauprive:detail_jquery3'));
34                break;
35               
36        case 'couleurs':
37                @define('_CS_EXEMPLE_COULEURS', '<br /><span style="font-weight:normal; font-size:85%;"><span style="background-color:black; color:white;">black/noir</span>, <span style="background-color:red;">red/rouge</span>, <span style="background-color:maroon;">maroon/marron</span>, <span style="background-color:green;">green/vert</span>, <span style="background-color:olive;">olive/vert&nbsp;olive</span>, <span style="background-color:navy; color:white;">navy/bleu&nbsp;marine</span>, <span style="background-color:purple;">purple/violet</span>, <span style="background-color:gray;">gray/gris</span>, <span style="background-color:silver;">silver/argent</span>, <span style="background-color:chartreuse;">chartreuse/vert&nbsp;clair</span>, <span style="background-color:blue;">blue/bleu</span>, <span style="background-color:fuchsia;">fuchsia/fuchia</span>, <span style="background-color:aqua;">aqua/bleu&nbsp;clair</span>, <span style="background-color:white;">white/blanc</span>, <span style="background-color:azure;">azure/bleu&nbsp;azur</span>, <span style="background-color:bisque;">bisque/beige</span>, <span style="background-color:brown;">brown/brun</span>, <span style="background-color:blueviolet;">blueviolet/bleu&nbsp;violet</span>, <span style="background-color:chocolate;">chocolate/brun&nbsp;clair</span>, <span style="background-color:cornsilk;">cornsilk/rose&nbsp;clair</span>, <span style="background-color:darkgreen;">darkgreen/vert&nbsp;fonce</span>, <span style="background-color:darkorange;">darkorange/orange&nbsp;fonce</span>, <span style="background-color:darkorchid;">darkorchid/mauve&nbsp;fonce</span>, <span style="background-color:deepskyblue;">deepskyblue/bleu&nbsp;ciel</span>, <span style="background-color:gold;">gold/or</span>, <span style="background-color:ivory;">ivory/ivoire</span>, <span style="background-color:orange;">orange/orange</span>, <span style="background-color:lavender;">lavender/lavande</span>, <span style="background-color:pink;">pink/rose</span>, <span style="background-color:plum;">plum/prune</span>, <span style="background-color:salmon;">salmon/saumon</span>, <span style="background-color:snow;">snow/neige</span>, <span style="background-color:turquoise;">turquoise/turquoise</span>, <span style="background-color:wheat;">wheat/jaune&nbsp;paille</span>, <span style="background-color:yellow;">yellow/jaune</span></span><span style="font-size:50%;"><br />&nbsp;</span>');
38                @define('_CS_EXEMPLE_COULEURS2', "\n-* <code>Lorem ipsum [rouge]dolor[/rouge] sit amet</code>\n-* <code>Lorem ipsum [red]dolor[/red] sit amet</code>.");
39                @define('_CS_EXEMPLE_COULEURS3', "\n-* <code>Lorem ipsum [fond rouge]dolor[/fond rouge] sit amet</code>\n-* <code>Lorem ipsum [bg red]dolor[/bg red] sit amet</code>.");
40                break;
41        case 'cs_comportement':
42                @define('_CS_DIR_TMP', cs_canonicalize(_DIR_RESTREINT_ABS._DIR_TMP));
43                @define('_CS_FILE_OPTIONS', cs_canonicalize(
44                        // Mutualisation ?
45                        str_replace('../', '', defined('_DIR_SITE')?_DIR_SITE:'')
46                        ._DIR_RESTREINT_ABS
47                        .cs_spip_file_options(3)
48                ));
49                break;
50        case 'auteur_forum':
51                @define('_CS_FORUM_NOM', preg_replace(',:$,','',_T('forum_votre_nom')));
52                @define('_CS_FORUM_EMAIL', preg_replace(',:$,','',_T('forum_votre_email')));
53                break;
54        case 'en_travaux':
55                @define('_CS_TRAVAUX_TITRE', '<i>'._T('info_travaux_titre').'</i>');
56                @define('_CS_NOM_SITE', '<i>'.$GLOBALS['meta']['nom_site'].'</i>');
57                break;
58        case 'webmestres':
59                def_liste_adminsitrateurs();
60                break;
61        case 'boites_privees':
62                // RSS de trac
63                @define('_CS_RSS_SOURCE', $rss_source);
64                break;
65
66}} // function cout_define($contexte)
67
68// Qui sont les webmestres et les administrateurs ?
69function def_liste_adminsitrateurs() {
70        include_spip('inc/autoriser');
71        include_spip('inc/texte');
72        $webmestres = array();
73        $s = spip_query("SELECT * FROM spip_auteurs WHERE statut='0minirezo'");
74        $fetch = function_exists('sql_fetch')?'sql_fetch':'spip_fetch_array'; // compatibilite SPIP 1.92
75        while ($qui = $fetch($s)) {
76                $nom = typo($qui['nom']." (id_auteur=$qui[id_auteur])");
77                if (autoriser('webmestre','','',$qui)) $webmestres[$qui['id_auteur']] = $nom;
78                else if (autoriser('configurer','plugins','',$qui)) $admins[$qui['id_auteur']] = $nom;
79        }
80        @define('_CS_LISTE_WEBMESTRES', join(', ', $webmestres));
81        @define('_CS_LISTE_ADMINS', join(', ', $admins));
82}
83
84?>
Note: See TracBrowser for help on using the repository browser.