ModX Revo数据库:成员组和文档组之间的关系

时间:2012-12-14 01:33:55

标签: database content-management-system modx modx-revolution

我正在创建一些自定义查询,需要弄清楚成员组和文档组之间的关系。

我的最终目标是在用户登录时显示属于特定用户组的资源。我能够从Sessions获取他们的用户ID,因此我到目前为止所知道的关系是:

用户ID - >会员组表 - > ??Unknown table that pairs Member Groups with Document Groups?? - >文档组表 - >资源表

我只是找不到丢失的表格!

如果有人可以帮助我,那就太棒了!

由于

(ps:使用Revo)

编辑:添加图像以进行协助

enter image description here

2 个答案:

答案 0 :(得分:0)

您可以使用一些内置的MODX方法来实现这一目标。

这未经过测试,可能无效,但这可能是一种方法:

// userGroups = membergroups
$userGroups = $user->getUserGroups();

foreach ($userGroups as $userGroup) {
    $resGroups = $userGroup->getResourceGroups(); 

    foreach ($resGroups as $resGroup) {
        $resources = $resGroup->getResources();
        // merge resources into an array or something

    }
}

查看 moduser.class.php modusergroup.class.php modresourcegroup.class.php ,查看这些背后的查询方法。您可以将它们调整为更有效的查询。

另外,如果我没有误解你想要达到的目的,那么你的结果应该与用户在登录时在资源树中看到的结果类似?

使用resource / getnodes.class.php处理器,该处理器使用getCollection检索每个上下文的所有可能资源,然后遍历每个处理器并使用$resource->checkPolicy('list')决定是否显示。这可能是另一种需要考虑的方法。

我通常使用自定义数据而非MODX资源,因此我们非常希望了解您如何继续使用它。

答案 1 :(得分:0)

我知道这真的非常古老,但我自己也遇到了这个问题。经过一番挖掘后,我发现这是access_resource_groups表链接document_groupsmember_groups

  • document_groups.id = access_resource_groups.target
  • member_groups.id = access_resource_groups.principal