source: spip-zone/_plugins_/contacts_et_organisations/trunk/action/supprimer_contact.php @ 99749

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

Suppression de la table spip_organisations_contacts et basculement sur spip_organisations_liens. Suppression de la dependance au plugin editer_liens_simples

File size: 3.3 KB
Line 
1<?php
2
3/**
4 * Gestion de l'action `lier_organisation_auteur`
5 *
6 * @plugin Contacts & Organisations pour Spip 3.0
7 * @license GPL (c) 2009 - 2013
8 * @author Cyril Marion, Matthieu Marcillaud, Rastapopoulos
9 *
10 * @package SPIP\Contacts\Actions
11**/
12
13if (!defined("_ECRIRE_INC_VERSION")) return;
14
15/**
16 * Action pour supprimer un contact ou une organisation
17 *
18 * @param null|string $arg
19 *     Couple `type/id` où `type` est le type d'objet (organisation ou contact)
20 *     et `id` son identifiant. En absence utilise l'argument de l'action sécurisée.
21**/
22function action_supprimer_contact_dist($arg = null) {
23        if (is_null($arg)){
24                $securiser_action = charger_fonction('securiser_action', 'inc');
25                $arg = $securiser_action();
26        }
27        $arg = explode('/', $arg);
28
29        // cas suppression d'une adresse et de toutes ses liaisons
30        if ($arg[0] == 'contact' and intval($arg[1])) {
31                action_supprimer_contact_post($arg[1]);
32        }
33
34        // cas de suppression d'un lien donne
35        // (et de l'adresse avec s'il n'existe plus de liaison ensuite)
36        elseif ($arg[0] == 'organisation' and intval($arg[1])) {
37                action_supprimer_organisation_post($arg[1]);
38        }
39
40        else {
41                spip_log("action_supprimer_contact_dist $arg pas compris");
42        }
43}
44
45/**
46 * Supprime un contact et ses liaisons
47 *
48 * @param int $id_contact
49 *     Identifiant du contact
50**/
51function action_supprimer_contact_post($id_contact) {
52        $id_contact = intval($id_contact);
53
54        // supprimer l'auteur associé si demandé dans la configuration
55        include_spip('inc/config');
56        if (lire_config('contacts_et_organisations/supprimer_reciproquement_auteurs_et_contacts')) {
57                $id_auteur = sql_getfetsel("id_auteur", "spip_contacts", "id_contact=" . sql_quote($id_contact));
58                if ($id_auteur) {
59                        include_spip('action/editer_objet');
60                        autoriser_exception('modifier', 'auteur', $id_auteur);
61                        objet_modifier('auteur', $id_auteur, array("statut" => "5poubelle"));
62                        autoriser_exception('modifier', 'auteur', $id_auteur, false);
63                }
64        }
65
66        sql_delete("spip_contacts_liens", "id_contact=" . sql_quote($id_contact));
67        sql_delete("spip_contacts", "id_contact=" . sql_quote($id_contact));
68        sql_delete("spip_organisations_liens", "objet=".sql_quote('contact')." AND id_objet=" . sql_quote($id_contact));
69
70        include_spip('inc/invalideur');
71        suivre_invalideur("id='id_contact/$id_contact'");
72}
73
74/**
75 * Supprime une organisation et ses liaisons
76 *
77 * @param int $id_organisation
78 *     Identifiant de l'organisation
79**/
80function action_supprimer_organisation_post($id_organisation) {
81        $id_organisation = intval($id_organisation);
82
83        // supprimer l'auteur associé si demandé dans la configuration
84        include_spip('inc/config');
85        if (lire_config('contacts_et_organisations/supprimer_reciproquement_auteurs_et_contacts')) {
86                $id_auteur = sql_getfetsel("id_auteur", "spip_organisations", "id_organisation=" . sql_quote($id_organisation));
87                if ($id_auteur) {
88                        include_spip('action/editer_objet');
89                        autoriser_exception('modifier', 'auteur', $id_auteur);
90                        objet_modifier('auteur', $id_auteur, array("statut" => "5poubelle"));
91                        autoriser_exception('modifier', 'auteur', $id_auteur, false);
92                }
93        }
94
95        sql_delete("spip_organisations_liens", "id_organisation=" . sql_quote($id_organisation));
96        sql_delete("spip_organisations", "id_organisation=" . sql_quote($id_organisation));
97
98        include_spip('inc/invalideur');
99        suivre_invalideur("id='id_organisation/$id_organisation'");
100}
Note: See TracBrowser for help on using the repository browser.