Newer
Older

cedric@yterium.com
a validé
<?php
/**
* SPIP, Système de publication pour l'internet
*
* Copyright © avec tendresse depuis 2001
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James
*
* Ce programme est un logiciel libre distribué sous licence GNU/GPL.
*/

cedric@yterium.com
a validé

cedric@yterium.com
a validé
return;
}

cedric@yterium.com
a validé

gilles.vincent@gmail.com
a validé
function action_supprimer_document_dist($id_document = 0) {

cedric@yterium.com
a validé
if (!$id_document) {
$securiser_action = charger_fonction('securiser_action', 'inc');

cedric@yterium.com
a validé
$id_document = $securiser_action();
}
include_spip('inc/autoriser');

cedric@yterium.com
a validé
if (!autoriser('supprimer', 'document', $id_document)) {
spip_log("Echec : Suppression document $id_document interdite", _LOG_ERREUR);

cedric@yterium.com
a validé
return false;

cedric@yterium.com
a validé
}

cedric@yterium.com
a validé
// si c'etait une vignette, modifier le document source !

cedric@yterium.com
a validé
if ($source = sql_getfetsel('id_document', 'spip_documents', 'id_vignette=' . intval($id_document))) {

cedric@yterium.com
a validé
include_spip('action/editer_document');
document_modifier($source, ['id_vignette' => 0]);

cedric@yterium.com
a validé
}

cedric@yterium.com
a validé
include_spip('inc/documents');

cedric@yterium.com
a validé
if (!$doc = sql_fetsel('*', 'spip_documents', 'id_document=' . intval($id_document))) {
spip_log("Echec : Suppression document $id_document : le document n'existe pas en base", _LOG_ERREUR);

cedric@yterium.com
a validé
return false;

cedric@yterium.com
a validé
}

cedric@yterium.com
a validé
spip_log("Suppression du document $id_document (" . $doc['fichier'] . ')');

cedric@yterium.com
a validé
include_spip('action/editer_liens');

cedric@yterium.com
a validé
// Si c'est un document ayant une vignette, supprimer aussi la vignette
if ($doc['id_vignette']) {
action_supprimer_document_dist($doc['id_vignette']);
objet_dissocier(['document' => $doc['id_vignette']], '*');

cedric@yterium.com
a validé
}
// Si c'est un document ayant des documents annexes (sous-titre, ...)
// les supprimer aussi
$annexes = array_column(
sql_allfetsel('id_document', 'spip_documents_liens', "objet='document' AND id_objet=" . intval($id_document)),
'id_document'

cedric@yterium.com
a validé
foreach ($annexes as $id) {
action_supprimer_document_dist($id);
}

cedric@yterium.com
a validé

cedric@yterium.com
a validé
// dereferencer dans la base
objet_dissocier(['document' => $id_document], '*', ['role' => '*']);

cedric@yterium.com
a validé
sql_delete('spip_documents', 'id_document=' . intval($id_document));

cedric@yterium.com
a validé

cedric@yterium.com
a validé
// Supprimer le fichier si le doc est local,
// et la copie locale si le doc est distant
if ($doc['distant'] == 'oui') {
include_spip('inc/distant');

cedric@yterium.com
a validé
if ($local = _DIR_RACINE . copie_locale($doc['fichier'], 'test')) {

cedric@yterium.com
a validé
spip_unlink($local);

cedric@yterium.com
a validé
}
} else {

cedric@yterium.com
a validé
spip_unlink(get_spip_doc($doc['fichier']));

cedric@yterium.com
a validé
}

cedric@yterium.com
a validé
'operation' => 'supprimer_document', // compat v<=2
'action' => 'supprimer_document',

cedric@yterium.com
a validé
'table' => 'spip_documents',

cedric@yterium.com
a validé
'id_objet' => $id_document,
'document' => $doc,

cedric@yterium.com
a validé
'data' => null

cedric@yterium.com
a validé
);

cedric@yterium.com
a validé