/** * Get a list of sessions (id, coach_id, name, courses_num, users_num, classes_num, * access_start_date, access_end_date, access_days_before_num, session_admin_id, visibility, * session_category_id, promotion_id, * validated_user_num, waiting_user_num, * extra, course) the validated_usernum and waiting_user_num are * used when have the plugin for advance incsription enables. * The extra data (field_name, field_value) * The course data (course_id, course_code, course_title, * coach_username, coach_firstname, coach_lastname) * @param array $params List of parameters (id, category_name, access_url_id, secret_key) * @return array|soap_fault Sessions list (id=>[title=>'title',url='http://...',date_start=>'...',date_end=>'']) */ public static function WSListSessionsDetailsByCategory($params) { global $debug; if ($debug) { error_log('WSListSessionsDetailsByCategory'); error_log('Params ' . print_r($params, 1)); } $secretKey = $params['secret_key']; // Check if secret key is valid if (!WSHelperVerifyKey($secretKey)) { return return_error(WS_ERROR_SECRET_KEY); } // Check if category ID is set if (!empty($params['id']) && empty($params['category_name'])) { $sessionCategoryId = $params['id']; } elseif (!empty($params['category_name'])) { // Check if category name is set $sessionCategoryId = SessionManager::getSessionCategoryIdByName($params['category_name']); if (is_array($sessionCategoryId)) { $sessionCategoryId = current($sessionCategoryId); } } else { // Return soap fault Not valid input params return return_error(WS_ERROR_INVALID_INPUT); } // Get the session List by category $sessionList = SessionManager::getSessionListAndExtraByCategoryId($sessionCategoryId); if (empty($sessionList)) { // If not found any session, return error return return_error(WS_ERROR_NOT_FOUND_RESULT); } // Get validated and waiting queue users count for each session $plugin = AdvancedSubscriptionPlugin::create(); foreach ($sessionList as &$session) { // Add validated and queue users count $session['validated_user_num'] = self::$plugin->countQueueByParams(array('sessions' => array($session['id']), 'status' => array(ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_APPROVED))); $session['waiting_user_num'] = self::$plugin->countQueueByParams(array('sessions' => array($session['id']), 'status' => array(ADVANCED_SUBSCRIPTION_QUEUE_STATUS_START, ADVANCED_SUBSCRIPTION_QUEUE_STATUS_BOSS_APPROVED))); } return $sessionList; }
function WSDeleteUserFromGroup($params) { if (!WSHelperVerifyKey($params['secret_key'])) { return return_error(WS_ERROR_SECRET_KEY); } $userGroup = new UserGroup(); return $userGroup->delete_user_rel_group($params['user_id'], $params['group_id']); }
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; }
/** * Get a list of sessions (id, title, url, date_start, date_end) and * return to caller. Date start can be set to ask only for the sessions * starting at or after this date. Date end can be set to ask only for the * sessions ending before or at this date. * Function registered as service. Returns strings in UTF-8. * @param array List of parameters (security key, date_start and date_end) * @return array Sessions list (id=>[title=>'title',url='http://...',date_start=>'...',date_end=>'']) */ function WSListSessions($params) { if (!WSHelperVerifyKey($params)) { return return_error(WS_ERROR_SECRET_KEY); } $sql_params = array(); // Dates should be provided in YYYY-MM-DD format, UTC if (!empty($params['date_start'])) { $sql_params['date_start >='] = $params['date_start']; } if (!empty($params['date_end'])) { $sql_params['date_end <='] = $params['date_end']; } $sessions_list = SessionManager::get_sessions_list($sql_params); $return_list = array(); foreach ($sessions_list as $session) { $return_list[] = array('id' => $session['id'], 'title' => $session['name'], 'url' => api_get_path(WEB_CODE_PATH) . 'session/index.php?session_id=' . $session['id'], 'date_start' => $session['date_start'], 'date_end' => $session['date_end']); } return $return_list; }
/** * Web service to tell if a given user is subscribed to the course * @param array $params Array of parameters (course and user_id) * @return bool|null|soap_fault A simple boolean (true if user is subscribed, false otherwise) */ function WSUserSubscribedInCourse ($params) { global $debug; if ($debug) error_log('WSUserSubscribedInCourse'); if ($debug) error_log('Params '. print_r($params, 1)); if (!WSHelperVerifyKey($params)) { return return_error(WS_ERROR_SECRET_KEY); } $courseCode = $params['course']; //Course code $userId = $params['user_id']; //chamilo user id return (CourseManager::is_user_subscribed_in_course($userId,$courseCode)); }
/** * @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; }