Changeset 73506 in spip-zone


Ignore:
Timestamp:
Jun 11, 2013, 2:23:57 PM (6 years ago)
Author:
kent1@…
Message:

On ajoute un bloc de conf dans les autorisations : "Être assigné à un ticket"

Cette configuration permet de remplir le select d'assignation de ticket

Version 2.6.6

Location:
_plugins_/tickets/trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/tickets/trunk/formulaires/inc-tickets_autorisations.html

    r73499 r73506  
    1 [(#SET{legendes,[(#LISTE{<:tickets:cfg_lgd_autorisation_ecrire:>,<:tickets:cfg_lgd_autorisation_modifier:>,<:tickets:cfg_lgd_autorisation_assigner:>,<:tickets:cfg_lgd_autorisation_commenter:>,<:tickets:cfg_lgd_autorisation_epingler:>})]})]
    2 [(#SET{prefixes,#LISTE{ecrire_,modifier_,assigner_,commenter_,epingler_}})]
     1[(#SET{legendes,[(#LISTE{<:tickets:cfg_lgd_autorisation_ecrire:>,<:tickets:cfg_lgd_autorisation_modifier:>,<:tickets:cfg_lgd_autorisation_assigner:>,<:tickets:cfg_lgd_autorisation_assigneretre:>,<:tickets:cfg_lgd_autorisation_commenter:>,<:tickets:cfg_lgd_autorisation_epingler:>})]})]
     2[(#SET{prefixes,#LISTE{ecrire_,modifier_,assigner_,assigneretre_,commenter_,epingler_}})]
    33<B_bloc_autorisation>
    44<ul>
  • _plugins_/tickets/trunk/inc/tickets_autoriser.php

    r73503 r73506  
    3535                case 'assigner':
    3636                        $define = (defined('_TICKETS_AUTORISATION_ASSIGNER')) ? _TICKETS_AUTORISATION_ASSIGNER : ($utiliser_defaut ? '0minirezo':'');
     37                        break;
     38                case 'assigneretre':
     39                        $define = (defined('_TICKETS_AUTORISATION_ASSIGNERETRE')) ? _TICKETS_AUTORISATION_ASSIGNERETRE : ($utiliser_defaut ? '0minirezo':'');
    3740                        break;
    3841                case 'commenter':
     
    139142        return  autoriser('ecrire','ticket', $id, $qui, $opt);
    140143}
     144
    141145/**
    142146 * Autorisation d'assignation des tickets
     
    190194
    191195        $liste = definir_autorisations_tickets('assigner',$utiliser_defaut);
     196        if ($liste['statut'])
     197                $autorise = in_array($qui['statut'], $liste['statut']);
     198        else if ($liste['auteur'])
     199                $autorise = in_array($qui['id_auteur'], $liste['auteur']);
     200
     201        return $autorise;
     202}
     203
     204/**
     205 * Autorisation d'être assigné à un ticket
     206 *
     207 * @param string $faire : l'action à faire
     208 * @param string $type : le type d'objet sur lequel porte l'action
     209 * @param int $id : l'identifiant numérique de l'objet
     210 * @param array $qui : les éléments de session de l'utilisateur en cours
     211 * @param array $opt : les options
     212 * @return boolean true/false : true si autorisé, false sinon
     213 */
     214function autoriser_ticket_assigneretre_dist($faire, $type, $id, $qui, $opt){
     215       
     216        $autorise = false;
     217        $utiliser_defaut = true;
     218
     219        if(!function_exists('lire_config'))
     220                include_spip('inc/config');
     221
     222        $type = lire_config('tickets/autorisations/assigneretre_type');
     223        if($type){
     224                switch($type) {
     225                        case 'webmestre':
     226                                // Webmestres uniquement
     227                                $autorise = ($qui['webmestre'] == 'oui');
     228                                break;
     229                        case 'par_statut':
     230                                // Traitement spécifique pour la valeur 'tous'
     231                                if(in_array('tous',lire_config('tickets/autorisations/assigneretre_statuts',array())))
     232                                        return true;
     233                                // Autorisation par statut
     234                                $autorise = in_array($qui['statut'], lire_config('tickets/autorisations/assigneretre_statuts',array('0minirezo')));
     235                                break;
     236                        case 'par_auteur':
     237                                // Autorisation par id d'auteurs
     238                                $autorise = in_array($qui['id_auteur'], lire_config('tickets/autorisations/assigneretre_auteurs',array()));
     239                                break;
     240                }
     241                if($autorise == true)
     242                        return $autorise;
     243                $utiliser_defaut = false;
     244        }
     245
     246        $liste = definir_autorisations_tickets('assigneretre',$utiliser_defaut);
    192247        if ($liste['statut'])
    193248                $autorise = in_array($qui['statut'], $liste['statut']);
  • _plugins_/tickets/trunk/lang/tickets_fr.php

    r73499 r73506  
    5656        'cfg_lbl_versions' => 'Versions',
    5757        'cfg_lgd_autorisation_assigner' => 'Assigner les tickets',
     58        'cfg_lgd_autorisation_assigneretre' => 'Être assigné à un ticket',
    5859        'cfg_lgd_autorisation_commenter' => 'Commenter les tickets',
    5960        'cfg_lgd_autorisation_ecrire' => 'Écrire les tickets',
  • _plugins_/tickets/trunk/paquet.xml

    r73503 r73506  
    22        prefix="tickets"
    33        categorie="divers"
    4         version="2.6.5"
     4        version="2.6.6"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.0.*]"
  • _plugins_/tickets/trunk/tickets_fonctions.php

    r73496 r73506  
    5555        $select = array('nom','id_auteur');
    5656        $from = array('spip_auteurs AS t1');
    57         $autorises = definir_autorisations_tickets('assigner');
    58         if ($autorises['statut'])
     57       
     58       
     59       
     60        $autorises = false;
     61        $type = lire_config('tickets/autorisations/assigneretre_type');
     62        if($type){
     63                switch($type) {
     64                        case 'webmestre':
     65                                // Webmestres uniquement
     66                                $autorises['statut'] = array('0minirezo');
     67                                $autorises['webmestre'] = 'oui';
     68                                break;
     69                        case 'par_statut':
     70                                $autorises['statut'] = lire_config('tickets/autorisations/assigneretre_statuts',array('0minirezo'));
     71                                break;
     72                        case 'par_auteur':
     73                                // Autorisation par id d'auteurs
     74                                $autorises['auteur'] = lire_config('tickets/autorisations/assigneretre_auteurs',array());
     75                                break;
     76                }
     77        }
     78        if(!$autorises)
     79                $autorises = definir_autorisations_tickets('assigneretre');
     80       
     81        if ($autorises['statut']){
    5982                $where = array(sql_in('t1.statut', $autorises['statut']), 't1.email LIKE '.sql_quote('%@%'));
     83                if($autorises['webmestre'] == 'oui')
     84                        $where[] = 't1.webmestre = '.sql_quote('oui');
     85        }
    6086        else
    6187                $where = array(sql_in('t1.id_auteur', $autorises['auteur']), 't1.email LIKE '.sql_quote('%@%'));
     
    249275        return $trackers;
    250276}
    251 
    252277
    253278function tickets_liste_severite($id_ticket = null){
  • _plugins_/tickets/trunk/tickets_pipelines.php

    r73495 r73506  
    152152 */
    153153function tickets_recuperer_fond($flux){
    154         if ($flux['args']['fond'] == 'formulaires/forum'){
    155                 if(is_numeric($flux['args']['contexte']['id_ticket'])){
    156                         $infos_ticket = sql_fetsel('*','spip_tickets','id_ticket='.intval($flux['args']['contexte']['id_ticket']));
    157                         foreach(array('projet','composant','version','severite','navigateur','tracker','id_assigne','exemple') as $champ){
    158                                 if(_request($champ))
    159                                         $infos_ticket[$champ] = _request($champ);
    160                         }
    161                         if(_request('ticket_statut'))
    162                                 $infos_ticket['ticket_statut'] = _request('ticket_statut');
    163                         if(is_array($infos_ticket)){
    164                                 $saisie_ticket = recuperer_fond('inclure/inc-tickets_formulaire_forum',array_merge($flux['args']['contexte'],$infos_ticket));
    165                                 $flux['data']['texte'] = preg_replace(",(<fieldset>.*<\/fieldset>),Uims","\\1".$saisie_ticket,$flux['data']['texte'],1);
    166                         }
     154        if (($flux['args']['fond'] == 'formulaires/forum')
     155                && is_numeric($flux['args']['contexte']['id_ticket'])){
     156                $infos_ticket = sql_fetsel('*','spip_tickets','id_ticket='.intval($flux['args']['contexte']['id_ticket']));
     157                foreach(array('projet','composant','version','severite','navigateur','tracker','id_assigne','exemple') as $champ){
     158                        if(_request($champ))
     159                                $infos_ticket[$champ] = _request($champ);
     160                }
     161                if(_request('ticket_statut'))
     162                        $infos_ticket['ticket_statut'] = _request('ticket_statut');
     163                if(is_array($infos_ticket)){
     164                        $saisie_ticket = recuperer_fond('inclure/inc-tickets_formulaire_forum',array_merge($flux['args']['contexte'],$infos_ticket));
     165                        $flux['data']['texte'] = preg_replace(",(<fieldset>.*<\/fieldset>),Uims","\\1".$saisie_ticket,$flux['data']['texte'],1);
    167166                }
    168167        }
     
    242241         * Notification des auteurs de tickets et des assignés et des autres forumeurs lorsque le post est validé
    243242         */
    244         if(($flux['args']['quoi'] == 'forumvalide')){
    245                 if(($flux['args']['options']['forum']['objet'] == 'ticket') && ($id_ticket = intval($flux['args']['options']['forum']['id_objet']))){
    246                         /**
    247                          * On notifie l'id_auteur et l'id_assigné du ticket s'ils ne sont pas l'auteur du post en question
    248                          */
    249                         $auteurs = sql_fetsel('id_auteur,id_assigne','spip_tickets','id_ticket='.intval($id_ticket).' AND id_auteur !='.intval($flux['args']['options']['forum']['id_auteur']));
    250                         if(is_array($auteurs)){
    251                                 foreach($auteurs as $auteur){
    252                                         $email = sql_getfetsel('email','spip_auteurs','id_auteur='.intval($auteur));
    253                                         $flux['data'][] = $email;
    254                                 }
    255                         }
    256                         /**
    257                          * On notifie les autres forumeurs du ticket
    258                          * GROUP BY id_auteur
    259                          */
    260                         $id_forums = sql_select('*','spip_forum','objet='.sql_quote('ticket').' AND id_objet='.intval($id_ticket).' AND id_forum != '.intval($flux['args']['options']['forum']['id_forum']),array('id_auteur'));
    261                         while($forum = sql_fetch($id_forums)){
    262                                 $email = sql_getfetsel('email','spip_auteurs','id_auteur='.intval($forum['id_auteur']));
     243        if(($flux['args']['quoi'] == 'forumvalide')
     244                && ($flux['args']['options']['forum']['objet'] == 'ticket')
     245                && ($id_ticket = intval($flux['args']['options']['forum']['id_objet']))){
     246                /**
     247                 * On notifie l'id_auteur et l'id_assigné du ticket s'ils ne sont pas l'auteur du post en question
     248                 */
     249                $auteurs = sql_fetsel('id_auteur,id_assigne','spip_tickets','id_ticket='.intval($id_ticket).' AND id_auteur !='.intval($flux['args']['options']['forum']['id_auteur']));
     250                if(is_array($auteurs)){
     251                        foreach($auteurs as $auteur){
     252                                $email = sql_getfetsel('email','spip_auteurs','id_auteur='.intval($auteur));
    263253                                $flux['data'][] = $email;
    264254                        }
    265255                }
     256                /**
     257                 * On notifie les autres forumeurs du ticket
     258                 * GROUP BY id_auteur
     259                 */
     260                $id_forums = sql_select('*','spip_forum','objet='.sql_quote('ticket').' AND id_objet='.intval($id_ticket).' AND id_forum != '.intval($flux['args']['options']['forum']['id_forum']),array('id_auteur'));
     261                while($forum = sql_fetch($id_forums)){
     262                        $email = sql_getfetsel('email','spip_auteurs','id_auteur='.intval($forum['id_auteur']));
     263                        $flux['data'][] = $email;
     264                }
    266265        }
    267266        return $flux;
Note: See TracChangeset for help on using the changeset viewer.