Invio completamento corso ad un web services esterno

Invio completamento corso ad un web services esterno

di Davide Cicero -
Numero di risposte: 5

Buongiorno a tutti,

cerco di spiegarvi al situazione anche se non è semplice...

Dovrei notificare, ad un web services esterno a moodle, il completamento di un corso da parte di un utente. Per passare le informazioni utilizzo un modulo (scritto in protocollo SOAP) che comunica courseid e userid al mio web service ... A questo punto vorrei chiedere quale classe/metodo di moodle notifica la fine di un corso? Dove piazzereste un modulo simile? Prometto di renderlo disponibile alla community appena completato...

 

Grazie a tutti!

Media dei voti:  -
In riposta a Davide Cicero

Re: Invio completamento corso ad un web services esterno

di Andrea Bicciolo -
Immagine Core developers Immagine Plugin developers Immagine Translators

Potresti provare a dare un'occhiata a lib/completionlib.php e al folder lib/completion.  Un posto possibile per il tuo codice potrebbe essere /local.

In riposta a Davide Cicero

Re: Invio completamento corso ad un web services esterno

di Matteo Scaramuccia -

Ciao Davide,
a completare le info di Andrea eccoti anche i riferimenti per la gestione degli eventi in Moodle, http://docs.moodle.org/dev/Events_API: se scorri la wiki fino in fondo leggerai che gli eventi sul completamente sono richiesti ma nessuno li ha ancora implementati, tanto meno nel core di Moodle anche se qualcosa probabilmente si muoverà a breve (rif.: MDL-32103).

HTH,
Matteo

In riposta a Matteo Scaramuccia

Re: Invio completamento corso ad un web services esterno

di Davide Cicero -

Ciao Ragazzi, vi ringrazio per le ottime risposte...

Sono appena passato da Docebo a Moodle, quindi sono ancora in fase di studio del sistema. La funzione che ho scritto (precedentemente per Docebo) è questa:

function courseCompleteNotify( $CodEnte , $IdCorso, $CodFiscale){

// soap client contructor, web service URI
$soapclient = new nusoap_client('http://miosito.it/WSPartecipanti.asmx?wsdl', true);

// start call function 

$parameter = array( 'CodEnte' => $CodEnte,
'IdCorso' => $IdCorso,
'CodFiscale' => $CodFiscale
);

$result= $soapclient->call('CaricaPartecipazione', $parameter,
'http://tempuri.org/CaricaPartecipazione',
'http://tempuri.org/webservices/CaricaPartecipazione' );


unset($soapclient);
return $result['CaricaPartecipazione_IdCorsoResult'];
}

 Per richiamare la funzione dovrei usare codice seguente:

$courseid='17229';
$codente= '0001';
$userid= '3';

$sql = "SELECT data AS cf FROM mdl_user_info_data WHERE userid='".$userid."' AND fieldid='4'";

$result = mysql_query($sql);
$i = mysql_fetch_array($result);

$CodFiscale= $i['cf'];

$result= courseCompleteNotify($codente , $courseid, $CodFiscale);
print_r ($result);

Ovviamente courseid e userid dovranno essere opportunamente valorizzati...

Il problema è come e dove posso usare questo codice?

In riposta a Davide Cicero

Re: Invio completamento corso ad un web services esterno

di Andrea Bicciolo -
Immagine Core developers Immagine Plugin developers Immagine Translators

Circa dove inserire il codice, nel mio post precedente avevo ipotizzato la possibilità di adattarlo per inserirlo in "/local": http://docs.moodle.org/dev/Local_plugins.

Ulteriore documentazione utile: http://docs.moodle.org/dev/Developer_documentation#Make_a_new_plugin

Penso possa anche esserti utile conoscere le API disponibili: http://docs.moodle.org/dev/Core_APIs

Forse potresti anche valutare di aggiungere delle funzioni a lib/completionlib/cron.php

In riposta a Andrea Bicciolo

Re: Invio completamento corso ad un web services esterno

di Matteo Scaramuccia -

Buongiorno Davide,
come ti anticipavo, c'era forte interesse sull'evento di completamento di corso: lo trovi ora implementato nella 2.3.2 ovvero nella weekly build 2.3.1+ visto che il nuovo evento è lì disponibile dal 22 agosto.

In breve, il codice lo trovi qui:

http://git.moodle.org/gw?p=moodle.git;a=commitdiff;h=b74390e38b87250df660cb4f686e2edf12bcae6b;hp=e464af4462e8c0b3be65790ffc7b7c5f1bf18853

ed è stato discusso qui:

http://tracker.moodle.org/browse/MDL-34795

In questo modo puoi procedere ad agganciarti all'evento ovvero modificare il core per inserire il tuo codice: ovviamente è meglio procedere come ti è stato già indicato, via hook tramite local plugin.

HTH,
Matteo