ユーザーがコンテンツをグループに投稿する権限を持っているかどうかに基づいてボタンを表示または非表示にしようとしていますが、カスタムモジュールから_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
_を呼び出すことができないため、その質問の唯一の答えは私にとってはうまくいきません。
グループエンティティがノードである場合、コードを次のように変更する必要があります。
$gid // your group's node id.
$allowed = og_user_access('node', $gid, 'create resource content');