Iscrizione rapida non funziona se moderata

Domande sulle funzionalità di backend: amministrazione utenti e corsi, certificati, iscrizioni, report, ...
Post Reply
jasmines
Senior Boarder
Posts: 277
Joined: Fri May 03, 2013 12:29 pm

Iscrizione rapida non funziona se moderata

Post 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.
User avatar
Luisiana
FormaLms User
Posts: 50
Joined: Thu Mar 01, 2012 3:05 pm
Contact:

Re: Iscrizione rapida non funziona se moderata

Post 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
jasmines
Senior Boarder
Posts: 277
Joined: Fri May 03, 2013 12:29 pm

Re: Iscrizione rapida non funziona se moderata

Post 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!
jasmines
Senior Boarder
Posts: 277
Joined: Fri May 03, 2013 12:29 pm

Re: Iscrizione rapida non funziona se moderata

Post 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!
User avatar
alberto
FormaLms Guru
Posts: 1155
Joined: Fri Mar 02, 2012 9:18 am
Contact:

Re: Iscrizione rapida non funziona se moderata

Post 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?
jasmines
Senior Boarder
Posts: 277
Joined: Fri May 03, 2013 12:29 pm

Re: Iscrizione rapida non funziona se moderata

Post 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!
jasmines
Senior Boarder
Posts: 277
Joined: Fri May 03, 2013 12:29 pm

Re: Iscrizione rapida non funziona se moderata

Post 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);
Post Reply