[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins-dist / medias / action / desordonner_liens_documents.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 /**
14 * Gestion de l'action desordonner_document
15 *
16 * @package SPIP\Medias\Action
17 **/
18
19 if (!defined('_ECRIRE_INC_VERSION')) {
20 return;
21 }
22
23
24 /**
25 * Désordonner des documents
26 *
27 * @param string $arg
28 * fournit les arguments de la fonction dissocier_document
29 * sous la forme `$id_objet-$objet-$document-suppr-safe`
30 *
31 * - 4eme arg : suppr = true, false sinon
32 * - 5eme arg : safe = true, false sinon
33 *
34 * @return void
35 */
36 function action_desordonner_liens_documents_dist($arg = null) {
37 if (is_null($arg)) {
38 $securiser_action = charger_fonction('securiser_action', 'inc');
39 $arg = $securiser_action();
40 }
41
42 $arg = explode('-', $arg);
43 list($id_objet, $objet, $document) = $arg;
44
45 if (
46 $id_objet = intval($id_objet)
47 and autoriser('desordonnerdocuments', $objet, $id_objet)
48 ) {
49 desordonner_liens_documents($document, $objet, $id_objet);
50 } else {
51 spip_log("Interdit de désordonner les documents sur : $objet $id_objet", 'spip');
52 }
53 }
54
55 /**
56 * Désordonner des documents
57 *
58 * @param int|string $document
59 * id_document a désordonner
60 * I/image pour dissocier les images en mode Image
61 * I/document pour dissocier les images en mode document
62 * D/document pour dissocier les documents non image en mode document
63 * @param string $objet
64 * objet duquel dissocier
65 * @param $id_objet
66 * id_objet duquel dissocier
67 * @return void
68 */
69 function desordonner_liens_documents($document, $objet, $id_objet) {
70 include_spip('action/editer_liens');
71 if ($id_document = intval($document)) {
72 desordonner_liens_document($id_document, $objet, $id_objet);
73 } else {
74 list($image, $mode) = explode('/', $document);
75 $image = ($image == 'I');
76 $typdoc = sql_in('docs.extension', array('gif', 'jpg', 'png'), $image ? '' : 'NOT');
77
78 $obj = 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet);
79
80 $s = sql_select(
81 'docs.id_document',
82 'spip_documents AS docs LEFT JOIN spip_documents_liens AS l ON l.id_document=docs.id_document',
83 "$obj AND vu='non' AND docs.mode=" . sql_quote($mode) . " AND $typdoc"
84 );
85 while ($t = sql_fetch($s)) {
86 desordonner_liens_document($t['id_document'], $objet, $id_objet);
87 }
88 }
89 }
90
91 /**
92 * Désordonner un document
93 *
94 * @param int $id_document
95 * id_document a désordonner
96 * @param string $objet
97 * objet duquel dissocier
98 * @param $id_objet
99 * id_objet duquel dissocier
100 * @return void
101 */
102 function desordonner_liens_document($id_document, $objet, $id_objet) {
103 objet_qualifier_liens(
104 array('document' => $id_document),
105 array($objet => $id_objet),
106 array('rang_lien' => 0)
107 );
108 }