예제 #1
0
 /**
  * This returns a user's additional permissions from the groupintopic table
  *
  *	@param	int
  *	@param	int	optional nodeid
  *
  *	@return	mixed	Associated array of array(nodeid, groupid);
  ***/
 public function getGroupInTopic($userid, $nodeid = false, $forceReload = false)
 {
     if (!isset($this->groupInTopic[$userid]) or $forceReload) {
         // Only call getUserContext if we already have it, as we don't need all of the queries that it does
         if (vB::isUserContextSet($userid) and !$forceReload) {
             $groupInTopic = vB::getUserContext($userid)->fetchGroupInTopic();
             $perms = array();
             foreach ($groupInTopic as $_nodeid => $groups) {
                 foreach ($groups as $group) {
                     $perms[] = array('nodeid' => $_nodeid, 'groupid' => $group);
                 }
             }
         } else {
             $params = array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_SELECT, 'userid' => $userid);
             $permQry = vB::getDbAssertor()->assertQuery('vBForum:groupintopic', $params);
             $perms = array();
             foreach ($permQry as $permission) {
                 $perms[] = array('nodeid' => $permission['nodeid'], 'groupid' => $permission['groupid']);
             }
         }
         $this->groupInTopic[$userid] = $perms;
     }
     if ($nodeid) {
         $results = array();
         foreach ($this->groupInTopic[$userid] as $perm) {
             if ($perm['nodeid'] == $nodeid) {
                 $results[] = $perm;
             }
         }
         return $results;
     }
     return $this->groupInTopic[$userid];
 }