1

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

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

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

我就是找不到那张丢失的桌子!

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

谢谢

(ps:使用 Revo)

编辑:添加图片以获取帮助

在此处输入图像描述

4

2 回答 2

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.phpmodusergroup.class.phpmodresourcegroup.class.php以查看这些方法背后的查询。您也许可以使它们适应一种更有效的查询。

另外,如果我没有误解您想要实现的目标,那么您的结果应该类似于用户在登录时在管理器的资源树中看到的结果?

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

我通常使用自定义数据而不是 MODX 资源,所以很想听听你是如何处理这个问题的。

于 2012-12-16T13:41:22.207 回答
0

我知道这真的很老了,但我遇到了这个问题,自己寻找答案。经过更多的挖掘,我发现它access_resource_groups是链接document_groups和的表member_groups

  • document_groups.id=access_resource_groups.target
  • member_groups.id=access_resource_groups.principal
于 2016-08-25T16:29:44.980 回答