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

Last change on this file since 44078 was 44078, checked in by marcimat@…, 11 years ago

Prise en compte du champ vu

File size: 2.5 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        $champs_selection=array();
17                foreach ($GLOBALS['encarts_liste_champs'] as $champs_choisis) {
18                        if ( isset($champs[$champs_choisis]) )
19                        array_push($champs_selection,$champs_choisis);
20                }
21        if (count($champs_selection) == 0)
22                return;
23        if (!$desc){
24                $trouver_table = charger_fonction('trouver_table', 'base');
25                $desc = $trouver_table($table_objet, $serveur);
26        }
27        $load = "";
28        // charger le champ manquant en cas de modif partielle de l     'objet
29        // seulement si le champ existe dans la table demande
30       
31                foreach ($champs_selection as $champs_a_parcourir) {
32                        if (isset($desc['field'][$champs_a_parcourir])) {
33                        $load = $champs_a_parcourir;
34                        $champs_a_traiter .= $champs[$champs_a_parcourir];
35                        }
36                }       
37
38        if ($load){
39                $champs[$load] = "";
40                $row = sql_fetsel($load, $spip_table_objet, "$id_table_objet=".sql_quote($id));
41                if ($row AND isset($row[$load]))
42                        $champs[$load] = $row[$load];
43        }
44        include_spip('inc/texte');
45        include_spip('base/abstract_sql');
46        $GLOBALS['doublons_encarts_inclus'] = array();
47        traiter_modeles($champs_a_traiter, array('encarts'=>array('encart'))); // detecter les doublons
48        sql_updateq("spip_encarts_liens", array("vu" => 'non'), "id_objet=$id AND objet=".sql_quote($type));
49        if (count($GLOBALS['doublons_encarts_inclus'])){
50                // on repasse par une requete sur spip_encarts pour verifier que les encarts existent bien !
51                $in_liste = sql_in('id_encart',
52                        $GLOBALS['doublons_encarts_inclus']);
53                $res = sql_select("id_encart", "spip_encarts", $in_liste);
54                while ($row = sql_fetch($res)) {
55                        // Creer le lien s'il n'existe pas deja
56                        sql_insertq("spip_encarts_liens", array('id_objet'=>$id, 'objet'=>$type, 'id_encart' => $row['id_encart'], 'vu' => 'oui'));
57                        sql_updateq("spip_encarts_liens", array("vu" => 'oui'), "id_objet=$id AND objet=".sql_quote($type)." AND id_encart=" . $row['id_encart']);
58                }
59        }
60}
61
62?>
Note: See TracBrowser for help on using the repository browser.