<?php

/**
 * Plugin CIBLOC
 * @copyright 2018 MTECT
 * @author Christophe IMBERTI (cf. CPI art L121-1)
 * @license GNU/GPLv3
 */

if (!defined(
	'_ECRIRE_INC_VERSION'
)) {
	return;
}

include_spip('inc/cibloc_commun');
include_spip('inc/cibloc_cache');
include_spip('inc/cibloc_objets');

function formulaires_cibloc_config_multi_charger_dist($type_et_id = '', $new = '') {

	if (!autoriser('configurer configuration')
			or (!$type_et_id)) {
		return false;
	}

	// valeurs actuelles
	$valeurs = cibloc_config_multi($type_et_id);

	return $valeurs;
}

function formulaires_cibloc_config_multi_verifier_dist($type_et_id = '', $new = '') {
	$erreurs = [];

	// statut
	if (!in_array(_request('statut'), ['active', 'masque', 'desactive'])) {
		$erreurs['statut'] = _T('cibloc:valeur_incorrecte');
	}

	// rang
	if (_request('rang') and (!ctype_digit(_request('rang')) or intval(_request('rang')) > 9999)) {
		$erreurs['rang'] = _T('cibloc:valeur_incorrecte');
	}

	// preremplir
	$request_preremplir = _request('preremplir');
	if (!empty($request_preremplir) and !cibloc_verifier_preremplir($request_preremplir, $type_et_id)) {
		if (strpos($request_preremplir, '"') !== false) {
			$erreurs['preremplir'] = _T('cibloc:guillemet_interdit');
		} else {
			$erreurs['preremplir'] = _T('cibloc:preremplir_incorrect');
		}
	}

	return $erreurs;
}

function formulaires_cibloc_config_multi_traiter_dist($type_et_id = '', $new = '') {
	$res = [];
	$valeurs_futures = [];
	$ok = false;
	$purger_definition_cache = false;
	$purger_cache_css = false;
	$purger_cache_js = false;
	$invalider = false;

	$valeurs_actuelles = cibloc_config_multi($type_et_id);
	$id = str_replace('multi_', '', $type_et_id);

	if ($valeur_saisie = _request('preremplir')) {
		if ($valeur_saisie != $valeurs_actuelles['preremplir']) {
			$valeurs_futures['preremplir'] = $valeur_saisie;
			$ok = true;
		}
	}
	if ($valeur_saisie = _request('statut')) {
		if ($valeur_saisie != $valeurs_actuelles['statut']) {
			$valeurs_futures['statut'] = $valeur_saisie;
			$ok = true;
			$purger_definition_cache = true;
			$purger_cache_js = true;
		}
	}
	$valeur_saisie = intval(_request('rang'));
	if ($valeur_saisie != $valeurs_actuelles['rang']) {
		$valeurs_futures['rang'] = $valeur_saisie;
		$ok = true;
		$purger_definition_cache = true;
		$purger_cache_js = true;
	}

	if ($ok) {
		$row = sql_fetsel('*', 'spip_cibloc_objets', "type='multi' AND id='" . $id . "'");
		if ($row) {
			sql_updateq('spip_cibloc_objets', $valeurs_futures, "type='multi' AND id='" . $id . "'");
			$purger_cache_css = true;
			$invalider = true;

		} else {
			$purger_definition_cache = true;
			$purger_cache_js = true;
			$valeurs_futures['type'] = 'multi';
			$valeurs_futures['id'] = $id;
			$valeurs_futures['source'] = 'maj';
			$purger_cache_css = true;
			$invalider = true;
			sql_insertq('spip_cibloc_objets', $valeurs_futures);
		}

		if ($purger_definition_cache) {
			cibloc_purger_definition_cache();
		}
		if ($purger_cache_js) {
			cibloc_purger_cache_js();
		}
		if ($purger_cache_css) {
			cibloc_purger_cache_css();
		}
		if ($invalider) {
			include_spip('inc/invalideur');
			suivre_invalideur('1');
		}
	}

	$res['message_ok'] = '';
	$res['redirect'] = generer_url_ecrire('cibloc_config_multis');

	return $res;
}

function cibloc_config_multi($type_et_id = '') {
	$return = [];
	$valeurs_defaut = cibloc_multi_attributs_valeur_par_defaut();

	if ($type_et_id) {
		$tableau = cibloc_configuration_des_multis();
		if (isset($tableau[$type_et_id])) {
			$return = $tableau[$type_et_id];

			foreach ($valeurs_defaut as $cle => $valeur) {
				if (!isset($return[$cle])) {
					$return[$cle] = $valeur;
				}
			}
		}
	}

	return $return;
}
