Nous faisons une importation massive de catégories à partir d'un autre CMS, et utilisons le code ci-dessous pour créer les catégories:
$basePath = JPATH_ADMINISTRATOR.'/components/com_categories';
require_once $basePath.'/models/category.php';
$config = array('table_path' => $basePath.'/tables');
$catmodel = new CategoriesModelCategory($config);
// Populate the params array with values to save, for rules:
$params['rules'] = array(
'core.edit.state' => array(),
'core.edit.delete' => array(),
'core.edit.edit' => array(),
'core.edit.state' => array(),
'core.edit.edit.own' => array(1=>true)
);
if(!$catmodel->save($params))
return false;
Tout cela fonctionne à merveille, en créant la catégorie, avec les autorisations comme prévu.
Cependant, en examinant d’autres catégories ajoutées manuellement en cours de route, toutes avec la même ascendance parent_id, je vois deux variétés différentes de la colonne rules
dans la colonne #__assets
table.
#__ assets rules Exemple # 1 ( tel que créé par le code ci-dessus, et certains avec Admin Category Manager, utilisé par plusieurs catégories )
{
"core.create":[],
"core.delete":[],
"core.edit":[],
"core.edit.state":[],
"core.edit.own":{"1":1}
}
#__ assets rules Exemple # 2 ( créé par le gestionnaire de catégories de l'administrateur et utilisé par de nombreuses catégories )
{
"core.create":{"6":1,"3":1},
"core.delete":{"6":1},
"core.edit":{"6":1,"4":1},
"core.edit.state":{"6":1,"5":1},
"core.edit.own":{"1":1,"6":1,"3":1}
}
Lorsque je les visualise dans le gestionnaire de catégories, les deux catégories apparaissent comme disposant des mêmes autorisations. Tout ce qui est hérité, à l'exception de "Edit Own", défini sur "Autorisé". La vraie question est donc double:
La colonne de règles de la table des actifs définit les règles personnalisées pour chaque élément individuellement.
La valeur par défaut du champ serait:
{"core.create":[],"core.delete":[],"core.edit":[],"core.edit.state":[],"core.edit.own":[]}
Ce qui signifie que toutes les règles d'autorisation pour cet élément héritent de leurs autorisations des paramètres de configuration globale par défaut spécifiés pour chaque groupe.
Sinon, il y a des permissions écrasées par item:
{"core.create":{"6":1,"3":1},"core.delete":{"6":1},"core.edit":{"6":1,"4":1},"core.edit.state":{"6":1,"5":1},"core.edit.own":{"6":1,"3":1}}
Explication de la quelle valeur de core.create":{"6":1,"3":0}
veux dire:
Pour cet élément, les autorisations ID de groupe 6 ont les autorisations Créer définies sur "Autorisé" (1), tandis que les ID de groupe a les autorisations Créer définies sur "Refusé" (0). (Ces autorisations remplacent les autorisations globales par défaut et toutes les autres autorisations des groupes rest sont héritées.)
J'espère que cela t'aides...