Page 1 of 1

Bug in get Template

Posted: Fri Sep 06, 2013 10:51 am
by jasmines
Ciao a tutti, credo di aver scovato un bug piuttosto importante.

in /lib/lib.template.php, nella funzione getTemplate() si trova questa query che serve a capire qual è il template associato all'utente:

Code: Select all

$qtxt = "SELECT ct.associated_template FROM
			%adm_org_chart_tree 
			WHERE associated_template IS NOT NULL AND
			idst_oc IN (".implode(',', Docebo::user()->getArrSt()).")
			ORDER BY iLeft DESC
			LIMIT 0,1";
Ora, la funzione getArrSt() restituisce NON SOLO I GRUPPI CUI L'UTENTE APPARTIENE, ma anche una serie (molto lunga) di id di roba che non capisco bene, ma comunque non si tratta necessariamente di id di gruppi a cui l'utente appartiene. Questo significa che se per caso uno di quegli id "strani" corrisponde a un gruppo realmente esistente, cui l'utente non appartiene, ma che ha un suo template diverso da quello di default, l'utente vedrà quel template!!!

Se il ragionamento vi "quadra", io proporrei questa modifica alla query:

Code: Select all

$qtxt = "SELECT ct.associated_template FROM
			%adm_org_chart_tree as ct
			INNER JOIN %adm_group_members as gm ON ct.idst_oc = gm.idst
			WHERE ct.associated_template IS NOT NULL AND
			ct.idst_oc IN (".implode(',', Docebo::user()->getArrSt()).")
			AND gm.idstMember = ".Docebo::user()->getIdSt()."
			ORDER BY ct.iLeft DESC
			LIMIT 0,1";
Che mi sembra funzionare ...

Re: Bug in get Template

Posted: Fri Sep 06, 2013 5:51 pm
by canelli
CIao Jasmine
su quale versione di Docebo hai trovato il problema?

Re: Bug in get Template

Posted: Sun Sep 08, 2013 3:19 pm
by jasmines
Nella 4.0.5, sono quasi certa che è ricorrente, e non solo in quella funzione.

Re: Bug in get Template

Posted: Wed Oct 09, 2013 8:43 am
by jasmines
Riporto alla vostra attenzione questo problema... Ne discutiamo please?

Re: Bug in get Template

Posted: Thu Nov 07, 2013 4:54 pm
by CisterNino
In effetti, Docebo::user()->getArrSt() ritorna tutti i gruppi in cui l'utente, idst_oc, compare: nodi dell'organigramma, gruppi trasversali, gruppi all'interno dei corsi, gruppi associati a ruoli etc. etc.
Nella query, però è impostato il parametro "associated_template IS NOT NULL" che è un attributo della tabella, core_org_chart_tree, valorizzato solo nel caso dei gruppi che corrispondono a nodi dell'organigramma. Questo implica che la query estrae solamente record associati a gruppi che corrispondono a nodi dell'organigramma. Infine, la clausola "limit 0,1" visualizza un solo record nel caso in cui l'utente sia inserito in più nodi. Dunque la query, a mio avviso, ritrova correttamente il template associato al nodo più nuovo (iLeft DESC) in cui l'utente è stato inserito nel caso di inserimento in più nodi, altrimenti ritrova l'unico template, se esiste, a lui associato.
D'altro canto, la tua query, mi sembra leggermente più complessa dal punto di vista computazionale. Per tanto, a mio avviso, la query presente in Docebo è corretta.

Ciao