WSGetUserFromUsername now returns extra fields see BT#14613

Add "WSUpdateUserOriginalIdFromUsername" to update the
original_user_id_value only with the "username".
pull/2606/head
Julio Montoya 7 years ago
parent 74d3c82f4a
commit df10c53f22
  1. 112
      main/webservices/registration.soap.php

@ -4661,7 +4661,7 @@ function WSSubscribeUserToCourse($params)
} }
} else { } else {
if ($debug) { 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'], '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 // Register the method to expose
$server->register( $server->register(
'WSGetUserFromUsername', // method name 'WSGetUserFromUsername', // method name
['GetUserFromUsername' => 'tns:GetUserArgUsername'], // input params ['GetUserFromUsername' => 'tns:GetUserArgUsername'], // input params
['return' => 'tns:User'], // output parameters ['return' => 'tns:UserWithExtraFields'], // output parameters
'urn:WSRegistration', // namespace 'urn:WSRegistration', // namespace
'urn:WSRegistration#WSGetUserFromUsername', // soapaction 'urn:WSRegistration#WSGetUserFromUsername', // soapaction
'rpc', // style 'rpc', // style
@ -4900,6 +4916,79 @@ function WSGetUserFromUsername($params)
return returnError(WS_ERROR_SECRET_KEY); 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 = []; $result = [];
// Get user id // Get user id
@ -4920,18 +5009,27 @@ function WSGetUserFromUsername($params)
$result['lastname'] = $user_data['lastname']; $result['lastname'] = $user_data['lastname'];
$result['email'] = $user_data['email']; $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'); $fieldValue = new ExtraFieldValue('user');
$extra = $fieldValue->getAllValuesByItem( $extraList = $fieldValue->getAllValuesByItem(
$result['user_id'] $result['user_id']
); );
$result['extra'] = $extra; $result['extra'] = $extraList;
if ($debug) { 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; return $result;

Loading…
Cancel
Save