|
|
|
|
@ -2931,6 +2931,77 @@ function api_is_allowed_to_edit($tutor = false, $coach = false, $session_coach = |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Returns true if user is a course coach of at least one course in session |
|
|
|
|
* @param int $sessionId |
|
|
|
|
* @return bool |
|
|
|
|
*/ |
|
|
|
|
function api_is_coach_of_course_in_session($sessionId) |
|
|
|
|
{ |
|
|
|
|
if (api_is_platform_admin()) { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$userId = api_get_user_id(); |
|
|
|
|
$courseList = UserManager::get_courses_list_by_session( |
|
|
|
|
$userId, |
|
|
|
|
$sessionId |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// Session visibility. |
|
|
|
|
$visibility = api_get_session_visibility( |
|
|
|
|
$sessionId, |
|
|
|
|
null, |
|
|
|
|
false |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
if ($visibility != SESSION_VISIBLE && !empty($courseList)) { |
|
|
|
|
// Course Coach session visibility. |
|
|
|
|
$blockedCourseCount = 0; |
|
|
|
|
$closedVisibilityList = array( |
|
|
|
|
COURSE_VISIBILITY_CLOSED, |
|
|
|
|
COURSE_VISIBILITY_HIDDEN |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
foreach ($courseList as $course) { |
|
|
|
|
// Checking session visibility |
|
|
|
|
$sessionCourseVisibility = api_get_session_visibility( |
|
|
|
|
$sessionId, |
|
|
|
|
$course['real_id'], |
|
|
|
|
$ignore_visibility_for_admins |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
$courseIsVisible = !in_array( |
|
|
|
|
$course['visibility'], |
|
|
|
|
$closedVisibilityList |
|
|
|
|
); |
|
|
|
|
if ($courseIsVisible === false || $sessionCourseVisibility == SESSION_INVISIBLE) { |
|
|
|
|
$blockedCourseCount++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// If all courses are blocked then no show in the list. |
|
|
|
|
if ($blockedCourseCount === count($courseList)) { |
|
|
|
|
$visibility = SESSION_INVISIBLE; |
|
|
|
|
} else { |
|
|
|
|
$visibility = SESSION_VISIBLE; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
switch ($visibility) { |
|
|
|
|
case SESSION_VISIBLE_READ_ONLY: |
|
|
|
|
case SESSION_VISIBLE: |
|
|
|
|
case SESSION_AVAILABLE: |
|
|
|
|
return true; |
|
|
|
|
break; |
|
|
|
|
case SESSION_INVISIBLE: |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Checks if a student can edit contents in a session depending |
|
|
|
|
* on the session visibility |
|
|
|
|
|