<?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_choix_couleur');

function formulaires_cibloc_config_divers_charger_dist() {

	if (!autoriser('configurer', 'configuration')) {
		return false;
	}

	// valeurs actuelles
	$valeurs = cibloc_tableau_des_divers();

	return $valeurs;
}

function formulaires_cibloc_config_divers_verifier_dist() {
	$erreurs = [];

	// tableau des couleurs
	$tableau_nom_des_couleurs = cibloc_tableau_nom_des_couleurs();

	$couleurs_actuelles = cibloc_tableau_couleur_des_divers();

	foreach ($couleurs_actuelles as $cle => $valeur) {
		if (_request($cle) != 'transparent' and !in_array(_request($cle), $tableau_nom_des_couleurs)) {
			$erreurs[$cle] = _T('cibloc:valeur_incorrecte');
		}
	}

	if (!in_array(_request('bloc_ressource_automatique'), ['non', 'oui'])) {
		$erreurs['bloc_ressource_automatique'] = _T('cibloc:valeur_incorrecte');
	}

	// padding
	if (!is_numeric(_request('margin_top'))) {
		$erreurs['margin_top'] = _T('cibloc:valeur_incorrecte');
	}
	if (!is_numeric(_request('margin_bottom'))) {
		$erreurs['margin_bottom'] = _T('cibloc:valeur_incorrecte');
	}

	return $erreurs;
}

function formulaires_cibloc_config_divers_traiter_dist() {
	$res = [];
	$valeurs_futures = [];
	$valeurs_actuelles = cibloc_tableau_des_divers();
	$bloc_ressource_automatique_actuel = $valeurs_actuelles['bloc_ressource_automatique'];
	$couleurs_actuelles = cibloc_tableau_couleur_des_divers();
	$ok = false;
	$purger_definition_cache = false;
	$invalider = false;
	$tableau_nom_champs = ['margin_top', 'margin_bottom'];

	foreach ($couleurs_actuelles as $cle => $valeur) {
		if ($valeur_saisie = _request($cle)) {
			if (cibloc_commun_verifier_nom_couleur($valeur_saisie)) {
				if ($valeur_saisie != $valeurs_actuelles[$cle]) {
					$valeurs_actuelles[$cle] = $valeur_saisie;
					$ok = true;
					$invalider = true;
				}
			}
		}
	}

	if ($valeur_saisie = _request('bloc_ressource_automatique')) {
		if ($valeur_saisie != $bloc_ressource_automatique_actuel) {
			$valeurs_actuelles['bloc_ressource_automatique'] = $valeur_saisie;
			$ok = true;
			$purger_definition_cache = true;
			$invalider = true;
		}
	}

	foreach ($tableau_nom_champs as $nom_champ) {
		$valeur_saisie = _request($nom_champ);
		if ($valeur_saisie != $valeurs_actuelles[$nom_champ]) {
			$valeurs_actuelles[$nom_champ] = $valeur_saisie;
			$ok = true;
			$invalider = true;
		}
	}

	if ($ok) {
		$nom = 'divers';
		$valeurs_futures['valeur'] = serialize($valeurs_actuelles);

		$row = sql_fetsel('*', 'spip_cibloc_config', "nom='" . $nom . "'");
		if ($row) {
			sql_updateq('spip_cibloc_config', $valeurs_futures, "nom='" . $nom . "'");
		} else {
			$valeurs_futures['nom'] = $nom;
			sql_insertq('spip_cibloc_config', $valeurs_futures);
		}

		if ($purger_definition_cache) {
			cibloc_purger_definition_cache();
			cibloc_purger_cache_js();
		}

		cibloc_purger_cache_css();

		if ($invalider) {
			include_spip('inc/invalideur');
			suivre_invalideur('1');
		}
	}

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

	return $res;
}
