function WSEditCourse($params) { global $_configuration; if (!WSHelperVerifyKey($params)) { return return_error(WS_ERROR_SECRET_KEY); } $course_table = Database::get_main_table(TABLE_MAIN_COURSE); $courses_params = $params['courses']; $results = array(); $orig_course_id_value = array(); foreach ($courses_params as $course_param) { $tutor_id = $course_param['tutor_id']; $title = $course_param['title']; $category_code = $course_param['category_code']; $department_name = $course_param['department_name']; $department_url = $course_param['department_url']; $course_language = $course_param['course_language']; $visibility = $course_param['visibility']; $subscribe = $course_param['subscribe']; $unsubscribe = $course_param['unsubscribe']; $visual_code = $course_param['visual_code']; $original_course_id_name = $course_param['original_course_id_name']; $original_course_id_value = $course_param['original_course_id_value']; $orig_course_id_value[] = $original_course_id_value; $extra_list = $course_param['extra']; $courseInfo = CourseManager::getCourseInfoFromOriginalId($original_course_id_value, $original_course_id_name); if (empty($courseInfo)) { $results[] = 0; // Original_course_id_value doesn't exist. continue; } $course_code = $courseInfo['code']; $courseId = $courseInfo['real_id']; $table_user = Database::get_main_table(TABLE_MAIN_USER); $sql = "SELECT concat(lastname,'',firstname) as tutor_name\n FROM {$table_user} WHERE status='1' AND user_id = '{$tutor_id}'\n ORDER BY lastname,firstname"; $res = Database::query($sql); $tutor_name = Database::fetch_row($res); $dbnamelength = strlen($_configuration['db_prefix']); $maxlength = 40 - $dbnamelength; if (empty($visual_code)) { $visual_code = CourseManager::generate_course_code(substr($title, 0, $maxlength)); } $disk_quota = '50000'; // TODO: A hard-coded value. $tutor_name = $tutor_name[0]; $sql = "UPDATE {$course_table} SET\n course_language='" . Database::escape_string($course_language) . "',\n title='" . Database::escape_string($title) . "',\n category_code='" . Database::escape_string($category_code) . "',\n tutor_name='" . Database::escape_string($tutor_name) . "',\n visual_code='" . Database::escape_string($visual_code) . "',\n department_name='" . Database::escape_string($department_name) . "',\n department_url='" . Database::escape_string($department_url) . "',\n disk_quota='" . Database::escape_string($disk_quota) . "',\n visibility = '" . Database::escape_string($visibility) . "',\n subscribe = '" . Database::escape_string($subscribe) . "',\n unsubscribe='" . Database::escape_string($unsubscribe) . "'\n WHERE id ='" . Database::escape_string($courseId) . "'"; $res = 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. $res = CourseManager::update_course_extra_field_value($course_code, $extra_field_name, $extra_field_value); } } if ($res) { $results[] = 1; continue; } else { $results[] = 0; continue; } } // end principal foreach $count_results = count($results); $output = array(); for ($i = 0; $i < $count_results; $i++) { $output[] = array('original_course_id_value' => $orig_course_id_value[$i], 'result' => $results[$i]); } return $output; }
/** * @param string $file * @param bool $moveFile * @param array $teacherBackup * @param array $groupBackup */ private function importCourses($file, $moveFile = true, &$teacherBackup = array(), &$groupBackup = array()) { $data = Import::csv_to_array($file); if (!empty($data)) { $this->logger->addInfo(count($data) . " records found."); foreach ($data as $row) { $row = $this->cleanCourseRow($row); $courseCode = CourseManager::get_course_id_from_original_id($row['extra_' . $this->extraFieldIdNameList['course']], $this->extraFieldIdNameList['course']); $courseInfo = api_get_course_info($courseCode); if (empty($courseInfo)) { // Create $params = array(); $params['title'] = $row['title']; $params['exemplary_content'] = false; $params['wanted_code'] = $row['course_code']; $params['course_category'] = $row['course_category']; $params['course_language'] = $row['language']; $params['teachers'] = $row['teachers']; $courseInfo = CourseManager::create_course($params); if (!empty($courseInfo)) { CourseManager::update_course_extra_field_value($courseInfo['code'], 'external_course_id', $row['extra_' . $this->extraFieldIdNameList['course']]); $this->logger->addInfo("Courses - Course created " . $courseInfo['code']); } else { $this->logger->addError("Courses - Can't create course:" . $row['title']); } } else { // Update $params = array('title' => $row['title'], 'category_code' => $row['course_category']); $result = CourseManager::update_attributes($courseInfo['real_id'], $params); $addTeacherToSession = isset($courseInfo['add_teachers_to_sessions_courses']) && !empty($courseInfo['add_teachers_to_sessions_courses']) ? true : false; $teachers = $row['teachers']; if (!is_array($teachers)) { $teachers = array($teachers); } if ($addTeacherToSession) { CourseManager::updateTeachers($courseInfo['id'], $row['teachers'], false, true, false, $teacherBackup); } else { CourseManager::updateTeachers($courseInfo['id'], $row['teachers'], false, false, false, $teacherBackup); } foreach ($teachers as $teacherId) { if (isset($groupBackup['tutor'][$teacherId]) && isset($groupBackup['tutor'][$teacherId][$courseInfo['code']])) { foreach ($groupBackup['tutor'][$teacherId][$courseInfo['code']] as $data) { GroupManager::subscribe_tutors(array($teacherId), $data['group_id'], $data['c_id']); } } if (isset($groupBackup['user'][$teacherId]) && isset($groupBackup['user'][$teacherId][$courseInfo['code']]) && !empty($groupBackup['user'][$teacherId][$courseInfo['code']])) { foreach ($groupBackup['user'][$teacherId][$courseInfo['code']] as $data) { GroupManager::subscribe_users(array($teacherId), $data['group_id'], $data['c_id']); } } } if ($result) { $this->logger->addInfo("Courses - Course updated " . $courseInfo['code']); } else { $this->logger->addError("Courses - Course NOT updated " . $courseInfo['code']); } } } } if ($moveFile) { $this->moveFile($file); } }
/** * Creates a course (helper method) * * @param string Title * @param string Category code * @param string Wanted code. If it's not defined, it will be generated automatically * @param string Tutor name * @param string Course admin user id field name * @param string Course admin user id value * @param string Course language * @param string Course id field name * @param string Course id value * @param array Course extra fields * @return mixed Generated id if creation was successful, WSError otherwise */ protected function createCourseHelper($title, $category_code, $wanted_code, $tutor_name, $course_admin_user_id_field_name, $course_admin_user_id_value, $language, $course_id_field_name, $course_id_value, $extras) { // Add the original course id field name and value to the extra fields if needed $extras_associative = array(); if($course_id_field_name != "chamilo_course_id") { $extras_associative[$course_id_field_name] = $course_id_value; } foreach($extras as $extra) { $extras_associative[$extra['field_name']] = $extra['field_value']; } $course_admin_id = $this->getUserId($course_admin_user_id_field_name, $course_admin_user_id_value); if($course_admin_id instanceof WSError) { return $course_admin_id; } if($wanted_code == '') { $wanted_code = generate_course_code($title); } $result = create_course($wanted_code, $title, $tutor_name, $category_code, $language, $course_admin_id, $this->_configuration['db_prefix'], 0); if (!$result) { return new WSError(202, 'There was an error creating the course'); } else { // Update extra fields foreach($extras_associative as $fname => $fvalue) { CourseManager::update_course_extra_field_value($result, $fname, $fvalue); } // Get course id $course_info = CourseManager::get_course_information($result); return $course_info['id']; } }
$department_name = $course['department_name']; $department_url = $course['department_url']; $course_language = $course['course_language']; $course['disk_quota'] = $course['disk_quota'] * 1024 * 1024; $disk_quota = $course['disk_quota']; $subscribe = $course['subscribe']; $unsubscribe = $course['unsubscribe']; if (!stristr($department_url, 'http://')) { $department_url = 'http://' . $department_url; } $sql = "UPDATE {$course_table} SET course_language='" . Database::escape_string($course_language) . "',\n title='" . Database::escape_string($title) . "',\n category_code='" . Database::escape_string($category_code) . "',\n tutor_name='" . Database::escape_string($tutor_name) . "',\n visual_code='" . Database::escape_string($visual_code) . "',\n department_name='" . Database::escape_string($department_name) . "',\n department_url='" . Database::escape_string($department_url) . "',\n disk_quota='" . Database::escape_string($disk_quota) . "',\n visibility = '" . Database::escape_string($visibility) . "',\n subscribe = '" . Database::escape_string($subscribe) . "',\n unsubscribe='" . Database::escape_string($unsubscribe) . "'\n WHERE code='" . Database::escape_string($course_code) . "'"; Database::query($sql); // update the extra fields if (count($extras) > 0) { foreach ($extras as $key => $value) { CourseManager::update_course_extra_field_value($course_code, $key, $value); } } $addTeacherToSessionCourses = isset($course['add_teachers_to_sessions_courses']) && !empty($course['add_teachers_to_sessions_courses']) ? 1 : 0; // Updating teachers if ($addTeacherToSessionCourses) { // Updating session coaches $sessionCoaches = $course['session_coaches']; if (!empty($sessionCoaches)) { foreach ($sessionCoaches as $sessionId => $teacherInfo) { $coachesToSubscribe = $teacherInfo['coaches_by_session']; SessionManager::updateCoaches($sessionId, $course['code'], $coachesToSubscribe, true); } } CourseManager::updateTeachers($course_code, $teachers, false, true, false); } else {
/** * @param string $file */ private function importCourses($file) { $data = Import::csv_to_array($file); //$language = $this->defaultLanguage; if (!empty($data)) { $this->logger->addInfo(count($data) . " records found."); foreach ($data as $row) { $row = $this->cleanCourseRow($row); $courseCode = CourseManager::get_course_id_from_original_id($row['extra_' . $this->extraFieldIdNameList['course']], $this->extraFieldIdNameList['course']); //$courseInfo = api_get_course_info($row['course_code']); $courseInfo = api_get_course_info($courseCode); if (empty($courseInfo)) { // Create $params = array(); $params['title'] = $row['title']; $params['exemplary_content'] = false; $params['wanted_code'] = $row['course_code']; $params['course_category'] = $row['course_category']; $params['course_language'] = $row['language']; $params['teachers'] = $row['teachers']; $courseInfo = CourseManager::create_course($params); if (!empty($courseInfo)) { CourseManager::update_course_extra_field_value($courseInfo['code'], 'external_course_id', $row['extra_' . $this->extraFieldIdNameList['course']]); $this->logger->addInfo("Courses - Course created " . $courseInfo['code']); } else { $this->logger->addError("Courses - Can't create course:" . $row['title']); } } else { // Update $params = array('title' => $row['title']); $result = CourseManager::update_attributes($courseInfo['real_id'], $params); //CourseManager::updateTeachers($courseInfo['id'], $row['teachers']); if ($result) { $this->logger->addInfo("Courses - Course updated " . $courseInfo['code']); } else { $this->logger->addError("Courses - Course NOT updated " . $courseInfo['code']); } } } } $this->moveFile($file); }
/** * @param string $file * @param bool $moveFile */ private function importCourses($file, $moveFile = true) { $data = Import::csvToArray($file); if (!empty($data)) { $this->logger->addInfo(count($data) . " records found."); foreach ($data as $row) { $row = $this->cleanCourseRow($row); $courseId = CourseManager::getCourseInfoFromOriginalId($row['extra_' . $this->extraFieldIdNameList['course']], $this->extraFieldIdNameList['course']); $courseInfo = api_get_course_info_by_id($courseId); if (empty($courseInfo)) { // Create $params = array(); $params['title'] = $row['title']; $params['exemplary_content'] = false; $params['wanted_code'] = $row['course_code']; $params['course_category'] = $row['course_category']; $params['course_language'] = $row['language']; $params['teachers'] = $row['teachers']; $courseInfo = CourseManager::create_course($params); if (!empty($courseInfo)) { CourseManager::update_course_extra_field_value($courseInfo['code'], 'external_course_id', $row['extra_' . $this->extraFieldIdNameList['course']]); $this->logger->addInfo("Courses - Course created " . $courseInfo['code']); } else { $this->logger->addError("Courses - Can't create course:" . $row['title']); } } else { // Update $params = array('title' => $row['title']); $result = CourseManager::update_attributes($courseInfo['real_id'], $params); $addTeacherToSession = isset($courseInfo['add_teachers_to_sessions_courses']) && !empty($courseInfo['add_teachers_to_sessions_courses']) ? true : false; if ($addTeacherToSession) { CourseManager::updateTeachers($courseInfo['real_id'], $row['teachers'], false, true, false); } else { CourseManager::updateTeachers($courseInfo['real_id'], $row['teachers'], false, false); } if ($result) { $this->logger->addInfo("Courses - Course updated " . $courseInfo['code']); } else { $this->logger->addError("Courses - Course NOT updated " . $courseInfo['code']); } } } } if ($moveFile) { $this->moveFile($file); } }