source: spip-zone/_plugins_/encarts/trunk/inc/marquer_doublons_encart.php @ 100136

Last change on this file since 100136 was 100136, checked in by teddy.spip@…, 5 years ago
  • Retour du traitement des balises <encart> et <marge> dans le texte ;
  • Intégration de la liste des articles auxquels l'encart est lié dans sa fiche au lieu de la zone d'extra ;
  • On a maintenant une liaison plus classique des encarts, à la méthode de SPIP. On verra au retour des utilisateurs si on garde cette affichage ou pas.
  • Grosse mise à niveau, donc, up de y.
File size: 2.6 KB
Line 
1<?php
2/*
3 * (issu du plugin mediatheque)
4 * (c) 2009 cedric
5 * Distribue sous licence GPL
6 * modifie par marcimat.
7 */
8
9// On liste tous les champs susceptibles de contenir des encarts si on veut que ces derniers soient lies a l objet lorsqu on y fait reference par encartXX
10// la dist ne regarde que chapo et texte, on laisse comme ca, mais ca permet d etendre a descriptif ou toto depuis d autre plugin comme agenda ou grappe
11$GLOBALS['encarts_liste_champs'][] = 'texte';
12$GLOBALS['encarts_liste_champs'][] = 'chapo';
13
14
15function inc_marquer_doublons_encart_dist($champs, $id, $type, $id_table_objet, $table_objet, $spip_table_objet, $desc = array(), $serveur = '') {
16        include_spip('inc/utils');
17        include_spip('inc/lien');
18        include_spip('base/abstract_sql');
19        $champs_selection = array();
20        $champs_a_traiter = '';
21        foreach ($GLOBALS['encarts_liste_champs'] as $champs_choisis) {
22                if (isset($champs[$champs_choisis])) {
23                        array_push($champs_selection, $champs_choisis);
24                }
25        }
26        if (count($champs_selection) == 0) {
27                return;
28        }
29        if (!$desc) {
30                $trouver_table = charger_fonction('trouver_table', 'base');
31                $desc = $trouver_table($table_objet, $serveur);
32        }
33        $load = "";
34        // charger le champ manquant en cas de modif partielle de l     'objet
35        // seulement si le champ existe dans la table demande
36
37        foreach ($champs_selection as $champs_a_parcourir) {
38                if (isset($desc['field'][$champs_a_parcourir])) {
39                        $load = $champs_a_parcourir;
40                        $champs_a_traiter .= $champs[$champs_a_parcourir];
41                }
42        }
43
44        if ($load) {
45                $champs[$load] = "";
46                $row = sql_fetsel($load, $spip_table_objet, "$id_table_objet=" . sql_quote($id));
47                if ($row AND isset($row[$load])) {
48                        $champs[$load] = $row[$load];
49                }
50        }
51        $GLOBALS['doublons_encarts_inclus'] = array();
52        traiter_modeles($champs_a_traiter, array('encarts' => array('encart'))); // detecter les doublons
53        sql_updateq("spip_encarts_liens", array("vu" => 'non'), "id_objet=$id AND objet=" . sql_quote($type));
54        if (count($GLOBALS['doublons_encarts_inclus'])) {
55                // on repasse par une requete sur spip_encarts pour verifier que les encarts existent bien !
56                $in_liste = sql_in('id_encart',
57                        $GLOBALS['doublons_encarts_inclus']);
58                $res = sql_select("id_encart", "spip_encarts", $in_liste);
59                while ($row = sql_fetch($res)) {
60                        // Creer le lien s'il n'existe pas deja
61                        sql_insertq("spip_encarts_liens", array(
62                                'id_objet' => $id,
63                                'objet' => $type,
64                                'id_encart' => $row['id_encart'],
65                                'vu' => 'oui'
66                        ));
67                        sql_updateq("spip_encarts_liens", array("vu" => 'oui'), "id_objet=$id AND objet=" . sql_quote($type) . " AND id_encart=" . $row['id_encart']);
68                }
69        }
70}
71
Note: See TracBrowser for help on using the repository browser.