function _isMember($a_user_id, $a_ref_id, $a_field = '') { global $rbacreview, $ilObjDataCache, $ilDB; $rolf = $rbacreview->getRoleFolderOfObject($a_ref_id); $local_roles = $rbacreview->getRolesOfRoleFolder($rolf["ref_id"], false); $user_roles = $rbacreview->assignedRoles($a_user_id); // Used for membership limitations -> check membership by given field if ($a_field) { include_once './Services/User/classes/class.ilObjUser.php'; $tmp_user =& ilObjectFactory::getInstanceByObjId($a_user_id); switch ($a_field) { case 'login': $and = "AND login = '******' "; break; case 'email': $and = "AND email = '" . $tmp_user->getEmail() . "' "; break; case 'matriculation': $and = "AND matriculation = '" . $tmp_user->getMatriculation() . "' "; break; default: $and = "AND usr_id = '" . $a_user_id . "'"; break; } if (!($members = ilObjGroup::_getMembers($ilObjDataCache->lookupObjId($a_ref_id)))) { return false; } $query = "SELECT * FROM usr_data as ud " . "WHERE usr_id IN (" . implode(",", ilUtil::quoteArray($members)) . ") " . $and; $res = $ilDB->query($query); return $res->numRows() ? true : false; } if (!array_intersect($local_roles, $user_roles)) { return false; } return true; }
/** * Get members for object * @param int $a_obj_id * @return array */ protected static function getMembers($a_obj_id) { global $ilObjDataCache; switch ($ilObjDataCache->lookupType($a_obj_id)) { case 'crs': include_once 'Modules/Course/classes/class.ilCourseParticipants.php'; $member_obj = ilCourseParticipants::_getInstanceByObjId($a_obj_id); return $member_obj->getMembers(); case 'grp': include_once './Modules/Group/classes/class.ilObjGroup.php'; return ilObjGroup::_getMembers($a_obj_id); } return array(); }