Bug in iscrizione a tutti i corsi in catalogo

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

Bug in iscrizione a tutti i corsi in catalogo

Post by jasmines »

Quando si tenta di iscrivere utenti a tutti i corsi di un catalogo, si ottiene l'inserimento in learning_courseuser ma non nei gruppi.
Step per replicare:

Amministrazione, E-Learning/E-Learning/Catalogo corsi.
In corrispondenza del catalogo che ci interessa, clicchiamo sul "più" verde.
Selezioniamo l'utente da iscrivere.

Logout, entriamo con quell'utente, vede il corso, ma non i menu Student Area, ecc.

L'errore è in \doceboLms\admin\controllers\SubscriptionAlmsController.php, nella funzione _subscribeUsersToCatalogue:

Code: Select all

foreach ($data as $value) {
			list($id_user, $id_course, $id_edition, $id_date) = $value;

			if ($id_date) {
				if (!isset($already_classrooms[$id_date][$id_user])) {
					//subscribe to classroom
					$res = $date_man->subscribeUserToDate($id_user, $id_course, $id_date, $lv_user, $waiting);
					if ($res) $count_d++;
				}
			} elseif ($id_edition) {
				if (!isset($already_editions[$id_edition][$id_user])) {
					//subscribe to edition
					$res = $edition_man->subscribeUserToEdition($id_user, $id_course, $id_edition, $lv_user, $waiting);
					if ($res) $count_e++;
				}
			} else {
				if (!isset($already_courses[$id_course][$id_user])) {
					//subscribe to course
					$res = $subscribe_man->subscribeUserToCourse($id_user, $id_course, $lv_user, $waiting);
					if ($res) $count_u++;
				}
			}
		}
Come vedete ci sono le chiamate a subscribeUserToCourse, funzione definita in /doceboLms/lib/lib.subscribe.php che NON fa l'iscrizione ai gruppi.
Credo sia un refuso di docebo 3, visto che normalmente si usa il model:

Code: Select all

$res = $_model->subscribeUser($id_user, $level, false);
		if ($res) {
			$docebo_course = new DoceboCourse($id_course);
			$level_idst = & $docebo_course->getCourseLevel($id_course);
			if (count($level_idst) == 0 || $level_idst[1] == '')
				$level_idst = & $docebo_course->createCourseLevel($id_course);
			//$this->acl_man->addToGroup($level_idst[$level], $id_user);
			$this->_addToCourseGroup($level_idst[$level], $id_user);
		}
jasmines
Senior Boarder
Posts: 277
Joined: Fri May 03, 2013 12:29 pm

Re: Bug in iscrizione a tutti i corsi in catalogo

Post by jasmines »

Fix:

sostituire

Code: Select all

 foreach ($data as $value) {
             list($id_user, $id_course, $id_edition, $id_date) = $value;

             if ($id_date) {
                if (!isset($already_classrooms[$id_date][$id_user])) {
                   //subscribe to classroom
                   $res = $date_man->subscribeUserToDate($id_user, $id_course, $id_date, $lv_user, $waiting);
                   if ($res) $count_d++;
                }
             } elseif ($id_edition) {
                if (!isset($already_editions[$id_edition][$id_user])) {
                   //subscribe to edition
                   $res = $edition_man->subscribeUserToEdition($id_user, $id_course, $id_edition, $lv_user, $waiting);
                   if ($res) $count_e++;
                }
             } else {
                if (!isset($already_courses[$id_course][$id_user])) {
                   //subscribe to course
                   $res = $subscribe_man->subscribeUserToCourse($id_user, $id_course, $lv_user, $waiting);
                   if ($res) $count_u++;
                }
             }
          }
con:

Code: Select all

foreach ($data as $value) {
			list($id_user, $id_course, $id_edition, $id_date) = $value;

			if ($id_date) {
				if (!isset($already_classrooms[$id_date][$id_user])) {
					//subscribe to classroom
					$res = $date_man->subscribeUserToDate($id_user, $id_course, $id_date, $lv_user, $waiting);
					if ($res) $count_d++;
				}
			} elseif ($id_edition) {
				if (!isset($already_editions[$id_edition][$id_user])) {
					//subscribe to edition
					$res = $edition_man->subscribeUserToEdition($id_user, $id_course, $id_edition, $lv_user, $waiting);
					if ($res) $count_e++;
				}
			} else {
				if (!isset($already_courses[$id_course][$id_user])) {
					//subscribe to course
					$res = $subscribe_man->subscribeUserToCourse($id_user, $id_course, $lv_user, $waiting);
					if ($res) $count_u++;
				}
			}
			$docebo_course = new DoceboCourse($id_course);
			$level_idst = & $docebo_course->getCourseLevel($id_course);
				if (count($level_idst) == 0 || $level_idst[1] == '')
				$level_idst =& $docebo_course->createCourseLevel($id_course);
							
			$this->_addToCourseGroup($level_idst[$lv_user], $id_user);
		}
User avatar
Luisiana
FormaLms User
Posts: 50
Joined: Thu Mar 01, 2012 3:05 pm
Contact:

Re: Bug in iscrizione a tutti i corsi in catalogo

Post by Luisiana »

Ciao jasmines
il fix funziona perfettamente. La nuova release di Forma uscirà quindi con il fix aggiornato.

Ti ringrazio per il contributo
Luisiana
Post Reply