<?php

/*******************************************************************************\
 * BIODIV, plugin et squelette pour SPIP - https://www.spip.net/               *
 *         dédié à la gestion d'observations naturalistes                      *
 *                                                                             *
 *         Copyright (C) 2008-2025 Renaud LAURETTE                             *
 *                                                                             *
 * BIODIV a été développé initialement pour le projet Biodiv.Balma de l'APCVEB *
 * (Association de Protection du Cadre de Vie et de l'Environnement balmanais) * 
 *     voir Biodiv.Balma : https://balma.biodiv.fr/                            *
 *     voir APCVEB : https://apcveb.fr/                                        *
 *                                                                             *
 *  Ce programme est un logiciel libre distribué sous licence GNU/GPL.         *
 *  Pour plus de détails voir les fichiers COPYING.txt et LICENCE-BIODIV.md    *
\*******************************************************************************/

/*
**	FORMULAIRE_LIER_ESPECE{ID_ARTICLE,URL}
**	S'appelle sur un article, pour y lier une observation suivant un type
**	de lien qui peut être 'espece' ou 'endroit'
*/

include_spip('base/abstract_sql');
include_spip('inc/invalideur');
	
function formulaires_lier_espece_charger_dist($cle_article=0,$redirect='') {
	if(intval($cle_article)<=0) {
		// protection contre les défauts d'appel
		return;
	}

	$valeurs = array(
		'id_article' => $cle_article,
		);
	return $valeurs;
}

function formulaires_lier_espece_verifier_dist($cle_article=0,$redirect='') {
	// Controles
	$erreurs = array();
	if (intval(_request('id_observation'))==(-1)) $erreurs['id_observation'] = _T("observation:msg_lier_selection_obligatoire");
	if (!_request('id_article')) $erreurs['id_article'] = _T("observation:msg_lier_erreur_contexte");
	if(count($erreurs)) {
		$erreurs['message_erreur'] = _T("observation:msg_lier_abandon");
	}
	return $erreurs;
}

function formulaires_lier_espece_traiter_dist($cle_article=0,$redirect='') {
	// Traitement
	$cle_obs= _request('id_observation');
	$id_article =  intval(_request('id_article'));
	
	// Forcage éventuel de la discrétion en fonction du statut du taxon
	$discret='non';
	$idf = 0;
	$taxupd = ". ";
	$row = sql_fetsel('discret,id_famille','spip_biodiv_observations','id_observation='.intval($cle_obs));
	if($row) {
		$discret=$row['discret'];
		$idf = $row['id_famille'];
	}
	$row = sql_fetsel('sensible','spip_taxrefs','id_espece='.$id_article);
	if($row and ($row['sensible'] == 'oui')) {
		$discret='oui';
		$taxupd = _T("observation:msg_lier_taxon_discret");
	}
	
	$champs_utiles = array(
		"id_espece" => $id_article,
		"id_famille" => 0,
		"discret" => $discret
		// "statut" => "publie"
		);

	if($r = sql_updateq('spip_biodiv_observations',$champs_utiles,"id_observation=$cle_obs")) {
		$follow_up = _T("observation:msg_lier_ok",array("obs" => $cle_obs)) . $taxupd;
		// Pipeline
		pipeline('apres_lien_observation',array(
			'id_observation' => $cle_obs,
			'objet' => 'article',
			'nature' => 'espece',
			'id_objet' => $id_article
			));
		// Invalider les caches
		if($idf) suivre_invalideur("id='rubrique/$idf'");
		suivre_invalideur("id='article/$id_article'");
		suivre_invalideur("id='observation/$id_observation'");		
		return array('message_ok'=>$follow_up);
	} else {
		$follow_up = _T("observation:msg_lier_echec", array("err" => $r, "obs" => $cle_obs));
		return array('message_erreur'=>$follow_up);
	}
}


?>
