[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / plugins-dist / medias / inc / marquer_doublons_doc.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2016 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined("_ECRIRE_INC_VERSION")) return;
14
15
16 // On liste tous les champs susceptibles de contenir des documents ou images si on veut que ces derniers soient lies a l objet lorsqu on y fait reference par imgXX docXX ou embXX
17 // 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
18 $GLOBALS['medias_liste_champs'][] = 'texte';
19 $GLOBALS['medias_liste_champs'][] = 'chapo';
20
21 // http://code.spip.net/@marquer_doublons_documents
22 function inc_marquer_doublons_doc_dist($champs,$id,$type,$id_table_objet,$table_objet,$spip_table_objet, $desc=array(), $serveur=''){
23 $champs_selection=array();
24
25 foreach ($GLOBALS['medias_liste_champs'] as $champs_choisis) {
26 if ( isset($champs[$champs_choisis]) )
27 array_push($champs_selection,$champs_choisis);
28 }
29 if (count($champs_selection) == 0)
30 return;
31 if (!$desc){
32 $trouver_table = charger_fonction('trouver_table', 'base');
33 $desc = $trouver_table($table_objet, $serveur);
34 }
35 $load = "";
36 // charger le champ manquant en cas de modif partielle de l 'objet
37 // seulement si le champ existe dans la table demande
38
39 $champs_a_traiter = "";
40 foreach ($champs_selection as $champs_a_parcourir) {
41 if (isset($desc['field'][$champs_a_parcourir])) {
42 $load = $champs_a_parcourir;
43 $champs_a_traiter .= $champs[$champs_a_parcourir];
44 }
45 }
46
47 if ($load){
48 $champs[$load] = "";
49 $row = sql_fetsel($load, $spip_table_objet, "$id_table_objet=".sql_quote($id));
50 if ($row AND isset($row[$load]))
51 $champs[$load] = $row[$load];
52 }
53 include_spip('inc/texte');
54 include_spip('base/abstract_sql');
55 include_spip('action/editer_liens');
56 include_spip('base/objets');
57 $modeles = lister_tables_objets_sql('spip_documents');
58 $modeles = $modeles['modeles'];
59 $GLOBALS['doublons_documents_inclus'] = array();
60 $env = array(
61 'objet' => $type,
62 'id_objet' => $id,
63 $id_table_objet => $id
64 );
65 traiter_modeles($champs_a_traiter,array('documents'=>$modeles),'','',null,$env); // detecter les doublons
66 objet_qualifier_liens(array('document'=>'*'),array($type=>$id),array('vu'=>'non'));
67 if (count($GLOBALS['doublons_documents_inclus'])){
68 // on repasse par une requete sur spip_documents pour verifier que les documents existent bien !
69 $in_liste = sql_in('id_document',$GLOBALS['doublons_documents_inclus']);
70 $res = sql_allfetsel("id_document", "spip_documents", $in_liste);
71 $res = array_map('reset',$res);
72 // Creer le lien s'il n'existe pas deja
73 objet_associer(array('document'=>$res),array($type=>$id),array('vu'=>'oui'));
74 objet_qualifier_liens(array('document'=>$res),array($type=>$id),array('vu'=>'oui'));
75 }
76 }
77
78 ?>