web-dev-qa-db-fra.com

Filtrer les groupes d'utilisateurs chargés dans com_config

Suite à mon article précédent , j'essaie d'alléger le chargement du composant de configuration. Depuis, la majorité de mes groupes d'utilisateurs sont des enfants du groupe d'utilisateurs enregistré et héritent des mêmes autorisations. Je n'ai pas besoin qu'ils soient chargés dans com_config.

Pour résoudre ce problème, je cherche un moyen de les filtrer en piratant le code principal. J'ai essayé avec where dans la fonction getUserGroups() dans: /administrator/components/com_config/models/fields/filters.php, Ainsi que dans

`/administrator/components/com_config/model/fields/filters.php` .

La fonction est devenue comme:

protected function getUserGroups()
    {
        // Get a database object.
        $db = JFactory::getDBO();
        // Get the user groups from the database.
        $query = $db->getQuery(true);
        $query->select('a.id AS value, a.title AS text, COUNT(DISTINCT b.id) AS level');
        $query->from('#__usergroups AS a');
        $query->join('LEFT', '#__usergroups AS b on a.lft > b.lft AND a.rgt < b.rgt');
        $query->where('a.parent_id != 2');
        $query->group('a.id, a.title, a.lft');
        $query->order('a.lft ASC');
        $db->setQuery($query);
        $options = $db->loadObjectList();
        return $options;
    }

Mais ces changements ne semblent pas avoir d’effet sur le chargement des groupes de com_config. J'ai fait le même changement dans /libraries/joomla/form/fields/rules.php, Et cela filtre ces groupes. Mais je crains que cela n'agisse globalement dans ce que verra Joomla, affectant certains des composants dont j'ai besoin pour voir ces u.groups.

Au début, pourquoi le piratage de la fonction com_config getUsergroups() n'a aucun effet? Que dois-je faire pour y effectuer mon filtrage? Deuxièmement, j’ai raison de considérer que ma deuxième modification cachera ces u.groups de partout dans Joomla?

1
FFrewin

J'ai fini par pirater le rules.php à l'intérieur:

/libraries/joomla/form/fields/rules.php

Comme cela est documenté dans le fichier, il s'agit d'une classe de formulaire permettant d'attribuer des autorisations à des groupes pour un actif donné.

La getUserGroups() du com_config semble ne rien faire pour le chargement des groupes d'autorisations, mais elle est utilisée pour les groupes de la section des filtres (évidemment).

En vérifiant dans com_users, je peux toujours voir mes groupes d’utilisateurs supplémentaires et j’aurai probablement toujours l’accès requis pour mes autres besoins.

Donc, dans mon cas, ce petit noyau de hack me tiendra en vie, jusqu'à ce que Joomla propose une meilleure solution. Bien sûr, il n’est pas maintenable et je devrais le refaire manuellement après toute mise à jour.

0
FFrewin