diff --git a/main/webservices/registration.soap.php b/main/webservices/registration.soap.php index 3c15801651..77f190daca 100755 --- a/main/webservices/registration.soap.php +++ b/main/webservices/registration.soap.php @@ -4661,7 +4661,7 @@ function WSSubscribeUserToCourse($params) } } else { if ($debug) { - error_log('WSSubscribeUserToCourse NOT subscribed: '); + error_log('WSSubscribeUserToCourse NOT subscribed.'); } } } @@ -4873,11 +4873,27 @@ $server->wsdl->addComplexType( 'secret_key' => ['name' => 'secret_key', 'type' => 'xsd:string'], ] ); + +// Prepare output params, in this case will return an array +$server->wsdl->addComplexType( + 'UserWithExtraFields', + 'complexType', + 'struct', + 'all', + '', + [ + 'user_id' => ['name' => 'user_id', 'type' => 'xsd:string'], + 'firstname' => ['name' => 'firstname', 'type' => 'xsd:string'], + 'lastname' => ['name' => 'lastname', 'type' => 'xsd:string'], + 'extra_fields' => ['name' => 'extra_fields', 'type' => 'xsd:string'], + ] +); + // Register the method to expose $server->register( 'WSGetUserFromUsername', // method name ['GetUserFromUsername' => 'tns:GetUserArgUsername'], // input params - ['return' => 'tns:User'], // output parameters + ['return' => 'tns:UserWithExtraFields'], // output parameters 'urn:WSRegistration', // namespace 'urn:WSRegistration#WSGetUserFromUsername', // soapaction 'rpc', // style @@ -4900,6 +4916,79 @@ function WSGetUserFromUsername($params) return returnError(WS_ERROR_SECRET_KEY); } + // Get user id + $user_data = api_get_user_info_from_username($params['username']); + + $result = []; + $result['user_id'] = ''; + $result['firstname'] = ''; + $result['lastname'] = ''; + $result['extra_fields'] = ''; + + if (empty($user_data)) { + // If user was not found, there was a problem + if ($debug) { + error_log('User not found :('); + } + } else { + $result['user_id'] = $user_data['user_id']; + $result['firstname'] = $user_data['firstname']; + $result['lastname'] = $user_data['lastname']; + $result['email'] = $user_data['email']; + + // Get extra fields + $fieldValue = new ExtraFieldValue('user'); + $extra = $fieldValue->getAllValuesByItem($result['user_id']); + $result['extra_fields'] = json_encode($extra); + + if ($debug) { + error_log('User found :) return value '.print_r($result, 1)); + } + } + + return $result; +} + +$server->wsdl->addComplexType( + 'GetUserArgUsernameWithOriginal', + 'complexType', + 'struct', + 'all', + '', + [ + 'username' => ['name' => 'username', 'type' => 'xsd:string'], + 'original_user_id_name' => ['name' => 'original_user_id_name', 'type' => 'xsd:string'], + 'original_user_id_value' => ['name' => 'original_user_id_value', 'type' => 'xsd:string'], + 'secret_key' => ['name' => 'secret_key', 'type' => 'xsd:string'], + ] +); +// Register the method to expose +$server->register( + 'WSUpdateUserOriginalIdFromUsername', // method name + ['WSUpdateUserOriginalIdFromUsername' => 'tns:GetUserArgUsernameWithOriginal'], // input params + ['return' => 'tns:User'], // output parameters + 'urn:WSRegistration', // namespace + 'urn:WSRegistration#WSGetUserFromUsername', // soapaction + 'rpc', // style + 'encoded', // use + 'This service get user information by username' // documentation +); + +// define the method WSGetUserFromUsername +function WSUpdateUserOriginalIdFromUsername($params) +{ + global $debug; + if ($debug) { + error_log('WSUpdateUserOriginalIdFromUsername'); + } + if ($debug) { + error_log('$params: '.print_r($params, 1)); + } + + if (!WSHelperVerifyKey($params)) { + return returnError(WS_ERROR_SECRET_KEY); + } + $result = []; // Get user id @@ -4920,18 +5009,27 @@ function WSGetUserFromUsername($params) $result['lastname'] = $user_data['lastname']; $result['email'] = $user_data['email']; - // Get extra fields + $resultUpdate = UserManager::update_extra_field_value( + $user_data['user_id'], + $params['original_user_id_name'], + $params['original_user_id_value'] + ); + $fieldValue = new ExtraFieldValue('user'); - $extra = $fieldValue->getAllValuesByItem( + $extraList = $fieldValue->getAllValuesByItem( $result['user_id'] ); - $result['extra'] = $extra; + $result['extra'] = $extraList; if ($debug) { - error_log('User found :) return value '.print_r($result, 1)); + if ($resultUpdate) { + error_log('User updated :) '); + } else { + error_log('User not updated :('); + } + error_log('$result: '.print_r($result, 1)); } - } return $result;