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

Last change on this file since 44157 was 44157, checked in by cedric@…, 9 years ago

report de r44136
prevoir que l'on peut rattacher un document a un autre. C'est une pre-figuration de la reorganisation des documents.
Dans spip_documents_liens id_document designe toujours l'enfant (dependant de) et (id_objet,objet) le parent.
Donc ici un document annexe (sous-titrage, licence, ..) est designe par id_document, et (id_objet,objet='document') pointe vers le document maitre.
Des variantes du mode 'vignette' sont donc a prevoir, pour les documents annexes

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