source: spip-zone/_plugins_/paniers/trunk/paniers_pipelines.php @ 107664

Last change on this file since 107664 was 107664, checked in by nicolas.dorigny@…, 3 years ago

PSR

File size: 2.7 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) {
5        return;
6}
7
8// Supprimer tous les paniers en cours qui sont trop vieux
9function paniers_optimiser_base_disparus($flux) {
10        include_spip('inc/config');
11        // On cherche la date depuis quand on a le droit d'avoir fait le panier
12        $depuis_ephemere    = date('Y-m-d H:i:s', time() - 3600 * intval(lire_config('paniers/limite_ephemere', 24)));
13        $depuis_enregistres = date('Y-m-d H:i:s', time() - 3600 * intval(lire_config('paniers/limite_enregistres', 168)));
14
15        // Soit le panier est à un anonyme donc on prend la limite éphémère, soit le panier appartient à un auteur et on prend l'autre limite
16        $paniers = sql_allfetsel(
17                'id_panier',
18                'spip_paniers',
19                'statut = ' . sql_quote('encours') . ' and ((id_auteur=0 and date<' . sql_quote($depuis_ephemere) . ') or (id_auteur>0 and date<' . sql_quote($depuis_enregistres) . '))'
20        );
21        if (is_array($paniers)) {
22                $paniers = array_map('reset', $paniers);
23        }
24
25        // S'il y a bien des paniers à supprimer
26        if ($paniers) {
27                // Le in
28                $in = sql_in('id_panier', $paniers);
29
30                // On supprime d'abord les liens
31                sql_delete(
32                        'spip_paniers_liens',
33                        $in
34                );
35
36                // Puis les paniers
37                $nombre = intval(sql_delete(
38                        'spip_paniers',
39                        $in
40                ));
41        }
42       
43        $flux['data'] += $nombre;
44
45        return $flux;
46}
47
48// La CSS pour le panier
49function paniers_insert_head_css($flux) {
50        $css  = timestamp(find_in_path('css/paniers.css'));
51        $flux .= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n";
52
53        return $flux;
54}
55
56/**
57 * Sur une transformation de commande en attente
58 * on supprime le panier source si besoin
59 *
60 * @param $flux
61 *
62 * @return @flux
63 */
64function paniers_post_edition($flux) {
65
66        // Si on est dans le cas d'une commande qui passe de attente/en cours=>paye/livre/erreur
67        if ($flux['args']['table'] == 'spip_commandes'
68                AND $id_commande = $flux['args']['id_objet']
69                AND $flux['args']['action'] == 'instituer'
70                AND isset($flux['data']['statut'])
71                AND !in_array($flux['data']['statut'], array('attente', 'encours'))
72                AND in_array($flux['args']['statut_ancien'], array('attente', 'encours'))
73                AND $commande = sql_fetsel('id_commande, source', 'spip_commandes', 'id_commande=' . intval($id_commande))) {
74
75                if (preg_match(",^panier#(\d+)$,", $commande['source'], $m)) {
76                        $id_panier        = intval($m[1]);
77                        $supprimer_panier = charger_fonction('supprimer_panier', 'action/');
78                        $supprimer_panier($id_panier);
79
80                        // nettoyer une eventuelle double commande du meme panier
81                        sql_updateq("spip_commandes", array('source' => ''), "source=" . sql_quote($commande['source']));
82                        #spip_log('suppression panier '.$id_panier,'paniers');
83                }
84
85        }
86
87        return $flux;
88}
Note: See TracBrowser for help on using the repository browser.