まだα版なので、テスト以外では絶対に使用しないでください(^ ^;。
上の図が、XCat モジュールの構成です。カテゴリの親子関係やカテゴリ名を管理する「カテゴリ」テーブル(xcat_cat)があり、それに紐づく権限テーブル(xcat_perm)がユーザグループごとにあります。
カテゴリの上にある「カテゴリグループ」は、サイトに複数のカテゴリ群を持たせたいときに使う入れ物です。フォーラムにはカテゴリグループ X を、ニュースにはカテゴリグループ Y を、といったように使います。
カテゴリグループではまた、カテゴリで使う権限の種類(編集権限、閲覧権限、削除権限など)を設定し、カテゴリの深さの限界を設定します。たとえば、カテゴリの深さの限界を「1」にすれば、階層構造を持たないことになります。「0」は無制限を意味します。
権限は、カテゴリ・ユーザグループ・種類ごとに設定されます。
「種類」は、編集権限、閲覧権限などで、カテゴリグループごとにどのような種類をもたせるか決めます。
あるカテゴリの権限が設定されていない場合、親カテゴリの設定を継承します。親カテゴリも権限が設定されていない場合はさらにその親、というようにどんどん遡って設定されている権限を参照します。一番上のカテゴリにも権限が設定されていない場合は、カテゴリグループを作るときに設定したデフォルト権限が適用されます。
なお、権限の継承発生はカテゴリ単位に判断されます。それ以上の細かい単位、ユーザグループや権限ごとではありません。
たとえば、"カテゴリ:A" - "groupid:1" - "VIEW" という権限の設定があれば、"カテゴリ:A" - groupid:2" - "VIEW" や "カテゴリA" - groupid:1" - "CREATE" について、権限の継承は発生しません。もしこれらの権限が設定されていなければ、「不可」として扱われます。