Changeset 85946 in spip-zone


Ignore:
Timestamp:
Nov 9, 2014, 6:51:43 PM (5 years ago)
Author:
tcharlss@…
Message:

Autorisations : prise en charge du plugin autorité, cf. http://contrib.spip.net/Albums-3#forum477852
On a toujours le droit de modifier un album lié à une rubrique wiki/ouverte, ou un de ses articles, dans la mesure ou l'album n'est utilisé qu'une fois.
+ correction d'une coquille qui empêchait de dissocier un album si on avait le droit de modifier l'objet lié, mais pas l'album.

z de up, wesh.

Location:
_plugins_/albums/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/albums/trunk/albums_autorisations.php

    r83859 r85946  
    126126 * Dans ce cas il faut contourner le problème en vérifiant si l'objet vient juste d'être créé.
    127127 * cf. autorisation à modifier un album : même combat.
     128 *
     129 * TODO
     130 * Le problème du hack est réglé avec SPIP 3.1, n'y avoir recours que pour les versions antérieures.
    128131 *
    129132 * @example
     
    187190 *
    188191 * Il faut être l'auteur et avoir le droit de modifier tous les objets auxquels l'album est lié,
    189  * ou qu'il s'agisse d'un album en cours de création (vide, pas d'auteur et récent, cf. note).
    190  * ou être admin complet.
     192 * ou qu'il s'agisse d'un album en cours de création (vide, pas d'auteur et récent, cf. note),
     193 * ou être admin complet,
     194 * ou que l'album soit lié à une rubrique wiki/ouverte ou un de ses article et utilisé une seule fois (plugin autorité).
    191195 *
    192196 * @note
     
    200204 * cf. autorisation à ajouter un album : même combat.
    201205 *
     206 * TODO
     207 * Le problème du hack est réglé avec SPIP 3.1, n'y avoir recours que pour les versions antérieures.
     208 *
    202209 * @param  string $faire Action demandée
    203210 * @param  string $type  Type d'objet sur lequel appliquer l'action
     
    223230        // dans ce cas id_objet est négatif
    224231        $autoriser_modifier_objets_lies = true;
    225         if (is_array($liens_objets = objet_trouver_liens(array('album'=>$id),'*'))){
     232        $liens_objets = objet_trouver_liens(array('album'=>$id),'*');
     233        if (is_array($liens_objets)){
    226234                foreach($liens_objets as $l) {
    227235                        $objet = $l['objet'];
     
    251259                true : false;
    252260
     261        // album lié à une rubrique wiki/ouverte ou un de ses article et utilisé une seule fois (plugin autorité)
     262        $album_wiki = false;
     263        if (defined('_DIR_PLUGIN_AUTORITE') AND _DIR_PLUGIN_AUTORITE){
     264                if (
     265                        is_array($liens_objets)
     266                        AND count($liens_objets) == 1
     267                        AND $objet = $liens_objets[0]['objet']
     268                        AND $id_objet = $liens_objets[0]['id_objet']
     269                        AND in_array($objet,array('article','rubrique'))
     270                ) {
     271                        $id_secteur = sql_getfetsel('id_secteur',table_objet_sql($objet),id_table_objet($objet).'='.intval($id_objet));
     272                        // on cherche à savoir la rubrique est wiki/ouverte.
     273                        // comme autorité ne fournit pas de fonction générique pour ça,
     274                        // on reprend une partie du code de l'autorisation 'rubrique_publierdans'.
     275                        // cf. inc/autoriser.php L291 à 317
     276                        if (
     277                                (
     278                                        $GLOBALS['autorite']['espace_publieur']
     279                                        AND autorisation_publie_visiteur($qui, $id_secteur)
     280                                        AND $qui['statut']
     281                                )
     282                                OR (
     283                                        $GLOBALS['autorite']['espace_wiki']
     284                                        AND autorisation_wiki_visiteur($qui, $id_secteur)
     285                                        AND (
     286                                                $GLOBALS['autorite']['espace_wiki_rubrique_anonyme']
     287                                                OR $qui['statut']
     288                                        )
     289                                )
     290                        ){
     291                                $album_wiki = true;
     292                        }
     293                }
     294        }
     295
    253296        $autoriser = (
    254297                ($auteur_album AND $autoriser_modifier_objets_lies)
    255298                OR $nouvel_album
    256299                OR $admin_complet
     300                OR $album_wiki
    257301        ) ? true : false;
    258302
     
    327371        $autoriser = (
    328372                ($qui['statut'] == '0minirezo' AND !$qui['restreint'])
    329                 OR (autoriser('modifier', $opts['objet'], $opt['id_objet'], $qui))
     373                OR (autoriser('modifier', $opts['objet'], $opts['id_objet'], $qui))
    330374        ) ? true : false;
    331375
  • _plugins_/albums/trunk/paquet.xml

    r85904 r85946  
    22        prefix="albums"
    33        categorie="multimedia"
    4         version="3.2.6"
     4        version="3.2.7"
    55        schema="1.0.0"
    66        etat="dev"
Note: See TracChangeset for help on using the changeset viewer.