Page 1 of 1

Iscrizione rapida non funziona se moderata

Posted: Tue Dec 10, 2013 5:26 pm
by jasmines
Ho creato un profilo amministratore che non può iscrivere direttamente gli utenti ai corsi (richiesta la moderazione).

Ho notato che se iscrive un utente ad un corso mediante la fast subscribe, la richiesta non va a buon fine, o meglio vedo un messaggio di operazione completata con successo, ma poi l'utente non risulta iscritto (né è in attesa).

Se utilizzo invece l'iscrizione normale (aggiungi, cerco l'utente, successivi, seleziono il livello) il comportamento è corretto.

Riuscite a replicare e darmi riscontro?
Grazie.

Re: Iscrizione rapida non funziona se moderata

Posted: Wed Dec 11, 2013 12:49 pm
by Luisiana
Ciao jasmines
ti dico passo per passo quel che ho fatto per capire se son riuscita a replicare la situazione.

Ho creato un amministratore che non può iscrivere gli utenti direttamente ai corsi
.
In pratica, sono andata in Amministrazione/Principale/Amministratori/Profilo Amministratori e all'interno di "Impostazioni speciali" non ho vistato "Questo admin può iscrivere gli utenti direttamente (senza approvazione)"

Ho iscritto un utente ad un corso utilizzando tre modalità differenti:
1) Ho cliccato su "Iscrivi" nella pagina di Benvenuto dell'Amministrazione e, a quel punto, l'utente risulta iscritto al corso

2) Sono andata in Amministrazione/Elearning/Elearning/Corso e dopo aver cliccato sull'icona relativa a "Iscrizione", ho inserito nel campo a sinistra l'userid dell'utente da iscrivere e cliccato sulla croce verde e, a quel punto, l'utente risulta iscritto

3) Sono andata in Amministrazione/Elearning/Elearning/Corso e dopo aver cliccato sull'icona relativa a "Iscrizione", ho cliccato su "Aggiungi" e iscritto l'utente desiderato e anche in questo caso l'utente risulta iscritto

Morale della favola: Se ho capito bene come configurare l'admin che non può iscrivere l'utente direttamente al corso, non riesco a riscontrare la tua stessa situazione in quanto, qualsiasi procedura di iscrizione io scelga, io riesco cmq a iscrivere l'utente.
Quel che però mi chiedo è: se ho configurato l'admin in modo che NON possa iscrivere direttamente gli utenti ai corsi, com'è che invece ci riesco??

Io ho fatto i vari test su Forma, tu cos'hai utilizzato?

Vediam se ne saltiam fuori...
Luisiana

Re: Iscrizione rapida non funziona se moderata

Posted: Wed Dec 11, 2013 1:42 pm
by jasmines
Ciao, sto usando Docebo 4.0.5, ma ho visto che la sostanza nel codice è la stessa.
Forse ne sto uscendo, devo fare qualche altro test e vi so dire se ho trovato il bug!

Re: Iscrizione rapida non funziona se moderata

Posted: Thu Dec 12, 2013 9:47 am
by jasmines
Dunque, facciamo un po' di analisi insieme, così mi dite le vostre impressioni.
File /doceboLms/admin/controllers/SubscriptionAlmsController.php
funzione fastsubscribe()

alla riga 854 circa, si legge:

Code: Select all

if (isset($admin_users) && array_search($id_user, $admin_users) == false && Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) {
qui secondo me c'è un primo errore, perché se $id_user è al primo posto dell'array $admin_users, avrebbe indice 0, per cui generebbe un false.
Correggerei con:

Code: Select all

if (isset($admin_users) && array_search($id_user, $admin_users) === false && Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) {
Le due righe seguenti:

Code: Select all

$output = array('success' => true);
			echo $this->json->encode($output);
Dovrebbero rappresentare un insuccesso, per cui correggerei con:

Code: Select all

$output = array('success' => false, 'message' => $this->_getMessage("no permission"));
			echo $this->json->encode($output);
o un messaggio simile.

Infine, per far funzionare la moderazione, sostituirei le righe 859-860:

Code: Select all

$waiting = false;
			$result = $this->model->subscribeUser($id_user, $level, $waiting);
con:

Code: Select all

$direct_subscribe = Docebo::user()->preference->getAdminPreference('admin_rules.direct_course_subscribe');

			
			if ($direct_subscribe == 'on')
				$waiting = false;
			else
			
			$waiting = true;
			$result = $this->model->subscribeUser($id_user, $level, $waiting);
Attendo vostre!

Re: Iscrizione rapida non funziona se moderata

Posted: Fri Dec 13, 2013 10:11 am
by alberto
Ciao Jasmines, grazie a priori per il fix :)
Però non ho capito qual'è il comportamento sbagliato, potresti spiegarmi meglio come replicare l'errore?

Re: Iscrizione rapida non funziona se moderata

Posted: Fri Dec 13, 2013 10:42 am
by jasmines
In pratica, nel caso di amministratore che non ha il direct subscribe, se usa la fastsubscribe, l'utente non va in attesa, ma viene direttamente iscritto.
Se poi l'utente è il primo dell'array, non succede proprio nulla, nonostante il messaggio sia di success (e questo indipendetemente dalla direct subscribe).

P.s.: la fix risolve sicuramente il secondo problema. Il primo sto testando...

Edit: funziona anche per il primo!

Re: Iscrizione rapida non funziona se moderata

Posted: Mon Jan 20, 2014 12:48 pm
by jasmines
Edit dell'ultimissima modifica:

Code: Select all

$direct_subscribe = Docebo::user()->preference->getAdminPreference('admin_rules.direct_course_subscribe');

         
         if ($direct_subscribe == 'on' || Docebo::user()->getUserLevelId() == ADMIN_GROUP_GODADMIN )
            $waiting = false;
         else
         
         $waiting = true;
         $result = $this->model->subscribeUser($id_user, $level, $waiting);