Rechercher dynamiquenent les noms des champs à aliaser

Suite discussion en #1

J'avais commit ce commit

From f132a8a8ce06dcc6098d7fdf46a4d3783ba54c72 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ma=C3=AFeul=20Rouquette?= <maieul@maieul.net>
Date: Sat, 9 Sep 2023 14:10:33 +0200
Subject: [PATCH] =?UTF-8?q?feat:=20lorsqu'on=20cr=C3=A9e=20l'alias=20d'un?=
 =?UTF-8?q?=20article,=20n'aliaser=20que=20les=20champs=20non=20vide?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 action/aliaser.php | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/action/aliaser.php b/action/aliaser.php
index 7a07558..7e9c76c 100644
--- a/action/aliaser.php
+++ b/action/aliaser.php
@@ -6,16 +6,15 @@ if (!defined('_ECRIRE_INC_VERSION')) {
 
 function alias_aliaser_objet($id_article) {
 	include_spip('base/abstract_sql');
-	$row = sql_fetsel('id_rubrique', 'spip_articles', 'id_article=' . intval($id_article));
-	$c = [
-		'surtitre' => "<article$id_article|surtitre>",
-		'titre' => "<article$id_article|titre>",
-		'soustitre' => "<article$id_article|soustitre>",
-		'descriptif' => "<article$id_article|descriptif>",
-		'chapo' => "<article$id_article|chapo>",
-		'texte' => "<article$id_article|texte>",
-		'ps' => "<article$id_article|ps>",
-	];
+	include_spip('inc/filtres');
+	$champs_editables = objet_info('article', 'champs_editables');
+	$row = sql_fetsel(array_merge(['id_rubrique'], $champs_editables), 'spip_articles', 'id_article=' . intval($id_article));
+	$c = [];
+	foreach ($row as $field => $value) {
+		if ($field !== 'id_rubrique' && $value) {
+			$c[$field] = "<article{$id_article}|$field>";
+		}
+	}
 	$new = 0;
 	if ($row) {
 		include_spip('action/editer_article');
-- 
2.34.1

Sur ce patch plusieurs problèmes

  • Le point en #2 de "faut-il aliaser les champs vide ?"
  • il faut aussi s'assurer que c'est des champs textes, sinon ca va couiner
  • il y a pas de modèle global, mais uniquement par champ. Deux solutions
    • créer un modèle global
    • considérer que c'est à la personne qui fournit un champ de fournir le modèle, et on ne crée un alias que si le modèle existe