<?php
if (!defined('_ECRIRE_INC_VERSION')) return;

function formulaires_editer_sujet_charger_dist($id_article=0, $id_rubrique, $redirect=''){
	
	$erreurs = array();
	include_spip('inc/autoriser');
	if (! autoriser("creer","sujet")) {
		$erreurs['message_erreur'] = "Vous devez être connecté pour utiliser ce formulaire.";
		return $erreurs;
	}
	
	// Pour récupérer les champs renseignés en cas d'erreur

	$titre = _request('titre');
	$texte = _request('texte');
	
	$valeurs = array();
	$valeurs['titre'] = $titre;
	$valeurs['texte'] = $texte;

	if (intval($id_article)) {
		if (! autoriser("modifier","article", $id_article)) {
			$erreurs['message_erreur'] = "Vous n'êtes pas autorisé à modifier cet article.";
			return $erreurs;
		}

		$valeurs = sql_fetsel('*', 'spip_articles', 'id_article='.intval($id_article));
		$where = array(
			'id_objet='.intval($id_article),
			'objet="article"',
		);
		$res = sql_allfetsel('id_auteur','spip_auteurs_liens',$where);
		$valeurs['T_id_auteurs'] = array_column($res,'id_auteur');
	}
	else {
		$valeurs['T_id_auteurs'] = array();
		$valeurs['id_article']   = -1 * intval(session_get('id_auteur'));
	}

	$valeurs['_bigup_rechercher_fichiers'] = true;
	return $valeurs;
}

function formulaires_editer_sujet_verifier_dist($id_article=0, $id_rubrique, $redirect=''){
	$erreurs = array();

	include_spip('inc/autoriser');
	if (! autoriser("creer","sujet")) {
		$erreurs['message_erreur'] = "Vous devez être connecté pour utiliser ce formulaire.";
		return $erreurs;
	}
	if (intval($id_article)) {
		if (! autoriser("modifier","article", $id_article)) {
			$erreurs['message_erreur'] = "Vous n'êtes pas autorisé à modifier cet article.";
			return $erreurs;
		}
	}

	// il faut au minimum titre et un texte pour créer un article
	if (_request('titre') == '' OR _request('texte') == ''){
		$erreurs['message_erreur'] = "Il faut obligatoirement un titre et un texte pour créer un article.";
		return $erreurs;
	}
	

	$bigform = charger_fonction('bigform_verifier','inc');
	$options = ['mime' => 'tout_mime','taille_max'=>'5000','largeur_max'=>'2048','hauteur_max'=>'2048'];
	$bigform($options,$erreurs);

	return $erreurs;
}

function formulaires_editer_sujet_traiter_dist($id_article = 0, $id_rubrique, $redirect = ''){
	$new = $id_article;

	if (!intval($id_article)) {

		include_spip('action/editer_article');
		$set = array(
			'statut' => 'publie'
		);
		$id_article = article_inserer($id_rubrique,$set);
	}

	// enregistrement de l'image
	if (!intval($new)) {
		$where = array(
			'objet="article"',
			'id_objet='.intval(session_get('id_auteur')) * -1
		);
		sql_updateq('spip_documents_liens',array('id_objet' => intval($id_article)), $where);
	}

	// maj de l'article
	$set = array(
		'titre'				=> _request('titre'),
		'texte'				=> _request('texte')
	);
	sql_updateq('spip_articles',$set,'id_article='.intval($id_article));

	// maj association article -> auteurs
	include_spip('action/editer_liens');
	$where = array(
		'id_objet='.intval($id_article),
		'objet="article"',
	);
	$ids_auteurs = sql_allfetsel('id_auteur', 'spip_auteurs_liens', $where);
	$ids_auteurs = array_column($ids_auteurs, 'id_auteur');
	$Tauteurs    = _request('Tauteurs') ?? [];
		$associer    = array_diff($Tauteurs, $ids_auteurs);
		$dissocier   = array_diff($ids_auteurs, $Tauteurs);

		objet_associer( array('auteur' => $associer),array('article' => intval($id_article) ));
		objet_dissocier( array('auteur' => $dissocier) , array('article' =>intval($id_article) ));
	}

	include_spip('inc/invalideur');
	suivre_invalideur("id='id_article/1'");

	$retour = array();
	$retour['message_ok'] = "Le sujet a bien été créé.";


	$retour['redirect'] = $redirect;

	$bigform = charger_fonction('bigform_traiter','inc');
	$bigform($id_article, 'article');

	return $retour;
}
