Ajouter une API de fonctions pour faciliter la déclaration des rôles
Peut-être que ces fonctions devraient être dans le core, avec le reste de l'API, et pas dans ce plugin (en fait tout ce plugin devrait être dans le core désormais).
Les rôles peuvent être déclarés pour tous les objets par défaut avec *
, ou pour des objets précis.
Quand on veut ajouter des nouveaux rôles pour tous les objets, déjà on doit faire un array_merge_recursive, ce qui n'est déjà pas intuitif pour tout le monde.
Et plus complexe encore, quand on veut ajouter quelques rôles à un objet précis, mais juste ajouté en plus des rôles par défaut. Or ces rôles par défaut on les connait pas forcément d'avance (d'autres plugins peuvent en avoir rajouté + yen a qui n'apparaissent que sur config). Donc là il faut merger ce qui est trouvé dans *
avec un tableau de choses à ajouter.
Bref, c'est pas mal tordu et complexe. Cette complexité pourrait être cachée dans des fonctions compréhensibles immédiatement.
Il faudrait lister les choses à permettre et trouver un nom de fonction simple pour chacune. (Sans oublier qu'il n'y a pas que les clés de base, par ex Rôles de documents en ajoute avec une clé "principaux").
Exemples à l'arrache :
function roles_declarer_titres($table_source, $roles=array(), $remplacer=false);
function roles_declarer_objets($table_source, $objets, $quoi, $roles, $remplacer=false);
$tables = roles_declarer_titres('spip_documents', array('mon_nouveau_role' => 'Mon nouveau rôle'));
$tables = roles_declarer_objets('spip_documents', '*', 'choix', array('mon_nouveau_role'));
$tables = roles_declarer_objets('spip_documents', 'livres', 'choix', array('couverture'));
$tables = roles_declarer_objets('spip_documents', 'livres', 'principaux', array('couverture'));