/** * 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]; }