source: spip-zone/_plugins_/produits/trunk/produits_pipelines.php @ 110570

Last change on this file since 110570 was 110570, checked in by peetdu@…, 3 years ago

petit retour à la ligne sous le bouton ‘créer un produit’

File size: 5.6 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) {
5        return;
6}
7
8// Export de la config
9function produits_ieconfig_metas($table) {
10       
11        $table['produits']['titre'] = _T('produit:titre_produit');
12        $table['produits']['icone'] = 'prive/themes/spip/images/produit-16.png';
13        $table['produits']['metas_serialize'] = 'produits,produits_*';
14       
15        return $table;
16}
17
18/**
19 * Insertion dans le pipeline grappes_objets_lies (Plugin Grappes)
20 * Définis le tableau des objets pouvant être liés aux grappes, la clé est le type d'objet (au pluriel),
21 * la valeur, le label affiché dans le formulaire d'édition de grappe
22 * @param array $array
23 *      Le tableau du pipeline
24 * @return array $array
25 *      Le tableau complété
26 */
27function produits_grappes_objets_lies($array) {
28        $array['produits'] = _T('produits:titre_page_configurer_produits');
29        return $array;
30}
31
32/**
33 * produits_acceuil_encours
34 *
35 * Afficher les produits en cours de validation
36 * sur l'acceuil de l'espace privé
37 */
38function produits_accueil_encours($flux) {
39        $flux .= recuperer_fond(
40                'prive/objets/liste/produits',
41                array(
42                        'statut' => array('prepa','prop'),
43                        'cacher_tri' => true,
44                        'nb' => 5
45                ),
46                array('ajax' => true)
47        );
48
49        return $flux;
50}
51
52
53// Insérer les listes de produits et le bouton de création dans les pages rubriques
54function produits_affiche_enfants($flux) {
55        if (isset($flux['args']['id_rubrique']) and $flux['args']['id_rubrique'] > 0) {
56                $flux['data'] .= recuperer_fond(
57                        'prive/objets/liste/produits',
58                        array('id_rubrique' => $flux['args']['id_rubrique']),
59                        array(
60                                'ajax' => true
61                        )
62                );
63       
64                if (autoriser('creerproduitdans', 'rubrique', $flux['args']['id_rubrique'])) {
65                        $flux['data'] .= icone_verticale(_T('produit:icone_creer_produit'), generer_url_ecrire('produit_edit', 'id_rubrique='.$flux['args']['id_rubrique']), find_in_path('prive/themes/spip/images/produits-24.png'), 'new', 'right'). "<br class='nettoyeur' />";
66                }
67        }
68       
69        return $flux;
70}
71
72/**
73 * Afficher le nombre d'éléments dans les parents
74 *
75 * @pipeline boite_infos
76 * @param  array $flux Données du pipeline
77 * @return array       Données du pipeline
78 **/
79function produits_boite_infos($flux) {
80        if (isset($flux['args']['type']) and isset($flux['args']['id']) and $id = intval($flux['args']['id'])) {
81                $texte = '';
82                if ($flux['args']['type'] == 'rubrique' and $nb = sql_countsel('spip_produits', array("statut='publie'", 'id_rubrique=' . $id))) {
83                        $texte .= '<div>' . singulier_ou_pluriel($nb, 'produit:info_1_produit', 'produit:info_nb_produits') . "</div>\n";
84                }
85                if ($texte and $p = strpos($flux['data'], '<!--nb_elements-->')) {
86                        $flux['data'] = substr_replace($flux['data'], $texte, $p, 0);
87                }
88        }
89        return $flux;
90}
91
92/**
93 * Compter les enfants d'un objet
94 *
95 * @pipeline objets_compte_enfants
96 * @param  array $flux Données du pipeline
97 * @return array       Données du pipeline
98**/
99function produits_objet_compte_enfants($flux) {
100        if ($flux['args']['objet'] == 'rubrique' and $id_rubrique = intval($flux['args']['id_objet'])) {
101                // juste les publiés ?
102                if (array_key_exists('statut', $flux['args']) and ($flux['args']['statut'] == 'publie')) {
103                        $flux['data']['produits'] = sql_countsel('spip_produits', 'id_rubrique= ' . intval($id_rubrique) . " AND (statut = 'publie')");
104                }
105                else {
106                        $flux['data']['produits'] = sql_countsel('spip_produits', 'id_rubrique= ' . intval($id_rubrique) . " AND (statut <> 'poubelle')");
107                }
108        }
109        return $flux;
110}
111
112
113/**
114 * Publier et dater les rubriques qui ont un produit publie
115 *
116 * @param array $flux
117 * @return array
118 */
119function produits_calculer_rubriques($flux){
120        include_spip('inc/config');
121        if (lire_config('produits/publier_rubriques')) {
122                $r = sql_select("R.id_rubrique AS id, max(A.date) AS date_h", "spip_rubriques AS R, spip_produits AS A", "R.id_rubrique = A.id_rubrique AND R.date_tmp <= A.date AND A.statut='publie' ", "R.id_rubrique");
123                while ($row = sql_fetch($r)) {
124                        sql_updateq('spip_rubriques', array('statut_tmp' => 'publie', 'date_tmp' => $row['date_h']), "id_rubrique=" . $row['id']);
125                }
126        }
127        return $flux;
128}
129
130// Si pas de critère "statut", on affiche que les produits publiés
131function produits_pre_boucle($boucle) {
132        if ($boucle->type_requete == 'produits') {
133                $id_table = $boucle->id_table;
134                $statut = "$id_table.statut";
135                if (!isset($boucle->modificateur['criteres']['statut']) and !isset($boucle->modificateur['tout'])) {
136                        $boucle->where[] = array("'='", "'$statut'", "sql_quote('publie')");
137                }
138        }
139        return $boucle;
140}
141
142/**
143 * Optimiser la base de données
144 * Supprime les liens orphelins de l'objet vers quelqu'un et de quelqu'un vers l'objet.
145 * Supprime les objets à la poubelle.
146 *
147 * @pipeline optimiser_base_disparus
148 * @param  array $flux Données du pipeline
149 * @return array           Données du pipeline
150 */
151function produits_optimiser_base_disparus($flux) {
152        include_spip('action/editer_liens');
153        $flux['data'] += objet_optimiser_liens(array('produit'=>'*'), '*');
154        sql_delete('spip_produits', "statut='poubelle' AND maj < " . $flux['args']['date']);
155
156        return $flux;
157}
158
159/**
160 * Pipeline de la corbeille, permet de définir les objets à supprimer
161 *
162 * @param array $param Tableau d'objets
163 *
164 * @return array Tableau d'objets complété
165 */
166function produits_corbeille_table_infos($param){
167        $param['produits'] = array(
168                'statut' => 'poubelle',
169                'tableliee'=> array('spip_produits'),
170        );
171        return $param;
172}
173
174/**
175 * Déclarer l'héritage pour compositions
176 *
177 * @param $heritages
178 *
179 * @return mixed
180 */
181function produits_compositions_declarer_heritage($heritages){
182        $heritages['produit'] = 'rubrique';
183        return $heritages;
184}
Note: See TracBrowser for help on using the repository browser.