[SPIP] +spip v3.0.17
[lhc/web/clavette_www.git] / www / plugins-dist / medias / inc / marquer_doublons_doc.php
diff --git a/www/plugins-dist/medias/inc/marquer_doublons_doc.php b/www/plugins-dist/medias/inc/marquer_doublons_doc.php
new file mode 100644 (file)
index 0000000..120dbd1
--- /dev/null
@@ -0,0 +1,78 @@
+<?php\r
+\r
+/***************************************************************************\\r
+ *  SPIP, Systeme de publication pour l'internet                           *\r
+ *                                                                         *\r
+ *  Copyright (c) 2001-2014                                                *\r
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *\r
+ *                                                                         *\r
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *\r
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *\r
+\***************************************************************************/\r
+\r
+if (!defined("_ECRIRE_INC_VERSION")) return;\r
+\r
+\r
+// 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\r
+// 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\r
+$GLOBALS['medias_liste_champs'][] = 'texte';\r
+$GLOBALS['medias_liste_champs'][] = 'chapo';\r
\r
+// http://doc.spip.org/@marquer_doublons_documents\r
+function inc_marquer_doublons_doc_dist($champs,$id,$type,$id_table_objet,$table_objet,$spip_table_objet, $desc=array(), $serveur=''){\r
+       $champs_selection=array();\r
+\r
+       foreach ($GLOBALS['medias_liste_champs'] as $champs_choisis) {\r
+               if ( isset($champs[$champs_choisis]) )\r
+                       array_push($champs_selection,$champs_choisis);\r
+       }\r
+       if (count($champs_selection) == 0)\r
+               return;\r
+       if (!$desc){\r
+               $trouver_table = charger_fonction('trouver_table', 'base');\r
+               $desc = $trouver_table($table_objet, $serveur);\r
+       }\r
+       $load = "";\r
+       // charger le champ manquant en cas de modif partielle de l     'objet\r
+       // seulement si le champ existe dans la table demande\r
+\r
+       $champs_a_traiter = "";\r
+       foreach ($champs_selection as $champs_a_parcourir) {\r
+               if (isset($desc['field'][$champs_a_parcourir])) {\r
+                       $load = $champs_a_parcourir;\r
+                       $champs_a_traiter .= $champs[$champs_a_parcourir];\r
+               }\r
+       }\r
+\r
+       if ($load){\r
+               $champs[$load] = "";\r
+               $row = sql_fetsel($load, $spip_table_objet, "$id_table_objet=".sql_quote($id));\r
+               if ($row AND isset($row[$load]))\r
+                       $champs[$load] = $row[$load];\r
+       }\r
+       include_spip('inc/texte');\r
+       include_spip('base/abstract_sql');\r
+       include_spip('action/editer_liens');\r
+       include_spip('base/objets');\r
+       $modeles = lister_tables_objets_sql('spip_documents');\r
+       $modeles = $modeles['modeles'];\r
+       $GLOBALS['doublons_documents_inclus'] = array();\r
+       $env = array(\r
+               'objet' => $type,\r
+               'id_objet' => $id,\r
+               $id_table_objet => $id\r
+       );\r
+       traiter_modeles($champs_a_traiter,array('documents'=>$modeles),'','',null,$env); // detecter les doublons\r
+       objet_qualifier_liens(array('document'=>'*'),array($type=>$id),array('vu'=>'non'));\r
+       if (count($GLOBALS['doublons_documents_inclus'])){\r
+               // on repasse par une requete sur spip_documents pour verifier que les documents existent bien !\r
+               $in_liste = sql_in('id_document',$GLOBALS['doublons_documents_inclus']);\r
+               $res = sql_allfetsel("id_document", "spip_documents", $in_liste);\r
+               $res = array_map('reset',$res);\r
+               // Creer le lien s'il n'existe pas deja\r
+               objet_associer(array('document'=>$res),array($type=>$id),array('vu'=>'oui'));\r
+               objet_qualifier_liens(array('document'=>$res),array($type=>$id),array('vu'=>'oui'));\r
+       }\r
+}\r
+\r
+?>
\ No newline at end of file