/** * Get a "many-to-many" map that holds for all members their group memberships, * including any parent groups where membership is implied. * Use {@link DirectGroups()} to only retrieve the group relations without inheritance. * * @todo Push all this logic into Member_GroupSet's getIterator()? */ public function Groups() { $groups = new Member_GroupSet('Group', 'Group_Members', 'GroupID', 'MemberID'); $groups->setForeignID($this->ID); $this->extend('updateGroups', $groups); return $groups; }
/** * Get a "many-to-many" map that holds for all members their group * memberships * * @todo Push all this logic into Member_GroupSet's getIterator()? */ public function Groups() { $groups = new Member_GroupSet('Group', 'Group_Members', 'GroupID', 'MemberID'); if ($this->ID) { $groups->setForeignID($this->ID); } // Filter out groups that aren't allowed from this IP $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : null; $disallowedGroups = array(); foreach ($groups as $group) { if (!$group->allowedIPAddress($ip)) { $disallowedGroups[] = $groupID; } } if ($disallowedGroups) { $group->where("\"Group\".\"ID\" NOT IN (" . implode(',', $disallowedGroups) . ")"); } return $groups; }