diff --git a/main/webservices/registration.soap.php b/main/webservices/registration.soap.php index ecd40dc56f..32f9c80a9d 100755 --- a/main/webservices/registration.soap.php +++ b/main/webservices/registration.soap.php @@ -975,22 +975,85 @@ function WSCreateUsersPasswordCrypted($params) // // Prepare Input params for Subscribe Teacher to SC $server->wsdl->addComplexType( - 'SubscribeTeacherToSessionCourse', + 'TeacherToSessionCourse', 'complexType', 'struct', 'all', '', array( - 'userId' => array('name' => 'course', 'type' => 'xsd:string'), // Chamilo user Id - 'sessionId' => array('name' => 'user_id', 'type' => 'xsd:string'), // Current Session course ID - 'courseId' =>array('name' => 'courseId', 'type' => 'xsd:string'), // Course Real Id - 'secret_key' => array('name' => 'secret_key', 'type' => 'xsd:string') + 'user_id' => array('name' => 'course', 'type' => 'xsd:string'), // Chamilo user Id + 'session_id' => array('name' => 'user_id', 'type' => 'xsd:string'), // Current Session course ID + 'course_id' =>array('name' => 'courseId', 'type' => 'xsd:string'), // Course Real Id + 'secret_key' => array('name' => 'secret_key', 'type' => 'xsd:string'), + + // optional + 'original_user_id_name' => array('name' => 'original_user_id_name', 'type' => 'xsd:string'), + 'original_user_id_value' => array('name' => 'original_user_id_value', 'type' => 'xsd:string'), + 'original_course_id_name' => array('name' => 'original_course_id_name', 'type' => 'xsd:string'), + 'original_course_id_value' => array('name' => 'original_course_id_value', 'type' => 'xsd:string'), + 'original_session_id_name' => array('name' => 'original_session_id_name', 'type' => 'xsd:string'), + 'original_session_id_value' => array('name' => 'original_session_id_value', 'type' => 'xsd:string') ) ); +function parseCourseSessionUserParams($params) +{ + global $debug; + + $userId = isset($params['user_id']) ? $params['user_id'] : 0; // Chamilo user Id + $sessionId = isset($params['session_id']) ? $params['session_id'] : 0; // Current Session course ID + $courseId = isset($params['course_id']) ? $params['course_id'] : 0; // Course Real Id + + if (empty($userId) && empty($sessionId) && empty($courseId)) { + // try original values + + if ($debug) error_log('try original values'); + + $userIdName = isset($params['original_user_id_name']) ? $params['original_user_id_name'] : 0; + $userIdValue = isset($params['original_user_id_value']) ? $params['original_user_id_value'] : 0; + $courseIdName = isset($params['original_course_id_name']) ? $params['original_course_id_name'] : 0; + $courseIdValue = isset($params['original_course_id_value']) ? $params['original_course_id_value'] : 0; + $sessionIdName = isset($params['original_session_id_name']) ? $params['original_session_id_name'] : 0; + $sessionIdValue = isset($params['original_session_id_value']) ? $params['original_session_id_value'] : 0; + + // Check if exits x_user_id into user_field_values table. + $userId = UserManager::get_user_id_from_original_id( + $userIdValue, + $userIdName + ); + + // Check whether exits $x_course_code into user_field_values table. + $courseInfo = CourseManager::getCourseInfoFromOriginalId( + $courseIdValue, + $courseIdName + ); + + $courseId = 0; + if ($courseInfo) { + $courseId = $courseInfo['real_id']; + } + + + $sessionId = SessionManager::getSessionIdFromOriginalId( + $sessionIdValue, + $sessionIdName + ); + } + + if ($debug) error_log('$userId found: '. $userId); + if ($debug) error_log('$courseId found: '. $courseId); + if ($debug) error_log('$sessionId found: '. $sessionId); + + return [ + 'user_id' => $userId, + 'course_id' => $courseId, + 'session_id' => $sessionId, + ]; +} + $server->register( 'WSSubscribeTeacherToSessionCourse', - array('SubscribeTeacherToSessionCourse' => 'tns:SubscribeTeacherToSessionCourse'), + array('SubscribeTeacherToSessionCourse' => 'tns:TeacherToSessionCourse'), array('return' => 'xsd:string'), 'urn:WSRegistration', 'urn:WSRegistration#WSSubscribeTeacherToSessionCourse', @@ -999,39 +1062,13 @@ $server->register( 'This webservice subscribe a teacher to a session course' ); -// Prepare Input params for Unsubscribe Teacher from SC -$server->wsdl->addComplexType( - 'UnsubscribeTeacherFromSessionCourse', - 'complexType', - 'struct', - 'all', - '', - array( - 'userId' => array('name' => 'course', 'type' => 'xsd:string'), // Chamilo user Id - 'sessionId' => array('name' => 'user_id', 'type' => 'xsd:string'), // Current Session course ID - 'courseId' =>array('name' => 'courseId', 'type' => 'xsd:string'), // Course Real Id - 'secret_key' => array('name' => 'secret_key', 'type' => 'xsd:string') - ) -); - -$server->register( - 'WSUnsubscribeTeacherFromSessionCourse', - array('UnsubscribeTeacherFromSessionCourse' => 'tns:UnsubscribeTeacherFromSessionCourse'), - array('return' => 'xsd:string'), - 'urn:WSRegistration', - 'urn:WSRegistration#WSUnsubscribeTeacherFromSessionCourse', - 'rpc', - 'encoded', - 'This webservice unsubscribe a teacher from a session course' -); - /** * Subscribe teacher to a session course * * @param array $params - WSFunction parameters (include VerifyKey) * @return bool|null|soap_fault A simple boolean (true if teacher successful subscribed, false otherwise) */ - function WSSubscribeTeacherToSessionCourse($params) +function WSSubscribeTeacherToSessionCourse($params) { global $debug; @@ -1042,13 +1079,26 @@ $server->register( return return_error(WS_ERROR_SECRET_KEY); } - $userId = $params['userId']; // Chamilo user Id - $sessionId = $params['sessionId']; // Current Session course ID - $courseId = $params['courseId']; // Course Real Id + $params = parseCourseSessionUserParams($params); + + $userId = $params['user_id']; + $courseId = $params['course_id']; + $sessionId = $params['session_id']; - return (SessionManager::set_coach_to_course_session($userId, $sessionId, $courseId)); + return intval(SessionManager::set_coach_to_course_session($userId, $sessionId, $courseId)); } +$server->register( + 'WSUnsubscribeTeacherFromSessionCourse', + array('UnsubscribeTeacherFromSessionCourse' => 'tns:TeacherToSessionCourse'), + array('return' => 'xsd:string'), + 'urn:WSRegistration', + 'urn:WSRegistration#WSUnsubscribeTeacherFromSessionCourse', + 'rpc', + 'encoded', + 'This webservice unsubscribe a teacher from a session course' +); + /** * Subscribe teacher to a session course * @@ -1066,15 +1116,15 @@ function WSUnsubscribeTeacherFromSessionCourse($params) return return_error(WS_ERROR_SECRET_KEY); } - $userId = $params['userId']; // Chamilo user Id - $sessionId = $params['sessionId']; // Current Session course ID - $courseId = $params['courseId']; // Course Real Id + $params = parseCourseSessionUserParams($params); - return (SessionManager::removeUsersFromCourseSession($userId, $sessionId, $courseId)); + $userId = $params['user_id']; + $courseId = $params['course_id']; + $sessionId = $params['session_id']; + return intval(SessionManager::removeUsersFromCourseSession($userId, $sessionId, $courseId)); } - /* Register WSCreateUserPasswordCrypted function */ // Register the data structures used by the service @@ -4396,11 +4446,13 @@ function WSSubscribeUserToCourse($params) { $resultValue = 0; } else { // User was found - $courseCode = CourseManager::get_course_id_from_original_id( + $courseInfo = CourseManager::getCourseInfoFromOriginalId( $original_course_id['original_course_id_value'], $original_course_id['original_course_id_name'] ); + $courseCode = $courseInfo['code']; + if (empty($courseCode)) { // Course was not found $resultValue = 0; @@ -4849,11 +4901,13 @@ function WSUnSubscribeUserFromCourseSimple($params) error_log("Course $original_course_id_value, $original_course_id_name found"); } - $courseCode = CourseManager::get_course_id_from_original_id( + $courseInfo = CourseManager::getCourseInfoFromOriginalId( $original_course_id_value, $original_course_id_name ); + $courseCode = $courseInfo['code']; + if (empty($courseCode)) { // Course was not found if ($debug) {