Valider 6d37b026 rédigé par marcimat's avatar marcimat
Parcourir les fichiers

Une fonction `identifiants_lister_ids` et la balise `IDENTIFIANTS_LISTER_IDS`

(un peu réciproque à la balise `IDENTIFIANT`) : elle retourne les id_objet
qui ont l’identifiant concernés. Exemple `#IDENTIFIANTS_LISTER_IDS{rubrique, actualites}`
parent 7ada0a75
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+47 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -118,6 +118,53 @@ function balise_IDENTIFIANT_dist($p) {
}


/**
 * Balise IDENTIFIANTS_LISTER_IDS
 *
 * Retourne les id_objet de l'objet éditorial demandé, pour un identifiant donné
 *
 * @example `#IDENTIFIANTS_LISTER_IDS{rubrique, actualites}`
 */
function balise_IDENTIFIANTS_LISTER_IDS_dist($p) {
	$_objet = interprete_argument_balise(1, $p);
	$_identifiant = interprete_argument_balise(2, $p);

	if ($_objet and $_identifiant) {
		$p->code =  'identifiants_lister_ids(' . $_objet . ', ' . $_identifiant . ')';
	} else {
		$msg = ['zbug_balise_sans_argument', ['balise' => zbug_presenter_champ($p)]];
		erreur_squelette($msg, $p);
		$p->interdire_scripts = true;
		return $p;
	}

	$p->interdire_scripts = false;

	return $p;
}

/**
 * Pour un type d’objet et un identifiant donné, retourne la liste des id_objet concernés.
 *
 * @return array<int>
 */
function identifiants_lister_ids(string $type, string $identifiant): array {
	static $ids = [];

	if (!isset($ids[$type][$identifiant])) {
		$_id = id_table_objet($type);
		$liste = sql_allfetsel($_id, table_objet_sql($type), [
			'identifiant = ' . sql_quote($identifiant),
		]);
		$liste = array_column($liste, $_id);
		$ids[$type][$identifiant] = $liste;
	}

	return $ids[$type][$identifiant];
}



// ====================
// FONCTIONS DEPRECIÉES
// ====================