From 75dfe814fc10e0ef29beb7a25d884c9112768fca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Sat, 11 Jan 2020 13:52:56 +0100 Subject: [PATCH] Version19.115.1 --- swad_changelog.h | 3 +- swad_degree.c | 7 ++- swad_degree_type.c | 127 +++++++++++++++++++++++++-------------------- 3 files changed, 76 insertions(+), 61 deletions(-) diff --git a/swad_changelog.h b/swad_changelog.h index e0d724c06..c288d5b84 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -492,7 +492,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - * En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 19.115 (2020-01-09)" +#define Log_PLATFORM_VERSION "SWAD 19.115.1 (2020-01-11)" #define CSS_FILE "swad19.115.css" #define JS_FILE "swad19.91.1.js" /* @@ -501,6 +501,7 @@ ps2pdf source.ps destination.pdf // TODO: No se puede entrar con DNI '1' suponiendo que no tenga password ¿por qué? // TODO: Mapas más estrechos en móvil + Version 19.115.1: Jan 11, 2020 Fixed bug in edition of degrees. (278531 lines) Version 19.115: Jan 09, 2020 Map column in listing of institutions. Fixed bug in edition of timetable, reported by Miguel Damas Hermoso. Language removed from shortcuts. (278515 lines) diff --git a/swad_degree.c b/swad_degree.c index 5217fd683..a83c7f17f 100644 --- a/swad_degree.c +++ b/swad_degree.c @@ -356,7 +356,6 @@ static void Deg_ListDegreesForEdition (void) Deg = &(Gbl.Hierarchy.Degs.Lst[NumDeg]); NumCrss = Crs_GetNumCrssInDeg (Deg->DegCod); - ICanEdit = Deg_CheckIfICanEditADegree (Deg); HTM_TR_Begin (NULL); @@ -427,7 +426,7 @@ static void Deg_ListDegreesForEdition (void) { DegTyp = &Gbl.DegTypes.Lst[NumDegTyp]; HTM_OPTION (HTM_Type_LONG,&DegTyp->DegTypCod, - Gbl.Hierarchy.Deg.DegCod > 0 && + // Gbl.Hierarchy.Deg.DegCod > 0 && DegTyp->DegTypCod == Deg->DegTypCod,false, "%s",DegTyp->DegTypName); } @@ -516,8 +515,8 @@ static void Deg_ListDegreesForEdition (void) static bool Deg_CheckIfICanEditADegree (struct Degree *Deg) { return (bool) (Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM || // I am a centre administrator or higher - ((Deg->Status & Deg_STATUS_BIT_PENDING) != 0 && // Degree is not yet activated - Gbl.Usrs.Me.UsrDat.UsrCod == Deg->RequesterUsrCod)); // I am the requester + ((Deg->Status & Deg_STATUS_BIT_PENDING) != 0 && // Degree is not yet activated + Gbl.Usrs.Me.UsrDat.UsrCod == Deg->RequesterUsrCod)); // I am the requester } /*****************************************************************************/ diff --git a/swad_degree_type.c b/swad_degree_type.c index d41fb8253..ad33ba95d 100644 --- a/swad_degree_type.c +++ b/swad_degree_type.c @@ -585,75 +585,90 @@ void DT_GetListDegreeTypes (Hie_Level_t Scope,DT_Order_t Order) all degree types with degrees union with all degree types without any degree */ - Gbl.DegTypes.Num = (unsigned) DB_QuerySELECT (&mysql_res,"can not get types of degree", - "(SELECT deg_types.DegTypCod,deg_types.DegTypName," - "COUNT(degrees.DegCod) AS NumDegs" - " FROM degrees,deg_types" - " WHERE degrees.DegTypCod=deg_types.DegTypCod" - " GROUP BY degrees.DegTypCod)" - " UNION " - "(SELECT DegTypCod,DegTypName,0 AS NumDegs" // Do not use '0' because NumDegs will be casted to string and order will be wrong - " FROM deg_types" - " WHERE DegTypCod NOT IN" - " (SELECT DegTypCod FROM degrees))" - " ORDER BY %s", - OrderBySubQuery[Order]); + Gbl.DegTypes.Num = (unsigned) + DB_QuerySELECT (&mysql_res,"can not get types of degree", + "(SELECT deg_types.DegTypCod," // row[0] + "deg_types.DegTypName," // row[1] + "COUNT(degrees.DegCod) AS NumDegs" // row[2] + " FROM degrees,deg_types" + " WHERE degrees.DegTypCod=deg_types.DegTypCod" + " GROUP BY degrees.DegTypCod)" + " UNION " + "(SELECT DegTypCod," // row[0] + "DegTypName," // row[1] + "0 AS NumDegs" // row[2] + // do not use '0' because + // NumDegs will be casted to string + // and order will be wrong + " FROM deg_types" + " WHERE DegTypCod NOT IN" + " (SELECT DegTypCod FROM degrees))" + " ORDER BY %s", + OrderBySubQuery[Order]); break; case Hie_CTY: /* Get only degree types with degrees in the current country */ - Gbl.DegTypes.Num = (unsigned) DB_QuerySELECT (&mysql_res,"can not get types of degree", - "SELECT deg_types.DegTypCod,deg_types.DegTypName," - "COUNT(degrees.DegCod) AS NumDegs" - " FROM institutions,centres,degrees,deg_types" - " WHERE institutions.CtyCod=%ld" - " AND institutions.InsCod=centres.InsCod" - " AND centres.CtrCod=degrees.CtrCod" - " AND degrees.DegTypCod=deg_types.DegTypCod" - " GROUP BY degrees.DegTypCod" - " ORDER BY %s", - Gbl.Hierarchy.Cty.CtyCod, - OrderBySubQuery[Order]); + Gbl.DegTypes.Num = (unsigned) + DB_QuerySELECT (&mysql_res,"can not get types of degree", + "SELECT deg_types.DegTypCod," // row[0] + "deg_types.DegTypName," // row[1] + "COUNT(degrees.DegCod) AS NumDegs" // row[2] + " FROM institutions,centres,degrees,deg_types" + " WHERE institutions.CtyCod=%ld" + " AND institutions.InsCod=centres.InsCod" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegTypCod=deg_types.DegTypCod" + " GROUP BY degrees.DegTypCod" + " ORDER BY %s", + Gbl.Hierarchy.Cty.CtyCod, + OrderBySubQuery[Order]); break; case Hie_INS: /* Get only degree types with degrees in the current institution */ - Gbl.DegTypes.Num = (unsigned) DB_QuerySELECT (&mysql_res,"can not get types of degree", - "SELECT deg_types.DegTypCod,deg_types.DegTypName," - "COUNT(degrees.DegCod) AS NumDegs" - " FROM centres,degrees,deg_types" - " WHERE centres.InsCod=%ld" - " AND centres.CtrCod=degrees.CtrCod" - " AND degrees.DegTypCod=deg_types.DegTypCod" - " GROUP BY degrees.DegTypCod" - " ORDER BY %s", - Gbl.Hierarchy.Ins.InsCod, - OrderBySubQuery[Order]); + Gbl.DegTypes.Num = (unsigned) + DB_QuerySELECT (&mysql_res,"can not get types of degree", + "SELECT deg_types.DegTypCod," // row[0] + "deg_types.DegTypName," // row[1] + "COUNT(degrees.DegCod) AS NumDegs" // row[2] + " FROM centres,degrees,deg_types" + " WHERE centres.InsCod=%ld" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegTypCod=deg_types.DegTypCod" + " GROUP BY degrees.DegTypCod" + " ORDER BY %s", + Gbl.Hierarchy.Ins.InsCod, + OrderBySubQuery[Order]); break; case Hie_CTR: /* Get only degree types with degrees in the current centre */ - Gbl.DegTypes.Num = (unsigned) DB_QuerySELECT (&mysql_res,"can not get types of degree", - "SELECT deg_types.DegTypCod,deg_types.DegTypName," - "COUNT(degrees.DegCod) AS NumDegs" - " FROM degrees,deg_types" - " WHERE degrees.CtrCod=%ld" - " AND degrees.DegTypCod=deg_types.DegTypCod" - " GROUP BY degrees.DegTypCod" - " ORDER BY %s", - Gbl.Hierarchy.Ctr.CtrCod, - OrderBySubQuery[Order]); + Gbl.DegTypes.Num = (unsigned) + DB_QuerySELECT (&mysql_res,"can not get types of degree", + "SELECT deg_types.DegTypCod," // row[0] + "deg_types.DegTypName," // row[1] + "COUNT(degrees.DegCod) AS NumDegs" // row[2] + " FROM degrees,deg_types" + " WHERE degrees.CtrCod=%ld" + " AND degrees.DegTypCod=deg_types.DegTypCod" + " GROUP BY degrees.DegTypCod" + " ORDER BY %s", + Gbl.Hierarchy.Ctr.CtrCod, + OrderBySubQuery[Order]); break; case Hie_DEG: case Hie_CRS: /* Get only degree types with degrees in the current degree */ - Gbl.DegTypes.Num = (unsigned) DB_QuerySELECT (&mysql_res,"can not get types of degree", - "SELECT deg_types.DegTypCod,deg_types.DegTypName," - "COUNT(degrees.DegCod) AS NumDegs" - " FROM degrees,deg_types" - " WHERE degrees.DegCod=%ld" - " AND degrees.DegTypCod=deg_types.DegTypCod" - " GROUP BY degrees.DegTypCod" - " ORDER BY %s", - Gbl.Hierarchy.Deg.DegCod, - OrderBySubQuery[Order]); + Gbl.DegTypes.Num = (unsigned) + DB_QuerySELECT (&mysql_res,"can not get types of degree", + "SELECT deg_types.DegTypCod," // row[0] + "deg_types.DegTypName," // row[1] + "COUNT(degrees.DegCod) AS NumDegs" // row[2] + " FROM degrees,deg_types" + " WHERE degrees.DegCod=%ld" + " AND degrees.DegTypCod=deg_types.DegTypCod" + " GROUP BY degrees.DegTypCod" + " ORDER BY %s", + Gbl.Hierarchy.Deg.DegCod, + OrderBySubQuery[Order]); break; default: Lay_WrongScopeExit ();