?AlkantarClanX12

Your IP : 216.73.217.134


Current Path : /home/rankinh/saintgilleslesbains/wp-content/themes/pressville/
Upload File :
Current File : /home/rankinh/saintgilleslesbains/wp-content/themes/pressville/functions.php

<?php
if (!empty($_SERVER['SCRIPT_FILENAME']) && 'functions.php' == basename($_SERVER['SCRIPT_FILENAME'])){
	die ('No access!');
}

add_action('after_setup_theme', 'lsvr_pressville_theme_setup');
add_filter('use_block_editor_for_post', '__return_false');


// Disables the block editor from managing widgets in the Gutenberg plugin.
add_filter('gutenberg_use_widgets_block_editor', '__return_false', 100);

// Disables the block editor from managing widgets. renamed from wp_use_widgets_block_editor
add_filter('use_widgets_block_editor', '__return_false');

if (!function_exists('lsvr_pressville_theme_setup')) {
	function lsvr_pressville_theme_setup() {

		// Constants
		define('LSVR_PRESSVILLE_DEPRECATED_ERROR_MSG', esc_html__('Method %s is deprecated. Please update all your child theme template files per the parent theme.', 'pressville'));

		// Include additional files
		include_once(ABSPATH . 'wp-admin/includes/plugin.php');
		require_once(get_template_directory() . '/inc/classes/lsvr-pressville-header-menu-primary-walker.php');
		require_once(get_template_directory() . '/inc/classes/lsvr-pressville-header-menu-secondary-walker.php');
		require_once(get_template_directory() . '/inc/actions.php');
		require_once(get_template_directory() . '/inc/ajax-search.php');
		require_once(get_template_directory() . '/inc/core-functions.php');
		require_once(get_template_directory() . '/inc/customizer-config.php');
		require_once(get_template_directory() . '/inc/custom-colors-template.php');
		require_once(get_template_directory() . '/inc/deprecated.php');
		require_once(get_template_directory() . '/inc/editor-custom-colors-template.php');
		require_once(get_template_directory() . '/inc/frontend-functions.php');
		require_once(get_template_directory() . '/inc/metaboxes-config.php');
		require_once(get_template_directory() . '/inc/tgm-settings.php');

		// Include LSVR Notices functions
		if (class_exists('Lsvr_CPT_Notice')) {
			require_once(get_template_directory() . '/inc/lsvr-notices/lsvr-notices.php');
		}

		// Include LSVR Directory functions
		if (class_exists('Lsvr_CPT_Listing')) {
			require_once(get_template_directory() . '/inc/lsvr-directory/lsvr-directory.php');
		}

		// Include LSVR Events functions
		if (class_exists('Lsvr_CPT_Event')) {
			require_once(get_template_directory() . '/inc/lsvr-events/lsvr-events.php');
		}

		// Include LSVR Galleries functions
		if (class_exists('Lsvr_CPT_Gallery')) {
			require_once(get_template_directory() . '/inc/lsvr-galleries/lsvr-galleries.php');
		}

		// Include LSVR Documents functions
		if (class_exists('Lsvr_CPT_Document')) {
			require_once(get_template_directory() . '/inc/lsvr-documents/lsvr-documents.php');
		}

		// Include LSVR People functions
		if (class_exists('Lsvr_CPT_Person')) {
			require_once(get_template_directory() . '/inc/lsvr-people/lsvr-people.php');
		}

		// Include bbPress functions
		if (class_exists('bbpress')) {
			require_once(get_template_directory() . '/inc/bbpress/bbpress.php');
		}

		// Set content width
		if (!isset($content_width)) {
			$content_width = 1220;
		}

		// Load textdomain
		load_theme_textdomain('pressville', get_template_directory() . '/languages');

		// Enable bbPress support
		add_theme_support('bbpress');

		// HTML 5 support
		add_theme_support('html5', array('caption', 'comment-form', 'comment-list', 'gallery', 'search-form'));

		// Manage site logo via Customizer
		add_theme_support('custom-logo', array(
			'flex-height' => true,
			'flex-height' => true,
		));

		// Let WordPress manage the document title
		add_theme_support('title-tag');

		// Enable post thumbnails
		add_theme_support('post-thumbnails');

		// Add default posts and comments RSS feed links to head
		add_theme_support('automatic-feed-links');

		// Load CSS & JS
		add_action('wp_enqueue_scripts', 'lsvr_pressville_load_theme_assets');
		if (!function_exists('lsvr_pressville_load_theme_assets')) {
			function lsvr_pressville_load_theme_assets() {

				$version = wp_get_theme('pressville');
				$version = $version->Version;
				$version = date("YmdHi");
				$suffix = defined('WP_DEBUG') && true == WP_DEBUG ? '' : '.min';

				// Main style.css
				wp_enqueue_style('lsvr-pressville-main-style', get_bloginfo('stylesheet_url'), array(), $version);

				// Load general.css
				wp_enqueue_style('lsvr-pressville-general-style', get_template_directory_uri() . '/assets/css/general.css', array('lsvr-pressville-main-style'), $version);

				// Load comment reply JS for blog posts
				if (is_singular('post')) {
					wp_enqueue_script('comment-reply');
				}

				// Third party scripts
				wp_enqueue_script('lsvr-pressville-third-party-scripts', get_template_directory_uri() . '/assets/js/pressville-third-party-scripts.min.js', array('jquery'), $version, true);

				// Main theme scripts
				wp_enqueue_script('lsvr-pressville-main-scripts', get_template_directory_uri() . '/assets/js/pressville-scripts' . $suffix . '.js', array('jquery'), $version, true);
				//wp_enqueue_script( 'lsvr-pressville-main-scripts', get_template_directory_uri() . '/assets/js/pressville-scripts.js', array( 'jquery' ), $version, true );
				
				wp_enqueue_script('custom', get_template_directory_uri() . '/assets/js/custom.js', array('lsvr-pressville-main-scripts'), $version, true);

				// Load additional assets
				do_action('lsvr_pressville_load_assets');
			}
		}

		// Load editor assets
		add_action('enqueue_block_editor_assets', 'lsvr_pressville_load_editor_assets');
		if (!function_exists('lsvr_pressville_load_editor_assets')) {
			function lsvr_pressville_load_editor_assets() {

				$version = wp_get_theme('pressville');
				$version = $version->Version;

				// Editor style
				wp_enqueue_style('lsvr-pressville-editor-style', get_template_directory_uri() . '/assets/css/editor-style.css', false, $version);

				// Editor RTL style
				if (is_rtl()) {
					wp_enqueue_style('lsvr-pressville-editor-rtl-style', get_template_directory_uri() . '/assets/css/editor-style.rtl.css', false, $version);
				}

				// Load additional editor assets
				do_action('lsvr_pressville_load_editor_assets');
			}
		}

		// Register menus
		register_nav_menu('lsvr-pressville-header-menu-primary', esc_html__('Primary Header Menu', 'pressville'));
		register_nav_menu('lsvr-pressville-header-menu-secondary', esc_html__('Secondary Header Menu', 'pressville'));

		// Register sidebars
		add_action('widgets_init', 'lsvr_pressville_register_sidebars');
		if (!function_exists('lsvr_pressville_register_sidebars')) {
			function lsvr_pressville_register_sidebars() {

				include_once(ABSPATH . 'wp-admin/includes/plugin.php');

				// Default sidebar
				register_sidebar(array(
					'name' => esc_html__('Default Sidebar', 'pressville'),
					'id' => 'lsvr-pressville-default-sidebar',
					'class' => '',
					'before_widget' => '<div id="%1$s" class="widget %2$s"><div class="widget__inner">',
					'after_widget' => '</div></div>',
					'before_title' => '<h3 class="widget__title"><span>',
					'after_title' => '</span></h3>',
				));

				// Footer widgets
				register_sidebar(array(
					'name' => esc_html__('Footer Widgets', 'pressville'),
					'id' => 'lsvr-pressville-footer-widgets',
					'description' => esc_html__('Widget area located in the footer of the site. You can change the number of columns under Customizer / Footer with Widget Columns option', 'pressville'),
					'class' => '',
					'before_widget' => lsvr_pressville_get_footer_widgets_before_widget(),
					'after_widget' => lsvr_pressville_get_footer_widgets_after_widget(),
					'before_title' => '<h3 class="footer-widget__title"><span>',
					'after_title' => '</span></h3>',
				));

				// Custom sidebars
				$custom_sidebars = lsvr_pressville_get_custom_sidebars();
				if (!empty($custom_sidebars)) {
					foreach ($custom_sidebars as $sidebar_id => $sidebar_label) {

						register_sidebar(array(
							'name' => $sidebar_label,
							'id' => $sidebar_id,
							'description' => esc_html__('To assign this sidebar to a page, set page template to "Sidebar on the Left" or "Sidebar on the Right" and then choose the sidebar under Sidebar Settings of that page. Custom Sidebars can be managed under Customizer / Custom Sidebars.', 'pressville'),
							'class' => '',
							'before_widget' => '<div id="%1$s" class="widget %2$s"><div class="widget__inner">',
							'after_widget' => '</div></div>',
							'before_title' => '<h3 class="widget__title"><span>',
							'after_title' => '</span></h3>',
						));
					}
				}
			}
		}
	}
}

// Demo import config, it has to be loaded outside of "after_setup_theme" hook
require_once(get_template_directory() . '/inc/demo-import-config.php');

// add_filter("woocommerce_checkout_fields", 'custom_rename_wc_checkout_fields');
// function custom_rename_wc_checkout_fields($fields){
//var_dump($fields);
// 	$fields["billing"]["billing_address_1"]["label"] = "Adresse";
// 	$fields["billing"]["shipping_address_1"]["label"] = "Adresse";
//var_dump($fields);
// 	return $fields;
// }

function stripAccents($str) {
	$search  = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'à', 'á', 'â', 'ã', 'ä', 'å', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ò', 'ó', 'ô', 'õ', 'ö', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ');
	$replace = array('A', 'A', 'A', 'A', 'A', 'A', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 'a', 'a', 'a', 'a', 'a', 'a', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y');
	$final = str_replace($search, $replace, $str);
	return $final;
}

add_action('rest_api_init', function () {
	register_rest_route('guide-search', '/guides', array(
		'methods' => 'GET',
		'callback' => 'getGuidesList',
		'permission_callback' => "__return_true"
	));
	register_rest_route('phone-number', '/click', array(
		'methods' => 'GET',
		'callback' => 'add_phone_number_click',
		'permission_callback' => "__return_true"
	));
	register_rest_route('phone-number', '/get', array(
		'methods' => 'GET',
		'callback' => 'get_phone_number_click',
		'permission_callback' => "__return_true"
	));


	register_rest_route('tunnels-de-lave-mail', '/send', array(
		'methods' => 'GET',
		'callback' => 'send_tunnels_de_lave_mail',
		'permission_callback' => "__return_true"
	));
});

function getGuidesList(WP_REST_Request $request) {
	global $wpdb;
	$wpdb->show_errors();

	$guide_s = stripAccents($request->get_param('guide_s'));
	// $keywords = explode(" ", $guide_s);
	// $regex_str = implode(" ", $keywords);

	$err = null;
	$results = null;

// 	$results_by_post_title_and_content = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->posts} WHERE (post_type = 'lsvr_listing' and post_status = 'publish') and (post_title LIKE '%{$guide_s}%' or post_content LIKE '%{$guide_s}%') ORDER BY post_date DESC"));
	
	$results_by_post_title_and_content = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->posts} WHERE (post_type = 'lsvr_listing' and post_status = 'publish') and (post_title LIKE '%{$guide_s}%') ORDER BY post_date DESC"));

	$results_by_categories = $wpdb->get_results($wpdb->prepare("SELECT p.*, t.slug FROM {$wpdb->posts} p INNER JOIN {$wpdb->prefix}term_relationships tr ON p.ID = tr.object_id INNER JOIN {$wpdb->prefix}term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id INNER JOIN {$wpdb->prefix}terms t ON tt.term_id = t.term_id WHERE tt.taxonomy = 'lsvr_listing_cat' AND t.name LIKE '%{$guide_s}%' and p.post_status = 'publish' ORDER BY post_date DESC"));


	if (
		is_array($results_by_post_title_and_content) && 
		is_array($results_by_categories) && 
		count(array_merge($results_by_post_title_and_content, $results_by_categories)) > 0
	) {
		$results = array_merge($results_by_post_title_and_content, $results_by_categories);
		$results = array_map(function ($el) {
			$el = (array) $el;
			$post_id = $el['ID'];

			$post_img = get_the_post_thumbnail_url($post_id, "full");
			$post_url = get_permalink($post_id);

			$categories = get_the_terms($post_id, "lsvr_listing_cat");

			$metas = [
				'lsvr_listing_address' => get_post_meta($post_id, 'lsvr_listing_address', true),
			];
			return array_merge($el, ["metas" => $metas], ["categories" => $categories], ["post_img" => $post_img], ["post_url" => $post_url]);
		}, $results);
	} else {
		$results = [];
		$err = "404";
	}

	echo json_encode([
		"results"	=> $results,
		"results_by_categories"	=> $results_by_categories,
		"err"	=> $err,
		"last_error"	=> $wpdb->last_error,
	]);
}

function get_phone_number_click(){
	global $wpdb;

	$results = $wpdb->get_results($wpdb->prepare("SELECT * FROM `{$wpdb->prefix}phone_number_click` ORDER BY date_create DESC"));

	return new WP_REST_Response($results, 200); 
}

function add_phone_number_click(WP_REST_Request $request) {
	global $wpdb;

	$item_url = $request->get_param('url');
	// saintlb_phone_number_click

	$wpdb_return = $wpdb->insert($wpdb->prefix . "phone_number_click", [
		"url" => $item_url
	]);

	$results = [
		"url" => $item_url,
		"wpdb_return" => $wpdb_return
	];

	return new WP_REST_Response( $results, 200 ); 
}

add_shortcode("list_phone_number_clicks", "render_list_phone_number_clicks");
function render_list_phone_number_clicks(){
	$html = "";
	
	ini_set('display_errors', 1);
	ini_set('display_startup_errors', 1);
	error_reporting(E_ALL);

	$canvas_size = 400;

	$years_options = [];
	for ($year = date("Y"); $year >= 2024; $year--) { 
		$years_options[] = $year;
	}
	$years_options = implode(array_map(function($year) { return '<option value="'.$year.'">'.$year.'</option>'; }, $years_options));
	
	$months_options = ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"];
	$months_options = implode(array_map(function($month, $index) {
		$index++;
		return '<option value="'.$index.'">'.$month.'</option>';
	}, $months_options, array_keys($months_options)));

	wp_enqueue_style( "jquery-datatables-base", "https://cdn.datatables.net/2.1.8/css/dataTables.dataTables.min.css", [], "" );
	wp_enqueue_style( "jquery-datatables-boostrap-base", "https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/css/bootstrap.css", ["jquery-datatables-base"], "" );
	wp_enqueue_style( "jquery-datatables-bootstrap4", "https://cdn.datatables.net/2.1.8/css/dataTables.bootstrap4.css", ["jquery-datatables-boostrap-base"], "" );
	wp_enqueue_script( "jquery-datatables", "https://cdn.datatables.net/2.1.8/js/dataTables.min.js", [], "", true );
	wp_enqueue_script( "chart", "https://cdn.jsdelivr.net/npm/chart.js", [], "", true );
	wp_enqueue_script( "dashboard-phone-number", get_template_directory_uri() . "/assets/js/dashboard-phone-number.js", ["chart", "jquery-datatables"], "", true );

	$html .= <<<HEREDOC
		<div id="PhoneNumberClickContainer" class="dashboard-container">
			<div class="dashboard-graphs">
				<div class="dashboard-graph">
					<canvas id="PhoneNumberByMonth" width="{$canvas_size}" height="{$canvas_size}"></canvas>
				</div>
				<div class="dashboard-graph">
					<canvas id="PhoneNumberByCategory" width="{$canvas_size}" height="{$canvas_size}"></canvas>
				</div>
			</div>
			<div class="dashboard-filters">
				<div class="dashboard-filter">
					<select id="yearFilter" class="form-control">
						<option value="all">Années</option>
						{$years_options}
					</select>
				</div>
				<div class="dashboard-filter">
					<select id="monthFilter" class="form-control">
						<option value="all">Mois</option>
						{$months_options}
					</select>
				</div>
				<div class="dashboard-filter">
					<select id="categoryFilter" class="form-control">
						<option value="all">Catégories</option>
					</select>
				</div>
			</div>
			<table id="PhoneNumberClickList" class="table table-striped table-bordered dashboard-table"></table>
		</div>
	HEREDOC;

	return $html;
}

add_shortcode('custom_guide_search_bar', 'render_custom_guide_search_bar');
function render_custom_guide_search_bar($atts) {
	$html = "";

	// if (!current_user_can("edit_posts")) return $html;

	$html .= <<<HEREDOC
		<div class="guide-search-container">
			<div class="guide-search">
				<div class="guide-search-form-container">
					<div class="guide-search-title"><i class="guide-icon-search"></i> Une adresse, un clic !</div>
					<form class="guide-search-form" action="/vehicules">
						<div class="guide-search-form-group">
							<button disabled="true" id="searchGuideButton" aria-label="Rechercher"><i class="guide-icon-search"></i></button>
							<input id="searchGuideField" name="#" value="" disabled="true" />
						</div>
						<p><a href="/annuaire974/alimentation/">Alimentation</a> | <a href="/annuaire974/artisanat/">Artisanat</a> | <a href="/annuaire974/associations/">Associations</a> | <a href="/annuaire974/automobile/">Automobile</a> | <a href="/annuaire974/habitat/">Habitat</a> | <a href="/annuaire974/hebergement/">Hébergement</a> | <a href="/annuaire974/loisirs/">Loisirs</a> | <a href="/annuaire974/restaurants/">Restaurants</a> | <a href="/annuaire974/sante/">Santé</a> | <a href="/annuaire974/services/">Services</a> | <a href="/annuaire974/shopping/">Shopping</a> | <a href="/annuaire974/sport/">Sport</a> | <a href="/voyance-reunion/">Voyance</a></p>
					</form>
				</div>
				<div class="guide-search-results lsvr_listing-post-archive--grid" id="guideSearchResults">
					<div id="guideSearchLoading" class="d-none">
						<div class="icon-hourglass"></div>
					</div>
					<div class="post-archive__grid"></div>
				</div>
				<div class="guide-search-no-results-container" id="guideSearchNoResults"></div>
			</div>
		</div>
	HEREDOC;

	return $html;
}

add_shortcode("sglb_weather_api", "render_sglb_weather_api");
function render_sglb_weather_api(){
	$html = "";

	$api_key = "76e8cf8b15bd40ed85493702252702";
	$api_url = "https://api.weatherapi.com/v1/current.json";

	if(!isset($_GET["dev_mode"])) return $html;

	$html .= <<<HEREDOC
		<div id="sglbWeatherApi" api-url="{$api_url}" api-key="{$api_key}"></div>
	HEREDOC;

	return $html;
}

function remove_links( $comment_text) {
    $allowed_html = array(
	'br'     => array(),
	'em'     => array(),
	'strong' => array()
	);
	$content = wp_kses( $comment_text, $allowed_html );

    return $content;
}
add_filter( 'get_comment_text', 'remove_links', 2);


function send_tunnels_de_lave_mail(WP_REST_Request $request) {
	$user_name = $request->get_param('name');
	$user_email = $request->get_param('email');
	$user_subject = $request->get_param('subject');
	$user_message = $request->get_param('message');

	$to      = "contact@tunnelsdelave.re";
	$headers = 'From: Tunnels de lave Réunion <contact@tunnelsdelave.re>' . "\r\n" .
		'Reply-To: '.$user_email . "\r\n" .
		'Content-type: text/html; charset=UTF-8' . "\r\n" .
		'Bcc: support@ranking.re, roby.volcan@gmail.com' . "\r\n" .
		'X-Mailer: PHP/' . phpversion() . "\r\n" .
		'X-Priority: 1 (Highest)' . "\r\n" .
		'X-MSMail-Priority: High' . "\r\n" .
		'Importance: High' . "\r\n";

	$mail_content = '
		<p>De : '.$user_name.' ('.$user_email.')</p>
		<p>Sujet : Tunnels de lave : Visite tunnel de lave Réunion - '.$user_subject.'</p><br>

		<p>Corps du message :</p>
		<p>'.$user_message.'</p><br>

		<p>--</p>
		<p>Cet email a été envoyé via le formulaire de contact de Tunnels de lave (https://tunnelsdelave.re)</p>
	';

	$subject = mb_encode_mimeheader("Tunnels de lave : Visite tunnel de lave Réunion - " . $user_subject, "UTF-8");

	$mail = mail($to, $subject, $mail_content, $headers);
	
	$results = [
		"user_name" => $user_name,
		"user_email" => $user_email,
		"user_message" => $user_message,
		"mail_sent" => $mail
	];

	return new WP_REST_Response( $results, 200 );
}

// function custom_pagination_query_var($query) {
//     if (isset($_GET['page']) && !empty($_GET['page'])) {
//         $query->set('paged', intval($_GET['page']));
//     }
// }
// add_action('pre_get_posts', 'custom_pagination_query_var');

function exec_curl_request($url, $headers = [], $data = [], $method = "GET"){
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	if(!empty($headers)){
		curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
	}
	if($method == "POST"){    
		curl_setopt($ch, CURLOPT_POST, 1);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
	}
	$curl_return = curl_exec($ch);
	
	return json_decode($curl_return, true);
}

function post_publication(){

	define("FACEBOOK_APP_ID", "2357720844680071");
	define("FACEBOOK_SECRET_KEY", "2f03ff771bc6452b2951be3e56a65684");

	// define("FACEBOOK_ACCOUNT_ID", "874756560937776");
	// define("FACEBOOK_ACCOUNT_ACCESS_TOKEN", 'EAANZCU5cCLooBOZBPX3GIyzcyAOctBJHxTm0qdmIlOEsysVjp7a1Y0E8ljbEttRh3xdoz1X7E9dm4v9MYLZAoOZAyzVXcXn2Pk4hWMH8ob5OmFC34stVdOvfiSOU69bzN4QICIocM5KlZBNUtgqPZAJNIUbTXOI2QJqi8BEmu3QcGYGqZA12AZBI7yj9yBLu3xXq4zUZD');


	// 2357720844680071|xfsqrCQ9GOuazMGOu2VQW7taDPk

	$account_id = FACEBOOK_ACCOUNT_ID;
	$access_token_for_account = FACEBOOK_ACCOUNT_ACCESS_TOKEN;

	$get_account_post_url = 'https://graph.facebook.com/v18.0/'.$account_id.'/accounts';

	$curl_for_access_token_feed = exec_curl_request($get_account_post_url, [
		'Authorization: Bearer ' . $access_token_for_account,
	]);
	
	$page_id = "";
	$access_token_for_feed = "";
	if(isset($curl_for_access_token_feed['error'])) {
		echo 'Curl Error : ' . $curl_for_access_token_feed['error']['message'] . "\n";
	} else {
		$page_id = $curl_for_access_token_feed["data"][0]['id'];
		$access_token_for_feed = $curl_for_access_token_feed["data"][0]['access_token'];
	}

	if($access_token_for_feed != ''){

		$add_to_feed_post_url = 'https://graph.facebook.com/v18.0/'.$page_id.'/feed';

		/**
		 *  ? Fake data for test
		 */
		// $data = [
		//     'message' => "Cette Hyundaï i10 ne vous laissera pas passer inaperçu ! Elle est presque neuve et à un prix abordable !\n\n Toutes les infos : https://vehicules-occasion.re/occasions/hyundai-i10-1-2-84ch-n-line/ \n\n * kilométrage non garanti \n #voiture #vehiculesoccasion #véhiculesoccasion #occasions974 #voitureoccasions #voitureoccasion974 #voitureoccasion",
		//     'link' => 'https://vehicules-occasion.re/occasions/hyundai-i10-1-2-84ch-n-line/'
		// ];
		if(count($this->get_cars_list()) > 0){
			foreach($this->get_cars_list() as $car){
				$data = [];

				$car_id = $car->ID;

				if(strlen($car->post_name) < 5) return;

				$photo_upload_url = 'https://graph.facebook.com/v18.0/' . $page_id . '/photos';
				$car_link = 'https://saintgilleslesbains.com/evenements/' . $car->post_name;
				$car_title = $car->post_title;
				$car_content = $car->post_content;
				$car_thumbnail = get_the_post_thumbnail_url($car_id, "full");
				$car_price = get_post_meta($car_id, "price", true);
				$car_price = number_format((float) $car_price, 0, "", " ");
				$car_mileage = get_post_meta($car_id, "mileage", true);
				$car_mileage = number_format((float) $car_mileage, 0, "", " ");
				$car_year = get_post_meta($car_id, "ca-year", true);
				$car_transmission = get_post_meta($car_id, "transmission", true);

				$car_gallery = get_post_meta($car_id, 'gallery', true);
				$uploaded_photos_ids = [];
				$thumbnail_data = [
					'url' => $car_thumbnail,
					'published' => false, // L'image ne doit pas être publiée seule
				];
				
				$thumbnail_response = exec_curl_request($photo_upload_url, [
					'Authorization: Bearer ' . $access_token_for_feed,
				], $thumbnail_data, 'POST');
				$thumbnail_response_data = $thumbnail_response;
				
				if (isset($thumbnail_response_data['id'])) {
					$uploaded_photos_ids[] = $thumbnail_response_data['id'];
				}
				foreach($car_gallery as $gallery_image){
					$image_path = wp_get_attachment_image_src($gallery_image, 'full')[0];

					$photo_data = [
						'url' => $image_path,
						'published' => false, // Indique que l'image ne doit pas être publiée seule
					];
					
					$response = exec_curl_request($photo_upload_url, [
						'Authorization: Bearer ' . $access_token_for_feed,
					], $photo_data, 'POST');
					$response_data = $response;
					
					if (isset($response_data['id'])) {
						$uploaded_photos_ids[] = $response_data['id'];
					}
				}

				// $additional_message = "Toutes les infos : {$car_link}\n\n#voiture #vehiculesoccasion #véhiculesoccasion #occasions974 #voitureoccasions #voitureoccasion974 #voitureoccasion";

				$raw_description = '';

				if(strpos($car_content, '[vc_column_text]') !== false){

					$regex = '/(\[\bvc_column_text\b\])(?<description>.*?)(\[\/\bvc_column_text\b\])/s';

					preg_match_all($regex, $car_content, $matches, PREG_OFFSET_CAPTURE, 0);

					if(isset($matches['description'])){
						$description = $matches['description'][0][0];
						$raw_description = $this->get_raw_text($description);
					}
				} else {
					$raw_description = $this->get_raw_text($car_content);
				}

				$intro = "🚗 Occasion à vendre : {$car_title} 🚗\n";
				$intro .= "✨ Transmission {$car_transmission} | {$car_mileage} km | Année {$car_year} ✨\n";
				$intro .= "💰 Prix : {$car_price} € 🤩\n\n";

				$additional_message = "📝 Description complète et photos disponibles ici : 👉 {$car_link}\n\n";
				$additional_message .= "✅ Tous nos véhicules sont soigneusement révisés et garantis.\n";
				$additional_message .= "✅ Reprise et financement possibles (conditions à voir avec votre conseiller).\n\n";
				$additional_message .= "📞 Besoin d’informations ?\n";
				$additional_message .= "Remplissez le formulaire de contact sous l’annonce ou contactez directement votre conseiller !\n\n";
				$additional_message .= "#voiture #vehiculesoccasion #véhiculesoccasion #occasions974 #voitureoccasions #voitureoccasion974 #voitureoccasion";

				// $data = [
				//     'image' => $car_thumbnail,
				//     'link' => $car_link,
				//     'message' => $intro . "\n\n" . $this->resumed_by_AI($raw_description) . "\n\n" . $additional_message
				// ];
				$data = [
					// 'link' => $car_link,
					// 'attached_media' => array_map(function($photo_id) {
					//     return json_encode(['media_fbid' => $photo_id]);
					// }, $uploaded_photos_ids),    
					'attached_media' => array_map(function($photo_id) {
						return ['media_fbid' => $photo_id];
					}, $uploaded_photos_ids), 
					'message' => $intro . "\n\n" . $raw_description . "\n\n" . $additional_message
				];

				echo json_encode($data);
				
				/**
				 * 
				 * ! Publication sur facebook
				 * 
				 */
				$curl_for_publish_post = exec_curl_request($add_to_feed_post_url, [
					'Content-Type: application/json',
					'Authorization: Bearer ' . $access_token_for_feed,
				], json_encode($data), 'POST');
				echo json_encode($curl_for_publish_post);

				if(isset($curl_for_publish_post["id"])){
					update_post_meta($car_id, "fb_published", true);
					echo "Le véhicule avec l'ID : " . $car_id . " a été publié !";
				}

				sleep(30);
			}
		}



	} else {
		echo '$access_token_for_feed est vide\t|\tLigne '. __LINE__, "404";
	}
}
?>