|
|
|
@ -42,6 +42,10 @@ class Rest extends WebService |
|
|
|
|
const SAVE_COURSE_NOTEBOOK = 'save_course_notebook'; |
|
|
|
|
const SAVE_FORUM_THREAD = 'save_forum_thread'; |
|
|
|
|
|
|
|
|
|
const SAVE_COURSE = 'save_course'; |
|
|
|
|
const SAVE_USER = 'save_user'; |
|
|
|
|
const SUBSCRIBE_USER_TO_COURSE = 'subscribe_user_to_course'; |
|
|
|
|
|
|
|
|
|
const EXTRAFIELD_GCM_ID = 'gcm_registration_id'; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -80,7 +84,8 @@ class Rest extends WebService |
|
|
|
|
/** @var Course $course */ |
|
|
|
|
$course = $em->find('ChamiloCoreBundle:Course', $id); |
|
|
|
|
|
|
|
|
|
if (!$course) { |
|
|
|
|
if (!$course) |
|
|
|
|
{ |
|
|
|
|
throw new Exception(get_lang('NoCourse')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -1015,4 +1020,294 @@ class Rest extends WebService |
|
|
|
|
'registered' => $id |
|
|
|
|
]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @param array $course_param |
|
|
|
|
* @return array |
|
|
|
|
*/ |
|
|
|
|
public function saveNewCourse($course_param) |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
$table_course = Database::get_main_table(TABLE_MAIN_COURSE); |
|
|
|
|
$extra_list= array(); |
|
|
|
|
|
|
|
|
|
$title = isset($course_param['title']) ? $course_param['title'] : ''; |
|
|
|
|
$category_code = isset($course_param['category_code']) ? $course_param['category_code'] : ''; |
|
|
|
|
$wanted_code = isset($course_param['wanted_code']) ? intval($course_param['wanted_code']) : 0; |
|
|
|
|
$tutor_name = isset($course_param['tutor_name']) ? $course_param['tutor_name'] : ''; |
|
|
|
|
$admin_id = isset($course_param['admin_id']) ? $course_param['admin_id'] : null; |
|
|
|
|
$language = isset($course_param['language']) ? $course_param['language'] : null; |
|
|
|
|
$original_course_id = isset($course_param['original_course_id']) ? $course_param['original_course_id'] : null; |
|
|
|
|
$diskQuota = isset($course_param['disk_quota']) ? $course_param['disk_quota'] : '100'; |
|
|
|
|
$visibility = isset($course_param['visibility']) ? $course_param['visibility'] : null;; |
|
|
|
|
|
|
|
|
|
if (isset($course_param['visibility'])) { |
|
|
|
|
if ($course_param['visibility'] && |
|
|
|
|
$course_param['visibility'] >= 0 && |
|
|
|
|
$course_param['visibility'] <= 3 |
|
|
|
|
) { |
|
|
|
|
$visibility = $course_param['visibility']; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Check whether exits $x_course_code into user_field_values table. |
|
|
|
|
$courseInfo = CourseManager::getCourseInfoFromOriginalId( |
|
|
|
|
"id", |
|
|
|
|
$course_param['original_course_id_name'] |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
if (!empty($courseInfo)) { |
|
|
|
|
if ($courseInfo['visibility'] != 0) { |
|
|
|
|
$sql = "UPDATE $table_course SET |
|
|
|
|
course_language='".Database::escape_string($course_language)."', |
|
|
|
|
title='".Database::escape_string($title)."', |
|
|
|
|
category_code='".Database::escape_string($category_code)."', |
|
|
|
|
tutor_name='".Database::escape_string($tutor_name)."', |
|
|
|
|
visual_code='".Database::escape_string($wanted_code)."'"; |
|
|
|
|
if ($visibility !== null) { |
|
|
|
|
$sql .= ", visibility = '$visibility' "; |
|
|
|
|
} |
|
|
|
|
$sql .= " WHERE id='".$courseInfo['real_id']."'"; |
|
|
|
|
Database::query($sql); |
|
|
|
|
if (is_array($extra_list) && count($extra_list) > 0) { |
|
|
|
|
foreach ($extra_list as $extra) { |
|
|
|
|
$extra_field_name = $extra['field_name']; |
|
|
|
|
$extra_field_value = $extra['field_value']; |
|
|
|
|
// Save the external system's id into course_field_value table. |
|
|
|
|
CourseManager::update_course_extra_field_value( |
|
|
|
|
$courseInfo['code'], |
|
|
|
|
$extra_field_name, |
|
|
|
|
$extra_field_value |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$results[] = $courseInfo['code']; |
|
|
|
|
} else { |
|
|
|
|
$results[] = 0; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!empty($course_param['course_language'])) { |
|
|
|
|
$course_language = $course_param['course_language']; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$params = array(); |
|
|
|
|
$params['title'] = $title; |
|
|
|
|
$params['wanted_code'] = $wanted_code; |
|
|
|
|
$params['category_code'] = $category_code; |
|
|
|
|
$params['course_category'] = $category_code; |
|
|
|
|
$params['tutor_name'] = $tutor_name; |
|
|
|
|
$params['course_language'] = $course_language; |
|
|
|
|
$params['user_id'] = $this->user->getId(); |
|
|
|
|
$params['visibility'] = $visibility; |
|
|
|
|
$params['disk_quota'] = $diskQuota; |
|
|
|
|
|
|
|
|
|
if (isset($subscribe) && $subscribe != '') { // Valid values: 0, 1 |
|
|
|
|
$params['subscribe'] = $subscribe; |
|
|
|
|
} |
|
|
|
|
if (isset($unsubscribe) && $subscribe != '') { // Valid values: 0, 1 |
|
|
|
|
$params['unsubscribe'] = $unsubscribe; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$course_info = CourseManager::create_course($params, $params['user_id']); |
|
|
|
|
|
|
|
|
|
if (!empty($course_info)) { |
|
|
|
|
$course_code = $course_info['code']; |
|
|
|
|
|
|
|
|
|
// Save new field label into course_field table |
|
|
|
|
CourseManager::create_course_extra_field( |
|
|
|
|
$original_course_id_name, |
|
|
|
|
1, |
|
|
|
|
$original_course_id_name, |
|
|
|
|
'' |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// Save the external system's id into user_field_value table. |
|
|
|
|
CourseManager::update_course_extra_field_value( |
|
|
|
|
$course_code, |
|
|
|
|
$original_course_id_name, |
|
|
|
|
$original_course_id_value |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
if (is_array($extra_list) && count($extra_list) > 0) { |
|
|
|
|
foreach ($extra_list as $extra) { |
|
|
|
|
$extra_field_name = $extra['field_name']; |
|
|
|
|
$extra_field_value = $extra['field_value']; |
|
|
|
|
// Save new fieldlabel into course_field table. |
|
|
|
|
CourseManager::create_course_extra_field( |
|
|
|
|
$extra_field_name, |
|
|
|
|
1, |
|
|
|
|
$extra_field_name, |
|
|
|
|
'' |
|
|
|
|
); |
|
|
|
|
// Save the external system's id into course_field_value table. |
|
|
|
|
CourseManager::update_course_extra_field_value( |
|
|
|
|
$course_code, |
|
|
|
|
$extra_field_name, |
|
|
|
|
$extra_field_value |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$results[] = $course_code; |
|
|
|
|
} else { |
|
|
|
|
$results[] = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $results; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
*/ |
|
|
|
|
public function saveNewUser($user_param) |
|
|
|
|
{ |
|
|
|
|
global $_user; |
|
|
|
|
$results = array(); |
|
|
|
|
$orig_user_id_value = array(); |
|
|
|
|
|
|
|
|
|
$userManager = UserManager::getManager(); |
|
|
|
|
$userRepository = UserManager::getRepository(); |
|
|
|
|
|
|
|
|
|
$firstName = $user_param['firstname']; |
|
|
|
|
$lastName = $user_param['lastname']; |
|
|
|
|
$status = $user_param['status']; |
|
|
|
|
$email = $user_param['email']; |
|
|
|
|
$loginName = $user_param['loginname']; |
|
|
|
|
$password = $user_param['password']; |
|
|
|
|
$official_code = ''; |
|
|
|
|
$language = ''; |
|
|
|
|
$phone = ''; |
|
|
|
|
$picture_uri = ''; |
|
|
|
|
$auth_source = PLATFORM_AUTH_SOURCE; |
|
|
|
|
$expiration_date = ''; |
|
|
|
|
$active = 1; |
|
|
|
|
$hr_dept_id = 0; |
|
|
|
|
$extra = null; |
|
|
|
|
$original_user_id_name = $user_param['original_user_id_name']; |
|
|
|
|
$original_user_id_value = $user_param['original_user_id_value']; |
|
|
|
|
$orig_user_id_value[] = $user_param['original_user_id_value']; |
|
|
|
|
$extra_list = $user_param['extra']; |
|
|
|
|
if (!empty($user_param['language'])) { |
|
|
|
|
$language = $user_param['language']; |
|
|
|
|
} |
|
|
|
|
if (!empty($user_param['phone'])) { |
|
|
|
|
$phone = $user_param['phone']; |
|
|
|
|
} |
|
|
|
|
if (!empty($user_param['expiration_date'])) { |
|
|
|
|
$expiration_date = $user_param['expiration_date']; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Default language. |
|
|
|
|
if (empty($language)) { |
|
|
|
|
$language = api_get_setting('platformLanguage'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!empty($_user['user_id'])) { |
|
|
|
|
$creator_id = $_user['user_id']; |
|
|
|
|
} else { |
|
|
|
|
$creator_id = ''; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// First check wether the login already exists. |
|
|
|
|
if (!UserManager::is_username_available($loginName)) { |
|
|
|
|
$results[] = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$userId = UserManager::create_user( |
|
|
|
|
$firstName, |
|
|
|
|
$lastName, |
|
|
|
|
$status, |
|
|
|
|
$email, |
|
|
|
|
$loginName, |
|
|
|
|
$password, |
|
|
|
|
$official_code, |
|
|
|
|
$language, |
|
|
|
|
$phone, |
|
|
|
|
$picture_uri, |
|
|
|
|
$auth_source, |
|
|
|
|
$expiration_date, |
|
|
|
|
$active, |
|
|
|
|
$hr_dept_id |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
if ($userId) { |
|
|
|
|
if (api_is_multiple_url_enabled()) { |
|
|
|
|
if (api_get_current_access_url_id() != -1) { |
|
|
|
|
UrlManager::add_user_to_url( |
|
|
|
|
$userId, |
|
|
|
|
api_get_current_access_url_id() |
|
|
|
|
); |
|
|
|
|
} else { |
|
|
|
|
UrlManager::add_user_to_url($userId, 1); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
// We add by default the access_url_user table with access_url_id = 1 |
|
|
|
|
UrlManager::add_user_to_url($userId, 1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Save new field label into user_field table. |
|
|
|
|
UserManager::create_extra_field( |
|
|
|
|
$original_user_id_name, |
|
|
|
|
1, |
|
|
|
|
$original_user_id_name, |
|
|
|
|
'' |
|
|
|
|
); |
|
|
|
|
// Save the external system's id into user_field_value table. |
|
|
|
|
UserManager::update_extra_field_value( |
|
|
|
|
$userId, |
|
|
|
|
$original_user_id_name, |
|
|
|
|
$original_user_id_value |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
if (is_array($extra_list) && count($extra_list) > 0) { |
|
|
|
|
foreach ($extra_list as $extra) { |
|
|
|
|
$extra_field_name = $extra['field_name']; |
|
|
|
|
$extra_field_value = $extra['field_value']; |
|
|
|
|
// Save new field label into user_field table. |
|
|
|
|
UserManager::create_extra_field( |
|
|
|
|
$extra_field_name, |
|
|
|
|
1, |
|
|
|
|
$extra_field_name, |
|
|
|
|
'' |
|
|
|
|
); |
|
|
|
|
// Save the external system's id into user_field_value table. |
|
|
|
|
UserManager::update_extra_field_value( |
|
|
|
|
$userId, |
|
|
|
|
$extra_field_name, |
|
|
|
|
$extra_field_value |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$results[] = $userId; |
|
|
|
|
} else { |
|
|
|
|
$results[] = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// $results[] = $userId; |
|
|
|
|
return $results; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Subscribe User to Course |
|
|
|
|
*/ |
|
|
|
|
public function subscribeUserToCourse($params) |
|
|
|
|
{ |
|
|
|
|
$course_id = $params['course_id']; |
|
|
|
|
$course_code = $params['course_code']; |
|
|
|
|
$user_id = $params['user_id']; |
|
|
|
|
if (!$course_id && !$course_code) |
|
|
|
|
{ |
|
|
|
|
return [false]; |
|
|
|
|
} |
|
|
|
|
if (!$course_code) |
|
|
|
|
{ |
|
|
|
|
$course_code = CourseManager::get_course_code_from_course_id($course_id); |
|
|
|
|
} |
|
|
|
|
if (CourseManager::subscribe_user($user_id, $course_code)) |
|
|
|
|
{ |
|
|
|
|
return [true]; |
|
|
|
|
} else { |
|
|
|
|
return [false]; |
|
|
|
|
} |
|
|
|
|
return [true]; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|