1: 2008-05-29 (Thu) 23:26:44 kilica  |
Cur: 2008-09-25 (Thu) 12:19:19 kilica  |
- | *Xcat [#a995f7cd] | + | *XCat [#a995f7cd] |
| | | |
- | まだα版以前なので、テスト以外では絶対に使用しないでください(^ ^;。 | + | まだα版なので、テスト以外では絶対に使用しないでください(^ ^;。 |
| | | |
- | [[ダウンロード>http://xoops.trpg-labo.com/modules/wiki/gate.php?way=attach&_noumb&refer=Menu%2FXCat&openfile=xcat.zip]] | + | [[ダウンロード(ver.0.43 2008.09.19)>http://xoops.trpg-labo.com/modules/wiki/gate.php?way=attach&_noumb&refer=Menu%2FXCat&openfile=xcat.zip]] |
| | | |
| [[概要(swf)>http://xoops.trpg-labo.com/doc/xcat/outline.swf]] | | [[概要(swf)>http://xoops.trpg-labo.com/doc/xcat/outline.swf]] |
| [[概要(pdf)>http://xoops.trpg-labo.com/doc/xcat/outline.pdf]] | | [[概要(pdf)>http://xoops.trpg-labo.com/doc/xcat/outline.pdf]] |
| | | |
- | ※以下は、いささか古い記述が混じっています。特にコードは危険。 | |
| | | |
| **テーブルの構成 [#rf819e10] | | **テーブルの構成 [#rf819e10] |
| | | |
- | 上の図が、Xcat モジュールの構成です。カテゴリの親子関係やカテゴリ名を管理する''「カテゴリ」テーブル''(xcat_cat)があり、それに紐づく''権限テーブル''(xcat_perm)がユーザグループごとにあります。 | + | 上の図が、XCat モジュールの構成です。カテゴリの親子関係やカテゴリ名を管理する''「カテゴリ」テーブル''(xcat_cat)があり、それに紐づく''権限テーブル''(xcat_perm)がユーザグループごとにあります。 |
| | | |
| カテゴリの上にある''「カテゴリグループ」''は、サイトに複数のカテゴリ群を持たせたいときに使う入れ物です。フォーラムにはカテゴリグループ X を、ニュースにはカテゴリグループ Y を、といったように使います。 | | カテゴリの上にある''「カテゴリグループ」''は、サイトに複数のカテゴリ群を持たせたいときに使う入れ物です。フォーラムにはカテゴリグループ X を、ニュースにはカテゴリグループ Y を、といったように使います。 |
| たとえば、"カテゴリ:A" - "groupid:1" - "VIEW" という権限の設定があれば、"カテゴリ:A" - groupid:2" - "VIEW" や "カテゴリA" - groupid:1" - "CREATE" について、権限の継承は発生しません。もしこれらの権限が設定されていなければ、「不可」として扱われます。 | | たとえば、"カテゴリ:A" - "groupid:1" - "VIEW" という権限の設定があれば、"カテゴリ:A" - groupid:2" - "VIEW" や "カテゴリA" - groupid:1" - "CREATE" について、権限の継承は発生しません。もしこれらの権限が設定されていなければ、「不可」として扱われます。 |
| | | |
- | **デリゲート [#lc27c305] | + | **サービス [#lc27c305] |
| | | |
- | 今のところ用意しているデリゲートは3種類です。しかし、そのうち1種類は作ってみたけど「使うところあるのか?」という感じなので実質的には2種類かもしれません(その1種類は今回紹介しません)。 | + | XCat は XOOPS Cube のサービスを利用してモジュール間通信を行い、他のモジュールに対してカテゴリ管理の機能を提供します。 |
- | | + | 主なサービス機能としては、カテゴリツリーの取得、権限のチェック、カテゴリ名の取得などがあります。 |
- | -カテゴリマネージャ取得(Module.xcat.Event.GetCatManager) | + | 詳細はドキュメントを参照してください。 |
- | -カテゴリツリー取得(Module.xcat.Event.GetCatTree) | + | |
- | | + | |
- | ''カテゴリマネージャ取得''は、カテゴリオブジェクト(Xcat_Cat)を取得します。このオブジェクトは、特定カテゴリにおける権限のチェックなどを行います。View や Edit などで、コンテンツを操作(閲覧、編集、etc.)する権限を持っているかどうかに使います。 | + | |
- | | + | |
- | ''カテゴリツリー取得''は、カテゴリツリーオブジェクト(Xcat_Tree)を取得します。このオブジェクトは、カテゴリの一覧をツリー形式で表示するための配列を組み立てます。XoopsTree がベースになっています。 | + | |
- | | + | |
- | **サンプルコード [#x2211fa0] | + | |
- | | + | |
- | xcat を利用する側のモジュールで、どのようなコードを書くかのサンプルです。 | + | |
- | | + | |
- | Xcat_Tree は XoopsTree をベースにしているのですが、なんかオブジェクト指向的にいけていない気がするので作り直すかもしれません。 | + | |
- | | + | |
- | ***使用例 1 [#vfef7152] | + | |
- | カテゴリオブジェクト(Xcat_Cat)を使って、そのカテゴリに属するコンテンツを閲覧する権限があるかどうかをチェックします。 | + | |
- | | + | |
- | //デリゲートで Xcat_Cat オブジェクトを取得 | + | |
- | XCube_DelegateUtils::call( | + | |
- | 'Module.xcat.Event.GetCatManager', | + | |
- | new XCube_Ref($cat), | + | |
- | $this->mObject->get('cat_id') | + | |
- | ); | + | |
- | | + | |
- | //取得した Xcat_Cat オブジェクトを使い、開こうとしているカテゴリについて、 | + | |
- | //そのユーザが “VIEW” の権限を持っているかをチェック | + | |
- | //もっていなければ、エラーを表示しリダイレクト | + | |
- | if(! $cat->checkPermUser($uid, 'VIEW')){ | + | |
- | $this->mRoot->mController->executeRedirect( | + | |
- | "./index.php?action=CqList", 1, _MD_CQA_ERROR_NOT_PERMITTED | + | |
- | ); | + | |
- | } | + | |
- | | + | |
- | ***使用例 2 [#jdca5a9a] | + | |
- | カテゴリツリーオブジェクト(Xcat_Tree)を使って、そのユーザが CREATE 権限を持っているカテゴリツリーを表示します。 | + | |
- | $treeObj = null; | + | |
- | //デリゲートで Xcat_Tree オブジェクトを取得 | + | |
- | XCube_DelegateUtils::call( | + | |
- | 'Module.xcat.Event.GetCatTree', new XCube_Ref($treeObj) | + | |
- | ); | + | |
- | | + | |
- | //取得した Xcat_Tree オブジェクトを使い、 | + | |
- | //カテゴリグループid =1 のカテゴリツリーを取得。 | + | |
- | $tree = $treeObj->getGrTreeArray(1, 'weight'); | + | |
- | | + | |
- | //カテゴリツリーから、ユーザが ’CREATE’ の権限を持たないカテゴリを除外 | + | |
- | $treeFiltered = $treeObj->filterCatByUser($tree, 'CREATE', 1); | + | |
- | | + | |
- | このあと、render(表示)にまわします。$treeに対し、ブロック表示用と、select 表示用の二つの smarty が用意されています。 | + | |