Merge pull request #2149 from wariosolis/1.11.x

Add some methods to Rest Api
pull/2487/head
Julio Montoya 7 years ago committed by GitHub
commit c5a63ce83a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 297
      main/inc/lib/webservices/Rest.php
  2. 15
      main/webservices/api/v2.php

@ -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];
}
}

@ -1,6 +1,5 @@
<?php
/* For licensing terms, see /license.txt */
require_once __DIR__.'/../../inc/global.inc.php';
$hash = isset($_REQUEST['hash']) ? $_REQUEST['hash'] : null;
@ -116,9 +115,21 @@ try {
$restResponse->setData($data);
break;
case Rest::GET_COURSE_LEARNPATH:
$lpId = isset($_REQUEST['lp_id']) ? intval($_REQUEST['lp_id']) : 0;
$lpId = isset($_REQUEST['lp_id']) ? intval($_REQUEST['lp_id']) : 1;
$restApi->showLearningPath($lpId);
break;
case Rest::SAVE_COURSE:
$data = $restApi->saveNewCourse($_POST);
$restResponse->setData($data);
break;
case Rest::SAVE_USER:
$data = $restApi->saveNewUser($_POST);
$restResponse->setData($data);
break;
case Rest::SUBSCRIBE_USER_TO_COURSE:
$data = $restApi->subscribeUserToCourse($_POST);
$restResponse->setData($data);
break;
case Rest::SAVE_FORUM_POST:
if (
empty($_POST['title']) || empty($_POST['text']) || empty($_POST['thread']) || empty($_POST['forum'])

Loading…
Cancel
Save