<?php

/***********************************************************************************************************
*  CONVERSION DES COULEURS DE LA PALETTE HEXADECIMAL EN RGBA
*  MODIFIER PALETTE DE COULEUR EDITEUR GUTENBERG
*    MODIFIER PALETTE DE COULEUR EDITEUR GUTENBERG INTITULEE THEME POUR UN THEME JSON
*    MODIFIER PALETTE DE COULEUR EDITEUR GUTENBERG INTITULEE PAR DEFAUT POUR LE THEME ASTRA  
*	 REMPLACER LA PALETTE DE HUIT COULEURS PAR DÉDAUT DANS LE COLOR PICKER DU PERSONNALISEUR
*  DÉSACTIVER LES COULEURS & DÉGRADÉS PERSONNALISÉES
*    DÉSACTIVER LES COULEURS & DÉGRADÉS PERSONNALISÉES POUR UN THEME JSON 
*  TRANSPOSER LA PALETTE DE COULEURS EN VARIABLE CSS, APLIQUER LE STYLE EN ADMIN & FRONT END
*************************************************************************************************************/

/*----------------------------------------------------------------------------------------
		        CONVERSION DES COULEURS DE LA PALETTE HEXADECIMAL EN RGBA
/*---------------------------------------------------------------------------------------*/

// Couleur N°1
// si l'opacité est différente de 100 on fait la conversion en RGBA
if ( $settings['eccp_settings_opacity_color_one_text_field'] <> '100' ) {
	
$settings['eccp_settings_color_one'] = eccp_hex2rgba( $settings['eccp_settings_color_one_text_field'], 
intval($settings['eccp_settings_opacity_color_one_text_field'])/100 );

// sinon on retourne la valeur Hexadécimale
}else{
	$settings['eccp_settings_color_one'] = $settings['eccp_settings_color_one_text_field'];
}

// Couleur N°2
if ( $settings['eccp_settings_opacity_color_two_text_field'] <> '100' ) {
	
$settings['eccp_settings_color_two'] = eccp_hex2rgba( $settings['eccp_settings_color_two_text_field'], 
intval($settings['eccp_settings_opacity_color_two_text_field'])/100 );

}else{
	$settings['eccp_settings_color_two'] = $settings['eccp_settings_color_two_text_field'];
}

// Couleur N°3
if ( $settings['eccp_settings_opacity_color_three_text_field'] <> '100' ) {
	
$settings['eccp_settings_color_three'] = eccp_hex2rgba( $settings['eccp_settings_color_three_text_field'], 
intval($settings['eccp_settings_opacity_color_three_text_field'])/100 );

}else{
	$settings['eccp_settings_color_three'] = $settings['eccp_settings_color_three_text_field'];
}

// Couleur N°4
if ( $settings['eccp_settings_opacity_color_four_text_field'] <> '100' ) {
	
$settings['eccp_settings_color_four'] = eccp_hex2rgba( $settings['eccp_settings_color_four_text_field'], 
intval($settings['eccp_settings_opacity_color_four_text_field'])/100 );

}else{
	$settings['eccp_settings_color_four'] = $settings['eccp_settings_color_four_text_field'];
}

// Couleur N°5
if ( $settings['eccp_settings_opacity_color_five_text_field'] <> '100' ) {
	
$settings['eccp_settings_color_five'] = eccp_hex2rgba( $settings['eccp_settings_color_five_text_field'], 
intval($settings['eccp_settings_opacity_color_five_text_field'])/100 );

}else{
	$settings['eccp_settings_color_five'] = $settings['eccp_settings_color_five_text_field'];
}

// Couleur N°6
if ( $settings['eccp_settings_opacity_color_six_text_field'] <> '100' ) {
	
$settings['eccp_settings_color_six'] = eccp_hex2rgba( $settings['eccp_settings_color_six_text_field'], 
intval($settings['eccp_settings_opacity_color_six_text_field'])/100 );

}else{
	$settings['eccp_settings_color_six'] = $settings['eccp_settings_color_six_text_field'];
}

// Couleur N°7
if ( $settings['eccp_settings_opacity_color_seven_text_field'] <> '100' ) {
	
$settings['eccp_settings_color_seven'] = eccp_hex2rgba( $settings['eccp_settings_color_seven_text_field'], 
intval($settings['eccp_settings_opacity_color_seven_text_field'])/100 );

}else{
	$settings['eccp_settings_color_seven'] = $settings['eccp_settings_color_seven_text_field'];
}

// Couleur N°8
if ( $settings['eccp_settings_opacity_color_eight_text_field'] <> '100' ) {
	
$settings['eccp_settings_color_eight'] = eccp_hex2rgba( $settings['eccp_settings_color_eight_text_field'], 
intval($settings['eccp_settings_opacity_color_eight_text_field'])/100 );

}else{
	$settings['eccp_settings_color_eight'] = $settings['eccp_settings_color_eight_text_field'];
}

// Couleur N°9
if ( $settings['eccp_settings_opacity_color_nine_text_field'] <> '100' ) {
	
$settings['eccp_settings_color_nine'] = eccp_hex2rgba( $settings['eccp_settings_color_nine_text_field'], 
intval($settings['eccp_settings_opacity_color_nine_text_field'])/100 );

}else{
	$settings['eccp_settings_color_nine'] = $settings['eccp_settings_color_nine_text_field'];
}

// Couleur N°10
if ( $settings['eccp_settings_opacity_color_ten_text_field'] <> '100' ) {
	
$settings['eccp_settings_color_ten'] = eccp_hex2rgba( $settings['eccp_settings_color_ten_text_field'], 
intval($settings['eccp_settings_opacity_color_ten_text_field'])/100 );

}else{
	$settings['eccp_settings_color_ten'] = $settings['eccp_settings_color_ten_text_field'];
}

// Couleur N°11
if ( $settings['eccp_settings_opacity_color_eleven_text_field'] <> '100' ) {
	
$settings['eccp_settings_color_eleven'] = eccp_hex2rgba( $settings['eccp_settings_color_eleven_text_field'], 
intval($settings['eccp_settings_opacity_color_eleven_text_field'])/100 );

}else{
	$settings['eccp_settings_color_eleven'] = $settings['eccp_settings_color_eleven_text_field'];
}

// Couleur N°12
if ( $settings['eccp_settings_opacity_color_twelve_text_field'] <> '100' ) {
	
$settings['eccp_settings_color_twelve'] = eccp_hex2rgba( $settings['eccp_settings_color_twelve_text_field'], 
intval($settings['eccp_settings_opacity_color_twelve_text_field'])/100 );

}else{
	$settings['eccp_settings_color_twelve'] = $settings['eccp_settings_color_twelve_text_field'];
}


// Couleur de bordure pour le bloc réutilisable Mettre En Évidence
if ( $reusable_blocks_settings['eccp_settings_opacity_custom_paragraph_border_color_text_field'] <> '100' ) {
	
$reusable_blocks_settings['eccp_settings_custom_paragraph_border_color'] = eccp_hex2rgba( $reusable_blocks_settings['eccp_settings_custom_paragraph_border_color_text_field'], 
intval($reusable_blocks_settings['eccp_settings_opacity_custom_paragraph_border_color_text_field'])/100 );

}else{
	$reusable_blocks_settings['eccp_settings_custom_paragraph_border_color'] = $settings['eccp_settings_custom_paragraph_border_color_text_field'];
}


// On met a jour la table option avec notamment ces nouveaux réglages pour la palette de couleurs & les blocs réutilisables
//Paramètres :  option_name , option_value , Description (plus utilisé) , Autoload(charger l'option au démarrage de WordPress)
update_option( 'eccp_multiple_setting', $settings, '', 'yes' );
update_option( 'eccp_settings_reusable_blocks', $reusable_blocks_settings, '', 'yes' );


/***********************************************************************************************
                              MODIFIER PALETTE DE COULEUR EDITEUR GUTENBERG            
***********************************************************************************************/

/*  
	Pour définir une palette de couleurs personnalisée dans l'éditeur Gutenberg, 
	nous allons utiliser le hook 'editor-color-palette' avec la fonction add_theme_support().
	Cette fonction accepte un tableau de couleurs. 
	Pour chaque couleurs, nous allons définir :

	Le nom : affiché dans l'info-bulle qui apparaît au survol
	Le slug : Un identifiant unique pour la couleur. Utilisé pour générer les classes CSS  et styliser le frontend.
	La couleur :  en notation hexadécimale ou RGBA pour spécifier la couleur

	La traduction des noms pour les couleurs de police n'est pas prise en compte avec le crochet d'action 
	'after_setup_theme' alors on utilise le le hook init: initialisation de WordPress.

	Cela marche dans l'éditeur Gutenberg mais,
	les couleurs ne sont pas générées sur l'interface publique, 
	c’est simplement une classe correspondant au slug de la couleur qui sera ajoutée au bloc.
	exemple pour une couleur noire
	.has-noir-background-color{background-color:#333333;} pour la couleur de fond
	.has-noir-color{color:#333333;} pour la couleur de texte
	.has-strong-noir-color{color:#333333;} pour la couleur de texte en gras
	
	On va donc en front-end générer les couleurs par du CSS Dynamique:
	CSS DYNAMIQUE PALETTE DE COULEURS GUTENBERG (Front End)
	
	Par Ailleurs dans l'editeur Gutenberg, si on fait une sélection du texte 
	et que l'on veut modifier la couleur via la barre d'outils du bloc,
	avec la palette de couleur qui apparait en fenêtre modale,
	cela n'est pas pris en compte en back office, 
	mais ok en Front end. Pour régler le problème, 
	on va donc aussi en BACK OFFICE générer les couleurs par du CSS Dynamique:
	CSS DYNAMIQUE PALETTE DE COULEURS GUTENBERG (Back office)
	
*/

function eccp_color_palette_gutenberg($slug) {

	// On récupère les paramètres général de réglages du plugin
	$settings = get_option( 'eccp_multiple_setting' );

	add_theme_support( 'editor-color-palette', 
		array(
			array(
				'name' => __( $settings['eccp_settings_name_color_one_text_field'],'editor-custom-color-palette' ),
				'slug' => $settings['eccp_settings_slug_color_one_text_field'],
				'color' => $settings['eccp_settings_color_one'] ,
			),
			array(
				'name' => __( $settings['eccp_settings_name_color_two_text_field'],'editor-custom-color-palette' ),
				'slug' => $settings['eccp_settings_slug_color_two_text_field'],
				'color' => $settings['eccp_settings_color_two'] ,
			),
			array(
				'name' => __( $settings['eccp_settings_name_color_three_text_field'],'editor-custom-color-palette' ),
				'slug' => $settings['eccp_settings_slug_color_three_text_field'],
				'color' => $settings['eccp_settings_color_three'] ,
			),
			array(
				'name' => __( $settings['eccp_settings_name_color_four_text_field'],'editor-custom-color-palette' ),
				'slug' => $settings['eccp_settings_slug_color_four_text_field'],
				'color' => $settings['eccp_settings_color_four'] ,
			),
			array(
				'name' => __( $settings['eccp_settings_name_color_five_text_field'],'editor-custom-color-palette' ),
				'slug' => $settings['eccp_settings_slug_color_five_text_field'],
				'color' => $settings['eccp_settings_color_five'] ,
			),
			array(
				'name' => __( $settings['eccp_settings_name_color_six_text_field'],'editor-custom-color-palette' ),
				'slug' => $settings['eccp_settings_slug_color_six_text_field'],
				'color' => $settings['eccp_settings_color_six'] ,
			),
			array(
				'name' => __( $settings['eccp_settings_name_color_seven_text_field'],'editor-custom-color-palette' ),
				'slug' => $settings['eccp_settings_slug_color_seven_text_field'],
				'color' => $settings['eccp_settings_color_seven'] ,
			),
			array(
				'name' => __( $settings['eccp_settings_name_color_eight_text_field'],'editor-custom-color-palette' ),
				'slug' => $settings['eccp_settings_slug_color_eight_text_field'],
				'color' => $settings['eccp_settings_color_eight'] ,
			),
			array(
				'name' => __( $settings['eccp_settings_name_color_nine_text_field'],'editor-custom-color-palette' ),
				'slug' => $settings['eccp_settings_slug_color_nine_text_field'],
				'color' => $settings['eccp_settings_color_nine'] ,
			),
			array(
				'name' => __( $settings['eccp_settings_name_color_ten_text_field'],'editor-custom-color-palette' ),
				'slug' => $settings['eccp_settings_slug_color_ten_text_field'],
				'color' => $settings['eccp_settings_color_ten'] ,
			),
			array(
				'name' => __( $settings['eccp_settings_name_color_eleven_text_field'],'editor-custom-color-palette' ),
				'slug' => $settings['eccp_settings_slug_color_eleven_text_field'],
				'color' => $settings['eccp_settings_color_eleven'] ,
			),
			array(
				'name' => __( $settings['eccp_settings_name_color_twelve_text_field'],'editor-custom-color-palette' ),
				'slug' => $settings['eccp_settings_slug_color_twelve_text_field'],
				'color' => $settings['eccp_settings_color_twelve'] ,
			),
			
		) 
	);


}

// si on a activé la personnalisation de la palette de couleurs Gutenberg
if( $settings['eccp_settings_activate_customizing_color_palette_checkbox_field'] == true ) {
	add_action( 'init', 'eccp_color_palette_gutenberg',10,1 );
}


/***********************************************************************************************
       MODIFIER PALETTE DE COULEUR EDITEUR GUTENBERG INTITULEE THEME POUR UN THEME JSON             
***********************************************************************************************/
	
	/*
	Pour définir une palette de couleurs personnalisée dans Gutenberg, 
	nous allons utiliser le hook 'wp_theme_json_data_theme' introduit par WordPress 6.1
	qui permet de filtrer les paramétres de theme.json.
	la fonction utilisé avec le hook retourne la méthode update_with( $new_data )
	avec $new_data ayant une structure de type valide theme.json
	 
	On commence par déclarer quelle version de theme.json on utilise depuis WordPress 6.6
	c'est la version V3
	Ensuite on a le tableau settings qui comprend le tableau color
	ou l'on va renseigner dans le tableau palette notre palette de couleurs personnalisées
	
	Le nom : affiché dans l'info-bulle qui apparaît au survol
	Le slug : Un identifiant unique pour la couleur. Utilisé pour générer les classes CSS  et styliser le frontend.
	La couleur :  en notation hexadécimale ou RGBA pour spécifier la couleur

	Cela marche dans l'éditeur Gutenberg mais,
	les couleurs ne sont pas générées sur l'interface publique, 
	c’est simplement une classe correspondant au slug de la couleur qui sera ajoutée au bloc.
	exemple pour une couleur noire
	.has-noir-background-color{background-color:#333333;} pour la couleur de fond
	.has-noir-color{color:#333333;} pour la couleur de texte
	.has-strong-noir-color{color:#333333;} pour la couleur de texte en gras
	
	On va donc en front-end générer les couleurs par du CSS Dynamique:
	CSS DYNAMIQUE PALETTE DE COULEURS GUTENBERG (Front End)
	
	Par Ailleurs dans l'editeur Gutenberg, si on fait une sélection du texte 
	et que l'on veut modifier la couleur via la barre d'outils du bloc,
	avec la palette de couleur qui apparait en fenêtre modale,
	cela n'est pas pris en compte en back office, 
	mais ok en Front end. Pour régler le problème, 
	on va donc aussi en BACK OFFICE générer les couleurs par du CSS Dynamique:
	CSS DYNAMIQUE PALETTE DE COULEURS GUTENBERG (Back office)
	
	*/

function eccp_color_palette_theme_json( $theme_json ){
	
	// On récupère les paramètres général de réglages du plugin
	$settings = get_option( 'eccp_multiple_setting' );
	
    $new_data = array(
	
        'version'  => 3,
		
        'settings' => array(
		
            'color' => array(
				// supprimer la palette de couleurs par défaut 
				// on ne souhaite afficher que la palette du thème
				// soit notre palette personnalisé pour l'editeur gutenberg
				'defaultPalette' => false,
			
                'palette' => array( 
				
                    array(
						'name' => __( $settings['eccp_settings_name_color_one_text_field'],'editor-custom-color-palette' ),
						'slug' => $settings['eccp_settings_slug_color_one_text_field'],
						'color' => $settings['eccp_settings_color_one'] ,
					),
					array(
						'name' => __( $settings['eccp_settings_name_color_two_text_field'],'editor-custom-color-palette' ),
						'slug' => $settings['eccp_settings_slug_color_two_text_field'],
						'color' => $settings['eccp_settings_color_two'] ,
					),
					array(
						'name' => __( $settings['eccp_settings_name_color_three_text_field'],'editor-custom-color-palette' ),
						'slug' => $settings['eccp_settings_slug_color_three_text_field'],
						'color' => $settings['eccp_settings_color_three'] ,
					),
					array(
						'name' => __( $settings['eccp_settings_name_color_four_text_field'],'editor-custom-color-palette' ),
						'slug' => $settings['eccp_settings_slug_color_four_text_field'],
						'color' => $settings['eccp_settings_color_four'] ,
					),
					array(
						'name' => __( $settings['eccp_settings_name_color_five_text_field'],'editor-custom-color-palette' ),
						'slug' => $settings['eccp_settings_slug_color_five_text_field'],
						'color' => $settings['eccp_settings_color_five'] ,
					),
					array(
						'name' => __( $settings['eccp_settings_name_color_six_text_field'],'editor-custom-color-palette' ),
						'slug' => $settings['eccp_settings_slug_color_six_text_field'],
						'color' => $settings['eccp_settings_color_six'] ,
					),
					array(
						'name' => __( $settings['eccp_settings_name_color_seven_text_field'],'editor-custom-color-palette' ),
						'slug' => $settings['eccp_settings_slug_color_seven_text_field'],
						'color' => $settings['eccp_settings_color_seven'] ,
					),
					array(
						'name' => __( $settings['eccp_settings_name_color_eight_text_field'],'editor-custom-color-palette' ),
						'slug' => $settings['eccp_settings_slug_color_eight_text_field'],
						'color' => $settings['eccp_settings_color_eight'] ,
					),
					array(
						'name' => __( $settings['eccp_settings_name_color_nine_text_field'],'editor-custom-color-palette' ),
						'slug' => $settings['eccp_settings_slug_color_nine_text_field'],
						'color' => $settings['eccp_settings_color_nine'] ,
					),
					array(
						'name' => __( $settings['eccp_settings_name_color_ten_text_field'],'editor-custom-color-palette' ),
						'slug' => $settings['eccp_settings_slug_color_ten_text_field'],
						'color' => $settings['eccp_settings_color_ten'] ,
					),
					array(
						'name' => __( $settings['eccp_settings_name_color_eleven_text_field'],'editor-custom-color-palette' ),
						'slug' => $settings['eccp_settings_slug_color_eleven_text_field'],
						'color' => $settings['eccp_settings_color_eleven'] ,
					),
					array(
						'name' => __( $settings['eccp_settings_name_color_twelve_text_field'],'editor-custom-color-palette' ),
						'slug' => $settings['eccp_settings_slug_color_twelve_text_field'],
						'color' => $settings['eccp_settings_color_twelve'] ,
					),
					
                ),
				
            ),
        ),
    );

    return $theme_json->update_with( $new_data );
}

// si on a activé la personnalisation de la palette de couleurs Gutenberg
if( $settings['eccp_settings_activate_customizing_color_palette_checkbox_field'] == true )  {
	add_filter( 'wp_theme_json_data_theme', 'eccp_color_palette_theme_json', 10, 1 );
}

/***********************************************************************************************
      MODIFIER PALETTE DE COULEUR EDITEUR GUTENBERG INTITULEE PAR DEFAUT POUR LE THEME ASTRA            
***********************************************************************************************/
// PLUS NECESSAIRE A PARTIR DE LA VERSION WORDPRESS 6.1, CAR ON FILTRE LES PARAMÉTRES THEME.JSON
// Pour les théme ASTRA la palette de couleur est établi par le theme.json
// theme.json est prioritaire a la fonction add_theme_support() introduit par le hook: after_setup_theme ou init
// qui permet de modifier la palette de couleur.  
// Pour y palier on va aussi afficher dans guttenberg une palette par défaut
// en dessous de la palette du thème via le hook: block_editor_settings_all
// Mais il reste un problème:
// si on fait une sélection du texte et que l'on veut modifier la couleur via la barre d'outils du bloc,
// avec la palette de couleur qui apparait en fenêtre modale, ce sera toujours la palette de thème et non
// la palette de couleur par défaut.
	
// on récupère le thème actif
$my_theme = wp_get_theme();


function eccp_default_color_palette_gutenberg( $editor_settings ) {

	// On récupère les paramètres général de réglages du plugin
	$settings = get_option( 'eccp_multiple_setting' );
	
	
	// on active la palette de couleur par défaut qui sera placé en dessous de celle du thème		
	$editor_settings["__experimentalFeatures"]["color"]["defaultPalette"] = true;
	
	
	// Palette de couleurs par défaut
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][0]["name"] = __( $settings['eccp_settings_name_color_one_text_field'],'editor-custom-color-palette' );
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][0]["slug"] = $settings['eccp_settings_slug_color_one_text_field'];
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][0]["color"] = $settings['eccp_settings_color_one'];
	
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][1]["name"] = __( $settings['eccp_settings_name_color_two_text_field'],'editor-custom-color-palette' );
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][1]["slug"] = $settings['eccp_settings_slug_color_two_text_field'];
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][1]["color"] = $settings['eccp_settings_color_two'];
	
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][2]["name"] = __( $settings['eccp_settings_name_color_three_text_field'],'editor-custom-color-palette' );
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][2]["slug"] = $settings['eccp_settings_slug_color_three_text_field'];
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][2]["color"] = $settings['eccp_settings_color_three'];
	
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][3]["name"] = __( $settings['eccp_settings_name_color_four_text_field'],'editor-custom-color-palette' );
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][3]["slug"] = $settings['eccp_settings_slug_color_four_text_field'];
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][3]["color"] = $settings['eccp_settings_color_four'];
	
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][4]["name"] = __( $settings['eccp_settings_name_color_five_text_field'],'editor-custom-color-palette' );
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][4]["slug"] = $settings['eccp_settings_slug_color_five_text_field'];
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][4]["color"] = $settings['eccp_settings_color_five'];
	
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][5]["name"] = __( $settings['eccp_settings_name_color_six_text_field'],'editor-custom-color-palette' );
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][5]["slug"] = $settings['eccp_settings_slug_color_six_text_field'];
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][5]["color"] = $settings['eccp_settings_color_six'];
	
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][6]["name"] = __( $settings['eccp_settings_name_color_seven_text_field'],'editor-custom-color-palette' );
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][6]["slug"] = $settings['eccp_settings_slug_color_seven_text_field'];
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][6]["color"] = $settings['eccp_settings_color_seven'];
	
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][7]["name"] = __( $settings['eccp_settings_name_color_eight_text_field'],'editor-custom-color-palette' );
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][7]["slug"] = $settings['eccp_settings_slug_color_eight_text_field'];
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][7]["color"] = $settings['eccp_settings_color_eight'];
	
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][8]["name"] = __( $settings['eccp_settings_name_color_nine_text_field'],'editor-custom-color-palette' );
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][8]["slug"] = $settings['eccp_settings_slug_color_nine_text_field'];
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][8]["color"] = $settings['eccp_settings_color_nine'];
	
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][9]["name"] = __( $settings['eccp_settings_name_color_ten_text_field'],'editor-custom-color-palette' );
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][9]["slug"] = $settings['eccp_settings_slug_color_ten_text_field'];
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][9]["color"] = $settings['eccp_settings_color_ten'];
	
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][10]["name"] = __( $settings['eccp_settings_name_color_eleven_text_field'],'editor-custom-color-palette' );
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][10]["slug"] = $settings['eccp_settings_slug_color_eleven_text_field'];
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][10]["color"] = $settings['eccp_settings_color_eleven'];
	
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][11]["name"] = __( $settings['eccp_settings_name_color_twelve_text_field'],'editor-custom-color-palette' );
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][11]["slug"] = $settings['eccp_settings_slug_color_twelve_text_field'];
	$editor_settings["__experimentalFeatures"]["color"]["palette"]["default"][11]["color"] = $settings['eccp_settings_color_twelve'];


	
	/* Palette de couleurs thème ( ne fonctionne pas car theme.json est prioritaire)
    $editor_settings["colors"][0]["name"] = __( $settings['eccp_settings_name_color_one_text_field'],'editor-custom-color-palette' );
	$editor_settings["colors"][0]["slug"] = $settings['eccp_settings_slug_color_one_text_field'];
	$editor_settings["colors"][0]["color"] = $settings['eccp_settings_color_one'];
	
	$editor_settings["colors"][1]["name"] = __( $settings['eccp_settings_name_color_two_text_field'],'editor-custom-color-palette' );
	$editor_settings["colors"][1]["slug"] = $settings['eccp_settings_slug_color_two_text_field'];
	$editor_settings["colors"][1]["color"] = $settings['eccp_settings_color_two'];
	
	$editor_settings["colors"][2]["name"] = __( $settings['eccp_settings_name_color_three_text_field'],'editor-custom-color-palette' );
	$editor_settings["colors"][2]["slug"] = $settings['eccp_settings_slug_color_three_text_field'];
	$editor_settings["colors"][2]["color"] = $settings['eccp_settings_color_three'];
	
	$editor_settings["colors"][3]["name"] = __( $settings['eccp_settings_name_color_four_text_field'],'editor-custom-color-palette' );
	$editor_settings["colors"][3]["slug"] = $settings['eccp_settings_slug_color_four_text_field'];
	$editor_settings["colors"][3]["color"] = $settings['eccp_settings_color_four'];
	
	$editor_settings["colors"][4]["name"] = __( $settings['eccp_settings_name_color_five_text_field'],'editor-custom-color-palette' );
	$editor_settings["colors"][4]["slug"] = $settings['eccp_settings_slug_color_five_text_field'];
	$editor_settings["colors"][4]["color"] = $settings['eccp_settings_color_five'];
	
	$editor_settings["colors"][5]["name"] = __( $settings['eccp_settings_name_color_six_text_field'],'editor-custom-color-palette' );
	$editor_settings["colors"][5]["slug"] = $settings['eccp_settings_slug_color_six_text_field'];
	$editor_settings["colors"][5]["color"] = $settings['eccp_settings_color_six'];
	
	$editor_settings["colors"][6]["name"] = __( $settings['eccp_settings_name_color_seven_text_field'],'editor-custom-color-palette' );
	$editor_settings["colors"][6]["slug"] = $settings['eccp_settings_slug_color_seven_text_field'];
	$editor_settings["colors"][6]["color"] = $settings['eccp_settings_color_seven'];
	
	$editor_settings["colors"][7]["name"] = __( $settings['eccp_settings_name_color_eight_text_field'],'editor-custom-color-palette' );
	$editor_settings["colors"][7]["slug"] = $settings['eccp_settings_slug_color_eight_text_field'];
	$editor_settings["colors"][7]["color"] = $settings['eccp_settings_color_eight'];
	
	$editor_settings["colors"][8]["name"] = __( $settings['eccp_settings_name_color_nine_text_field'],'editor-custom-color-palette' );
	$editor_settings["colors"][8]["slug"] = $settings['eccp_settings_slug_color_nine_text_field'];
	$editor_settings["colors"][8]["color"] = $settings['eccp_settings_color_nine'];
	
	$editor_settings["colors"][9]["name"] = __( $settings['eccp_settings_name_color_ten_text_field'],'editor-custom-color-palette' );
	$editor_settings["colors"][9]["slug"] = $settings['eccp_settings_slug_color_ten_text_field'];
	$editor_settings["colors"][9]["color"] = $settings['eccp_settings_color_ten'];
	
	$editor_settings["colors"][10]["name"] = __( $settings['eccp_settings_name_color_eleven_text_field'],'editor-custom-color-palette' );
	$editor_settings["colors"][10]["slug"] = $settings['eccp_settings_slug_color_eleven_text_field'];
	$editor_settings["colors"][10]["color"] = $settings['eccp_settings_color_eleven'];
	
	$editor_settings["colors"][11]["name"] = __( $settings['eccp_settings_name_color_twelve_text_field'],'editor-custom-color-palette' );
	$editor_settings["colors"][11]["slug"] = $settings['eccp_settings_slug_color_twelve_text_field'];
	$editor_settings["colors"][11]["color"] = $settings['eccp_settings_color_twelve'];
	*/

	return $editor_settings;
	
}

 // si on a activé la personnalisation de la palette de couleurs Gutenberg
 // et le theme actif est astra
if( ($settings['eccp_settings_activate_customizing_color_palette_checkbox_field'] == true) &&
(stristr($my_theme, 'astra')) )   {
	//add_filter( 'block_editor_settings_all', 'eccp_default_color_palette_gutenberg', 10, 1 );
}


/***********************************************************************************************
   REMPLACER LA PALETTE DE HUIT COULEURS PAR DÉDAUT DANS LE COLOR PICKER DU PERSONNALISEUR        
***********************************************************************************************/

 // si on a activé la personnalisation de la palette de couleurs Gutenberg
 // et le theme actif est OceanWP
if ( $settings['eccp_settings_activate_customizing_color_palette_checkbox_field'] == true ) {
	add_filter( 'ocean_default_color_palettes', 'override_customizer_color_palette' );
}

// Pour le theme actif Astra(ne fonctionne plus car palette de couleurs globales)
if ( $settings['eccp_settings_activate_customizing_color_palette_checkbox_field'] == true ) {
	//add_filter( 'astra_color_palettes', 'override_customizer_color_palette' );
}

// Pour le theme actif GeneratePress(ne fonctionne plus car palette de couleurs globales)
if ( $settings['eccp_settings_activate_customizing_color_palette_checkbox_field'] == true ) {
	//add_filter( 'generate_default_color_palettes', 'override_customizer_color_palette' );
}


// Remplacer la palette de couleurs par défaut dans le color picker du personnaliseur
// par notre palette de couleurs personnalisées
function override_customizer_color_palette( $palettes ) {
 
	// On récupère les paramètres général de réglages du plugin
	$settings = get_option( 'eccp_multiple_setting' );
 
    $palettes = array(
		$settings['eccp_settings_color_one'],
		$settings['eccp_settings_color_two'],
		$settings['eccp_settings_color_three'],
		$settings['eccp_settings_color_four'],
		$settings['eccp_settings_color_five'],
		$settings['eccp_settings_color_six'],
		$settings['eccp_settings_color_seven'],
		$settings['eccp_settings_color_eight'],
	);

	return $palettes;
    
}




/***********************************************************************************************
                           DÉSACTIVER LES COULEURS & DÉGRADÉS PERSONNALISÉES            
***********************************************************************************************/

// Si on a choisi de désactivé les couleurs personnalisés
if( $settings['eccp_settings_disabling_custom_colors_checkbox_field'] == true ) {
	add_theme_support( 'disable-custom-colors' );
}

// Si on a choisi de désactivé les dégradés personnalisés
if( $settings['eccp_settings_disabling_custom_gradients_checkbox_field'] == true ) {
	add_theme_support( 'editor-gradient-presets', [] );
	add_theme_support( 'disable-custom-gradients' );
}


/***********************************************************************************************
             DÉSACTIVER LES COULEURS & DÉGRADÉS PERSONNALISÉES POUR UN THEME JSON            
***********************************************************************************************/


// Si on a choisi de désactivé les couleurs personnalisés
if ( $settings['eccp_settings_disabling_custom_colors_checkbox_field'] == true )  {
	add_filter( 'wp_theme_json_data_theme', 'eccp_disable_custom_color_theme_json', 10, 1 );
}

function eccp_disable_custom_color_theme_json( $theme_json ){
	
    $new_data = array(
	
        'version'  => 3,
		
        'settings' => array(
		
            'color' => array(
				'custom' => false,
            ),
        ),
    );

    return $theme_json->update_with( $new_data );
}


// Si on a choisi de désactivé les dégradés personnalisés
if( $settings['eccp_settings_disabling_custom_gradients_checkbox_field'] == true )  {
	add_filter( 'wp_theme_json_data_theme', 'eccp_disable_gradient_color_theme_json', 10, 1 );
}

function eccp_disable_gradient_color_theme_json( $theme_json ){
	
    $new_data = array(
	
        'version'  => 3,
		
        'settings' => array(
		
            'color' => array(
				'customGradient' => false,
            ),
			
        ),
    );

    return $theme_json->update_with( $new_data );
}



/***********************************************************************************************
   TRANSPOSER LA PALETTE DE COULEURS EN VARIABLE CSS, APLIQUER LE STYLE EN ADMIN & FRONT END           
***********************************************************************************************/

/* on transpose la palette de couleurs en variable CSS
  on applique le style de la palette en admin & front end. 
  Cela permettra d'appliquer des styles avancés
  pour les blocs de l'editeur en utilisant les variables CSS par ex 
  dans une bordure ou dans un pseudo:before 
  
  Remarque: comme on applique quelque soit le theme la palette de couleur
  avec la fonction add_theme_support() cela permet de récupérer avec la fonction get_theme_support()
  la même palette de couleurs appliquée pour un theme.json via le hook: theme_json_theme.
  Le mieux aurait été de déclarer comme le fait le thème Astra des variable css 
  directement dans theme.json 
*/
  
  
  
add_action( 'wp_head', 'eccp_var_css_gutenberg_palette_front_end',1 );
add_action( 'admin_head', 'eccp_var_css_gutenberg_palette_admin',8 );

function eccp_var_css_gutenberg_palette_admin() {

	// On récupère les paramètres pour la palette de couleurs
	$settings = get_option( 'eccp_multiple_setting' );
  
	// si on a activé la personnalisation de la palette de couleurs
	if( $settings['eccp_settings_activate_customizing_color_palette_checkbox_field'] == true ) {
	
		// si on est en Admin mais pas dans l'éditeur Gutenberg, alors on sort
		if( is_admin() ) {
			global $current_screen;
			$in_editor = method_exists($current_screen, 'is_block_editor') && $current_screen->is_block_editor();
			if( !$in_editor ) { return; }
		}

		// la fonction get_theme_support() permet d'obtenir la palette de couleurs 
		// enregistrée dans le support de thème, elle retourne un tableau
		/* Array ( [0] => Array ( 
						  [0] => Array ( 
										[name] => couleur primaire 
										[slug] => couleur-primaire 
										[color] => #F37020 
										) 
						  [1] => Array ( [name] => couleur secondaire 
										 [slug] => couleur-secondaire 
										 [color] => #B84331 
										)
						   etc......
										
						)

		*/
		$palette = get_theme_support( 'editor-color-palette' );
		if( !$palette ) { return; } // s'il n'y a pas de palette de couleurs on sort
	   
		// Format Des Styles
		// modif version 2.9.5: régles !important pour la couleur de texte
		// car on ne pouvait modifier la couleur des titres inposé par certains thèmes 
		// :root est une pseudo-classe CSS utilisée afin de contenir différentes déclarations de variables CSS
		// modif version 3.3.4:  ajout de régles spécifiques au back office en ajoutant la
		// classe  .editor-styles-wrapper
		/* OLD:
		$styles = ":root .editor-styles-wrapper .has-background { background-color: var(--eccp-bgColor); }
		:root .editor-styles-wrapper .has-text-color { color: var(--eccp-textColor)!important; }
		:root .editor-styles-wrapper .has-border-color { color: var(--eccp-borderColor)!important; }";
		*/
		$styles = ":root .editor-styles-wrapper .has-background { background-color: var(--eccp-bgColor); }
		:root .editor-styles-wrapper .has-text-color { color: var(--eccp-textColor)!important; }
		:root .editor-styles-wrapper .has-border-color { color: var(--eccp-borderColor);}";

		// pour chaque couleur de la palette
		foreach( $palette[0] as $key => $value ) {
		  
			$slug = $value['slug'];
			$color = $value['color'];
			
			if ($slug !== 'text' &&  $slug !== 'title-color'){

				// couleur du fond avec variable CSS
				$styles .= ".has-{$slug}-background-color { --eccp-bgColor: {$color}; } ";
			
				// couleur du texte
				/*si on fait une sélection du texte 
				et que l'on veut modifier la couleur via la barre d'outils du bloc,
				avec la palette de couleur qui apparait en fenêtre modale,
				cela n'est pas pris en compte en back office & Front end 
				Pour palier au problème on surchage la régle pour la couleur de texte avec variable CSS
				avec cette régle sans variable CSS
				*/
				$styles .= ".has-{$slug}-color { color: {$color}; } ";
			
				// couleur du texte avec variable CSS
				$styles .= ".has-{$slug}-color { --eccp-textColor: {$color}!important; } ";

				// couleur de la bordure avec variable CSS
				// un bug persiste si on applique une couleur a la bordure
				// le texte ayant la couleur du thème par défaut prend alors la même couleur 
				// que la bordure,si bien qu'il faut aussi appliquer une couleur au texte
				$styles .= ".has-{$slug}-border-color { --eccp-borderColor: {$color}; } ";
			
			}
			
		}

		// on applique les régles CSS
		echo '<style id="editor_custom_color_palette_css">'.$styles.'</style>';
		  
	  
	}// si on a activé la personnalisation de la palette de couleurs
  
}

/* Voila le résultat appliqué en Admin 
:root .editor-styles-wrapper .has-background { background-color: var(--eccp-bgColor); }
:root .editor-styles-wrapper .has-text-color { color: var(--eccp-textColor); } 
:root .editor-styles-wrapper .has-border-color { color: var(--eccp-borderColor); }
.has-primary-background-color { --bgColor: #F37020; } 
.has-primary-color { color: #F37020; } 
.has-primary-color { --eccp-textColor: #F37020; }
.has-primary-border-color { --eccp-textColor: #F37020; }  
.has-secondary-background-color { --bgColor: #B84331; } 
.has-secondary-color { color: #B84331; } 
.has-secondary-color { --eccp-textColor: #B84331; }
.has-secondary-border-color { --eccp-textColor: #B84331; }  
etc...
*/

function eccp_var_css_gutenberg_palette_front_end() {

	// On récupère les paramètres pour la palette de couleurs
	$settings = get_option( 'eccp_multiple_setting' );
  
	// si on a activé la personnalisation de la palette de couleurs
	if( $settings['eccp_settings_activate_customizing_color_palette_checkbox_field'] == true ) {
	
		// la fonction get_theme_support() permet d'obtenir la palette de couleurs 
		// enregistrée dans le support de thème, elle retourne un tableau
		/* Array ( [0] => Array ( 
						  [0] => Array ( 
										[name] => couleur primaire 
										[slug] => couleur-primaire 
										[color] => #F37020 
										) 
						  [1] => Array ( [name] => couleur secondaire 
										 [slug] => couleur-secondaire 
										 [color] => #B84331 
										)
						   etc......
										
						)

		*/
		$palette = get_theme_support( 'editor-color-palette' );
		if( !$palette ) { return; } // s'il n'y a pas de palette de couleurs on sort
	   
		// Format Des Styles
		// modif version 2.9.5: régles !important pour la couleur de texte
		// car on ne pouvait modifier la couleur des titres inposé par certains thèmes 
		// :root est une pseudo-classe CSS utilisée afin de contenir différentes déclarations de variables CSS
		/* OLD:
		$styles = ":root .has-background { background-color: var(--eccp-bgColor); }
		:root .has-text-color { color: var(--eccp-textColor)!important; }
		:root .has-border-color { color: var(--eccp-borderColor)!important; }";
		*/
		$styles = ":root .has-background { background-color: var(--eccp-bgColor); }
		:root .has-text-color { color: var(--eccp-textColor)!important; }
		:root .has-border-color { color: var(--eccp-borderColor); }";

		// pour chaque couleur de la palette
		foreach( $palette[0] as $key => $value ) {
		  
			$slug = $value['slug'];
			$color = $value['color'];

			if ($slug !== 'text' &&  $slug !== 'title-color'){

				// couleur du fond avec variable CSS
				$styles .= ".has-{$slug}-background-color { --eccp-bgColor: {$color}; } ";
			
				// couleur du texte
				/*si on fait une sélection du texte 
				et que l'on veut modifier la couleur via la barre d'outils du bloc,
				avec la palette de couleur qui apparait en fenêtre modale,
				cela n'est pas pris en compte en back office & Front end 
				Pour palier au problème on surchage la régle pour la couleur de texte avec variable CSS
				avec cette régle sans variable CSS
				*/
				$styles .= ".has-{$slug}-color { color: {$color}; } ";
			
				// couleur du texte avec variable CSS
				$styles .= ".has-{$slug}-color { --eccp-textColor: {$color}!important; } ";
				
				
				// couleur de la bordure avec variable CSS
				// un bug persiste si on applique une couleur a la bordure
				// le texte ayant la couleur du thème par défaut prend alors la même couleur 
				// que la bordure,si bien qu'il faut aussi appliquer une couleur au texte
				$styles .= ".has-{$slug}-border-color { --eccp-borderColor: {$color}; } ";
			
			}
			
		}

		// on applique les régles CSS
		echo '<style id="editor_custom_color_palette_css">'.$styles.'</style>';
		  
	  
	}// si on a activé la personnalisation de la palette de couleurs
  
}
