The Elearning Community • [RISOLTO] Errore "subscription not allowed yet" usando iscrizione limitata in un intervallo di date
Page 1 of 1

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

Posted: Mon May 31, 2021 7:01 pm
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

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

Posted: Mon May 31, 2021 7:40 pm
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.

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

Posted: Tue Jun 01, 2021 6:36 am
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)
                         ) ";

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

Posted: Tue Jun 01, 2021 9:17 am
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.

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

Posted: Tue Jun 01, 2021 12:16 pm
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.

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

Posted: Tue Jun 01, 2021 2:10 pm
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.

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

Posted: Tue Jun 01, 2021 2:37 pm
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)
				))";

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

Posted: Wed Jun 02, 2021 2:17 pm
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.

This site uses cookies.

Some of the cookies we use are essential for parts of the site to operate and have already been set. We also use Google Analytics scripts, which all use cookies.
You may delete or block all cookies from this site in your browser options.