web-dev-qa-db-ja.com

カスタムモジュールからOrganic Groupsグループの権限を確認するにはどうすればよいですか?

ユーザーがコンテンツをグループに投稿する権限を持っているかどうかに基づいてボタンを表示または非表示にしようとしていますが、カスタムモジュールから_og_user_access_関数を呼び出すことができないようです。

私はモジュールファイルをロードしているときにそれを直接呼び出してみました:

_module_load_include('module', 'og'); 
$allowed = og_user_access('group', $group->nid, 'create resource content');
_

これを行うと、Apacheエラーなしでページがクラッシュし、次のウォッチドッグエラーが発生します。

エラー:クラス名は、entity_get_controller()内の有効なオブジェクトまたは文字列でなければなりません(/data/home/rsdev/www/content/lnsres.rsdev.ca/web/includes/common.incの行8066)。

私はまた、次のように_module_invoke_を使用してみました:

_$allowed = module_invoke('og', 'og_user_access', 'group', $group->nid, 'create resource content');
_

このようなモジュールを呼び出してもページはクラッシュしませんが、何も返されません。contribモジュール関数にdpm()呼び出しを追加すると、呼び出されていないことに気づきます。 _module_invoke_についてのいくつかの読み取りを行うと、フックの呼び出しに主に使用されるように見えますが、_og_user_access_はそうではないので、それが正しいパスであるかどうかわかりません。

カスタムモジュールのコードからOGのグループ権限を確認するにはどうすればよいですか?

編集:これは グループ権限に基づいてデータを表示する の複製ではありません。私が作成した権限を使用しようとしているわけではないためです。また、私が説明したように、エラーなしで_og_user_access_を呼び出すことができないため、その質問の唯一の答えは私にとってはうまくいきません。

2
Maple Thunder

グループエンティティがノードである場合、コードを次のように変更する必要があります。

$gid // your group's node id.
$allowed = og_user_access('node', $gid, 'create resource content');
0
seroton