|
|
|
@ -111,6 +111,7 @@ class Rest extends WebService |
|
|
|
|
public const SAVE_SESSION = 'save_session'; |
|
|
|
|
public const CREATE_SESSION_FROM_MODEL = 'create_session_from_model'; |
|
|
|
|
public const UPDATE_SESSION = 'update_session'; |
|
|
|
|
public const GET_SESSIONS = 'get_sessions'; |
|
|
|
|
|
|
|
|
|
public const SUBSCRIBE_USER_TO_COURSE = 'subscribe_user_to_course'; |
|
|
|
|
public const SUBSCRIBE_USER_TO_COURSE_PASSWORD = 'subscribe_user_to_course_password'; |
|
|
|
@ -120,6 +121,10 @@ class Rest extends WebService |
|
|
|
|
public const ADD_COURSES_SESSION = 'add_courses_session'; |
|
|
|
|
public const ADD_USERS_SESSION = 'add_users_session'; |
|
|
|
|
public const SUBSCRIBE_USER_TO_SESSION_FROM_USERNAME = 'subscribe_user_to_session_from_username'; |
|
|
|
|
public const SUBSCRIBE_USERS_TO_SESSION = 'subscribe_users_to_session'; |
|
|
|
|
public const UNSUBSCRIBE_USERS_FROM_SESSION = 'unsubscribe_users_from_session'; |
|
|
|
|
public const GET_USERS_SUBSCRIBED_TO_SESSION = 'get_users_subscribed_to_session'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public const GET_COURSE_QUIZ_MDL_COMPAT = 'get_course_quiz_mdl_compat'; |
|
|
|
|
|
|
|
|
@ -1649,6 +1654,36 @@ class Rest extends WebService |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Returns a list of sessions in the given URL. If no URL is provided, we assume we are not in a multi-URL setup and |
|
|
|
|
* return all the sessions. |
|
|
|
|
* |
|
|
|
|
* @param int $campusId |
|
|
|
|
*/ |
|
|
|
|
public function getSessionsCampus(int $campusId = null): array |
|
|
|
|
{ |
|
|
|
|
self::protectAdminEndpoint(); |
|
|
|
|
|
|
|
|
|
$list = SessionManager::get_sessions_list( |
|
|
|
|
[], |
|
|
|
|
[], |
|
|
|
|
null, |
|
|
|
|
null, |
|
|
|
|
$campusId |
|
|
|
|
); |
|
|
|
|
$shortList = []; |
|
|
|
|
foreach ($list as $session) { |
|
|
|
|
$shortList[] = [ |
|
|
|
|
'id' => $session['id'], |
|
|
|
|
'name' => $session['name'], |
|
|
|
|
'access_start_date' => $session['access_start_date'], |
|
|
|
|
'access_end_date' => $session['access_end_date'], |
|
|
|
|
]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $shortList; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @throws Exception |
|
|
|
|
*/ |
|
|
|
@ -2148,9 +2183,21 @@ class Rest extends WebService |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Simple legacy shortcut to subscribeUsersToSession |
|
|
|
|
* @throws Exception |
|
|
|
|
*/ |
|
|
|
|
public function addUsersSession(array $params): array |
|
|
|
|
{ |
|
|
|
|
return self::subscribeUsersToSession($params); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Subscribe a list of users to the given session |
|
|
|
|
* @param array $params Containing 'id_session' and 'list_users' entries |
|
|
|
|
* @return array |
|
|
|
|
* @throws Exception |
|
|
|
|
*/ |
|
|
|
|
public function subscribeUsersToSession(array $params): array |
|
|
|
|
{ |
|
|
|
|
$sessionId = $params['id_session']; |
|
|
|
|
$userList = $params['list_users']; |
|
|
|
@ -2175,6 +2222,39 @@ class Rest extends WebService |
|
|
|
|
'message' => get_lang('UsersAdded'), |
|
|
|
|
]; |
|
|
|
|
} |
|
|
|
|
/** |
|
|
|
|
* Unsubscribe a given list of users from the given session |
|
|
|
|
* @param array $params |
|
|
|
|
* @return array |
|
|
|
|
* @throws Exception |
|
|
|
|
*/ |
|
|
|
|
public function unsubscribeUsersFromSession(array $params): array |
|
|
|
|
{ |
|
|
|
|
self::protectAdminEndpoint(); |
|
|
|
|
|
|
|
|
|
$sessionId = $params['id_session']; |
|
|
|
|
$userList = $params['list_users']; |
|
|
|
|
|
|
|
|
|
if (!is_array($userList)) { |
|
|
|
|
$userList = []; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!api_is_platform_admin() && !in_array($this->user->getId(), $userList)) { |
|
|
|
|
self::throwNotAllowedException(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
foreach ($userList as $userId) { |
|
|
|
|
SessionManager::unsubscribe_user_from_session( |
|
|
|
|
$sessionId, |
|
|
|
|
$userId |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return [ |
|
|
|
|
'status' => true, |
|
|
|
|
'message' => get_lang('UserUnsubscribed'), |
|
|
|
|
]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Creates a session from a model session. |
|
|
|
@ -2372,6 +2452,38 @@ class Rest extends WebService |
|
|
|
|
return intval($sessionIdList[0]['item_id']); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Get a list of users subscribed to the given session |
|
|
|
|
* @params int $sessionId |
|
|
|
|
* @params int $moveInfo Whether to return the "moved_*" fields or not |
|
|
|
|
* @return array |
|
|
|
|
*/ |
|
|
|
|
public function getUsersSubscribedToSession(int $sessionId, int $moveInfo = 0): array |
|
|
|
|
{ |
|
|
|
|
self::protectAdminEndpoint(); |
|
|
|
|
|
|
|
|
|
$users = SessionManager::get_users_by_session($sessionId); |
|
|
|
|
|
|
|
|
|
$userList = []; |
|
|
|
|
foreach ($users as $user) { |
|
|
|
|
$userInfo = [ |
|
|
|
|
'user_id' => $user['user_id'], |
|
|
|
|
'username' => $user['username'], |
|
|
|
|
'firstname' => $user['firstname'], |
|
|
|
|
'lastname' => $user['lastname'], |
|
|
|
|
'status' => $user['relation_type'], |
|
|
|
|
]; |
|
|
|
|
if (1 === $moveInfo) { |
|
|
|
|
$userInfo['moved_to'] = $user['moved_to']; |
|
|
|
|
$userInfo['moved_status'] = $user['moved_status']; |
|
|
|
|
$userInfo['moved_at'] = $user['moved_at']; |
|
|
|
|
} |
|
|
|
|
$userList[] = $userInfo; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $userList; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Updates a user identified by its login name. |
|
|
|
|
* |
|
|
|
|