source: spip-zone/_core_/plugins/medias/action/supprimer_tous_orphelins.php

Last change on this file was 115450, checked in by bruno@…, 6 days ago

Fix #4272 : ne pas supprimer les vignettes de documents dans l'action de suppression des orphelins

File size: 1.9 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2019                                                *
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
13if (!defined('_ECRIRE_INC_VERSION')) {
14        return;
15}
16
17include_spip('base/abstract_sql');
18
19function action_supprimer_tous_orphelins() {
20
21        $securiser_action = charger_fonction('securiser_action', 'inc');
22        $arg = $securiser_action();
23
24        //on recupere le contexte pour ne supprimer les orphelins que de ce dernier
25        list($media, $distant, $statut, $sanstitre) = explode('/', $arg);
26
27        $where = array();
28        //critere sur le media
29        if ($media) {
30                $select = 'media=' . sql_quote($media);
31        }
32
33        //critere sur le distant
34        if ($distant) {
35                $where[] = 'distant=' . sql_quote($distant);
36        }
37
38        //critere sur le statut
39        if ($statut) {
40                $where[] = 'statut REGEXP ' . sql_quote("($statut)");
41        }
42
43        //critere sur le sanstitre
44        if ($sanstitre) {
45                $where[] = "titre=''";
46        }
47
48        //on isole les orphelins
49        $select = sql_get_select('DISTINCT id_document', 'spip_documents_liens as oooo');
50        $cond = "spip_documents.id_document NOT IN ($select) AND spip_documents.mode != 'vignette'";
51        $where[] = $cond;
52
53        $ids_doc_orphelins = sql_select('id_document', 'spip_documents', $where);
54
55        $supprimer_document = charger_fonction('supprimer_document', 'action');
56        while ($row = sql_fetch($ids_doc_orphelins)) {
57                // pour les orphelins du contexte, on traite avec la fonction existante
58                $supprimer_document($row['id_document']);
59        }
60}
Note: See TracBrowser for help on using the repository browser.