예제 #1
0
파일: Member.php 프로젝트: redema/sapphire
	/**
	 * 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;
	}
예제 #2
0
 /**
  * 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;
 }