Changeset 73497 in spip-zone


Ignore:
Timestamp:
Jun 11, 2013, 12:01:03 PM (6 years ago)
Author:
kent1@…
Message:

Premier fix pour http://contrib.spip.net/Tickets-suivi-de-bugs#forum468346

Définir les autorisations de boutons pour que :

  • tout utilisateur dans le privé puisse accéder à la liste des tickets
  • les utilisateurs qui peuvent créer un ticket aient accès au bouton de création rapide de ticket

Version 2.6.2

Location:
_plugins_/tickets/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/tickets/trunk/inc/tickets_autoriser.php

    r73494 r73497  
    22/**
    33 * Plugin Tickets
    4  * Licence GPL (c) 2008-2012
     4 * Licence GPL (c) 2008-2013
    55 *
    66 */
     
    7777 */
    7878function autoriser_ticket_ecrire_dist($faire, $type, $id, $qui, $opt){
     79        if(($qui['webmestre'] == 'oui') && $qui['statut'] == '0minirezo')
     80                return true;
     81       
    7982        $autorise = false;
    8083        $utiliser_defaut = true;
     
    140143 * (défini qui peu assigner les tickets)
    141144 *
     145 * - Les webmestres
    142146 * @param string $faire : l'action à faire
    143147 * @param string $type : le type d'objet sur lequel porte l'action
     
    148152 */
    149153function autoriser_ticket_assigner_dist($faire, $type, $id, $qui, $opt){
     154        if(($qui['webmestre'] == 'oui') && $qui['statut'] == '0minirezo')
     155                return true;
     156       
    150157        $autorise = false;
    151158        $utiliser_defaut = true;
     
    192199
    193200/**
    194  * Autorisation de notification des tickets
    195  * (défini qui doit être notifié)
    196  *
    197  * @param string $faire : l'action à faire
    198  * @param string $type : le type d'objet sur lequel porte l'action
    199  * @param int $id : l'identifiant numérique de l'objet
    200  * @param array $qui : les éléments de session de l'utilisateur en cours
    201  * @param array $opt : les options
    202  * @return boolean true/false : true si autorisé, false sinon
    203  */
    204 function autoriser_ticket_commenter_dist($faire, $type, $id, $qui, $opt){
    205         $autorise = false;
    206         $utiliser_defaut = true;
    207 
    208         if(autoriser_ticket_modifier_dist($faire, $type, $id, $qui, $opt))
    209                 return autoriser_ticket_modifier_dist($faire, $type, $id, $qui, $opt);
    210        
    211         if(!function_exists('lire_config'))
    212                 include_spip('inc/config');
    213        
    214         $type = lire_config('tickets/autorisations/commenter_type', 'par_statut');
    215         if($type){
    216                 switch($type) {
    217                         case 'webmestre':
    218                                 // Webmestres uniquement
    219                                 $autorise = ($qui['webmestre'] == 'oui');
    220                                 break;
    221                         case 'par_statut':
    222                                 // Traitement spécifique pour la valeur 'tous'
    223                                 if(in_array('tous',lire_config('tickets/autorisations/commenter_statuts',array()))){
    224                                         return true;
    225                                 }
    226                                 // Autorisation par statut
    227                                 $autorise = in_array($qui['statut'], lire_config('tickets/autorisations/commenter_statuts',array('0minirezo','1comite')));
    228                                 break;
    229                         case 'par_auteur':
    230                                 // Autorisation par id d'auteurs
    231                                 $autorise = in_array($qui['id_auteur'], lire_config('tickets/autorisations/commenter_auteurs',array()));
    232                                 break;
    233                 }
    234                 if($autorise == true){
    235                         return $autorise;
    236                 }
    237                 $utiliser_defaut = false;
    238         }
    239 
    240         $liste = definir_autorisations_tickets('commenter',$utiliser_defaut);
    241         if ($liste['statut'])
    242                 $autorise = in_array($qui['statut'], $liste['statut']);
    243         else if ($liste['auteur'])
    244                 $autorise = in_array($qui['id_auteur'], $liste['auteur']);
    245 
    246         return $autorise;
    247 }
    248 
    249 /**
    250201 * Autorisation de modification des tickets
    251202 * Défini qui peut modifier les tickets :
     203 * - Les webmestres
    252204 * - L'auteur du ticket
    253205 * - Les personnes assignées
     
    262214 */
    263215function autoriser_ticket_modifier_dist($faire, $type, $id, $qui, $opt){
     216        if(($qui['webmestre'] == 'oui') && $qui['statut'] == '0minirezo')
     217                return true;
     218       
    264219        $autorise = false;
    265220        $utiliser_defaut = true;
     
    318273
    319274/**
     275 * Autorisation à instituer des tickets
     276 * Défini qui peut changer le statut des tickets :
     277 *
     278 * - les webmestres
     279 *
     280 * @param string $faire : l'action à faire
     281 * @param string $type : le type d'objet sur lequel porte l'action
     282 * @param int $id : l'identifiant numérique de l'objet
     283 * @param array $qui : les éléments de session de l'utilisateur en cours
     284 * @param array $opt : les options
     285 * @return boolean true/false : true si autorisé, false sinon
     286 */
     287function autoriser_ticket_instituer_dist($faire, $type, $id, $qui, $opt){
     288        if(($qui['webmestre'] == 'oui') && $qui['statut'] == '0minirezo')
     289                return true;
     290       
     291        $autorise = false;
     292        $utiliser_defaut = true;
     293
     294        if(is_numeric($id)){
     295                // Si l'auteur en question est l'auteur du ticket ou l'auteur assigné au ticket,
     296                // il peut modifier le ticket
     297                $id_assigne_auteur = sql_fetsel('id_assigne,id_auteur','spip_tickets','id_ticket='.intval($id));
     298                if(($id_assigne_auteur['id_auteur'] && ($id_assigne_auteur['id_auteur'] == $qui['id_auteur'])) || ($id_assigne_auteur['id_assigne'] && ($id_assigne_auteur['id_assigne'] == $qui['id_auteur'])))
     299                        return true;
     300               
     301                if(!function_exists('lire_config'))
     302                        include_spip('inc/config');
     303
     304                $type = lire_config('tickets/autorisations/modifier_type', 'par_statut');
     305                if($type){
     306                        switch($type) {
     307                                case 'webmestre':
     308                                        // Webmestres uniquement
     309                                        $autorise = ($qui['webmestre'] == 'oui');
     310                                        break;
     311                                case 'par_statut':
     312                                        // Traitement spécifique pour la valeur 'tous'
     313                                        if(in_array('tous',lire_config('tickets/autorisations/modifier_statuts',array()))){
     314                                                return true;
     315                                        }
     316                                        // Autorisation par statut
     317                                        $autorise = in_array($qui['statut'], lire_config('tickets/autorisations/modifier_statuts',array('0minirezo')));
     318                                        break;
     319                                case 'par_auteur':
     320                                        // Autorisation par id d'auteurs
     321                                        $autorise = in_array($qui['id_auteur'], lire_config('tickets/autorisations/modifier_auteurs',array()));
     322                                        break;
     323                        }
     324                        if($autorise == true){
     325                                return $autorise;
     326                        }
     327                        $utiliser_defaut = false;
     328                }
     329       
     330                // Si $utiliser_defaut = true, on utilisera les valeurs par défaut
     331                // Sinon on ajoute la possibilité de régler par define
     332                $liste = definir_autorisations_tickets('modifier',$utiliser_defaut);
     333                if ($liste['statut'])
     334                        $autorise = in_array($qui['statut'], $liste['statut']);
     335                else if ($liste['auteur'])
     336                        $autorise = in_array($qui['id_auteur'], $liste['auteur']);
     337                if(!$autorise){
     338                        $id_auteur = sql_getfetsel('id_auteur','spip_tickets','id_ticket='.intval($id));
     339                        if($id_auteur && ($id_auteur== $qui['id_auteur']))
     340                                $autorise = true;
     341                }
     342        }
     343        return $autorise;
     344}
     345
     346/**
     347 * Autorisation de notification des tickets
     348 * (défini qui doit être notifié)
     349 *
     350 * @param string $faire : l'action à faire
     351 * @param string $type : le type d'objet sur lequel porte l'action
     352 * @param int $id : l'identifiant numérique de l'objet
     353 * @param array $qui : les éléments de session de l'utilisateur en cours
     354 * @param array $opt : les options
     355 * @return boolean true/false : true si autorisé, false sinon
     356 */
     357function autoriser_ticket_commenter_dist($faire, $type, $id, $qui, $opt){
     358        if(($qui['webmestre'] == 'oui') && $qui['statut'] == '0minirezo')
     359                return true;
     360       
     361        $autorise = false;
     362        $utiliser_defaut = true;
     363
     364        if(autoriser_ticket_modifier_dist($faire, $type, $id, $qui, $opt))
     365                return autoriser_ticket_modifier_dist($faire, $type, $id, $qui, $opt);
     366       
     367        if(!function_exists('lire_config'))
     368                include_spip('inc/config');
     369       
     370        $type = lire_config('tickets/autorisations/commenter_type', 'par_statut');
     371        if($type){
     372                switch($type) {
     373                        case 'webmestre':
     374                                // Webmestres uniquement
     375                                $autorise = ($qui['webmestre'] == 'oui');
     376                                break;
     377                        case 'par_statut':
     378                                // Traitement spécifique pour la valeur 'tous'
     379                                if(in_array('tous',lire_config('tickets/autorisations/commenter_statuts',array()))){
     380                                        return true;
     381                                }
     382                                // Autorisation par statut
     383                                $autorise = in_array($qui['statut'], lire_config('tickets/autorisations/commenter_statuts',array('0minirezo','1comite')));
     384                                break;
     385                        case 'par_auteur':
     386                                // Autorisation par id d'auteurs
     387                                $autorise = in_array($qui['id_auteur'], lire_config('tickets/autorisations/commenter_auteurs',array()));
     388                                break;
     389                }
     390                if($autorise == true){
     391                        return $autorise;
     392                }
     393                $utiliser_defaut = false;
     394        }
     395
     396        $liste = definir_autorisations_tickets('commenter',$utiliser_defaut);
     397        if ($liste['statut'])
     398                $autorise = in_array($qui['statut'], $liste['statut']);
     399        else if ($liste['auteur'])
     400                $autorise = in_array($qui['id_auteur'], $liste['auteur']);
     401
     402        return $autorise;
     403}
     404
     405/**
    320406 * Autorisation d'épingler des tickets
    321407 * Défini qui peut épingler les tickets
     
    330416 */
    331417function autoriser_ticket_epingler_dist($faire, $type, $id, $qui, $opt){
     418        if(($qui['webmestre'] == 'oui') && $qui['statut'] == '0minirezo')
     419                return true;
     420       
    332421        $autorise = false;
    333422        $utiliser_defaut = true;
     
    369458        return $autorise;
    370459}
     460
     461/**
     462 * La liste des tickets est accessible à tout le monde
     463 *
     464 * @param string $faire
     465 *              L'action à faire
     466 * @param string $type
     467 *              Le type d'objet sur lequel porte l'action
     468 * @param int $id
     469 *              L'identifiant numérique de l'objet
     470 * @param array $qui
     471 *              Les éléments de session de l'utilisateur en cours
     472 * @param array $opt
     473 *              Les options
     474 * @return boolean true/false
     475 *              true si autorisé, false sinon
     476 */
     477function autoriser_tickets_menu_dist($faire, $type, $id, $qui, $opt) {
     478        return true;
     479}
     480
     481/**
     482 * Le bouton de création rapide de ticket est visible pour ceux pouvant créer un ticket
     483 *
     484 * @param string $faire
     485 *              L'action à faire
     486 * @param string $type
     487 *              Le type d'objet sur lequel porte l'action
     488 * @param int $id
     489 *              L'identifiant numérique de l'objet
     490 * @param array $qui
     491 *              Les éléments de session de l'utilisateur en cours
     492 * @param array $opt
     493 *              Les options
     494 * @return boolean true/false
     495 *              true si autorisé, false sinon
     496 */
     497function autoriser_ticketedit_menu_dist($faire, $type, $id, $qui, $opt) {
     498        return autoriser('ecrire','ticket');
     499}
     500
    371501?>
  • _plugins_/tickets/trunk/paquet.xml

    r73494 r73497  
    22        prefix="tickets"
    33        categorie="divers"
    4         version="2.6.1"
     4        version="2.6.2"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.0.*]"
Note: See TracChangeset for help on using the changeset viewer.