2012-12-14 39 views
1

我正在創建一些自定義查詢並需要弄清楚成員組和文檔組之間的關係。ModX Revo數據庫:成員組和文檔組之間的關係

我的最終目標是要顯示屬於特定用戶組的資源,當用戶登錄我能夠從會話,所以我想通了的關係,讓他們的用戶ID,到目前爲止是:

用戶ID - >成員組表 - >??Unknown table that pairs Member Groups with Document Groups?? - >文檔組表 - >資源表

我只是無法找到缺少的表!

如果任何人都可以幫助我,那真是太棒了!

感謝

(PS:使用雷沃)

編輯:如需協助

enter image description here

+0

或許它會幫助你 - HTTP://論壇.modx.com/thread/31499/add-new-document-to-new-resource-group-via-api – Vasis

回答

0

你可以使用一些內置鏌鋣方法來實現這一添加的圖像。

這不是測試,可能無法正常工作,但是這可能是一個辦法做到這一點:

// 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.php,並modresourcegroup.class.php查看這些方法背後的查詢。您可能可以將它們調整爲更高效的查詢。另外,如果我沒有誤解你想達到的目標,那麼你的結果應該與用戶在登錄時會在管理器的資源樹中看到的結果相似嗎?

它使用resource/getnodes.class.php處理器,它使用getCollection爲每個上下文檢索所有可能的資源,然後循環遍歷每個上下文,並通過使用$resource->checkPolicy('list')來決定是否顯示。這可能是另一種考慮的方法。

我通常使用自定義數據而不是MODX資源,所以很想聽聽你如何繼續。

+0

這是否有幫助? – okyanet

0

我知道這真的很老,但我遇到了這個問題,我自己尋找答案。經過多一點挖我發現,它的access_resource_groups錶鏈接document_groupsmember_groups

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