salve, ho fatto uno script che mi va a iscrivere un utente tramite webservice a moodle;
lo script mi genera un json; quello che volevo sapere; qual'è la variabile che mi genera l'id utente?
Credo tu abbia inserito due volte la stessa richiesta, in linea generale il cross posting non è necessario, in particolare se la richiesta di tipo tecnico viene inserita nel forum dedicato alla didattica.
Ciao mi scuso per l'errore, quindi, quando vado a generare il json qual'è la variabile che mi risponde solo con l'id utente?
adesso io ho una risposta così:
[{"id":55,"username":"antonio95"}]precisamente volevo sapere in qualche modo se era possibile avere una risposta solo con l'id utente!
Dalla documentazione API per la funzione "core_user_create_users" che puoi consultare direttamente nella tua installazione di Moodle (vedi questo recente intervento), viene indicata la seguente struttura generale della risposta:
list of (
object {
id int //user id
username string //user name
}
)
In accordo alla documentazione quindi la risposta della funzione "core_user_create_users" si direbbe contenga sempre la coppia "Id" e "username" degli utenti creati. Puoi eventualmente elaborare la risposta isolando l'id, tieni comunque presente che la funzione "core_user_create_users" può creare N utenti con una sola chiamata e la restituzione dei soli id nella risposta renderebbe difficile raccordare gli id degli utenti creati con i corrispondenti username forniti con la chiamata.
la documentazione l'avevo letta; mi serve solo sapere quel'è la variabile che mi scrive l'id nella risposta.
Come posso isolare l'id?
Ciao Antonio,
nel tuo codice hai scritto:
$restformat = 'json';
quindi quello che ottieni e stampi in $resp è una stringa formattata JSON che in PHP si legge attraverso http://php.net/manual/it/function.json-decode.php, quindi poiché:
[{"id":55,"username":"antonio95"}]
rappresenta un array composto da un unico oggetto - perché vuoi creare un solo utente - con due proprietà quanto sotto è uno scheletro di come muoverti:
$resp = $curl->post($serverurl . $restformat, $params);
// Initialize what will hold the user identifier, if the callback will be successful.
$id = 0;
if (empty($resp)) {
// Gestire errore mancata comunicazione con Moodle, ad esempio via log.
} else if (array_key_exists('errorcode', $resp)) {
// Gestire errore comunicato da Moodle, ad esempio via log.
} else if (array_key_exists(0, $resp)) {
// Yeah! We are mostly successful, hopefully.
$id = $resp[0]['id'];
} else {
// Unmanaged error.
}
if (!empty($id) {
echo "The user has been successfully created with id = ' . $id;
}
Mi permetto una osservazione: per poter usare i Web Service di Moodle - più in generale di qualunque applicazione - devi padroneggiare - meglio di ora - il linguaggio di programmazione che vuoi usare per implementare il client che si connette a loro altrimenti sei costretto a chiedere "info" per ogni nuova funzionalità che aggiungerai al tuo codice.
HTH,
Matteo