/** * Checks wether a user may invoke a command or not * (this method is called by ilAccessHandler::checkAccess) * * Please do not check any preconditions handled by * ilConditionHandler here. * * @param string $a_cmd command (not permission!) * @param string $a_permission permission * @param int $a_ref_id reference id * @param int $a_obj_id object id * @param int $a_user_id user id (if not provided, current user is taken) * * @return boolean true, if everything is ok */ function _checkAccess($a_cmd, $a_permission, $a_ref_id, $a_obj_id, $a_user_id = "") { global $ilUser, $lng, $rbacsystem, $ilAccess; if ($a_user_id == "") { $a_user_id = $ilUser->getId(); } $is_admin = $rbacsystem->checkAccessOfUser($a_user_id, 'write', $a_ref_id); // check "global" online switch if (!self::_isOnline($a_obj_id) && !$is_admin) { $ilAccess->addInfoItem(IL_NO_OBJECT_ACCESS, $lng->txt("offline")); return false; } switch ($a_permission) { case "visible": case "read": if (!ilObjTestAccess::_lookupCreationComplete($a_obj_id) && !$is_admin) { $ilAccess->addInfoItem(IL_NO_OBJECT_ACCESS, $lng->txt("tst_warning_test_not_complete")); return false; } break; } switch ($a_cmd) { case "eval_a": case "eval_stat": if (!ilObjTestAccess::_lookupCreationComplete($a_obj_id)) { $ilAccess->addInfoItem(IL_NO_OBJECT_ACCESS, $lng->txt("tst_warning_test_not_complete")); return false; } break; } return true; }