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 { ...@@ -32,6 +32,67 @@ function blocks_deserialize($data): ?array {
return is_array($retour) ? $retour : null; 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 * Chercher tous les types de blocs existant
* On cherche des fichiers blocks/*.yaml dans le PATH * On cherche des fichiers blocks/*.yaml dans le PATH
...@@ -60,8 +121,11 @@ function blocktypes_lister_types(bool $exclure_ignores = true): array { ...@@ -60,8 +121,11 @@ function blocktypes_lister_types(bool $exclure_ignores = true): array {
$yaml_data['identifiant'] = $blocktype; $yaml_data['identifiant'] = $blocktype;
$yaml_data['description'] = _T_ou_typo($yaml_data['description']); $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['icone'] = isset($yaml_data['icone']) ? _blocktype_find_icone_path($yaml_data['icone']) : '';
$yaml_data['saisies'] = $yaml_data['saisies'] ?? [];
$liste_blocktypes[$blocktype] = $yaml_data; $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 { ...@@ -131,61 +195,19 @@ function _blocktype_find_icone_path(string $blocktype): string {
function blocktype_info(string $blocktype, string $config) { function blocktype_info(string $blocktype, string $config) {
$blocktypes = blocktypes_lister_types(); $blocktypes = blocktypes_lister_types();
return $blocktypes[$blocktype][$config] ?? null; switch ($config) {
} case 'saisies':
$defaut = [];
/** break;
* Obtenir les saisies d'un block default:
* $defaut = null;
* @param int $id_block break;
* @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);
} }
$cache[$id_block] = $saisies;
return $saisies; return $blocktypes[$blocktype][$config] ?? $defaut;
} }
/** function _blocktype_trouver_squelette(
* 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(
string $blocktype, string $blocktype,
bool $force_public = false, bool $force_public = false,
bool $chemin_complet = false, bool $chemin_complet = false,
...@@ -224,7 +246,7 @@ function blocks_trouver_squelette( ...@@ -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 * Les paramètres peuvent être vides ou des chaines et pas des bool
* *
* @param $blocktype * @param $blocktype
...@@ -239,7 +261,7 @@ function filtre_blocktype_squelette( ...@@ -239,7 +261,7 @@ function filtre_blocktype_squelette(
$chemin_complet = false, $chemin_complet = false,
$dist = true $dist = true
) { ) {
return blocks_trouver_squelette( return _blocktype_trouver_squelette(
(string)$blocktype, (string)$blocktype,
(bool)$force_public, (bool)$force_public,
(bool)$chemin_complet, (bool)$chemin_complet,
...@@ -252,8 +274,8 @@ function filtre_blocktype_squelette( ...@@ -252,8 +274,8 @@ function filtre_blocktype_squelette(
* @param $blocktype * @param $blocktype
* @return array * @return array
*/ */
function bloctypes_trouver_enfants($blocktype): array { function bloctype_trouver_enfants($blocktype): array {
return _bloctypes_trouver_role($blocktype, 'enfant'); return _bloctype_trouver_role($blocktype, 'enfant');
} }
/** /**
...@@ -261,8 +283,8 @@ function bloctypes_trouver_enfants($blocktype): array { ...@@ -261,8 +283,8 @@ function bloctypes_trouver_enfants($blocktype): array {
* @param $blocktype * @param $blocktype
* @return array * @return array
*/ */
function bloctypes_trouver_parents($blocktype): array { function bloctype_trouver_parents($blocktype): array {
return _bloctypes_trouver_role($blocktype, 'parent'); return _bloctype_trouver_role($blocktype, 'parent');
} }
/** /**
...@@ -271,7 +293,7 @@ function bloctypes_trouver_parents($blocktype): array { ...@@ -271,7 +293,7 @@ function bloctypes_trouver_parents($blocktype): array {
* @param string $role * @param string $role
* @return array * @return array
*/ */
function _bloctypes_trouver_role(string $blocktype, string $role): array { function _bloctype_trouver_role(string $blocktype, string $role): array {
$blocktypes_roles = []; $blocktypes_roles = [];
if ( if (
$blocktype $blocktype
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter