Changeset 90538 in spip-zone


Ignore:
Timestamp:
Jun 26, 2015, 10:17:19 AM (6 years ago)
Author:
cedric@…
Message:

La suppression d'une commande avant creation d'une nouvelle pose un probleme avec certains SGBDD (sqlite) : on retombe sur le meme id_commande, ce qui est embetant
Du coup on passe en statut poubelle au lieu de supprimer, et c'est un cron qui se chargera de supprimer vraiment les commandes quand ce sera sur (il faut qu'il y ait au moins une commande cree avec un id_commande superieur)

Location:
_plugins_/commandes/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/commandes/trunk/action/supprimer_commande.php

    r82230 r90538  
    3636        $id_commande = $arg;
    3737
    38         // suppression
     38        // suppression : on ne supprime pas de la base mais on mets le statut poubelle
     39        // un cron supprimera quand ca sera safe, c'est a dire qu'il existera au moins une nouvelle commande
     40        // pour etre sur de ne pas reutiliser ce id_commande (sous sqlite)
    3941        if ($id_commande = intval($id_commande)) {
    40                 include_spip('inc/commandes');
    41                 commandes_supprimer($id_commande);
     42                spip_log("Commande $id_commande -> poubelle",'commandes');
     43                sql_updateq("spip_commandes",array('statut'=>'poubelle'),'id_commande = '.intval($id_commande));
    4244        }
    4345
  • _plugins_/commandes/trunk/base/commandes.php

    r90439 r90538  
    8888                        'retour_partiel'     => 'commandes:statut_retour_partiel',
    8989                        'erreur'             => 'commandes:statut_erreur',
     90                        'poubelle'           => 'commandes:statut_poubelle',
    9091                ),
    9192                'statut_images' => array(
  • _plugins_/commandes/trunk/inc/commandes.php

    r89654 r90538  
    3131        // S'il y a une commande en cours dans la session, on la supprime
    3232        if (($id_commande = intval(session_get('id_commande'))) > 0){
    33                 // Si la commande est toujours "encours" on la supprime de la base
    34                 if ($statut = sql_getfetsel('statut', 'spip_commandes', 'id_commande = '.$id_commande) and $statut == 'encours'){
    35                         spip_log("Suppression d'une commande encours ancienne en session : $id_commande");
    36                         commandes_supprimer($id_commande);
    37                 }
    38 
     33                // Si la commande est toujours "encours" il faut la mettre a la poubelle
     34                // il ne faut pas la supprimer tant qu'il n'y a pas de nouvelles commandes pour etre sur qu'on reutilise pas son numero
     35                // (sous sqlite la nouvelle commande reprend le numero de l'ancienne si on fait delete+insert)
     36                if ($statut = sql_getfetsel('statut', 'spip_commandes', 'id_commande = '.intval($id_commande)) AND $statut == 'encours'){
     37                        spip_log("Commande ancienne encours->poubelle en session : $id_commande",'commandes');
     38                        sql_updateq("spip_commandes",array('statut'=>'poubelle'),'id_commande = '.intval($id_commande));
     39                }
    3940                // Dans tous les cas on supprime la valeur de session
    4041                session_set('id_commande');
     
    7677        if (!is_array($ids_commandes)) $ids_commandes = array($ids_commandes);
    7778
    78         spip_log("commandes_effacer : suppression de commande(s) : " . implode(',', $ids_commandes));
     79        spip_log("commandes_effacer : suppression de commande(s) : " . implode(',', $ids_commandes),'commandes');
    7980
    8081        $in_commandes = sql_in('id_commande', $ids_commandes);
     
    8990
    9091                // d'abord, on dissocie les adresses et les commandes
    91                 spip_log("commandes_effacer : dissociation des adresses des commandes à supprimer : " . implode(',', $adresses_commandes));
     92                spip_log("commandes_effacer : dissociation des adresses des commandes à supprimer : " . implode(',', $adresses_commandes),'commandes');
    9293                objet_dissocier(array('adresse'=>$adresses_commandes), array('commande'=>$ids_commandes));
    9394
  • _plugins_/commandes/trunk/paquet.xml

    r90511 r90538  
    22        prefix="commandes"
    33        categorie="divers"
    4         version="1.6.8"
     4        version="1.6.9"
    55        etat="test"
    66        compatibilite="[3.0.5;3.0.*]"
Note: See TracChangeset for help on using the changeset viewer.