homegrade_theme_production/includes/utilities.php

241 lines
6.5 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
$theme_namespace = 'homegrade-theme__texte-fonctionnel';
/* -------------------------------------------
GET THEMATIQUE FAMILY (FOR COLOR SCHEME)
---------------------------------------------*/
function getThematiqueFamilySlug($thematique_slug)
{
if (!$thematique_slug) {
return null;
}
switch ($thematique_slug) {
case "energie":
case "urbanisme":
case "stedenbouw":
return "energies-urbanisme";
case "acoustique":
case "akoestiek":
case "petites-coproprietes":
case "kleine-mede-eigendommen":
return "acoustique-coproprietes";
case "isolation":
case "isolatie":
case "au-quotidien":
return "isolation-quotidien";
case "energies":
case "urbanisme":
case "stedenbouw":
return "energies-urbanisme";
case "patrimoine":
case "erfgoed":
case "aides-financieres":
case "financiele-steun":
return "patrimoine-renovation";
case "location":
case "verhuur":
case "duurzaamheid":
case "durabilite":
return "location-durabilite";
}
}
/* -------------------------------------------
GETTING MAIN ROOT THEMATIQUE
---------------------------------------------*/
function getParentThematique($thematique)
{
if (!$thematique) {
return null;
}
if ($thematique->parent == 0) {
return $thematique;
} else {
return get_term($thematique->parent, 'thematiques');
}
}
// DOES THE SAME THING AS ABOVE BUT RENAMED
function getMainThematique($thematique)
{
if (!$thematique) {
return null;
}
if ($thematique->parent == 0) {
return $thematique;
} else {
return get_term($thematique->parent, 'thematiques');
}
}
// Retriev the main thematique for a spefic postID
function getPostMainThematique($post)
{
$terms = get_the_terms($post, "thematiques");
if (!$terms) return null;
$mainThematique = getMainThematique(get_the_terms($post, "thematiques")[0]);
if (!$mainThematique) return null;
return $mainThematique;
}
// TO GET ARCHIVE RELATED PAGES BY TEMPLATE
function get_page_by_template($template = '')
{
$args = array(
'meta_key' => '_wp_page_template',
'meta_value' => $template
);
return get_pages($args);
}
function show_post_type_label_name($post_type)
{
switch ($post_type) {
case 'questions':
return __("Question", "homegrade-theme__texte-backoffice");
case 'conseils':
return __("Conseil", "homegrade-theme__texte-backoffice");
case 'page':
return __("Page", "homegrade-theme__texte-backoffice");
case 'post':
return __("News", "homegrade-theme__texte-backoffice");
case 'jobs':
return __("Offre d'emploi", "homegrade-theme__texte-backoffice");
case 'brochures':
return __("Brochures", "homegrade-theme__texte-backoffice");
case 'fiches-infos':
return __("Fiche info", "homegrade-theme__texte-backoffice");
default:
return null;
}
}
/* ---------
SORT BY THEMATIQUE PRIORITY
-----------------*/
// Fonction de comparaison pour trier par 'thematique_priority' utilisé par la fonction supérieur
function compareThematiquePriority($postA, $postB)
{
$priorityA = $postA->thematique_priority ?? 0;
$priorityB = $postB->thematique_priority ?? 0;
$thematiqueA = getPostMainThematique($postA);
$thematiqueB = getPostMainThematique($postB);
$DocumentA = get_field('brochure_pdf', $postA->ID);
$DocumentB = get_field('brochure_pdf', $postB->ID);
$titleA = $DocumentA['title'] ?? null;
$titleB = $DocumentB['title'] ?? null;
if ($priorityA == $priorityB && $thematiqueA->name != $thematiqueB->name) {
return strcmp($thematiqueA->name, $thematiqueB->name);
}
if ($priorityA == $priorityB && $thematiqueA->name == $thematiqueB->name && $titleA && $titleB) {
return strcmp($titleA, $titleB);
}
if ($priorityA < $priorityB) {
return 1;
}
if ($priorityA > $priorityB) {
return -1;
}
}
function sort_posts_per_thematiques_priority($postsQuery)
{
foreach ($postsQuery->posts as $key => $post) {
$thematique = getPostMainThematique($post);
$post->thematique_priority = get_field('thematique_order', $thematique) ?? 0;
}
// Tri du tableau en utilisant la fonction de comparaison
usort($postsQuery->posts, 'compareThematiquePriority');
return $postsQuery;
}
/* -------------------------------------------
Build The page chaptering index
---------------------------------------------*/
function build_page_chapter_index($blocks)
{
$chapterBlockIndex = [];
foreach ($blocks as $key => $block) {
if ($block['blockName'] == 'homegrade-content-blocks/chapitrage-thematique') {
foreach ($block['innerBlocks'] as $key => $innerBlock) {
if (!$innerBlock['attrs']['chapterTitle']) continue;
$cleanedTitle = strtolower(preg_replace("/[^a-zA-Z]/", "", $innerBlock['attrs']['chapterTitle']));
array_push($chapterBlockIndex, [
'block-type' => $block['blockName'],
'anchor' => '#' . $cleanedTitle,
'title' => $innerBlock['attrs']['chapterTitle'],
]);
}
}
if ($block['blockName'] == 'homegrade-content-blocks/questions-container') {
array_push($chapterBlockIndex, [
'block-type' => $block['blockName'],
'anchor' => '#questions-container-' . $block['attrs']['relatedPostId'],
'title' => get_the_title($block['attrs']['relatedPostId']),
]);
}
if ($block['blockName'] == 'homegrade-content-blocks/vocabulaire-summary') {
array_push($chapterBlockIndex, [
'block-type' => $block['blockName'],
'anchor' => "#vocabulaire-summary",
'title' => __("Vocabulaire", "homegrade-theme__texte-fonctionnel") . " " . get_the_terms(get_the_ID(), "thematiques")[0]->name,
]);
}
if ($block['blockName'] == 'homegrade-content-blocks/help-homegrade') {
array_push($chapterBlockIndex, [
'block-type' => $block['blockName'],
'anchor' => "#homegrade-vous-aide",
'title' => __("Homegrade vous aide", "homegrade-blocks__texte-fonctionnel"),
]);
}
if ($block['blockName'] == 'homegrade-content-blocks/partners-other-services') {
array_push($chapterBlockIndex, [
'block-type' => $block['blockName'],
'anchor' => "#partenaires-autres-services",
'title' => __("Partenaires & autres services", "homegrade-blocks__texte-fonctionnel"),
]);
}
if ($block['blockName'] == 'homegrade-content-blocks/plus-loin') {
array_push($chapterBlockIndex, [
'block-type' => $block['blockName'],
'anchor' => "#aller-plus-loin",
'title' => __("Publications et liens utiles", "homegrade-blocks__texte-fonctionnel"),
]);
}
}
return $chapterBlockIndex;
}