From 965efeeda54378ed00f26f0f5b1b49e3dcc33d8c Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Wed, 20 Nov 2024 20:19:32 +0100 Subject: [PATCH] LScli: add autocomplete_LSobject_attr_name() and autocomplete_LSform_name() helpers methods --- doc/src/contrib/addons/cli-commands.md | 28 ++++++++++++---------- src/includes/class/class.LScli.php | 33 ++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 13 deletions(-) diff --git a/doc/src/contrib/addons/cli-commands.md b/doc/src/contrib/addons/cli-commands.md index c0e35127..5d7879f0 100644 --- a/doc/src/contrib/addons/cli-commands.md +++ b/doc/src/contrib/addons/cli-commands.md @@ -55,26 +55,28 @@ Pour mettre en place une telle commande *CLI* personnalisée, il est nécessaire Pour vous aider dans l'écrire d'une telle méthode d'autocomplétion, des méthodes statiques sont fournies par la classe `LScli` pour les autocomplétions les plus courantes : - - `LScli :: autocomplete_class_name()` + - `LScli :: autocomplete_class_name()` : Autocomplétion du nom d'une classe PHP. - Autocomplétion du nom d'une classe PHP. + - `LScli :: autocomplete_addon_name()` : Autocomplétion du nom d'un + [LSaddon](../../conf/index.md#configuration-des-lsaddons). - - `LScli :: autocomplete_addon_name()` + - `LScli :: autocomplete_int()` : Autocomplétion d'un nombre entier. - Autocomplétion du nom d'un [LSaddon](../../conf/index.md#configuration-des-lsaddons). + - `LScli :: autocomplete_LSobject_types()` : Autocomplétion du nom d'un type + d'[LSobject](../../conf/index.md#configuration-lsobject). - - `LScli :: autocomplete_int()` + - `LScli :: autocomplete_LSobject_dn()` : Autocomplétion du DN d'un type précis + d'[LSobject](../../conf/index.md#configuration-lsobject) de l'annuaire. - Autocomplétion d'un nombre entier. + - `LScli :: autocomplete_LSobject_attr_name()` : Autocomplétion du nom d'un attribut précis + pour un type d'[LSobject](../../conf/index.md#configuration-lsobject) de l'annuaire. - - `LScli :: autocomplete_LSobject_types()` + - `LScli :: autocomplete_LSobject_ioFormat()` : Autocomplétion du nom d'un + [ioFormat](../../conf/LSobject/ioFormat.md#ioformat) pour un type + d'[LSobject](../../conf/index.md#configuration-lsobject) de l'annuaire. - Autocomplétion du nom d'un type d'[LSobject](../../conf/index.md#configuration-lsobject). - - - `LScli :: autocomplete_LSobject_dn()` - - Autocomplétion du DN d'un type précis d'[LSobject](../../conf/index.md#configuration-lsobject) de - l'annuaire. + - `LScli :: autocomplete_LSform_name()` : Autocomplétion du nom d'un formulaire de + l'application. Par ailleurs, la méthode `LScli :: autocomplete_opts()` vous facilitera la construction de la liste des valeurs d'autocomplétion de l'argument courant en fonction de ce qui a déjà été diff --git a/src/includes/class/class.LScli.php b/src/includes/class/class.LScli.php index c66c1fc8..d5b5b14c 100644 --- a/src/includes/class/class.LScli.php +++ b/src/includes/class/class.LScli.php @@ -780,6 +780,28 @@ class LScli extends LSlog_staticLoggerClass { return array(LScli :: quote_word("$rdn_attr=", $quote_char)); } + /** + * Autocomplete LSobject attribute name + * + * @param string $objType LSobject type + * @param string $prefix Option prefix (optional, default=empty string) + * @param boolean $case_sensitive Set to false if options are case insensitive (optional, default=true) + * @param string $quote_char Quote character (optional, if not set, $prefix will be unquoted and its + * quote char (if detected) will be used to quote options) + * + * @return array List of available options + **/ + public static function autocomplete_LSobject_attr_name($objType, $prefix='', $case_sensitive=true, $quote_char='') { + if (!LSsession ::loadLSobject($objType, false)) + return array(); + return self :: autocomplete_opts( + LSconfig :: keys("LSobjects.$objType.attrs"), + $prefix, + $case_sensitive, + $quote_char + ); + } + /** * Autocomplete LSobject ioFormat option * @@ -805,6 +827,17 @@ class LScli extends LSlog_staticLoggerClass { return self :: autocomplete_opts($ioFormats, $prefix, $case_sensitive, $quote_char); } + /** + * Autocomplete LSform name + * + * @param string $prefix LSform name prefix (optional, default=empty string) + * + * @return array List of matched LSform names + **/ + public static function autocomplete_LSform_name($prefix='', $quote_char=null) { + return self :: autocomplete_opts(["create", "modify", "lostPassword"], $prefix, true, $quote_char); + } + /** * Autocomplete LSformRule name *