source: spip-zone/_plugins_/xiti/trunk/xiti_pipelines.php @ 105470

Last change on this file since 105470 was 105470, checked in by kent1@…, 2 years ago

Version 2.2.0 (2017-07-25)

  • passer par le pipeline optimiser_base_disparus pour supprimer les liens de niveaux 2 sur des objets qui auraient été supprimés définitivement
  • passer par le pipeline trig_supprimer_objets_lies pour supprimer les liens de niveaux 2 sur des objets du core supprimés directement
File size: 2.3 KB
Line 
1<?php
2/**
3 * Utilisations de pipelines
4 * @plugin     Xiti
5 * @copyright  2014-2017
6 * @author     France diplomatie - Vincent
7 * @licence    GNU/GPL
8 * @package SPIP\Xiti\Pipelines
9 **/
10
11if (!defined('_ECRIRE_INC_VERSION')) {
12        return;
13}
14
15/**
16 * Ajoute le formulaire de lien à un niveau deux sur les objets configurés
17 *
18 * @pipeline affiche_milieu
19 * @param array $flux
20 * @return array
21 */
22function xiti_affiche_milieu($flux) {
23        if ($en_cours = trouver_objet_exec($flux['args']['exec'])
24                and $en_cours['edition'] !== true // page visu
25                and $type = $en_cours['type']
26                and $id_table_objet = $en_cours['id_table_objet']
27                and isset($flux['args'][$id_table_objet])
28                and ($id = intval($flux['args'][$id_table_objet]))
29                and (autoriser('lierxitiniveau', $type, $id))
30        ) {
31                $texte = recuperer_fond('prive/squelettes/inclure/xiti_lier', array('id_objet' => $id, 'objet' => $type));
32                if ($p = strpos($flux['data'], '<!--affiche_milieu-->')) {
33                        $flux['data'] = substr_replace($flux['data'], $texte, $p, 0);
34                } else {
35                        $flux['data'] .= $texte;
36                }
37        }
38        return $flux;
39}
40
41function xiti_optimiser_base_disparus($flux){
42        $n = &$flux['data'];
43        $mydate = $flux['args']['date'];
44        /**
45         * les niveaux 2 lies a une id_objet inexistant
46         */
47        $r = sql_select("DISTINCT objet",'spip_xiti_niveaux_liens');
48        while ($t = sql_fetch($r)){
49                if ($type = $t['objet']) {
50                        $spip_table_objet = table_objet_sql($type);
51                        $id_table_objet = id_table_objet($type);
52                        $res = sql_allfetsel('*', 'spip_xiti_niveaux_liens', 'objet='.sql_quote($type));
53                        $res = sql_select('xiti.id_objet AS id',
54                                                "spip_xiti_niveaux_liens AS xiti
55                                                        LEFT JOIN $spip_table_objet AS O
56                                                                ON O.$id_table_objet=xiti.id_objet AND xiti.objet=".sql_quote($type),
57                                                        "xiti.objet=".sql_quote($type)." AND O.$id_table_objet IS NULL AND xiti.id_objet>0");
58
59                        while ($row = sql_fetch($res)) {
60                                sql_delete('spip_xiti_niveaux_liens', 'objet='.sql_quote($type).' AND id_objet='.intval($row['id']));
61                        }
62                        sql_delete('spip_xiti_niveaux_liens', 'id_xiti_niveau=0');
63                }
64        }
65        return $flux;
66}
67
68/**
69 * Supprimer les niveaux deux lies aux objets du core lors de leur suppression
70 *
71 * @param array $objets
72 * @return array
73 */
74function xiti_trig_supprimer_objets_lies($objets){
75        foreach($objets as $objet){
76                sql_delete('spip_xiti_niveaux_liens', 'objet='.sql_quote($objet['type']).' AND id_objet='.intval($objet['id']));
77        }
78        return $objets;
79}
Note: See TracBrowser for help on using the repository browser.