Skip to content
Extraits de code Groupes Projets
Valider 681ec152 rédigé par nicod's avatar nicod
Parcourir les fichiers

feat: Ajout de fonctions utilitaires

parent 370944eb
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -32,6 +32,67 @@ function blocks_deserialize($data): ?array {
return is_array($retour) ? $retour : null;
}
/**
* Obtenir les saisies d'un block
*
* @param int $id_block
* @return array
*/
function block_get_saisies(int $id_block): array {
static $cache;
if (isset($cache[$id_block])) {
return $cache[$id_block];
}
$saisies = [];
if ($blocktype = block_get_blocktype($id_block)) {
$saisies = blocktype_info($blocktype, 'saisies');
} else {
spip_log("get_block_saisies($id_block) : pas de blocktype", 'blocks.' . _LOG_DEBUG);
}
$cache[$id_block] = $saisies;
return $saisies;
}
/**
* Retourner le type de block d'un block
*
* @param int $id_block
* @return mixed
*/
function block_get_blocktype(int $id_block) {
return sql_getfetsel('blocktype', 'spip_blocks', 'id_block = ' . $id_block);
}
/**
* Retourner un tableau des valeurs saisies
*
* @param array $saisies
* @param array $valeurs
*
* @return array
*/
function block_get_valeurs(array $saisies, array $valeurs): array {
$retour = [];
include_spip('inc/saisies_lister');
$saisies_par_nom = saisies_lister_par_nom($saisies);
foreach ($saisies_par_nom as $nom => $saisie) {
$retour[$nom] = $valeurs[$nom] ?? null;
}
return $retour;
}
/**
* Chercher le squelette correspondant à un block par son identifiant
*
* @param string $blocktype Type de bloc (identifiant)
* @param bool $force_public Forcer une recherche du squelette public
* @param bool $chemin_complet Retourne le chemin complet du squelette
* @param bool $dist Retourne le squelette par défaut (dist))
* @return string Chemin du squelette trouvé
*/
/**
* Chercher tous les types de blocs existant
* On cherche des fichiers blocks/*.yaml dans le PATH
......@@ -60,8 +121,11 @@ function blocktypes_lister_types(bool $exclure_ignores = true): array {
$yaml_data['identifiant'] = $blocktype;
$yaml_data['description'] = _T_ou_typo($yaml_data['description']);
$yaml_data['icone'] = isset($yaml_data['icone']) ? _blocktype_find_icone_path($yaml_data['icone']) : '';
$yaml_data['saisies'] = $yaml_data['saisies'] ?? [];
$liste_blocktypes[$blocktype] = $yaml_data;
} else {
spip_log("blocktypes_lister_types : $chemin / $blocktype => yaml pas décodé", 'blocks' . _LOG_DEBUG);
}
}
}
......@@ -131,61 +195,19 @@ function _blocktype_find_icone_path(string $blocktype): string {
function blocktype_info(string $blocktype, string $config) {
$blocktypes = blocktypes_lister_types();
return $blocktypes[$blocktype][$config] ?? null;
}
/**
* Obtenir les saisies d'un block
*
* @param int $id_block
* @return array
*/
function block_get_saisies(int $id_block): array {
static $cache;
if (isset($cache[$id_block])) {
return $cache[$id_block];
}
$saisies = [];
if ($blocktype = sql_getfetsel('blocktype', 'spip_blocks', 'id_block = ' . $id_block)) {
$saisies = blocktype_info('saisies', $blocktype);
} else {
spip_log("get_block_saisies($id_block) : pas de blocktype", 'blocks.' . _LOG_DEBUG);
switch ($config) {
case 'saisies':
$defaut = [];
break;
default:
$defaut = null;
break;
}
$cache[$id_block] = $saisies;
return $saisies;
return $blocktypes[$blocktype][$config] ?? $defaut;
}
/**
* Retourner un tableau des valeurs saisies
*
* @param string $saisies (sérialisées)
* @param string $valeurs (sérialisées)
*
* @return array
*/
function block_get_valeurs(array $saisies, array $valeurs): array {
$retour = [];
include_spip('inc/saisies_lister');
$saisies_par_nom = saisies_lister_par_nom($saisies);
foreach ($saisies_par_nom as $nom => $saisie) {
$retour[$nom] = $valeurs[$nom] ?? null;
}
return $retour;
}
/**
* Chercher le squelette correspondant à un block par son identifiant
*
* @param string $blocktype Type de bloc (identifiant)
* @param bool $force_public Forcer une recherche du squelette public
* @param bool $chemin_complet Retourne le chemin complet du squelette
* @param bool $dist Retourne le squelette par défaut (dist))
* @return string Chemin du squelette trouvé
*/
function blocks_trouver_squelette(
function _blocktype_trouver_squelette(
string $blocktype,
bool $force_public = false,
bool $chemin_complet = false,
......@@ -224,7 +246,7 @@ function blocks_trouver_squelette(
}
/**
* Wrapper sans typage de la fonction blocks_trouver_squelette pour les squelettes SPIP
* Wrapper sans typage de la fonction _blocktype_trouver_squelette pour les squelettes SPIP
* Les paramètres peuvent être vides ou des chaines et pas des bool
*
* @param $blocktype
......@@ -239,7 +261,7 @@ function filtre_blocktype_squelette(
$chemin_complet = false,
$dist = true
) {
return blocks_trouver_squelette(
return _blocktype_trouver_squelette(
(string)$blocktype,
(bool)$force_public,
(bool)$chemin_complet,
......@@ -252,8 +274,8 @@ function filtre_blocktype_squelette(
* @param $blocktype
* @return array
*/
function bloctypes_trouver_enfants($blocktype): array {
return _bloctypes_trouver_role($blocktype, 'enfant');
function bloctype_trouver_enfants($blocktype): array {
return _bloctype_trouver_role($blocktype, 'enfant');
}
/**
......@@ -261,8 +283,8 @@ function bloctypes_trouver_enfants($blocktype): array {
* @param $blocktype
* @return array
*/
function bloctypes_trouver_parents($blocktype): array {
return _bloctypes_trouver_role($blocktype, 'parent');
function bloctype_trouver_parents($blocktype): array {
return _bloctype_trouver_role($blocktype, 'parent');
}
/**
......@@ -271,7 +293,7 @@ function bloctypes_trouver_parents($blocktype): array {
* @param string $role
* @return array
*/
function _bloctypes_trouver_role(string $blocktype, string $role): array {
function _bloctype_trouver_role(string $blocktype, string $role): array {
$blocktypes_roles = [];
if (
$blocktype
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter