function WSUnsuscribeCoursesFromSession($params) { if (!WSHelperVerifyKey($params)) { return return_error(WS_ERROR_SECRET_KEY); } // Initialisation $tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); $tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); $coursessessions_params = $params['coursessessions']; $results = array(); $orig_course_id_value = array(); $orig_session_id_value = array(); foreach ($coursessessions_params as $coursesession_param) { $original_session_id_value = $coursesession_param['original_session_id_value']; $original_session_id_name = $coursesession_param['original_session_id_name']; $original_course_id_name = $coursesession_param['original_course_id_name']; $original_course_id_values = $coursesession_param['original_course_id_values']; $orig_session_id_value[] = $original_session_id_value; $id_session = SessionManager::getSessionIdFromOriginalId($original_session_id_value, $original_session_id_name); if (empty($id_session)) { $results[] = 0; continue; } // Get courses list from row_original_course_id_values $course_list = array(); $courseIdList = []; foreach ($original_course_id_values as $row_original_course_list) { $course_code = Database::escape_string($row_original_course_list['course_code']); // Check whether exits $x_course_code into user_field_values table. $courseInfo = CourseManager::getCourseInfoFromOriginalId($row_original_course_list['course_code'], $original_course_id_name); if (empty($courseInfo) || isset($courseInfo) && $courseInfo['visibility'] == 0) { continue; // Course_code doesn't exist' } $course_list[] = $courseInfo['code']; $courseIdList[] = $courseInfo['real_id']; } if (empty($course_list)) { $results[] = 0; continue; } $orig_course_id_value[] = implode(',', $course_list); foreach ($courseIdList as $courseId) { $courseId = intval($courseId); Database::query("DELETE FROM {$tbl_session_rel_course}\n WHERE c_id ='{$courseId}' AND session_id='{$id_session}'"); $result = Database::query("DELETE FROM {$tbl_session_rel_course_rel_user} WHERE c_id='{$courseId}' AND session_id = '{$id_session}'"); Event::addEvent(LOG_SESSION_DELETE_COURSE, LOG_COURSE_ID, $courseId, api_get_utc_datetime(), api_get_user_id(), $courseId, $id_session); $return = Database::affected_rows($result); } $nbr_courses = 0; $sql = "SELECT nbr_courses FROM {$tbl_session} WHERE id = '{$id_session}'"; $res_nbr_courses = Database::query($sql); $row_nbr_courses = Database::fetch_row($res_nbr_courses); if (Database::num_rows($res_nbr_courses) > 0) { $nbr_users = $row_nbr_courses[0] - $return; } // Update number of users in the session. $update_sql = "UPDATE {$tbl_session} SET nbr_courses= {$nbr_courses} WHERE id='{$id_session}' "; Database::query($update_sql); $results[] = 1; continue; } $count_results = count($results); $output = array(); for ($i = 0; $i < $count_results; $i++) { $output[] = array('original_course_id_values' => $orig_course_id_value[$i], 'original_session_id_value' => $orig_session_id_value[$i], 'result' => $results[$i]); } return $output; }
/** * @param array $params * @return null|soap_fault */ function WSCreateLp($params) { global $debug; if (!WSHelperVerifyKey($params)) { return return_error(WS_ERROR_SECRET_KEY); } if ($debug) { error_log('WSCreateLp'); } $courseIdName = $params['course_id_name']; $courseIdValue = $params['course_id_value']; $lpName = $params['lp_name']; $lpItemList = $params['lp_item_list']; /*$sessionIdName = isset($params['session_id_name']) ? $params['session_id_name'] : null; $sessionIdValue = isset($params['session_id_value']) ? $params['session_id_value'] : null;*/ $courseInfo = CourseManager::getCourseInfoFromOriginalId($courseIdValue, $courseIdName); if (empty($courseInfo)) { if ($debug) { error_log('Course not found'); } } $courseId = $courseInfo['real_id']; $courseCode = $courseInfo['code']; /*$sessionId = 0; if (!empty($sessionIdName) && !empty($sessionIdValue)) { $sessionId = SessionManager::get_session_id_from_original_id( $sessionIdValue, $sessionIdName ); if (empty($sessionId)) { if ($debug) { error_log('Session not found'); } return 'Session not found'; } }*/ $lpId = learnpath::add_lp($courseCode, $lpName, '', 'chamilo', 'manual'); if ($lpId) { if ($debug) { error_log('LP created'); } $lp = new learnpath($courseCode, $lpId, null); $previousId = 0; foreach ($lpItemList as $lpItem) { $info = pathinfo($lpItem['filename']); $extension = $info['extension']; $data = base64_decode($lpItem['data']); $documentId = $lp->create_document($courseInfo, $data, $info['filename'], $extension); if ($documentId) { if ($debug) { error_log("Document created {$documentId}"); $itemId = $lp->add_item(null, $previousId, 'document', $documentId, $lpItem['title'], '', ''); $previousId = $itemId; if ($itemId) { if ($debug) { error_log("Item added"); } } else { if ($debug) { error_log("Item not added"); } } } } else { if ($debug) { error_log("Document NOT created"); } } } return 1; } else { if ($debug) { error_log('LP not created'); } } return 0; }
function WSRemoveCourseFromPortal($params) { if (!WSHelperVerifyKey($params['secret_key'])) { return return_error(WS_ERROR_SECRET_KEY); } $courseInfo = CourseManager::getCourseInfoFromOriginalId($params['original_course_id_value'], $params['original_course_id_name']); $courseId = $courseInfo['real_id']; $portalId = $params['portal_id']; UrlManager::delete_url_rel_course($courseId, $portalId); $result = UrlManager::relation_url_course_exist($courseId, $portalId); if (empty($result)) { return true; } return false; }
/** * @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); } }