Version19.94

This commit is contained in:
Antonio Cañas Vargas 2019-12-17 00:36:22 +01:00
parent 455012f780
commit 8f11dafe59
27 changed files with 232 additions and 187 deletions

View File

@ -13105,6 +13105,6 @@ SELECT MIN(QstInd) FROM gam_questions WHERE GamCod=47 AND QstInd>5;
SELECT NotifyEvent,FromUsrCod,InsCod,CtrCod,DegCod,CrsCod,Cod,UNIX_TIMESTAMP(TimeNotif),Status FROM notif WHERE ToUsrCod=1346 ORDER BY TimeNotif DESC;

View File

@ -1032,7 +1032,7 @@ int swad__loginBySessionKey (struct soap *soap,
/***** Get course (row[2]) *****/ /***** Get course (row[2]) *****/
Gbl.Hierarchy.Crs.CrsCod = Str_ConvertStrCodToLongCod (row[2]); Gbl.Hierarchy.Crs.CrsCod = Str_ConvertStrCodToLongCod (row[2]);
Crs_GetDataOfCourseByCod (&Gbl.Hierarchy.Crs); Crs_GetDataOfCourseByCod (&Gbl.Hierarchy.Crs,Crs_GET_BASIC_DATA);
loginBySessionKeyOut->courseCode = (int) Gbl.Hierarchy.Crs.CrsCod; loginBySessionKeyOut->courseCode = (int) Gbl.Hierarchy.Crs.CrsCod;
Str_Copy (loginBySessionKeyOut->courseName,Gbl.Hierarchy.Crs.FullName, Str_Copy (loginBySessionKeyOut->courseName,Gbl.Hierarchy.Crs.FullName,
Hie_MAX_BYTES_FULL_NAME); Hie_MAX_BYTES_FULL_NAME);
@ -1043,7 +1043,7 @@ int swad__loginBySessionKey (struct soap *soap,
/***** Get degree (row[1]) *****/ /***** Get degree (row[1]) *****/
Gbl.Hierarchy.Deg.DegCod = Str_ConvertStrCodToLongCod (row[1]); Gbl.Hierarchy.Deg.DegCod = Str_ConvertStrCodToLongCod (row[1]);
Deg_GetDataOfDegreeByCod (&Gbl.Hierarchy.Deg); Deg_GetDataOfDegreeByCod (&Gbl.Hierarchy.Deg,Deg_GET_BASIC_DATA);
loginBySessionKeyOut->degreeCode = (int) Gbl.Hierarchy.Deg.DegCod; loginBySessionKeyOut->degreeCode = (int) Gbl.Hierarchy.Deg.DegCod;
Str_Copy (loginBySessionKeyOut->degreeName,Gbl.Hierarchy.Deg.FullName, Str_Copy (loginBySessionKeyOut->degreeName,Gbl.Hierarchy.Deg.FullName,
Hie_MAX_BYTES_FULL_NAME); Hie_MAX_BYTES_FULL_NAME);
@ -2998,7 +2998,7 @@ int swad__getNotifications (struct soap *soap,
getNotificationsOut->notificationsArray.__ptr[NumNotif].notifCode = (int) NtfCod; getNotificationsOut->notificationsArray.__ptr[NumNotif].notifCode = (int) NtfCod;
/* Get notification event type (row[1]) */ /* Get notification event type (row[1]) */
NotifyEvent = Ntf_GetNotifyEventFromDB ((const char *) row[1]); NotifyEvent = Ntf_GetNotifyEventFromStr ((const char *) row[1]);
getNotificationsOut->notificationsArray.__ptr[NumNotif].eventType = getNotificationsOut->notificationsArray.__ptr[NumNotif].eventType =
(char *) soap_malloc (Gbl.soap,Ntf_MAX_BYTES_NOTIFY_EVENT + 1); (char *) soap_malloc (Gbl.soap,Ntf_MAX_BYTES_NOTIFY_EVENT + 1);
Str_Copy (getNotificationsOut->notificationsArray.__ptr[NumNotif].eventType, Str_Copy (getNotificationsOut->notificationsArray.__ptr[NumNotif].eventType,
@ -3013,7 +3013,7 @@ int swad__getNotifications (struct soap *soap,
/* Get course (row[7]) */ /* Get course (row[7]) */
Crs.CrsCod = Str_ConvertStrCodToLongCod (row[7]); Crs.CrsCod = Str_ConvertStrCodToLongCod (row[7]);
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
/* Get user's code of the user who caused the event (row[3]) */ /* Get user's code of the user who caused the event (row[3]) */
Gbl.Usrs.Other.UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[3]); Gbl.Usrs.Other.UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[3]);
@ -3066,11 +3066,11 @@ int swad__getNotifications (struct soap *soap,
/* Get centre (row[5]) */ /* Get centre (row[5]) */
Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[5]); Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[5]);
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA);
/* Get degree (row[6]) */ /* Get degree (row[6]) */
Deg.DegCod = Str_ConvertStrCodToLongCod (row[6]); Deg.DegCod = Str_ConvertStrCodToLongCod (row[6]);
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
/* Get message/post/... code (row[8]) */ /* Get message/post/... code (row[8]) */
Cod = Str_ConvertStrCodToLongCod (row[8]); Cod = Str_ConvertStrCodToLongCod (row[8]);

View File

@ -203,7 +203,7 @@ void Ctr_SeeCtrWithPendingDegs (void)
Gbl.ColorRows[Gbl.RowEvenOdd]; Gbl.ColorRows[Gbl.RowEvenOdd];
/* Get data of centre */ /* Get data of centre */
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA);
/* Centre logo and full name */ /* Centre logo and full name */
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -1155,7 +1155,8 @@ void Ctr_GetListCentres (long InsCod)
/************************ Get data of centre by code *************************/ /************************ Get data of centre by code *************************/
/*****************************************************************************/ /*****************************************************************************/
bool Ctr_GetDataOfCentreByCod (struct Centre *Ctr) bool Ctr_GetDataOfCentreByCod (struct Centre *Ctr,
Ctr_GetExtraData_t GetExtraData)
{ {
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
@ -1233,14 +1234,18 @@ bool Ctr_GetDataOfCentreByCod (struct Centre *Ctr)
if (sscanf (row[7],"%u",&Ctr->NumUsrsWhoClaimToBelongToCtr) != 1) if (sscanf (row[7],"%u",&Ctr->NumUsrsWhoClaimToBelongToCtr) != 1)
Ctr->NumUsrsWhoClaimToBelongToCtr = 0; Ctr->NumUsrsWhoClaimToBelongToCtr = 0;
/* Get number of degrees in this centre */ /* Get extra data */
Ctr->Degs.Num = Deg_GetNumDegsInCtr (Ctr->CtrCod); if (GetExtraData == Ctr_GET_EXTRA_DATA)
{
/* Get number of degrees in this centre */
Ctr->Degs.Num = Deg_GetNumDegsInCtr (Ctr->CtrCod);
/* Get number of courses in this centre */ /* Get number of courses in this centre */
Ctr->NumCrss = Crs_GetNumCrssInCtr (Ctr->CtrCod); Ctr->NumCrss = Crs_GetNumCrssInCtr (Ctr->CtrCod);
/* Get number of users in courses of this centre */ /* Get number of users in courses of this centre */
Ctr->NumUsrs = Usr_GetNumUsrsInCrssOfCtr (Rol_UNK,Ctr->CtrCod); // Here Rol_UNK means "all users" Ctr->NumUsrs = Usr_GetNumUsrsInCrssOfCtr (Rol_UNK,Ctr->CtrCod); // Here Rol_UNK means "all users"
}
/* Set return value */ /* Set return value */
CtrFound = true; CtrFound = true;
@ -1742,7 +1747,7 @@ void Ctr_RemoveCentre (void)
Ctr_EditingCtr->CtrCod = Ctr_GetAndCheckParamOtherCtrCod (1); Ctr_EditingCtr->CtrCod = Ctr_GetAndCheckParamOtherCtrCod (1);
/***** Get data of the centre from database *****/ /***** Get data of the centre from database *****/
Ctr_GetDataOfCentreByCod (Ctr_EditingCtr); Ctr_GetDataOfCentreByCod (Ctr_EditingCtr,Ctr_GET_EXTRA_DATA);
/***** Check if this centre has teachers *****/ /***** Check if this centre has teachers *****/
if (Ctr_EditingCtr->Degs.Num || if (Ctr_EditingCtr->Degs.Num ||
@ -1883,7 +1888,7 @@ void Ctr_ChangeCtrPlc (void)
NewPlcCod = Plc_GetParamPlcCod (); NewPlcCod = Plc_GetParamPlcCod ();
/***** Get data of centre from database *****/ /***** Get data of centre from database *****/
Ctr_GetDataOfCentreByCod (Ctr_EditingCtr); Ctr_GetDataOfCentreByCod (Ctr_EditingCtr,Ctr_GET_BASIC_DATA);
/***** Update place in table of centres *****/ /***** Update place in table of centres *****/
Ctr_UpdateCtrPlcDB (Ctr_EditingCtr->CtrCod,NewPlcCod); Ctr_UpdateCtrPlcDB (Ctr_EditingCtr->CtrCod,NewPlcCod);
@ -2000,7 +2005,7 @@ static void Ctr_RenameCentre (struct Centre *Ctr,Cns_ShrtOrFullName_t ShrtOrFull
Par_GetParToText (ParamName,NewCtrName,MaxBytes); Par_GetParToText (ParamName,NewCtrName,MaxBytes);
/***** Get from the database the old names of the centre *****/ /***** Get from the database the old names of the centre *****/
Ctr_GetDataOfCentreByCod (Ctr); Ctr_GetDataOfCentreByCod (Ctr,Ctr_GET_BASIC_DATA);
/***** Check if new name is empty *****/ /***** Check if new name is empty *****/
if (!NewCtrName[0]) if (!NewCtrName[0])
@ -2086,7 +2091,7 @@ void Ctr_ChangeCtrWWW (void)
Par_GetParToText ("WWW",NewWWW,Cns_MAX_BYTES_WWW); Par_GetParToText ("WWW",NewWWW,Cns_MAX_BYTES_WWW);
/***** Get data of centre *****/ /***** Get data of centre *****/
Ctr_GetDataOfCentreByCod (Ctr_EditingCtr); Ctr_GetDataOfCentreByCod (Ctr_EditingCtr,Ctr_GET_BASIC_DATA);
/***** Check if new WWW is empty *****/ /***** Check if new WWW is empty *****/
if (NewWWW[0]) if (NewWWW[0])
@ -2177,7 +2182,7 @@ void Ctr_ChangeCtrStatus (void)
Status = Ctr_GetStatusBitsFromStatusTxt (StatusTxt); // New status Status = Ctr_GetStatusBitsFromStatusTxt (StatusTxt); // New status
/***** Get data of centre *****/ /***** Get data of centre *****/
Ctr_GetDataOfCentreByCod (Ctr_EditingCtr); Ctr_GetDataOfCentreByCod (Ctr_EditingCtr,Ctr_GET_BASIC_DATA);
/***** Update status in table of centres *****/ /***** Update status in table of centres *****/
DB_QueryUPDATE ("can not update the status of a centre", DB_QueryUPDATE ("can not update the status of a centre",
@ -2905,7 +2910,7 @@ void Ctr_ListCtrsFound (MYSQL_RES **mysql_res,unsigned NumCtrs)
Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[0]); Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[0]);
/* Get data of centre */ /* Get data of centre */
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_EXTRA_DATA);
/* Write data of this centre */ /* Write data of this centre */
Ctr_ListOneCentreForSeeing (&Ctr,NumCtr); Ctr_ListOneCentreForSeeing (&Ctr,NumCtr);

View File

@ -83,6 +83,12 @@ typedef enum
} Ctr_Order_t; } Ctr_Order_t;
#define Ctr_ORDER_DEFAULT Ctr_ORDER_BY_CENTRE #define Ctr_ORDER_DEFAULT Ctr_ORDER_BY_CENTRE
typedef enum
{
Ctr_GET_BASIC_DATA,
Ctr_GET_EXTRA_DATA,
} Ctr_GetExtraData_t;
/*****************************************************************************/ /*****************************************************************************/
/****************************** Public prototypes ****************************/ /****************************** Public prototypes ****************************/
/*****************************************************************************/ /*****************************************************************************/
@ -101,7 +107,8 @@ void Ctr_EditCentres (void);
void Ctr_PutIconToViewCentres (void); void Ctr_PutIconToViewCentres (void);
void Ctr_GetListCentres (long InsCod); void Ctr_GetListCentres (long InsCod);
bool Ctr_GetDataOfCentreByCod (struct Centre *Ctr); bool Ctr_GetDataOfCentreByCod (struct Centre *Ctr,
Ctr_GetExtraData_t GetExtraData);
long Ctr_GetInsCodOfCentreByCod (long CtrCod); long Ctr_GetInsCodOfCentreByCod (long CtrCod);
void Ctr_GetShortNameOfCentreByCod (struct Centre *Ctr); void Ctr_GetShortNameOfCentreByCod (struct Centre *Ctr);
void Ctr_FreeListCentres (void); void Ctr_FreeListCentres (void);

View File

@ -490,13 +490,15 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD: En OpenSWAD:
ps2pdf source.ps destination.pdf ps2pdf source.ps destination.pdf
*/ */
#define Log_PLATFORM_VERSION "SWAD 19.93.3 (2019-12-16)" #define Log_PLATFORM_VERSION "SWAD 19.94 (2019-12-17)"
#define CSS_FILE "swad19.90.1.css" #define CSS_FILE "swad19.90.1.css"
#define JS_FILE "swad19.91.1.js" #define JS_FILE "swad19.91.1.js"
/* /*
// TODO: Hacer un nuevo rol en los TFG: tutor externo (profesor de áreas no vinculadas con el centro, profesionales de empresas, etc.) // TODO: Hacer un nuevo rol en los TFG: tutor externo (profesor de áreas no vinculadas con el centro, profesionales de empresas, etc.)
// TODO: Impedir la creación y edición de proyectos si no son editables. // TODO: Impedir la creación y edición de proyectos si no son editables.
Version 19.94: Dec 17, 2019 Code optimization getting time to generate page.
Code optimizations getting data of courses, degrees and centres. (? lines)
Version 19.93.3: Dec 16, 2019 Fixed minor bugs. (249132 lines) Version 19.93.3: Dec 16, 2019 Fixed minor bugs. (249132 lines)
Version 19.93.2: Dec 16, 2019 Code refactoring. (249130 lines) Version 19.93.2: Dec 16, 2019 Code refactoring. (249130 lines)
Version 19.93.1: Dec 15, 2019 Code refactoring. (249122 lines) Version 19.93.1: Dec 15, 2019 Code refactoring. (249122 lines)

View File

@ -175,7 +175,7 @@ void Cht_ShowListOfAvailableChatRooms (void)
{ {
/* Get data of this degree */ /* Get data of this degree */
Deg.DegCod = Gbl.Usrs.Me.MyDegs.Degs[NumMyDeg].DegCod; Deg.DegCod = Gbl.Usrs.Me.MyDegs.Degs[NumMyDeg].DegCod;
if (!Deg_GetDataOfDegreeByCod (&Deg)) if (!Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA))
Lay_ShowErrorAndExit ("Degree not found."); Lay_ShowErrorAndExit ("Degree not found.");
/* Link to the room of this degree */ /* Link to the room of this degree */
@ -206,7 +206,7 @@ void Cht_ShowListOfAvailableChatRooms (void)
if ((Crs.CrsCod = Str_ConvertStrCodToLongCod (row[0])) > 0) if ((Crs.CrsCod = Str_ConvertStrCodToLongCod (row[0])) > 0)
{ {
/* Get data of this course */ /* Get data of this course */
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
/* Link to the room of this course */ /* Link to the room of this course */
IsLastItemInLevel[2] = (NumRow == NumRows - 1); IsLastItemInLevel[2] = (NumRow == NumRows - 1);
@ -521,7 +521,7 @@ void Cht_OpenChatWindow (void)
/* Get data of this degree */ /* Get data of this degree */
Deg.DegCod = Gbl.Usrs.Me.MyDegs.Degs[NumMyDeg].DegCod; Deg.DegCod = Gbl.Usrs.Me.MyDegs.Degs[NumMyDeg].DegCod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
snprintf (ThisRoomShortName,sizeof (ThisRoomShortName), snprintf (ThisRoomShortName,sizeof (ThisRoomShortName),
"%s", "%s",
@ -557,7 +557,7 @@ void Cht_OpenChatWindow (void)
/* Get data of this course */ /* Get data of this course */
Crs.CrsCod = Gbl.Usrs.Me.MyCrss.Crss[NumMyCrs].CrsCod; Crs.CrsCod = Gbl.Usrs.Me.MyCrss.Crss[NumMyCrs].CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
snprintf (ThisRoomShortName,sizeof (ThisRoomShortName), snprintf (ThisRoomShortName,sizeof (ThisRoomShortName),
"%s", "%s",

View File

@ -656,7 +656,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
/***** Get data of this centre *****/ /***** Get data of this centre *****/
Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[0]); Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[0]);
if (!Ctr_GetDataOfCentreByCod (&Ctr)) if (!Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA))
Lay_ShowErrorAndExit ("Centre not found."); Lay_ShowErrorAndExit ("Centre not found.");
/***** Write link to centre *****/ /***** Write link to centre *****/
@ -690,7 +690,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
/***** Get data of this degree *****/ /***** Get data of this degree *****/
Deg.DegCod = Str_ConvertStrCodToLongCod (row[0]); Deg.DegCod = Str_ConvertStrCodToLongCod (row[0]);
if (!Deg_GetDataOfDegreeByCod (&Deg)) if (!Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA))
Lay_ShowErrorAndExit ("Degree not found."); Lay_ShowErrorAndExit ("Degree not found.");
/***** Write link to degree *****/ /***** Write link to degree *****/
@ -724,7 +724,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
/***** Get data of this course *****/ /***** Get data of this course *****/
Crs.CrsCod = Str_ConvertStrCodToLongCod (row[0]); Crs.CrsCod = Str_ConvertStrCodToLongCod (row[0]);
if (!Crs_GetDataOfCourseByCod (&Crs)) if (!Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA))
Lay_ShowErrorAndExit ("Course not found."); Lay_ShowErrorAndExit ("Course not found.");
/***** Write link to course *****/ /***** Write link to course *****/
@ -1009,6 +1009,14 @@ static void Crs_GetListCoursesInCurrentDegree (Crs_WhatCourses_t WhatCourses)
/* Get next course */ /* Get next course */
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
Crs_GetDataOfCourseFromRow (Crs,row); Crs_GetDataOfCourseFromRow (Crs,row);
/* Get number of users in this course */
Crs->NumUsrs[Rol_STD] = Usr_GetNumUsrsInCrs (Rol_STD,Crs->CrsCod);
Crs->NumUsrs[Rol_NET] = Usr_GetNumUsrsInCrs (Rol_NET,Crs->CrsCod);
Crs->NumUsrs[Rol_TCH] = Usr_GetNumUsrsInCrs (Rol_TCH,Crs->CrsCod);
Crs->NumUsrs[Rol_UNK] = Crs->NumUsrs[Rol_STD] +
Crs->NumUsrs[Rol_NET] +
Crs->NumUsrs[Rol_TCH];
} }
} }
@ -1570,8 +1578,8 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year)
static bool Crs_CheckIfICanEdit (struct Course *Crs) static bool Crs_CheckIfICanEdit (struct Course *Crs)
{ {
return (bool) (Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM || // I am a degree administrator or higher return (bool) (Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM || // I am a degree administrator or higher
((Crs->Status & Crs_STATUS_BIT_PENDING) != 0 && // Course is not yet activated ((Crs->Status & Crs_STATUS_BIT_PENDING) != 0 && // Course is not yet activated
Gbl.Usrs.Me.UsrDat.UsrCod == Crs->RequesterUsrCod)); // I am the requester Gbl.Usrs.Me.UsrDat.UsrCod == Crs->RequesterUsrCod)); // I am the requester
} }
/*****************************************************************************/ /*****************************************************************************/
@ -1806,17 +1814,16 @@ static void Crs_RecFormRequestOrCreateCrs (unsigned Status)
extern const char *Txt_You_must_specify_the_short_name_and_the_full_name_of_the_new_course; extern const char *Txt_You_must_specify_the_short_name_and_the_full_name_of_the_new_course;
extern const char *Txt_The_year_X_is_not_allowed; extern const char *Txt_The_year_X_is_not_allowed;
extern const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE]; extern const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE];
struct Degree Deg;
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Set course degree */ /* Set course degree */
Deg.DegCod = Crs_EditingCrs->DegCod = Gbl.Hierarchy.Deg.DegCod; // Deg.DegCod =
Crs_EditingCrs->DegCod = Gbl.Hierarchy.Deg.DegCod;
/* Get parameters of the new course */ /* Get parameters of the new course */
Crs_GetParamsNewCourse (Crs_EditingCrs); Crs_GetParamsNewCourse (Crs_EditingCrs);
/***** Check if year is correct *****/ /***** Check if year is correct *****/
Deg_GetDataOfDegreeByCod (&Deg);
if (Crs_EditingCrs->Year <= Deg_MAX_YEARS_PER_DEGREE) // If year is valid if (Crs_EditingCrs->Year <= Deg_MAX_YEARS_PER_DEGREE) // If year is valid
{ {
if (Crs_EditingCrs->ShrtName[0] && if (Crs_EditingCrs->ShrtName[0] &&
@ -1913,7 +1920,7 @@ void Crs_RemoveCourse (void)
Crs_EditingCrs->CrsCod = Crs_GetAndCheckParamOtherCrsCod (1); Crs_EditingCrs->CrsCod = Crs_GetAndCheckParamOtherCrsCod (1);
/***** Get data of the course from database *****/ /***** Get data of the course from database *****/
Crs_GetDataOfCourseByCod (Crs_EditingCrs); Crs_GetDataOfCourseByCod (Crs_EditingCrs,Crs_GET_EXTRA_DATA);
if (Crs_CheckIfICanEdit (Crs_EditingCrs)) if (Crs_CheckIfICanEdit (Crs_EditingCrs))
{ {
@ -1940,7 +1947,8 @@ void Crs_RemoveCourse (void)
/********************* Get data of a course from its code ********************/ /********************* Get data of a course from its code ********************/
/*****************************************************************************/ /*****************************************************************************/
bool Crs_GetDataOfCourseByCod (struct Course *Crs) bool Crs_GetDataOfCourseByCod (struct Course *Crs,
Crs_GetExtraData_t GetExtraData)
{ {
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
@ -1971,6 +1979,18 @@ bool Crs_GetDataOfCourseByCod (struct Course *Crs)
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
Crs_GetDataOfCourseFromRow (Crs,row); Crs_GetDataOfCourseFromRow (Crs,row);
/* Get extra data */
if (GetExtraData == Crs_GET_EXTRA_DATA)
{
/* Get number of users in this course */
Crs->NumUsrs[Rol_STD] = Usr_GetNumUsrsInCrs (Rol_STD,Crs->CrsCod);
Crs->NumUsrs[Rol_NET] = Usr_GetNumUsrsInCrs (Rol_NET,Crs->CrsCod);
Crs->NumUsrs[Rol_TCH] = Usr_GetNumUsrsInCrs (Rol_TCH,Crs->CrsCod);
Crs->NumUsrs[Rol_UNK] = Crs->NumUsrs[Rol_STD] +
Crs->NumUsrs[Rol_NET] +
Crs->NumUsrs[Rol_TCH];
}
/* Set return value */ /* Set return value */
CrsFound = true; CrsFound = true;
} }
@ -2016,14 +2036,6 @@ static void Crs_GetDataOfCourseFromRow (struct Course *Crs,MYSQL_ROW row)
/***** Get the full name of the course (row[7]) *****/ /***** Get the full name of the course (row[7]) *****/
Str_Copy (Crs->FullName,row[7], Str_Copy (Crs->FullName,row[7],
Hie_MAX_BYTES_FULL_NAME); Hie_MAX_BYTES_FULL_NAME);
/***** Get number of users *****/
Crs->NumUsrs[Rol_STD] = Usr_GetNumUsrsInCrs (Rol_STD,Crs->CrsCod);
Crs->NumUsrs[Rol_NET] = Usr_GetNumUsrsInCrs (Rol_NET,Crs->CrsCod);
Crs->NumUsrs[Rol_TCH] = Usr_GetNumUsrsInCrs (Rol_TCH,Crs->CrsCod);
Crs->NumUsrs[Rol_UNK] = Crs->NumUsrs[Rol_STD] +
Crs->NumUsrs[Rol_NET] +
Crs->NumUsrs[Rol_TCH];
} }
/*****************************************************************************/ /*****************************************************************************/
@ -2101,7 +2113,7 @@ static void Crs_EmptyCourseCompletely (long CrsCod)
{ {
/***** Get course data *****/ /***** Get course data *****/
Crs.CrsCod = CrsCod; Crs.CrsCod = CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_EXTRA_DATA);
/***** Remove all the students in the course *****/ /***** Remove all the students in the course *****/
Enr_RemAllStdsInCrs (&Crs); Enr_RemAllStdsInCrs (&Crs);
@ -2286,7 +2298,7 @@ void Crs_ChangeInsCrsCod (void)
Par_GetParToText ("InsCrsCod",NewInstitutionalCrsCod,Crs_MAX_BYTES_INSTITUTIONAL_CRS_COD); Par_GetParToText ("InsCrsCod",NewInstitutionalCrsCod,Crs_MAX_BYTES_INSTITUTIONAL_CRS_COD);
/* Get data of the course */ /* Get data of the course */
Crs_GetDataOfCourseByCod (Crs_EditingCrs); Crs_GetDataOfCourseByCod (Crs_EditingCrs,Crs_GET_BASIC_DATA);
if (Crs_CheckIfICanEdit (Crs_EditingCrs)) if (Crs_CheckIfICanEdit (Crs_EditingCrs))
{ {
@ -2326,7 +2338,7 @@ void Crs_ChangeCrsDegInConfig (void)
if (NewDeg.DegCod != Gbl.Hierarchy.Crs.DegCod) if (NewDeg.DegCod != Gbl.Hierarchy.Crs.DegCod)
{ {
/***** Get data of new degree *****/ /***** Get data of new degree *****/
Deg_GetDataOfDegreeByCod (&NewDeg); Deg_GetDataOfDegreeByCod (&NewDeg,Deg_GET_BASIC_DATA);
/***** If name of course was in database in the new degree... *****/ /***** If name of course was in database in the new degree... *****/
if (Crs_CheckIfCrsNameExistsInYearOfDeg ("ShortName",Gbl.Hierarchy.Crs.ShrtName,-1L, if (Crs_CheckIfCrsNameExistsInYearOfDeg ("ShortName",Gbl.Hierarchy.Crs.ShrtName,-1L,
@ -2446,7 +2458,6 @@ void Crs_ChangeCrsYear (void)
extern const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE]; extern const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE];
extern const char *Txt_The_year_of_the_course_X_has_changed; extern const char *Txt_The_year_of_the_course_X_has_changed;
extern const char *Txt_The_year_X_is_not_allowed; extern const char *Txt_The_year_X_is_not_allowed;
struct Degree Deg;
char YearStr[2 + 1]; char YearStr[2 + 1];
unsigned NewYear; unsigned NewYear;
@ -2461,13 +2472,10 @@ void Crs_ChangeCrsYear (void)
Par_GetParToText ("OthCrsYear",YearStr,2); Par_GetParToText ("OthCrsYear",YearStr,2);
NewYear = Deg_ConvStrToYear (YearStr); NewYear = Deg_ConvStrToYear (YearStr);
Crs_GetDataOfCourseByCod (Crs_EditingCrs); Crs_GetDataOfCourseByCod (Crs_EditingCrs,Crs_GET_BASIC_DATA);
if (Crs_CheckIfICanEdit (Crs_EditingCrs)) if (Crs_CheckIfICanEdit (Crs_EditingCrs))
{ {
Deg.DegCod = Crs_EditingCrs->DegCod;
Deg_GetDataOfDegreeByCod (&Deg);
if (NewYear <= Deg_MAX_YEARS_PER_DEGREE) // If year is valid if (NewYear <= Deg_MAX_YEARS_PER_DEGREE) // If year is valid
{ {
/***** If name of course was in database in the new year... *****/ /***** If name of course was in database in the new year... *****/
@ -2610,7 +2618,7 @@ static void Crs_RenameCourse (struct Course *Crs,Cns_ShrtOrFullName_t ShrtOrFull
Par_GetParToText (ParamName,NewCrsName,MaxBytes); Par_GetParToText (ParamName,NewCrsName,MaxBytes);
/***** Get from the database the data of the degree *****/ /***** Get from the database the data of the degree *****/
Crs_GetDataOfCourseByCod (Crs); Crs_GetDataOfCourseByCod (Crs,Crs_GET_BASIC_DATA);
if (Crs_CheckIfICanEdit (Crs)) if (Crs_CheckIfICanEdit (Crs))
{ {
@ -2713,7 +2721,7 @@ void Crs_ChangeCrsStatus (void)
Status = Crs_GetStatusBitsFromStatusTxt (StatusTxt); // New status Status = Crs_GetStatusBitsFromStatusTxt (StatusTxt); // New status
/***** Get data of course *****/ /***** Get data of course *****/
Crs_GetDataOfCourseByCod (Crs_EditingCrs); Crs_GetDataOfCourseByCod (Crs_EditingCrs,Crs_GET_BASIC_DATA);
/***** Update status in table of courses *****/ /***** Update status in table of courses *****/
DB_QueryUPDATE ("can not update the status of a course", DB_QueryUPDATE ("can not update the status of a course",
@ -3129,7 +3137,7 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
/***** Get degree code (row[0]) *****/ /***** Get degree code (row[0]) *****/
if ((Deg.DegCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((Deg.DegCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_ShowErrorAndExit ("Wrong code of degree."); Lay_ShowErrorAndExit ("Wrong code of degree.");
if (!Deg_GetDataOfDegreeByCod (&Deg)) if (!Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA))
Lay_ShowErrorAndExit ("Degree not found."); Lay_ShowErrorAndExit ("Degree not found.");
/***** Get course code (row[1]) *****/ /***** Get course code (row[1]) *****/

View File

@ -88,6 +88,12 @@ struct Course
unsigned NumUsrs[Rol_NUM_ROLES]; // Number of users unsigned NumUsrs[Rol_NUM_ROLES]; // Number of users
}; };
typedef enum
{
Crs_GET_BASIC_DATA,
Crs_GET_EXTRA_DATA,
} Crs_GetExtraData_t;
/*****************************************************************************/ /*****************************************************************************/
/***************************** Public prototypes *****************************/ /***************************** Public prototypes *****************************/
/*****************************************************************************/ /*****************************************************************************/
@ -114,7 +120,8 @@ void Crs_RecFormReqCrs (void);
void Crs_RecFormNewCrs (void); void Crs_RecFormNewCrs (void);
void Crs_RemoveCourse (void); void Crs_RemoveCourse (void);
bool Crs_GetDataOfCourseByCod (struct Course *Crs); bool Crs_GetDataOfCourseByCod (struct Course *Crs,
Crs_GetExtraData_t GetExtraData);
void Crs_RemoveCourseCompletely (long CrsCod); void Crs_RemoveCourseCompletely (long CrsCod);
void Crs_ChangeInsCrsCodInConfig (void); void Crs_ChangeInsCrsCodInConfig (void);
void Crs_ChangeInsCrsCod (void); void Crs_ChangeInsCrsCod (void);

View File

@ -206,7 +206,7 @@ void Deg_SeeDegWithPendingCrss (void)
Gbl.ColorRows[Gbl.RowEvenOdd]; Gbl.ColorRows[Gbl.RowEvenOdd];
/* Get data of degree */ /* Get data of degree */
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -1194,10 +1194,6 @@ static void Deg_ListOneDegreeForSeeing (struct Degree *Deg,unsigned NumDeg)
const char *TxtClassStrong; const char *TxtClassStrong;
const char *BgColor; const char *BgColor;
Deg_StatusTxt_t StatusTxt; Deg_StatusTxt_t StatusTxt;
unsigned NumCrss;
/***** Get number of courses in this degree *****/
NumCrss = Crs_GetNumCrssInDeg (Deg->DegCod);
/***** Get data of type of degree of this degree *****/ /***** Get data of type of degree of this degree *****/
DegTyp.DegTypCod = Deg->DegTypCod; DegTyp.DegTypCod = Deg->DegTypCod;
@ -1222,10 +1218,10 @@ static void Deg_ListOneDegreeForSeeing (struct Degree *Deg,unsigned NumDeg)
/***** Put tip if degree has courses *****/ /***** Put tip if degree has courses *****/
HTM_TD_Begin ("class=\"%s CM %s\" title=\"%s\"", HTM_TD_Begin ("class=\"%s CM %s\" title=\"%s\"",
TxtClassNormal,BgColor, TxtClassNormal,BgColor,
NumCrss ? Txt_DEGREE_With_courses : Deg->Crss.Num ? Txt_DEGREE_With_courses :
Txt_DEGREE_Without_courses); Txt_DEGREE_Without_courses);
HTM_Txt (NumCrss ? "&check;" : HTM_Txt (Deg->Crss.Num ? "&check;" :
"&nbsp;"); "&nbsp;");
HTM_TD_End (); HTM_TD_End ();
/***** Number of degree in this list *****/ /***** Number of degree in this list *****/
@ -1246,7 +1242,7 @@ static void Deg_ListOneDegreeForSeeing (struct Degree *Deg,unsigned NumDeg)
/***** Current number of courses in this degree *****/ /***** Current number of courses in this degree *****/
HTM_TD_Begin ("class=\"%s RM %s\"",TxtClassNormal,BgColor); HTM_TD_Begin ("class=\"%s RM %s\"",TxtClassNormal,BgColor);
HTM_Unsigned (NumCrss); HTM_Unsigned (Deg->Crss.Num);
HTM_TD_End (); HTM_TD_End ();
/***** Degree status *****/ /***** Degree status *****/
@ -1429,7 +1425,7 @@ void Deg_GetListDegsOfCurrentCtr (void)
/***** Create list with degrees of this centre *****/ /***** Create list with degrees of this centre *****/
if ((Gbl.Hierarchy.Ctr.Degs.Lst = (struct Degree *) calloc (Gbl.Hierarchy.Ctr.Degs.Num, if ((Gbl.Hierarchy.Ctr.Degs.Lst = (struct Degree *) calloc (Gbl.Hierarchy.Ctr.Degs.Num,
sizeof (struct Degree))) == NULL) sizeof (struct Degree))) == NULL)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
/***** Get the degrees of this centre *****/ /***** Get the degrees of this centre *****/
@ -1565,10 +1561,10 @@ void Deg_RemoveDegree (void)
Deg_EditingDeg->DegCod = Deg_GetAndCheckParamOtherDegCod (1); Deg_EditingDeg->DegCod = Deg_GetAndCheckParamOtherDegCod (1);
/***** Get data of degree *****/ /***** Get data of degree *****/
Deg_GetDataOfDegreeByCod (Deg_EditingDeg); Deg_GetDataOfDegreeByCod (Deg_EditingDeg,Deg_GET_EXTRA_DATA);
/***** Check if this degree has courses *****/ /***** Check if this degree has courses *****/
if (Crs_GetNumCrssInDeg (Deg_EditingDeg->DegCod)) // Degree has courses ==> don't remove if (Deg_EditingDeg->Crss.Num) // Degree has courses ==> don't remove
Ale_CreateAlert (Ale_WARNING,NULL, Ale_CreateAlert (Ale_WARNING,NULL,
Txt_To_remove_a_degree_you_must_first_remove_all_courses_in_the_degree); Txt_To_remove_a_degree_you_must_first_remove_all_courses_in_the_degree);
else // Degree has no courses ==> remove it else // Degree has no courses ==> remove it
@ -1623,7 +1619,8 @@ long Deg_GetAndCheckParamOtherDegCod (long MinCodAllowed)
/*****************************************************************************/ /*****************************************************************************/
// Returns true if degree found // Returns true if degree found
bool Deg_GetDataOfDegreeByCod (struct Degree *Deg) bool Deg_GetDataOfDegreeByCod (struct Degree *Deg,
Deg_GetExtraData_t GetExtraData)
{ {
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
@ -1653,6 +1650,11 @@ bool Deg_GetDataOfDegreeByCod (struct Degree *Deg)
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
Deg_GetDataOfDegreeFromRow (Deg,row); Deg_GetDataOfDegreeFromRow (Deg,row);
/* Get extra data */
if (GetExtraData == Deg_GET_EXTRA_DATA)
/* Get number of courses in this degree */
Deg->Crss.Num = Crs_GetNumCrssInDeg (Deg->DegCod);
/* Set return value */ /* Set return value */
DegFound = true; DegFound = true;
} }
@ -1933,7 +1935,7 @@ static void Deg_RenameDegree (struct Degree *Deg,Cns_ShrtOrFullName_t ShrtOrFull
Par_GetParToText (ParamName,NewDegName,MaxBytes); Par_GetParToText (ParamName,NewDegName,MaxBytes);
/***** Get data of degree *****/ /***** Get data of degree *****/
Deg_GetDataOfDegreeByCod (Deg); Deg_GetDataOfDegreeByCod (Deg,Deg_GET_BASIC_DATA);
/***** Check if new name is empty *****/ /***** Check if new name is empty *****/
if (!NewDegName[0]) if (!NewDegName[0])
@ -2017,7 +2019,7 @@ void Deg_ChangeDegCtrInConfig (void)
if (NewCtr.CtrCod != Gbl.Hierarchy.Deg.CtrCod) if (NewCtr.CtrCod != Gbl.Hierarchy.Deg.CtrCod)
{ {
/***** Get data of new centre *****/ /***** Get data of new centre *****/
Ctr_GetDataOfCentreByCod (&NewCtr); Ctr_GetDataOfCentreByCod (&NewCtr,Ctr_GET_BASIC_DATA);
/***** Check if it already exists a degree with the same name in the new centre *****/ /***** Check if it already exists a degree with the same name in the new centre *****/
if (Deg_CheckIfDegNameExistsInCtr ("ShortName",Gbl.Hierarchy.Deg.ShrtName,Gbl.Hierarchy.Deg.DegCod,NewCtr.CtrCod)) if (Deg_CheckIfDegNameExistsInCtr ("ShortName",Gbl.Hierarchy.Deg.ShrtName,Gbl.Hierarchy.Deg.DegCod,NewCtr.CtrCod))
@ -2092,7 +2094,7 @@ void Deg_ChangeDegreeType (void)
NewDegTypCod = DT_GetAndCheckParamOtherDegTypCod (1); NewDegTypCod = DT_GetAndCheckParamOtherDegTypCod (1);
/***** Get data of degree *****/ /***** Get data of degree *****/
Deg_GetDataOfDegreeByCod (Deg_EditingDeg); Deg_GetDataOfDegreeByCod (Deg_EditingDeg,Deg_GET_BASIC_DATA);
/***** Update the table of degrees changing old type by new type *****/ /***** Update the table of degrees changing old type by new type *****/
DB_QueryUPDATE ("can not update the type of a degree", DB_QueryUPDATE ("can not update the type of a degree",
@ -2128,7 +2130,7 @@ void Deg_ChangeDegWWW (void)
Par_GetParToText ("WWW",NewWWW,Cns_MAX_BYTES_WWW); Par_GetParToText ("WWW",NewWWW,Cns_MAX_BYTES_WWW);
/***** Get data of degree *****/ /***** Get data of degree *****/
Deg_GetDataOfDegreeByCod (Deg_EditingDeg); Deg_GetDataOfDegreeByCod (Deg_EditingDeg,Deg_GET_BASIC_DATA);
/***** Check if new WWW is empty *****/ /***** Check if new WWW is empty *****/
if (NewWWW[0]) if (NewWWW[0])
@ -2219,7 +2221,7 @@ void Deg_ChangeDegStatus (void)
Status = Deg_GetStatusBitsFromStatusTxt (StatusTxt); // New status Status = Deg_GetStatusBitsFromStatusTxt (StatusTxt); // New status
/***** Get data of degree *****/ /***** Get data of degree *****/
Deg_GetDataOfDegreeByCod (Deg_EditingDeg); Deg_GetDataOfDegreeByCod (Deg_EditingDeg,Deg_GET_BASIC_DATA);
/***** Update status in table of degrees *****/ /***** Update status in table of degrees *****/
DB_QueryUPDATE ("can not update the status of a degree", DB_QueryUPDATE ("can not update the status of a degree",
@ -2491,7 +2493,7 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
if (Ctr.CtrCod > 0) if (Ctr.CtrCod > 0)
{ {
/* Get data of centre */ /* Get data of centre */
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA);
/* Write centre logo and name */ /* Write centre logo and name */
Ctr_DrawCentreLogoAndNameWithLink (&Ctr,ActSeeCtrInf, Ctr_DrawCentreLogoAndNameWithLink (&Ctr,ActSeeCtrInf,
@ -2503,7 +2505,7 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
if (Deg.DegCod > 0) if (Deg.DegCod > 0)
{ {
/* Get data of degree */ /* Get data of degree */
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
/* Write degree logo and name */ /* Write degree logo and name */
Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeDegInf, Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeDegInf,
@ -2562,7 +2564,7 @@ void Deg_ListDegsFound (MYSQL_RES **mysql_res,unsigned NumDegs)
Deg.DegCod = Str_ConvertStrCodToLongCod (row[0]); Deg.DegCod = Str_ConvertStrCodToLongCod (row[0]);
/* Get data of degree */ /* Get data of degree */
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_EXTRA_DATA);
/* Write data of this degree */ /* Write data of this degree */
Deg_ListOneDegreeForSeeing (&Deg,NumDeg); Deg_ListOneDegreeForSeeing (&Deg,NumDeg);

View File

@ -89,6 +89,12 @@ struct ListDegrees
struct Degree *Lst; // List of degrees struct Degree *Lst; // List of degrees
}; };
typedef enum
{
Deg_GET_BASIC_DATA,
Deg_GET_EXTRA_DATA,
} Deg_GetExtraData_t;
/*****************************************************************************/ /*****************************************************************************/
/***************************** Public prototypes *****************************/ /***************************** Public prototypes *****************************/
/*****************************************************************************/ /*****************************************************************************/
@ -122,7 +128,8 @@ void Deg_RemoveDegree (void);
void Deg_PutParamDegCod (long DegCod); void Deg_PutParamDegCod (long DegCod);
long Deg_GetAndCheckParamOtherDegCod (long MinCodAllowed); long Deg_GetAndCheckParamOtherDegCod (long MinCodAllowed);
bool Deg_GetDataOfDegreeByCod (struct Degree *Deg); bool Deg_GetDataOfDegreeByCod (struct Degree *Deg,
Deg_GetExtraData_t GetExtraData);
void Deg_GetShortNameOfDegreeByCod (struct Degree *Deg); void Deg_GetShortNameOfDegreeByCod (struct Degree *Deg);
long Deg_GetCtrCodOfDegreeByCod (long DegCod); long Deg_GetCtrCodOfDegreeByCod (long DegCod);
long Deg_GetInsCodOfDegreeByCod (long DegCod); long Deg_GetInsCodOfDegreeByCod (long DegCod);

View File

@ -2829,9 +2829,9 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
HTM_TD_End (); HTM_TD_End ();
/***** Link to course *****/ /***** Link to course *****/
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
Deg.DegCod = Crs.DegCod; Deg.DegCod = Crs.DegCod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
HTM_TD_Begin ("class=\"DAT LT\""); HTM_TD_Begin ("class=\"DAT LT\"");
Frm_StartFormGoTo (ActSeeCrsInf); Frm_StartFormGoTo (ActSeeCrsInf);
Crs_PutParamCrsCod (Crs.CrsCod); Crs_PutParamCrsCod (Crs.CrsCod);

View File

@ -1615,11 +1615,11 @@ static void Exa_GetNotifContentExamAnnouncement (char **ContentStr)
/***** Get data of course *****/ /***** Get data of course *****/
Crs.CrsCod = Gbl.ExamAnns.ExaDat.CrsCod; Crs.CrsCod = Gbl.ExamAnns.ExaDat.CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
/***** Get data of degree *****/ /***** Get data of degree *****/
Deg.DegCod = Crs.DegCod; Deg.DegCod = Crs.DegCod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
/***** Get data of institution *****/ /***** Get data of institution *****/
Ins.InsCod = Deg_GetInsCodOfDegreeByCod (Deg.DegCod); Ins.InsCod = Deg_GetInsCodOfDegreeByCod (Deg.DegCod);

View File

@ -6850,7 +6850,7 @@ static void Brw_WriteCurrentClipboard (void)
{ {
case Brw_ADMI_DOC_INS: case Brw_ADMI_DOC_INS:
Ins.InsCod = Gbl.FileBrowser.Clipboard.Cod; Ins.InsCod = Gbl.FileBrowser.Clipboard.Cod;
Ins_GetDataOfInstitutionByCod (&Ins,false); Ins_GetDataOfInstitutionByCod (&Ins,Ins_GET_BASIC_DATA);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_documents_management_area, Txt_documents_management_area,
@ -6858,7 +6858,7 @@ static void Brw_WriteCurrentClipboard (void)
break; break;
case Brw_ADMI_SHR_INS: case Brw_ADMI_SHR_INS:
Ins.InsCod = Gbl.FileBrowser.Clipboard.Cod; Ins.InsCod = Gbl.FileBrowser.Clipboard.Cod;
Ins_GetDataOfInstitutionByCod (&Ins,false); Ins_GetDataOfInstitutionByCod (&Ins,Ins_GET_BASIC_DATA);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_shared_files_area, Txt_shared_files_area,
@ -6866,7 +6866,7 @@ static void Brw_WriteCurrentClipboard (void)
break; break;
case Brw_ADMI_DOC_CTR: case Brw_ADMI_DOC_CTR:
Ctr.CtrCod = Gbl.FileBrowser.Clipboard.Cod; Ctr.CtrCod = Gbl.FileBrowser.Clipboard.Cod;
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_documents_management_area, Txt_documents_management_area,
@ -6874,7 +6874,7 @@ static void Brw_WriteCurrentClipboard (void)
break; break;
case Brw_ADMI_SHR_CTR: case Brw_ADMI_SHR_CTR:
Ctr.CtrCod = Gbl.FileBrowser.Clipboard.Cod; Ctr.CtrCod = Gbl.FileBrowser.Clipboard.Cod;
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_shared_files_area, Txt_shared_files_area,
@ -6882,7 +6882,7 @@ static void Brw_WriteCurrentClipboard (void)
break; break;
case Brw_ADMI_DOC_DEG: case Brw_ADMI_DOC_DEG:
Deg.DegCod = Gbl.FileBrowser.Clipboard.Cod; Deg.DegCod = Gbl.FileBrowser.Clipboard.Cod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_documents_management_area, Txt_documents_management_area,
@ -6890,7 +6890,7 @@ static void Brw_WriteCurrentClipboard (void)
break; break;
case Brw_ADMI_SHR_DEG: case Brw_ADMI_SHR_DEG:
Deg.DegCod = Gbl.FileBrowser.Clipboard.Cod; Deg.DegCod = Gbl.FileBrowser.Clipboard.Cod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_shared_files_area, Txt_shared_files_area,
@ -6898,7 +6898,7 @@ static void Brw_WriteCurrentClipboard (void)
break; break;
case Brw_ADMI_DOC_CRS: case Brw_ADMI_DOC_CRS:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_documents_management_area, Txt_documents_management_area,
@ -6908,7 +6908,7 @@ static void Brw_WriteCurrentClipboard (void)
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod; GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetDataOfGroupByCod (&GrpDat); Grp_GetDataOfGroupByCod (&GrpDat);
Crs.CrsCod = GrpDat.CrsCod; Crs.CrsCod = GrpDat.CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>", "%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>",
Txt_documents_management_area, Txt_documents_management_area,
@ -6917,7 +6917,7 @@ static void Brw_WriteCurrentClipboard (void)
break; break;
case Brw_ADMI_TCH_CRS: case Brw_ADMI_TCH_CRS:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_teachers_files_area, Txt_teachers_files_area,
@ -6927,7 +6927,7 @@ static void Brw_WriteCurrentClipboard (void)
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod; GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetDataOfGroupByCod (&GrpDat); Grp_GetDataOfGroupByCod (&GrpDat);
Crs.CrsCod = GrpDat.CrsCod; Crs.CrsCod = GrpDat.CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>", "%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>",
Txt_teachers_files_area, Txt_teachers_files_area,
@ -6936,7 +6936,7 @@ static void Brw_WriteCurrentClipboard (void)
break; break;
case Brw_ADMI_SHR_CRS: case Brw_ADMI_SHR_CRS:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_shared_files_area, Txt_shared_files_area,
@ -6946,7 +6946,7 @@ static void Brw_WriteCurrentClipboard (void)
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod; GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetDataOfGroupByCod (&GrpDat); Grp_GetDataOfGroupByCod (&GrpDat);
Crs.CrsCod = GrpDat.CrsCod; Crs.CrsCod = GrpDat.CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>", "%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>",
Txt_shared_files_area, Txt_shared_files_area,
@ -6955,7 +6955,7 @@ static void Brw_WriteCurrentClipboard (void)
break; break;
case Brw_ADMI_ASG_USR: case Brw_ADMI_ASG_USR:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>, %s <strong>%s</strong>",
Txt_assignments_area, Txt_assignments_area,
@ -6964,7 +6964,7 @@ static void Brw_WriteCurrentClipboard (void)
break; break;
case Brw_ADMI_WRK_USR: case Brw_ADMI_WRK_USR:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>, %s <strong>%s</strong>",
Txt_works_area, Txt_works_area,
@ -6973,7 +6973,7 @@ static void Brw_WriteCurrentClipboard (void)
break; break;
case Brw_ADMI_ASG_CRS: case Brw_ADMI_ASG_CRS:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
Usr_UsrDataConstructor (&UsrDat); Usr_UsrDataConstructor (&UsrDat);
UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod; UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod;
Usr_GetAllUsrDataFromUsrCod (&UsrDat,Usr_DONT_GET_PREFS); Usr_GetAllUsrDataFromUsrCod (&UsrDat,Usr_DONT_GET_PREFS);
@ -6986,7 +6986,7 @@ static void Brw_WriteCurrentClipboard (void)
break; break;
case Brw_ADMI_WRK_CRS: case Brw_ADMI_WRK_CRS:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
Usr_UsrDataConstructor (&UsrDat); Usr_UsrDataConstructor (&UsrDat);
UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod; UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod;
Usr_GetAllUsrDataFromUsrCod (&UsrDat,Usr_DONT_GET_PREFS); Usr_GetAllUsrDataFromUsrCod (&UsrDat,Usr_DONT_GET_PREFS);
@ -7003,7 +7003,7 @@ static void Brw_WriteCurrentClipboard (void)
Prj.PrjCod = Gbl.FileBrowser.Clipboard.Cod; Prj.PrjCod = Gbl.FileBrowser.Clipboard.Cod;
Prj_GetDataOfProjectByCod (&Prj); Prj_GetDataOfProjectByCod (&Prj);
Crs.CrsCod = Prj.CrsCod; Crs.CrsCod = Prj.CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>, %s <strong>%s</strong>",
Gbl.FileBrowser.Clipboard.FileBrowser == Brw_ADMI_DOC_PRJ ? Txt_project_documents : Gbl.FileBrowser.Clipboard.FileBrowser == Brw_ADMI_DOC_PRJ ? Txt_project_documents :
@ -7014,7 +7014,7 @@ static void Brw_WriteCurrentClipboard (void)
break; break;
case Brw_ADMI_MRK_CRS: case Brw_ADMI_MRK_CRS:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_marks_management_area, Txt_marks_management_area,
@ -7024,7 +7024,7 @@ static void Brw_WriteCurrentClipboard (void)
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod; GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetDataOfGroupByCod (&GrpDat); Grp_GetDataOfGroupByCod (&GrpDat);
Crs.CrsCod = GrpDat.CrsCod; Crs.CrsCod = GrpDat.CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>", "%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>",
Txt_marks_management_area, Txt_marks_management_area,
@ -7865,7 +7865,7 @@ static void Brw_PasteClipboard (void)
case Brw_ADMI_DOC_INS: case Brw_ADMI_DOC_INS:
case Brw_ADMI_SHR_INS: case Brw_ADMI_SHR_INS:
Ins.InsCod = Gbl.FileBrowser.Clipboard.Cod; Ins.InsCod = Gbl.FileBrowser.Clipboard.Cod;
if (Ins_GetDataOfInstitutionByCod (&Ins,false)) if (Ins_GetDataOfInstitutionByCod (&Ins,Ins_GET_BASIC_DATA))
snprintf (PathOrg,sizeof (PathOrg), snprintf (PathOrg,sizeof (PathOrg),
"%s/%02u/%u/%s", "%s/%02u/%u/%s",
Cfg_PATH_INS_PRIVATE, Cfg_PATH_INS_PRIVATE,
@ -7878,7 +7878,7 @@ static void Brw_PasteClipboard (void)
case Brw_ADMI_DOC_CTR: case Brw_ADMI_DOC_CTR:
case Brw_ADMI_SHR_CTR: case Brw_ADMI_SHR_CTR:
Ctr.CtrCod = Gbl.FileBrowser.Clipboard.Cod; Ctr.CtrCod = Gbl.FileBrowser.Clipboard.Cod;
if (Ctr_GetDataOfCentreByCod (&Ctr)) if (Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA))
snprintf (PathOrg,sizeof (PathOrg), snprintf (PathOrg,sizeof (PathOrg),
"%s/%02u/%u/%s", "%s/%02u/%u/%s",
Cfg_PATH_CTR_PRIVATE, Cfg_PATH_CTR_PRIVATE,
@ -7891,7 +7891,7 @@ static void Brw_PasteClipboard (void)
case Brw_ADMI_DOC_DEG: case Brw_ADMI_DOC_DEG:
case Brw_ADMI_SHR_DEG: case Brw_ADMI_SHR_DEG:
Deg.DegCod = Gbl.FileBrowser.Clipboard.Cod; Deg.DegCod = Gbl.FileBrowser.Clipboard.Cod;
if (Deg_GetDataOfDegreeByCod (&Deg)) if (Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA))
snprintf (PathOrg,sizeof (PathOrg), snprintf (PathOrg,sizeof (PathOrg),
"%s/%02u/%u/%s", "%s/%02u/%u/%s",
Cfg_PATH_DEG_PRIVATE, Cfg_PATH_DEG_PRIVATE,
@ -7906,7 +7906,7 @@ static void Brw_PasteClipboard (void)
case Brw_ADMI_SHR_CRS: case Brw_ADMI_SHR_CRS:
case Brw_ADMI_MRK_CRS: case Brw_ADMI_MRK_CRS:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
if (Crs_GetDataOfCourseByCod (&Crs)) if (Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA))
snprintf (PathOrg,sizeof (PathOrg), snprintf (PathOrg,sizeof (PathOrg),
"%s/%ld/%s", "%s/%ld/%s",
Cfg_PATH_CRS_PRIVATE,Crs.CrsCod, Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,
@ -7921,7 +7921,7 @@ static void Brw_PasteClipboard (void)
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod; GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetDataOfGroupByCod (&GrpDat); Grp_GetDataOfGroupByCod (&GrpDat);
Crs.CrsCod = GrpDat.CrsCod; Crs.CrsCod = GrpDat.CrsCod;
if (Crs_GetDataOfCourseByCod (&Crs)) if (Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA))
snprintf (PathOrg,sizeof (PathOrg), snprintf (PathOrg,sizeof (PathOrg),
"%s/%ld/%s/%ld/%s", "%s/%ld/%s/%ld/%s",
Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_GRP, Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_GRP,
@ -7933,7 +7933,7 @@ static void Brw_PasteClipboard (void)
case Brw_ADMI_ASG_CRS: case Brw_ADMI_ASG_CRS:
case Brw_ADMI_WRK_CRS: case Brw_ADMI_WRK_CRS:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
if (Crs_GetDataOfCourseByCod (&Crs)) if (Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA))
{ {
Usr_UsrDataConstructor (&UsrDat); Usr_UsrDataConstructor (&UsrDat);
UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod; UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod;
@ -7952,7 +7952,7 @@ static void Brw_PasteClipboard (void)
case Brw_ADMI_ASG_USR: case Brw_ADMI_ASG_USR:
case Brw_ADMI_WRK_USR: case Brw_ADMI_WRK_USR:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
if (Crs_GetDataOfCourseByCod (&Crs)) if (Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA))
snprintf (PathOrg,sizeof (PathOrg), snprintf (PathOrg,sizeof (PathOrg),
"%s/%ld/%s/%02u/%ld/%s", "%s/%ld/%s/%02u/%ld/%s",
Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_USR, Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_USR,
@ -7966,7 +7966,7 @@ static void Brw_PasteClipboard (void)
case Brw_ADMI_ASS_PRJ: case Brw_ADMI_ASS_PRJ:
PrjCod = Gbl.FileBrowser.Clipboard.Cod; PrjCod = Gbl.FileBrowser.Clipboard.Cod;
Crs.CrsCod = Prj_GetCourseOfProject (PrjCod); Crs.CrsCod = Prj_GetCourseOfProject (PrjCod);
if (Crs_GetDataOfCourseByCod (&Crs)) if (Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA))
snprintf (PathOrg,sizeof (PathOrg), snprintf (PathOrg,sizeof (PathOrg),
"%s/%ld/%s/%02u/%ld/%s", "%s/%ld/%s/%02u/%ld/%s",
Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_PRJ, Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_PRJ,
@ -11059,7 +11059,7 @@ void Brw_GetCrsGrpFromFileMetadata (Brw_FileBrowser_t FileBrowser,long Cod,
*CrsCod = -1L; *CrsCod = -1L;
*DegCod = -1L; *DegCod = -1L;
*CtrCod = Ctr.CtrCod = Cod; *CtrCod = Ctr.CtrCod = Cod;
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA);
*InsCod = Ctr.InsCod; *InsCod = Ctr.InsCod;
break; break;
case Brw_ADMI_DOC_DEG: case Brw_ADMI_DOC_DEG:
@ -11068,9 +11068,9 @@ void Brw_GetCrsGrpFromFileMetadata (Brw_FileBrowser_t FileBrowser,long Cod,
*GrpCod = -1L; *GrpCod = -1L;
*CrsCod = -1L; *CrsCod = -1L;
*DegCod = Deg.DegCod = Cod; *DegCod = Deg.DegCod = Cod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
*CtrCod = Ctr.CtrCod = Deg.CtrCod; *CtrCod = Ctr.CtrCod = Deg.CtrCod;
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA);
*InsCod = Ctr.InsCod; *InsCod = Ctr.InsCod;
break; break;
case Brw_ADMI_DOC_CRS: case Brw_ADMI_DOC_CRS:
@ -11082,11 +11082,11 @@ void Brw_GetCrsGrpFromFileMetadata (Brw_FileBrowser_t FileBrowser,long Cod,
/* Cod stores the course code */ /* Cod stores the course code */
*GrpCod = -1L; *GrpCod = -1L;
*CrsCod = Crs.CrsCod = Cod; *CrsCod = Crs.CrsCod = Cod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
*DegCod = Deg.DegCod = Crs.DegCod; *DegCod = Deg.DegCod = Crs.DegCod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
*CtrCod = Ctr.CtrCod = Deg.CtrCod; *CtrCod = Ctr.CtrCod = Deg.CtrCod;
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA);
*InsCod = Ctr.InsCod; *InsCod = Ctr.InsCod;
break; break;
case Brw_ADMI_DOC_GRP: case Brw_ADMI_DOC_GRP:
@ -11097,11 +11097,11 @@ void Brw_GetCrsGrpFromFileMetadata (Brw_FileBrowser_t FileBrowser,long Cod,
*GrpCod = GrpDat.GrpCod = Cod; *GrpCod = GrpDat.GrpCod = Cod;
Grp_GetDataOfGroupByCod (&GrpDat); Grp_GetDataOfGroupByCod (&GrpDat);
*CrsCod = Crs.CrsCod = GrpDat.CrsCod; *CrsCod = Crs.CrsCod = GrpDat.CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
*DegCod = Deg.DegCod = Crs.DegCod; *DegCod = Deg.DegCod = Crs.DegCod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
*CtrCod = Ctr.CtrCod = Deg.CtrCod; *CtrCod = Ctr.CtrCod = Deg.CtrCod;
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA);
*InsCod = Ctr.InsCod; *InsCod = Ctr.InsCod;
break; break;
case Brw_ADMI_DOC_PRJ: case Brw_ADMI_DOC_PRJ:
@ -11109,11 +11109,11 @@ void Brw_GetCrsGrpFromFileMetadata (Brw_FileBrowser_t FileBrowser,long Cod,
/* Cod stores the project code */ /* Cod stores the project code */
*GrpCod = -1L; *GrpCod = -1L;
*CrsCod = Crs.CrsCod = Prj_GetCourseOfProject (Cod); *CrsCod = Crs.CrsCod = Prj_GetCourseOfProject (Cod);
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
*DegCod = Deg.DegCod = Crs.DegCod; *DegCod = Deg.DegCod = Crs.DegCod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
*CtrCod = Ctr.CtrCod = Deg.CtrCod; *CtrCod = Ctr.CtrCod = Deg.CtrCod;
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA);
*InsCod = Ctr.InsCod; *InsCod = Ctr.InsCod;
break; break;
default: default:
@ -11717,7 +11717,7 @@ void Brw_RemoveUsrWorksInAllCrss (struct UsrData *UsrDat)
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
Crs.CrsCod = Str_ConvertStrCodToLongCod (row[0]); Crs.CrsCod = Str_ConvertStrCodToLongCod (row[0]);
/* Get data of course */ /* Get data of course */
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
Brw_RemoveUsrWorksInCrs (UsrDat,&Crs); Brw_RemoveUsrWorksInCrs (UsrDat,&Crs);
NumCrssWorksRemoved++; NumCrssWorksRemoved++;
} }

View File

@ -2179,14 +2179,14 @@ void For_SetForumName (struct Forum *Forum,
break; break;
case For_FORUM_CENTRE_USRS: case For_FORUM_CENTRE_USRS:
Ctr.CtrCod = Forum->Location; Ctr.CtrCod = Forum->Location;
if (!Ctr_GetDataOfCentreByCod (&Ctr)) if (!Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA))
Lay_ShowErrorAndExit ("Centre not found."); Lay_ShowErrorAndExit ("Centre not found.");
Str_Copy (ForumName,Ctr.ShrtName, Str_Copy (ForumName,Ctr.ShrtName,
For_MAX_BYTES_FORUM_NAME); For_MAX_BYTES_FORUM_NAME);
break; break;
case For_FORUM_CENTRE_TCHS: case For_FORUM_CENTRE_TCHS:
Ctr.CtrCod = Forum->Location; Ctr.CtrCod = Forum->Location;
if (!Ctr_GetDataOfCentreByCod (&Ctr)) if (!Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA))
Lay_ShowErrorAndExit ("Centre not found."); Lay_ShowErrorAndExit ("Centre not found.");
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1, snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,
"%s%s",Ctr.ShrtName, "%s%s",Ctr.ShrtName,
@ -2195,14 +2195,14 @@ void For_SetForumName (struct Forum *Forum,
break; break;
case For_FORUM_DEGREE_USRS: case For_FORUM_DEGREE_USRS:
Deg.DegCod = Forum->Location; Deg.DegCod = Forum->Location;
if (!Deg_GetDataOfDegreeByCod (&Deg)) if (!Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA))
Lay_ShowErrorAndExit ("Degree not found."); Lay_ShowErrorAndExit ("Degree not found.");
Str_Copy (ForumName,Deg.ShrtName, Str_Copy (ForumName,Deg.ShrtName,
For_MAX_BYTES_FORUM_NAME); For_MAX_BYTES_FORUM_NAME);
break; break;
case For_FORUM_DEGREE_TCHS: case For_FORUM_DEGREE_TCHS:
Deg.DegCod = Forum->Location; Deg.DegCod = Forum->Location;
if (!Deg_GetDataOfDegreeByCod (&Deg)) if (!Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA))
Lay_ShowErrorAndExit ("Degree not found."); Lay_ShowErrorAndExit ("Degree not found.");
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1, snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,
"%s%s",Deg.ShrtName, "%s%s",Deg.ShrtName,
@ -2211,14 +2211,14 @@ void For_SetForumName (struct Forum *Forum,
break; break;
case For_FORUM_COURSE_USRS: case For_FORUM_COURSE_USRS:
Crs.CrsCod = Forum->Location; Crs.CrsCod = Forum->Location;
if (!Crs_GetDataOfCourseByCod (&Crs)) if (!Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA))
Lay_ShowErrorAndExit ("Course not found."); Lay_ShowErrorAndExit ("Course not found.");
Str_Copy (ForumName,Crs.ShrtName, Str_Copy (ForumName,Crs.ShrtName,
For_MAX_BYTES_FORUM_NAME); For_MAX_BYTES_FORUM_NAME);
break; break;
case For_FORUM_COURSE_TCHS: case For_FORUM_COURSE_TCHS:
Crs.CrsCod = Forum->Location; Crs.CrsCod = Forum->Location;
if (!Crs_GetDataOfCourseByCod (&Crs)) if (!Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA))
Lay_ShowErrorAndExit ("Course not found."); Lay_ShowErrorAndExit ("Course not found.");
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1, snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,
"%s%s",Crs.ShrtName, "%s%s",Crs.ShrtName,

View File

@ -541,7 +541,7 @@ void Hie_InitHierarchy (void)
/***** If course code is available, get course data *****/ /***** If course code is available, get course data *****/
if (Gbl.Hierarchy.Crs.CrsCod > 0) if (Gbl.Hierarchy.Crs.CrsCod > 0)
{ {
if (Crs_GetDataOfCourseByCod (&Gbl.Hierarchy.Crs)) // Course found if (Crs_GetDataOfCourseByCod (&Gbl.Hierarchy.Crs,Crs_GET_BASIC_DATA)) // Course found
Gbl.Hierarchy.Deg.DegCod = Gbl.Hierarchy.Crs.DegCod; Gbl.Hierarchy.Deg.DegCod = Gbl.Hierarchy.Crs.DegCod;
else else
Hie_ResetHierarchy (); Hie_ResetHierarchy ();
@ -550,7 +550,7 @@ void Hie_InitHierarchy (void)
/***** If degree code is available, get degree data *****/ /***** If degree code is available, get degree data *****/
if (Gbl.Hierarchy.Deg.DegCod > 0) if (Gbl.Hierarchy.Deg.DegCod > 0)
{ {
if (Deg_GetDataOfDegreeByCod (&Gbl.Hierarchy.Deg)) // Degree found if (Deg_GetDataOfDegreeByCod (&Gbl.Hierarchy.Deg,Deg_GET_BASIC_DATA)) // Degree found
{ {
Gbl.Hierarchy.Ctr.CtrCod = Gbl.Hierarchy.Deg.CtrCod; Gbl.Hierarchy.Ctr.CtrCod = Gbl.Hierarchy.Deg.CtrCod;
Gbl.Hierarchy.Ins.InsCod = Deg_GetInsCodOfDegreeByCod (Gbl.Hierarchy.Deg.DegCod); Gbl.Hierarchy.Ins.InsCod = Deg_GetInsCodOfDegreeByCod (Gbl.Hierarchy.Deg.DegCod);
@ -562,7 +562,7 @@ void Hie_InitHierarchy (void)
/***** If centre code is available, get centre data *****/ /***** If centre code is available, get centre data *****/
if (Gbl.Hierarchy.Ctr.CtrCod > 0) if (Gbl.Hierarchy.Ctr.CtrCod > 0)
{ {
if (Ctr_GetDataOfCentreByCod (&Gbl.Hierarchy.Ctr)) // Centre found if (Ctr_GetDataOfCentreByCod (&Gbl.Hierarchy.Ctr,Ctr_GET_BASIC_DATA)) // Centre found
Gbl.Hierarchy.Ins.InsCod = Gbl.Hierarchy.Ctr.InsCod; Gbl.Hierarchy.Ins.InsCod = Gbl.Hierarchy.Ctr.InsCod;
else else
Hie_ResetHierarchy (); Hie_ResetHierarchy ();

View File

@ -1332,7 +1332,7 @@ void Lay_ShowErrorAndExit (const char *Txt)
/***** Page is generated (except </body> and </html>). /***** Page is generated (except </body> and </html>).
Compute time to generate page *****/ Compute time to generate page *****/
if (!Gbl.Action.IsAJAXAutoRefresh) if (!Gbl.Action.IsAJAXAutoRefresh)
Sta_ComputeTimeToGeneratePage (); Gbl.TimeGenerationInMicroseconds = (long) Sta_ComputeTimeToGeneratePage ();
if (Gbl.WebService.IsWebService) // Serving a plugin request if (Gbl.WebService.IsWebService) // Serving a plugin request
{ {
@ -1557,11 +1557,11 @@ void Lay_WriteHeaderClassPhoto (bool PrintView,bool DrawingClassPhoto,
/***** Get data of degree *****/ /***** Get data of degree *****/
Deg.DegCod = DegCod; Deg.DegCod = DegCod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
/***** Get data of course *****/ /***** Get data of course *****/
Crs.CrsCod = CrsCod; Crs.CrsCod = CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
/***** Begin table *****/ /***** Begin table *****/
HTM_TABLE_BeginWidePadding (10); HTM_TABLE_BeginWidePadding (10);

View File

@ -1039,7 +1039,7 @@ void Msg_GetParamMsgsCrsCod (void)
{ {
/* Get data of course */ /* Get data of course */
Crs.CrsCod = Gbl.Msg.FilterCrsCod; Crs.CrsCod = Gbl.Msg.FilterCrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
Str_Copy (Gbl.Msg.FilterCrsShrtName,Crs.ShrtName, Str_Copy (Gbl.Msg.FilterCrsShrtName,Crs.ShrtName,
Hie_MAX_BYTES_SHRT_NAME); Hie_MAX_BYTES_SHRT_NAME);
@ -2579,7 +2579,7 @@ void Msg_GetDistinctCoursesInMyMessages (void)
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
Crs.CrsCod = Str_ConvertStrCodToLongCod (row[0]); Crs.CrsCod = Str_ConvertStrCodToLongCod (row[0]);
if (Crs.CrsCod >= 0 && Gbl.Msg.NumCourses < Crs_MAX_COURSES_PER_USR) if (Crs.CrsCod >= 0 && Gbl.Msg.NumCourses < Crs_MAX_COURSES_PER_USR)
if (Crs_GetDataOfCourseByCod (&Crs)) if (Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA))
{ {
Gbl.Msg.Courses[Gbl.Msg.NumCourses].CrsCod = Crs.CrsCod; Gbl.Msg.Courses[Gbl.Msg.NumCourses].CrsCod = Crs.CrsCod;
Str_Copy (Gbl.Msg.Courses[Gbl.Msg.NumCourses].ShrtName,Crs.ShrtName, Str_Copy (Gbl.Msg.Courses[Gbl.Msg.NumCourses].ShrtName,Crs.ShrtName,
@ -3262,7 +3262,7 @@ bool Msg_WriteCrsOrgMsg (long CrsCod)
Crs.CrsCod = CrsCod; Crs.CrsCod = CrsCod;
/* Get data of current degree */ /* Get data of current degree */
if (Crs_GetDataOfCourseByCod (&Crs)) if (Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA))
{ {
ThereIsOrgCrs = true; ThereIsOrgCrs = true;
if ((FromThisCrs = (CrsCod == Gbl.Hierarchy.Crs.CrsCod))) // Message sent from current course if ((FromThisCrs = (CrsCod == Gbl.Hierarchy.Crs.CrsCod))) // Message sent from current course

View File

@ -395,7 +395,7 @@ void Ntf_ShowMyNotifications (void)
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
/* Get event type (row[0]) */ /* Get event type (row[0]) */
NotifyEvent = Ntf_GetNotifyEventFromDB ((const char *) row[0]); NotifyEvent = Ntf_GetNotifyEventFromStr ((const char *) row[0]);
/* Get (from) user code (row[1]) */ /* Get (from) user code (row[1]) */
UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[1]); UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[1]);
@ -407,15 +407,15 @@ void Ntf_ShowMyNotifications (void)
/* Get centre code (row[3]) */ /* Get centre code (row[3]) */
Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[3]); Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[3]);
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA);
/* Get degree code (row[4]) */ /* Get degree code (row[4]) */
Deg.DegCod = Str_ConvertStrCodToLongCod (row[4]); Deg.DegCod = Str_ConvertStrCodToLongCod (row[4]);
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
/* Get course code (row[5]) */ /* Get course code (row[5]) */
Crs.CrsCod = Str_ConvertStrCodToLongCod (row[5]); Crs.CrsCod = Str_ConvertStrCodToLongCod (row[5]);
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
/* Get message/post/... code (row[6]) */ /* Get message/post/... code (row[6]) */
Cod = Str_ConvertStrCodToLongCod (row[6]); Cod = Str_ConvertStrCodToLongCod (row[6]);
@ -567,13 +567,13 @@ void Ntf_ShowMyNotifications (void)
HTM_TR_End (); HTM_TR_End ();
/***** Write content of the event *****/ /***** Write content of the event *****/
if (PutLink) if (PutLink && !AllNotifications)
{ {
ContentStr = NULL; ContentStr = NULL;
Ntf_GetNotifSummaryAndContent (SummaryStr,&ContentStr,NotifyEvent, Ntf_GetNotifSummaryAndContent (SummaryStr,&ContentStr,NotifyEvent,
Cod,Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod, Cod,Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod,
false); false);
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("colspan=\"2\""); HTM_TD_Begin ("colspan=\"2\"");
@ -584,13 +584,17 @@ void Ntf_ShowMyNotifications (void)
HTM_TD_End (); HTM_TD_End ();
HTM_TR_End (); HTM_TR_End ();
if (ContentStr != NULL)
{
free (ContentStr);
ContentStr = NULL;
}
} }
if (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)
{
HTM_TR_Begin (NULL);
HTM_TD_Begin ("colspan=\"6\" class=\"DAT LT\"");
HTM_Long (Sta_ComputeTimeToGeneratePage ());
HTM_TD_End ();
HTM_TR_End ();
}
} }
/***** End table *****/ /***** End table *****/
@ -1648,7 +1652,7 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
/* Get event type (row[0]) */ /* Get event type (row[0]) */
NotifyEvent = Ntf_GetNotifyEventFromDB ((const char *) row[0]); NotifyEvent = Ntf_GetNotifyEventFromStr ((const char *) row[0]);
/* Get origin user code (row[1]) */ /* Get origin user code (row[1]) */
FromUsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[1]); FromUsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[1]);
@ -1660,15 +1664,15 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign
/* Get centre code (row[3]) */ /* Get centre code (row[3]) */
Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[3]); Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[3]);
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA);
/* Get degree code (row[4]) */ /* Get degree code (row[4]) */
Deg.DegCod = Str_ConvertStrCodToLongCod (row[4]); Deg.DegCod = Str_ConvertStrCodToLongCod (row[4]);
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
/* Get course code (row[5]) */ /* Get course code (row[5]) */
Crs.CrsCod = Str_ConvertStrCodToLongCod (row[5]); Crs.CrsCod = Str_ConvertStrCodToLongCod (row[5]);
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
/* Get message/post/... code (row[6]) */ /* Get message/post/... code (row[6]) */
Cod = Str_ConvertStrCodToLongCod (row[6]); Cod = Str_ConvertStrCodToLongCod (row[6]);
@ -1795,7 +1799,7 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign
/****** Get notify event type from string number coming from database ********/ /****** Get notify event type from string number coming from database ********/
/*****************************************************************************/ /*****************************************************************************/
Ntf_NotifyEvent_t Ntf_GetNotifyEventFromDB (const char *Str) Ntf_NotifyEvent_t Ntf_GetNotifyEventFromStr (const char *Str)
{ {
unsigned UnsignedNum; unsigned UnsignedNum;

View File

@ -133,7 +133,7 @@ void Ntf_StoreNotifyEventToOneUser (Ntf_NotifyEvent_t NotifyEvent,
struct UsrData *UsrDat, struct UsrData *UsrDat,
long Cod,Ntf_Status_t Status); long Cod,Ntf_Status_t Status);
void Ntf_SendPendingNotifByEMailToAllUsrs (void); void Ntf_SendPendingNotifByEMailToAllUsrs (void);
Ntf_NotifyEvent_t Ntf_GetNotifyEventFromDB (const char *Str); Ntf_NotifyEvent_t Ntf_GetNotifyEventFromStr (const char *Str);
void Ntf_MarkAllNotifAsSeen (void); void Ntf_MarkAllNotifAsSeen (void);
void Ntf_PutFormChangeNotifSentByEMail (void); void Ntf_PutFormChangeNotifSentByEMail (void);
void Ntf_ChangeNotifyEvents (void); void Ntf_ChangeNotifyEvents (void);

View File

@ -2014,7 +2014,7 @@ static void Pho_PutLinkToCalculateDegreeStats (void)
Deg_GetListAllDegsWithStds (&Degs); Deg_GetListAllDegsWithStds (&Degs);
/***** Get data of the degree from database *****/ /***** Get data of the degree from database *****/
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
/***** Contextual menu *****/ /***** Contextual menu *****/
Mnu_ContextMenuBegin (); Mnu_ContextMenuBegin ();
@ -2157,7 +2157,7 @@ static void Pho_ShowOrPrintClassPhotoDegrees (Pho_AvgPhotoSeeOrPrint_t SeeOrPrin
Lay_ShowErrorAndExit ("Wrong code of degree."); Lay_ShowErrorAndExit ("Wrong code of degree.");
/* Get data of degree */ /* Get data of degree */
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
/* Get number of students and number of students with photo in this degree */ /* Get number of students and number of students with photo in this degree */
Pho_GetNumStdsInDegree (Deg.DegCod,Usr_SEX_ALL,&NumStds,&NumStdsWithPhoto); Pho_GetNumStdsInDegree (Deg.DegCod,Usr_SEX_ALL,&NumStds,&NumStdsWithPhoto);
@ -2250,7 +2250,7 @@ static void Pho_ShowOrPrintListDegrees (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
Lay_ShowErrorAndExit ("Wrong code of degree."); Lay_ShowErrorAndExit ("Wrong code of degree.");
/* Get data of degree */ /* Get data of degree */
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);

View File

@ -3637,7 +3637,7 @@ static void Rec_ShowCentre (struct UsrData *UsrDat,
if (UsrDat->Tch.CtrCod > 0) if (UsrDat->Tch.CtrCod > 0)
{ {
Ctr.CtrCod = UsrDat->Tch.CtrCod; Ctr.CtrCod = UsrDat->Tch.CtrCod;
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA);
if (Ctr.WWW[0]) if (Ctr.WWW[0])
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"REC_DAT_BOLD\"", HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"REC_DAT_BOLD\"",
Ctr.WWW); Ctr.WWW);
@ -4279,7 +4279,7 @@ void Rec_UpdateMyCentre (void)
/* Get institution of centre */ /* Get institution of centre */
if (Ctr.CtrCod > 0) if (Ctr.CtrCod > 0)
{ {
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA);
if (Gbl.Usrs.Me.UsrDat.InsCod != Ctr.InsCod) if (Gbl.Usrs.Me.UsrDat.InsCod != Ctr.InsCod)
{ {
Gbl.Usrs.Me.UsrDat.InsCod = Ctr.InsCod; Gbl.Usrs.Me.UsrDat.InsCod = Ctr.InsCod;

View File

@ -1171,11 +1171,11 @@ static void Rep_WriteRowCrsData (long CrsCod,Rol_Role_t Role,
/***** Get course data *****/ /***** Get course data *****/
Crs.CrsCod = CrsCod; Crs.CrsCod = CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_EXTRA_DATA);
/***** Get degree data *****/ /***** Get degree data *****/
Deg.DegCod = Crs.DegCod; Deg.DegCod = Crs.DegCod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
/***** Start row *****/ /***** Start row *****/
fprintf (Gbl.F.Rep,"<li>"); fprintf (Gbl.F.Rep,"<li>");

View File

@ -3476,7 +3476,7 @@ static void Sta_WriteCentre (long CtrCod)
{ {
/***** Get data of centre *****/ /***** Get data of centre *****/
Ctr.CtrCod = CtrCod; Ctr.CtrCod = CtrCod;
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA);
/***** Title in cell *****/ /***** Title in cell *****/
HTM_TD_Begin ("class=\"LOG LM\" title=\"%s\"",Ctr.FullName); HTM_TD_Begin ("class=\"LOG LM\" title=\"%s\"",Ctr.FullName);
@ -3568,7 +3568,7 @@ static void Sta_WriteDegree (long DegCod)
{ {
/***** Get data of degree *****/ /***** Get data of degree *****/
Deg.DegCod = DegCod; Deg.DegCod = DegCod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
/***** Title in cell *****/ /***** Title in cell *****/
HTM_TD_Begin ("class=\"LOG LM\" title=\"%s\"",Deg.FullName); HTM_TD_Begin ("class=\"LOG LM\" title=\"%s\"",Deg.FullName);
@ -3636,7 +3636,7 @@ static void Sta_ShowNumHitsPerCourse (unsigned long NumRows,
Crs.CrsCod = Str_ConvertStrCodToLongCod (row[0]); Crs.CrsCod = Str_ConvertStrCodToLongCod (row[0]);
/* Get data of current degree */ /* Get data of current degree */
CrsOK = Crs_GetDataOfCourseByCod (&Crs); CrsOK = Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -3766,21 +3766,14 @@ static void Sta_DrawBarNumHits (char Color,
/**************** Compute the time used to generate the page *****************/ /**************** Compute the time used to generate the page *****************/
/*****************************************************************************/ /*****************************************************************************/
void Sta_ComputeTimeToGeneratePage (void) time_t Sta_ComputeTimeToGeneratePage (void)
{ {
if (gettimeofday (&Gbl.tvPageCreated, &Gbl.tz)) if (gettimeofday (&Gbl.tvPageCreated, &Gbl.tz))
// Error in gettimeofday // Error in gettimeofday
Gbl.TimeGenerationInMicroseconds = 0; return (time_t) 0;
else
{ return (time_t) ((Gbl.tvPageCreated.tv_sec - Gbl.tvStart.tv_sec) * 1000000L +
if (Gbl.tvPageCreated.tv_usec < Gbl.tvStart.tv_usec) Gbl.tvPageCreated.tv_usec - Gbl.tvStart.tv_usec);
{
Gbl.tvPageCreated.tv_sec--;
Gbl.tvPageCreated.tv_usec += 1000000;
}
Gbl.TimeGenerationInMicroseconds = (Gbl.tvPageCreated.tv_sec - Gbl.tvStart.tv_sec) * 1000000L +
Gbl.tvPageCreated.tv_usec - Gbl.tvStart.tv_usec;
}
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -144,7 +144,7 @@ void Sta_ComputeMaxAndTotalHits (struct Sta_Hits *Hits,
MYSQL_RES *mysql_res,unsigned Field, MYSQL_RES *mysql_res,unsigned Field,
unsigned Divisor); unsigned Divisor);
void Sta_ComputeTimeToGeneratePage (void); time_t Sta_ComputeTimeToGeneratePage (void);
void Sta_ComputeTimeToSendPage (void); void Sta_ComputeTimeToSendPage (void);
void Sta_WriteTimeToGenerateAndSendPage (void); void Sta_WriteTimeToGenerateAndSendPage (void);
void Sta_WriteTime (char Str[Dat_MAX_BYTES_TIME],long TimeInMicroseconds); void Sta_WriteTime (char Str[Dat_MAX_BYTES_TIME],long TimeInMicroseconds);

View File

@ -1617,13 +1617,13 @@ static void TL_WriteNote (const struct TL_Note *SocNot,
case TL_NOTE_CTR_SHA_PUB_FILE: case TL_NOTE_CTR_SHA_PUB_FILE:
/* Get centre data */ /* Get centre data */
Ctr.CtrCod = SocNot->HieCod; Ctr.CtrCod = SocNot->HieCod;
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA);
break; break;
case TL_NOTE_DEG_DOC_PUB_FILE: case TL_NOTE_DEG_DOC_PUB_FILE:
case TL_NOTE_DEG_SHA_PUB_FILE: case TL_NOTE_DEG_SHA_PUB_FILE:
/* Get degree data */ /* Get degree data */
Deg.DegCod = SocNot->HieCod; Deg.DegCod = SocNot->HieCod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg,Deg_GET_BASIC_DATA);
break; break;
case TL_NOTE_CRS_DOC_PUB_FILE: case TL_NOTE_CRS_DOC_PUB_FILE:
case TL_NOTE_CRS_SHA_PUB_FILE: case TL_NOTE_CRS_SHA_PUB_FILE:
@ -1631,7 +1631,7 @@ static void TL_WriteNote (const struct TL_Note *SocNot,
case TL_NOTE_NOTICE: case TL_NOTE_NOTICE:
/* Get course data */ /* Get course data */
Crs.CrsCod = SocNot->HieCod; Crs.CrsCod = SocNot->HieCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
break; break;
case TL_NOTE_FORUM_POST: case TL_NOTE_FORUM_POST:
/* Get forum type of the post */ /* Get forum type of the post */

View File

@ -1547,7 +1547,7 @@ static void TT_TimeTableDrawCell (unsigned Weekday,unsigned Interval,unsigned Co
if (Gbl.TimeTable.Type == TT_MY_TIMETABLE) if (Gbl.TimeTable.Type == TT_MY_TIMETABLE)
{ {
Crs.CrsCod = CrsCod; Crs.CrsCod = CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs,Crs_GET_BASIC_DATA);
if (ClassType == TT_LECTURE || if (ClassType == TT_LECTURE ||
ClassType == TT_PRACTICAL) ClassType == TT_PRACTICAL)
{ {

View File

@ -2700,9 +2700,19 @@ void Usr_WelcomeUsr (void)
Ale_WARNING,Txt_Please_check_your_email_address); Ale_WARNING,Txt_Please_check_your_email_address);
} }
Ale_ShowAlert (Ale_INFO,
"Herramienta <a href=\"https://github.com/acanas/swad-core/wiki/ASSESSMENT.Games.es\" target=\"_blank\">"
"Evaluaci&oacute;n &gt; Juegos</a><br />"
"<br />"
"Imagen de la izquierda: pantalla proyectada en el aula por el profesor.<br />"
"Imagen de la derecha: pantalla del estudiante en su m&oacute;vil."
"<br />"
"<br />"
"<img src=\"/img/juego.png\" alt=\"Juegos\" style=\"width:100%%\">");
/***** Institutional video *****/ /***** Institutional video *****/
/* /*
Ale_ShowFixedAlert (Ale_INFO, Ale_ShowAlert (Ale_INFO,
"<a href=\"https://abierta.ugr.es/creative_commons/\" target=\"_blank\">" "<a href=\"https://abierta.ugr.es/creative_commons/\" target=\"_blank\">"
"Curso MOOC LICENCIAS CREATIVE COMMONS Y OER</a><br />" "Curso MOOC LICENCIAS CREATIVE COMMONS Y OER</a><br />"
"Reconocimiento de 1 cr&eacute;dito por actividades universitarias<br />" "Reconocimiento de 1 cr&eacute;dito por actividades universitarias<br />"
@ -3760,7 +3770,7 @@ static void Usr_WriteRowGstAllData (struct UsrData *UsrDat)
if (UsrDat->Tch.CtrCod > 0) if (UsrDat->Tch.CtrCod > 0)
{ {
Ctr.CtrCod = UsrDat->Tch.CtrCod; Ctr.CtrCod = UsrDat->Tch.CtrCod;
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA);
} }
Usr_WriteUsrData (Gbl.ColorRows[Gbl.RowEvenOdd], Usr_WriteUsrData (Gbl.ColorRows[Gbl.RowEvenOdd],
UsrDat->Tch.CtrCod > 0 ? Ctr.FullName : UsrDat->Tch.CtrCod > 0 ? Ctr.FullName :
@ -3983,7 +3993,7 @@ static void Usr_WriteRowTchAllData (struct UsrData *UsrDat)
if (ShowData && UsrDat->Tch.CtrCod > 0) if (ShowData && UsrDat->Tch.CtrCod > 0)
{ {
Ctr.CtrCod = UsrDat->Tch.CtrCod; Ctr.CtrCod = UsrDat->Tch.CtrCod;
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Ctr,Ctr_GET_BASIC_DATA);
} }
Usr_WriteUsrData (Gbl.ColorRows[Gbl.RowEvenOdd], Usr_WriteUsrData (Gbl.ColorRows[Gbl.RowEvenOdd],
(ShowData && UsrDat->Tch.CtrCod > 0) ? Ctr.FullName : (ShowData && UsrDat->Tch.CtrCod > 0) ? Ctr.FullName :