Skip to content
Extraits de code Groupes Projets
supprimer_document.php 2,56 ko
Newer Older
JamesRezo's avatar
JamesRezo a validé
/**
 * 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.
 */
kent1@arscenic.info's avatar
kent1@arscenic.info a validé
if (!defined('_ECRIRE_INC_VERSION')) {
function action_supprimer_document_dist($id_document = 0) {
	if (!$id_document) {
		$securiser_action = charger_fonction('securiser_action', 'inc');
		$id_document = $securiser_action();
	}
	include_spip('inc/autoriser');
	if (!autoriser('supprimer', 'document', $id_document)) {
		spip_log("Echec : Suppression document $id_document interdite", _LOG_ERREUR);


	// si c'etait une vignette, modifier le document source !
	if ($source = sql_getfetsel('id_document', 'spip_documents', 'id_vignette=' . intval($id_document))) {
		include_spip('action/editer_document');
		document_modifier($source, ['id_vignette' => 0]);
	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);

kent1@arscenic.info's avatar
kent1@arscenic.info a validé
	spip_log("Suppression du document $id_document (" . $doc['fichier'] . ')');

	// 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's avatar
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'
kent1@arscenic.info's avatar
kent1@arscenic.info a validé
	);
		action_supprimer_document_dist($id);
	}
	objet_dissocier(['document' => $id_document], '*', ['role' => '*']);
	sql_delete('spip_documents', 'id_document=' . intval($id_document));
	// 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');
		if ($local = _DIR_RACINE . copie_locale($doc['fichier'], 'test')) {
		spip_unlink(get_spip_doc($doc['fichier']));
kent1@arscenic.info's avatar
kent1@arscenic.info a validé
	pipeline(
		'post_edition',
				'operation' => 'supprimer_document', // compat v<=2
				'action' => 'supprimer_document',
				'id_objet' => $id_document,
				'document' => $doc,
	return true;