[RISOLTO] Errore "subscription not allowed yet" usando iscrizione limitata in un intervallo di date

Domande sulle funzionalità di backend: amministrazione utenti e corsi, certificati, iscrizioni, report, ...
Post Reply
gfiandino
Newbie
Posts: 9
Joined: Fri Jul 10, 2020 10:38 am

[RISOLTO] Errore "subscription not allowed yet" usando iscrizione limitata in un intervallo di date

Post by gfiandino »

Salve,

rilevo il seguente problema:

limitando la possibilità di iscrizione a un corso in un intervallo di date (Modifica corso / Iscrizione al corso / L'utente può icriversi? opzione : L'iscrizione è disponibile nel seguente periodo), quando l'utente, per effettuare l'iscrizione, inserisce nell'apposito campo "iscrizione con codice" (nella side-bar del profilo) un codice random usa e getta (creato dalla sezione Configurazione/configurazione di sistema/codice, e abbinato al corso), ottiene l'errore "subscription not allowed yet", anche se il tentativo di iscrizione viene fatto nell'intervallo temporale consentito;

se invece l'iscrizione non è limitata in un intervallo di date, ma è normalmente aperta, i codici random funzionano correttamente;

sull'argomento non ho trovato informazioni nel forum, qualcuno ha rilevato il problema?
può trattarsi di qualche configrazione mancante o può essere un bug? (e in tal caso c'è qualche workaround noto?)

Grazie se qualcuno ha info in merito

--------------
Forma 2.4.2
Last edited by gfiandino on Fri Jun 04, 2021 3:14 pm, edited 1 time in total.
alfa24
Senior Boarder
Posts: 2009
Joined: Fri Nov 24, 2017 8:45 am

Re: Errore "subscription not allowed yet" usando iscrizione limitata in un intervallo di date

Post by alfa24 »

Bug. È lì da sempre, esteso non solo ai codici perché le date in cui sono disponibili le iscrizioni incidono anche su altre funzioni.
Per supporto GRATUITO contattatemi in privato qui
alfa24
Senior Boarder
Posts: 2009
Joined: Fri Nov 24, 2017 8:45 am

Re: Errore "subscription not allowed yet" usando iscrizione limitata in un intervallo di date

Post by alfa24 »

Come primo test, in /appLms/lib/lib.course.php trova:

Code: Select all

$query_course_active = "SELECT idCourse" .
						" FROM %lms_course" .
						" WHERE autoregistration_code = '".$code."'"
						." AND autoregistration_code <> ''"
                        ." AND (
                            (can_subscribe=2 AND (sub_end_date = '0000-00-00' OR sub_end_date >= '".date('Y-m-d')."') AND (sub_start_date = '0000-00-00' OR '".date('Y-m-d')."' >= sub_start_date)) OR
                            (can_subscribe=1)
                         ) ";
e sostituiscila con:

Code: Select all

$query_course_active = "SELECT idCourse" .
						" FROM %lms_course" .
						" WHERE autoregistration_code = '".$code."'"
						." AND autoregistration_code <> ''"
                        ." AND (
                            (can_subscribe=2 AND (sub_end_date IS NULL OR sub_end_date = '0000-00-00 00:00:00' OR sub_end_date >= '".date('Y-m-d')."') AND (sub_start_date IS NULL OR sub_start_date = '0000-00-00 00:00:00' OR '".date('Y-m-d')."' >= sub_start_date)) OR
                            (can_subscribe=1)
                         ) ";
Per supporto GRATUITO contattatemi in privato qui
User avatar
fra.scalinci
Newbie
Posts: 20
Joined: Thu Oct 22, 2020 2:14 pm

Re: Errore "subscription not allowed yet" usando iscrizione limitata in un intervallo di date

Post by fra.scalinci »

Grazie mille per la segnalazione alfa24! L'abbiamo passata agli sviluppatori. Verificheremo la soluzione proposta e cercheremo di inserirla nelle prossime release.
gfiandino
Newbie
Posts: 9
Joined: Fri Jul 10, 2020 10:38 am

Re: Errore "subscription not allowed yet" usando iscrizione limitata in un intervallo di date

Post by gfiandino »

Grazie Alfa24 per il suggerimento di test,

ho provato a modificare il codice, e ti segnalo che in /appLms/lib/lib.course.php, nella definizione di $query_course_active che hai indicato, la parte relativa al FROM non è " FROM %lms_course" ma " FROM ".$GLOBALS['prefix_lms']."_course" .

in ogni caso ho provato a sostituite la parte rimanente del codice della Select con quello che hai indicato, ma il problema permane, l'iscrizione con codici (creati dalla sezione Configurazione/configurazione di sistema/codice, e abbinati al corso) non viene permessa

ho anche notato che invece, usando il "Codice per l'iscrizione automatica ad un corso" (che unico per tutti gli utenti) generato nella pagina stessa di modifica del corso , l'iscrizione limitata nell'intervallo di date funziona correttamente;

purtroppo a me serve usare molteplici codici (usa e getta, e uno per ciascun utente)
ti ringrazio in anticipo nel caso ti venissero in mente alternative, e attendo eventuali soluzioni al problema nelle prossime releases.
alfa24
Senior Boarder
Posts: 2009
Joined: Fri Nov 24, 2017 8:45 am

Re: Errore "subscription not allowed yet" usando iscrizione limitata in un intervallo di date

Post by alfa24 »

Come ho scritto si tratta di un test, che ho buttato giù al volo vedendo l'errore macroscopico nel codice (i campi sono del tipo DATETIME, non DATE, e hanno default NULL, non '0').
Devo replicarlo sulle mie istanze. Ti dirò nei prossimi gg.

P.S.: puoi usare tranquillamente %lms_ anziché $GLOBAL['prefix_lms'], che è lì per retrocompatibilità ma che sarebbe opportuno rimuovere.
Per supporto GRATUITO contattatemi in privato qui
alfa24
Senior Boarder
Posts: 2009
Joined: Fri Nov 24, 2017 8:45 am

Re: Errore "subscription not allowed yet" usando iscrizione limitata in un intervallo di date

Post by alfa24 »

Aggiungo, oltre a quanto già proposto, anche la seguente:

in /appCore/lib/lib.code.php occorre ridefinire la query nella funzione getAvailableCourseAssociated($id_code_group) come segue:

Code: Select all

{
		$query = "SELECT ccc.idCourse"
		." FROM ".$this->_getCodeCourseTable()." AS ccc JOIN ".$this->_getCourseTable()." AS lc ON ccc.idCourse = lc.idCourse"
		." WHERE ccc.idCodeGroup  = '".$id_code_group."'
			AND ( can_subscribe=1 OR
				(lc.can_subscribe=2
					AND
				(lc.sub_end_date IS NULL OR lc.sub_end_date = '0000-00-00 00:00:00' OR lc.sub_end_date >= '".date('Y-m-d')."')
					AND
				(lc.sub_start_date IS NULL OR lc.sub_start_date = '0000-00-00 00:00:00' OR '".date('Y-m-d')."' >= lc.sub_start_date)
				))";
Per supporto GRATUITO contattatemi in privato qui
gfiandino
Newbie
Posts: 9
Joined: Fri Jul 10, 2020 10:38 am

Re: Errore "subscription not allowed yet" usando iscrizione limitata in un intervallo di date

Post by gfiandino »

Grazie Alfa24,
ho provato e confermo che la ridefinizione della query con quella da te indicata corregge il bug;

ora l'iscrizione ad un corso tramite i codici creati dalla sezione Configurazione/configurazione di sistema/codice, e abbinati al corso, funziona anche se limitata in un intervallo di date.

Grazie ancora per la rapida soluzione.
Post Reply