Changeset 73520 in spip-zone


Ignore:
Timestamp:
Jun 11, 2013, 3:58:42 PM (6 years ago)
Author:
kent1@…
Message:

A l'insertion en base un ticket a pour statut redac, qui est passé directement au statut ouvert pour faire fonctionner la notification

Version 2.6.7

Location:
_plugins_/tickets/trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/tickets/trunk/action/editer_ticket.php

    r73495 r73520  
    2727
    2828        // Enregistre l'envoi dans la BD
    29         if ($id_ticket > 0) $err = ticket_modifier($id_ticket);
     29        if ($id_ticket > 0) $err = ticket_modifier($id_ticket,null,$insertion);
    3030
    3131        return array($id_ticket,$err);
     32}
     33
     34/**
     35 * Création d'un nouveau ticket
     36 *
     37 * Lorsqu'on cree un ticket anonyme,
     38 * on stocke l'adresse ip ; cela peut servir pour filtrer des spam
     39 *
     40 * @param int $id_auteur
     41 *      Identifiant numérique de l'auteur qui crée le ticket
     42 * @return int $id_ticket
     43 *      Identifiant numérique du nouveau ticlet
     44 */
     45function ticket_inserer($id_auteur=null) {
     46        $ip = $id_auteur ? '' : $GLOBALS['ip'];
     47       
     48        $champs = array(
     49                'statut' =>  'redac',
     50                'date' => date('Y-m-d H:i:s'),
     51                'date_modif' => date('Y-m-d H:i:s'),
     52                'ip' => $ip,
     53                'id_auteur' => $id_auteur,
     54                'id_assigne' => 0
     55                );
     56               
     57        // Envoyer aux plugins
     58        $champs = pipeline('pre_insertion',
     59                array(
     60                        'args' => array(
     61                                'table' => 'spip_tickets',
     62                        ),
     63                        'data' => $champs
     64                )
     65        );
     66       
     67        $id_ticket = sql_insertq("spip_tickets", $champs);
     68
     69        pipeline('post_insertion',
     70                array(
     71                        'args' => array(
     72                                'table' => 'spip_tickets',
     73                                'id_objet' => $id_ticket
     74                        ),
     75                        'data' => $champs
     76                )
     77        );
     78       
     79        return $id_ticket;
    3280}
    3381
     
    78126                && defined('_DIR_PLUGIN_MEDIAS')) {
    79127                $ajouter_documents = charger_fonction('ajouter_documents', 'action');
    80                 spip_log("$id_document,'ticket',$id_ticket,'document'",'tickets');
    81128               
    82129                /**
     
    111158
    112159/**
    113  * Création d'un nouveau ticket
    114  *
    115  * Lorsqu'on cree un ticket anonyme,
    116  * on stocke l'adresse ip ; cela peut servir pour filtrer des spam
    117  *
    118  * @param int $id_auteur
    119  *      Identifiant numérique de l'auteur qui crée le ticket
    120  * @return int $id_ticket
    121  *      Identifiant numérique du nouveau ticlet
    122  */
    123 function ticket_inserer($id_auteur=null) {
    124         $ip = $id_auteur ? '' : $GLOBALS['ip'];
    125        
    126         $champs = array(
    127                 'statut' =>  'ouvert',
    128                 'date' => date('Y-m-d H:i:s'),
    129                 'date_modif' => date('Y-m-d H:i:s'),
    130                 'ip' => $ip,
    131                 'id_auteur' => $id_auteur,
    132                 'id_assigne' => 0
    133                 );
    134                
    135         // Envoyer aux plugins
    136         $champs = pipeline('pre_insertion',
    137                 array(
    138                         'args' => array(
    139                                 'table' => 'spip_tickets',
    140                         ),
    141                         'data' => $champs
    142                 )
    143         );
    144        
    145         $id_ticket = sql_insertq("spip_tickets", $champs);
    146 
    147         pipeline('post_insertion',
    148                 array(
    149                         'args' => array(
    150                                 'table' => 'spip_tickets',
    151                                 'id_objet' => $id_ticket
    152                         ),
    153                         'data' => $champs
    154                 )
    155         );
    156        
    157         return $id_ticket;
    158 }
    159 
    160 /**
    161160 *
    162161 * Gestion du statut d'un ticket
     
    171170        include_spip('inc/modifier');
    172171
    173         $row = sql_fetsel("statut", "spip_tickets", "id_ticket=".intval($id_ticket));
     172        $row = sql_fetsel("statut", "spip_tickets", "id_ticket=".intval($id_ticket));   
    174173        $statut_ancien = $statut = $row['statut'];
     174
    175175        $champs = array();
    176176        $date = $c['date'];
    177177
    178178        $s = $c['statut'];
    179 
     179       
     180        if(!$s && $statut_ancien == 'redac')
     181                $s = $c['statut'] = 'ouvert';
     182       
    180183        if ($s AND $s != $statut) {
    181                 if (autoriser('ecrire', 'ticket', $id_ticket))
     184                if (autoriser('instituer', 'ticket', $id_ticket,$GLOBALS['visiteur_session'],array('statut'=>$s)))
    182185                        $statut = $champs['statut'] = $s;
    183186                else
    184                         spip_log("editer_ticket $id_ticket refus " . join(' ', $c),'tickets');
     187                        spip_log("editer_ticket $id_ticket refus " . join(' ', $c),'test.'._LOG_ERREUR);
    185188
    186189                // On met à jour la date_modif à chaque mise à jour de statut
    187190                $champs['date_modif'] = date('Y-m-d H:i:s');
    188191        }
    189 
    190192
    191193        // Envoyer aux plugins
  • _plugins_/tickets/trunk/formulaires/editer_ticket.php

    r73193 r73520  
    6060               
    6161                        // si nouveau ticket
    62                         if (!$id_ticket or $id_ticket=='oui'){
     62                        if (!$id_ticket OR $id_ticket=='oui'){
    6363                                $valeurs['id_assigne'] = $GLOBALS['visiteur_session']['id_auteur'];
    6464                                // Si un des champs de ce tableau est passé dans l'URL, on l'utilise dans le formulaire
  • _plugins_/tickets/trunk/inc/tickets_autoriser.php

    r73506 r73520  
    350350                // Si l'auteur en question est l'auteur du ticket ou l'auteur assigné au ticket,
    351351                // il peut modifier le ticket
    352                 $id_assigne_auteur = sql_fetsel('id_assigne,id_auteur','spip_tickets','id_ticket='.intval($id));
    353                 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'])))
     352                $id_assigne_auteur = sql_fetsel('statut,id_assigne,id_auteur','spip_tickets','id_ticket='.intval($id));
     353               
     354                if(($id_assigne_auteur['statut'] == 'redac' && $opt['statut'] == 'ouvert')
     355                        OR ($id_assigne_auteur['id_auteur'] && ($id_assigne_auteur['id_auteur'] == $qui['id_auteur']))
     356                        OR ($id_assigne_auteur['id_assigne'] && ($id_assigne_auteur['id_assigne'] == $qui['id_auteur'])))
    354357                        return true;
    355358               
  • _plugins_/tickets/trunk/paquet.xml

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

    r73506 r73520  
    5555        $select = array('nom','id_auteur');
    5656        $from = array('spip_auteurs AS t1');
    57        
    58        
    5957       
    6058        $autorises = false;
  • _plugins_/tickets/trunk/tickets_notifications.php

    r72401 r73520  
    1414/**
    1515 *
    16  * Fonction de nortification appelée lors du changement de statut d'un ticket
     16 * Fonction de notification appelée lors du changement de statut d'un ticket
    1717 *
    1818 * @return
     
    2525        // ne devrait jamais se produire
    2626        if ($options['statut'] == $options['statut_ancien']) {
     27                spip_log('on ne notifie pas car même statut','test.'._LOG_ERREUR);
    2728                return;
    2829        }
     
    3233}
    3334
     35/**
     36 *
     37 * Fonction de notification appelée lors du changement d'assignation d'un ticket
     38 *
     39 * @return
     40 * @param object $quoi
     41 * @param object $id_article
     42 * @param object $options
     43 */
    3444function notifications_assignerticket_dist($quoi, $id_ticket, $options) {
    3545       
Note: See TracChangeset for help on using the changeset viewer.