mirror of https://github.com/acanas/swad-core.git
Version19.67
This commit is contained in:
parent
21f7aec522
commit
8298f13fb6
|
@ -2440,14 +2440,14 @@ static unsigned Att_GetNumUsrsFromAListWhoAreInAttEvent (long AttCod,
|
||||||
long LstSelectedUsrCods[],
|
long LstSelectedUsrCods[],
|
||||||
unsigned NumUsrsInList)
|
unsigned NumUsrsInList)
|
||||||
{
|
{
|
||||||
char *SubQueryAllUsrs;
|
char *SubQueryUsrs;
|
||||||
unsigned NumUsrsInAttEvent;
|
unsigned NumUsrsInAttEvent;
|
||||||
|
|
||||||
if (NumUsrsInList)
|
if (NumUsrsInList)
|
||||||
{
|
{
|
||||||
/***** Create subquery string *****/
|
/***** Create subquery string *****/
|
||||||
Usr_CreateSubqueryUsrCods (LstSelectedUsrCods,NumUsrsInList,
|
Usr_CreateSubqueryUsrCods (LstSelectedUsrCods,NumUsrsInList,
|
||||||
&SubQueryAllUsrs);
|
&SubQueryUsrs);
|
||||||
|
|
||||||
/***** Get number of users in attendance event from database ****/
|
/***** Get number of users in attendance event from database ****/
|
||||||
NumUsrsInAttEvent =
|
NumUsrsInAttEvent =
|
||||||
|
@ -2456,10 +2456,10 @@ static unsigned Att_GetNumUsrsFromAListWhoAreInAttEvent (long AttCod,
|
||||||
"SELECT COUNT(*) FROM att_usr"
|
"SELECT COUNT(*) FROM att_usr"
|
||||||
" WHERE AttCod=%ld"
|
" WHERE AttCod=%ld"
|
||||||
" AND UsrCod IN (%s) AND Present='Y'",
|
" AND UsrCod IN (%s) AND Present='Y'",
|
||||||
AttCod,SubQueryAllUsrs);
|
AttCod,SubQueryUsrs);
|
||||||
|
|
||||||
/***** Free memory for subquery string *****/
|
/***** Free memory for subquery string *****/
|
||||||
Usr_FreeSubqueryUsrCods (SubQueryAllUsrs);
|
Usr_FreeSubqueryUsrCods (SubQueryUsrs);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
NumUsrsInAttEvent = 0;
|
NumUsrsInAttEvent = 0;
|
||||||
|
|
|
@ -487,16 +487,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.66.5 (2019-11-13)"
|
#define Log_PLATFORM_VERSION "SWAD 19.67 (2019-11-13)"
|
||||||
#define CSS_FILE "swad19.47.css"
|
#define CSS_FILE "swad19.47.css"
|
||||||
#define JS_FILE "swad19.65.js"
|
#define JS_FILE "swad19.65.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.
|
||||||
// TODO: Importante: filtrar proyectos por usuarios (igual que en trabajos o en asistencia)
|
|
||||||
// TODO: Code refactoring in HTML h1, title, meta, video, p, iframe, input hidden, area
|
// TODO: Code refactoring in HTML h1, title, meta, video, p, iframe, input hidden, area
|
||||||
|
|
||||||
Version 19.66.6: Nov 13, 2019 Filter projects by selected users. (? lines)
|
Version 19.67: Nov 13, 2019 Filter projects by selected users. (246729 lines)
|
||||||
Version 19.66.5: Nov 13, 2019 Code refactoring in list of users in attendance event. (246704 lines)
|
Version 19.66.5: Nov 13, 2019 Code refactoring in list of users in attendance event. (246704 lines)
|
||||||
Version 19.66.4: Nov 13, 2019 Code refactoring in list of users in attendance event. (246729 lines)
|
Version 19.66.4: Nov 13, 2019 Code refactoring in list of users in attendance event. (246729 lines)
|
||||||
Version 19.66.3: Nov 13, 2019 Filter projects by selected users. Not finished. (246656 lines)
|
Version 19.66.3: Nov 13, 2019 Filter projects by selected users. Not finished. (246656 lines)
|
||||||
|
|
|
@ -274,7 +274,7 @@ void McR_ShowUsrsMchResults (void)
|
||||||
Dat_GetIniEndDatesFromForm ();
|
Dat_GetIniEndDatesFromForm ();
|
||||||
|
|
||||||
/***** Check the number of users whose matches results will be shown *****/
|
/***** Check the number of users whose matches results will be shown *****/
|
||||||
if (Usr_CountNumUsrsInListOfSelectedEncryptedUsrCods ()) // If some users are selected...
|
if (Usr_CheckIfThereAreUsrsInListOfSelectedEncryptedUsrCods ()) // If some users are selected...
|
||||||
{
|
{
|
||||||
/***** Begin box and table *****/
|
/***** Begin box and table *****/
|
||||||
Box_StartBoxTable (NULL,Txt_Results,NULL,
|
Box_StartBoxTable (NULL,Txt_Results,NULL,
|
||||||
|
|
139
swad_project.c
139
swad_project.c
|
@ -124,6 +124,7 @@ struct Prj_Faults
|
||||||
/***************************** Private prototypes ****************************/
|
/***************************** Private prototypes ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Prj_GetSelectedUsrsAndShowPrjs (void);
|
||||||
static void Prj_ReqListUsrsToSelect (void);
|
static void Prj_ReqListUsrsToSelect (void);
|
||||||
|
|
||||||
static void Prj_ShowProjectsInCurrentPage (void);
|
static void Prj_ShowProjectsInCurrentPage (void);
|
||||||
|
@ -251,15 +252,25 @@ void Prj_SeeProjects (void)
|
||||||
if (Gbl.Prjs.Filter.ReqUsrs) // Request the selection of users
|
if (Gbl.Prjs.Filter.ReqUsrs) // Request the selection of users
|
||||||
/* List users to select some of them */
|
/* List users to select some of them */
|
||||||
Prj_ReqListUsrsToSelect ();
|
Prj_ReqListUsrsToSelect ();
|
||||||
if (Gbl.Prjs.Filter.SelUsrs) // Some users should have been selected
|
else
|
||||||
/* Show projects of selected users */
|
/* Show projects of selected users */
|
||||||
Prj_ShowProjectsInCurrentPage ();
|
Prj_GetSelectedUsrsAndShowPrjs ();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/****** Get and check list of selected users, and show users' projects *******/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Prj_GetSelectedUsrsAndShowPrjs (void)
|
||||||
|
{
|
||||||
|
Usr_GetSelectedUsrsAndGoToAct (Prj_ShowProjectsInCurrentPage,// when user(s) selected
|
||||||
|
Prj_ReqListUsrsToSelect); // when no user selected
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/**************************** List users to select ***************************/
|
/**************************** List users to select ***************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -686,6 +697,10 @@ void Prj_PutParams (struct Prj_Filter *Filter,
|
||||||
/***** Put another user's code *****/
|
/***** Put another user's code *****/
|
||||||
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
|
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
|
||||||
Usr_PutParamOtherUsrCodEncrypted ();
|
Usr_PutParamOtherUsrCodEncrypted ();
|
||||||
|
|
||||||
|
/***** Put selected users' codes *****/
|
||||||
|
if (Filter->Who == Usr_WHO_SELECTED)
|
||||||
|
Usr_PutHiddenParSelectedUsrsCods ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -801,15 +816,9 @@ static void Prj_GetParamWho (void)
|
||||||
|
|
||||||
/***** Request users? / Some users should have been selected? *****/
|
/***** Request users? / Some users should have been selected? *****/
|
||||||
if (Gbl.Prjs.Filter.Who == Usr_WHO_SELECTED)
|
if (Gbl.Prjs.Filter.Who == Usr_WHO_SELECTED)
|
||||||
{
|
|
||||||
Gbl.Prjs.Filter.ReqUsrs = Usr_GetHiddenParamRequestUsrs ();
|
Gbl.Prjs.Filter.ReqUsrs = Usr_GetHiddenParamRequestUsrs ();
|
||||||
Gbl.Prjs.Filter.SelUsrs = Usr_GetHiddenParamSelectedUsrs ();
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
Gbl.Prjs.Filter.ReqUsrs = false;
|
Gbl.Prjs.Filter.ReqUsrs = false;
|
||||||
Gbl.Prjs.Filter.SelUsrs = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -2645,10 +2654,11 @@ static void Prj_GetListProjects (void)
|
||||||
"projects.ModifTime DESC,"
|
"projects.ModifTime DESC,"
|
||||||
"projects.Title",
|
"projects.Title",
|
||||||
};
|
};
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res = NULL; // Initialized to avoid freeing when not assigned
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
unsigned NumUsrsInList;
|
unsigned NumUsrsInList;
|
||||||
long *LstSelectedUsrCods;
|
long *LstSelectedUsrCods;
|
||||||
|
char *SubQueryUsrs;
|
||||||
unsigned long NumRows = 0; // Initialized to avoid warning
|
unsigned long NumRows = 0; // Initialized to avoid warning
|
||||||
unsigned NumPrjsFromDB;
|
unsigned NumPrjsFromDB;
|
||||||
unsigned NumPrjsAfterFilter = 0;
|
unsigned NumPrjsAfterFilter = 0;
|
||||||
|
@ -2656,14 +2666,6 @@ static void Prj_GetListProjects (void)
|
||||||
struct Prj_Faults Faults;
|
struct Prj_Faults Faults;
|
||||||
long PrjCod;
|
long PrjCod;
|
||||||
|
|
||||||
/***** Get list of selected users' codes if not already got *****/
|
|
||||||
Usr_GetListsSelectedUsrsCods ();
|
|
||||||
NumUsrsInList = Usr_CountNumUsrsInListOfSelectedEncryptedUsrCods ();
|
|
||||||
|
|
||||||
/***** Get list of users selected to show their projects *****/
|
|
||||||
if (NumUsrsInList)
|
|
||||||
Usr_GetListSelectedUsrCods (NumUsrsInList,&LstSelectedUsrCods);
|
|
||||||
|
|
||||||
/***** Get list of projects from database *****/
|
/***** Get list of projects from database *****/
|
||||||
if (Gbl.Prjs.LstIsRead)
|
if (Gbl.Prjs.LstIsRead)
|
||||||
Prj_FreeListProjects ();
|
Prj_FreeListProjects ();
|
||||||
|
@ -2737,6 +2739,7 @@ static void Prj_GetListProjects (void)
|
||||||
switch (Gbl.Prjs.Filter.Who)
|
switch (Gbl.Prjs.Filter.Who)
|
||||||
{
|
{
|
||||||
case Usr_WHO_ME:
|
case Usr_WHO_ME:
|
||||||
|
/* Get list of projects */
|
||||||
switch (Gbl.Prjs.SelectedOrder)
|
switch (Gbl.Prjs.SelectedOrder)
|
||||||
{
|
{
|
||||||
case Prj_ORDER_START_TIME:
|
case Prj_ORDER_START_TIME:
|
||||||
|
@ -2749,6 +2752,7 @@ static void Prj_GetListProjects (void)
|
||||||
"%s%s%s"
|
"%s%s%s"
|
||||||
" AND projects.PrjCod=prj_usr.PrjCod"
|
" AND projects.PrjCod=prj_usr.PrjCod"
|
||||||
" AND prj_usr.UsrCod=%ld"
|
" AND prj_usr.UsrCod=%ld"
|
||||||
|
" GROUP BY projects.PrjCod" // To not repeat projects (DISTINCT can not be used)
|
||||||
" ORDER BY %s",
|
" ORDER BY %s",
|
||||||
Gbl.Hierarchy.Crs.CrsCod,
|
Gbl.Hierarchy.Crs.CrsCod,
|
||||||
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
||||||
|
@ -2764,6 +2768,7 @@ static void Prj_GetListProjects (void)
|
||||||
"%s%s%s"
|
"%s%s%s"
|
||||||
" AND projects.PrjCod=prj_usr.PrjCod"
|
" AND projects.PrjCod=prj_usr.PrjCod"
|
||||||
" AND prj_usr.UsrCod=%ld"
|
" AND prj_usr.UsrCod=%ld"
|
||||||
|
" GROUP BY projects.PrjCod" // To not repeat projects (DISTINCT can not be used)
|
||||||
" ORDER BY %s",
|
" ORDER BY %s",
|
||||||
Gbl.Hierarchy.Crs.CrsCod,
|
Gbl.Hierarchy.Crs.CrsCod,
|
||||||
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
||||||
|
@ -2773,42 +2778,71 @@ static void Prj_GetListProjects (void)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Usr_WHO_SELECTED:
|
case Usr_WHO_SELECTED:
|
||||||
switch (Gbl.Prjs.SelectedOrder)
|
/* Get list of selected users' codes if not already got */
|
||||||
|
// Usr_GetListsSelectedUsrsCods ();
|
||||||
|
NumUsrsInList = Usr_CountNumUsrsInListOfSelectedEncryptedUsrCods ();
|
||||||
|
|
||||||
|
if (NumUsrsInList)
|
||||||
{
|
{
|
||||||
case Prj_ORDER_START_TIME:
|
/* Get list of users selected to show their projects */
|
||||||
case Prj_ORDER_END_TIME:
|
Usr_GetListSelectedUsrCods (NumUsrsInList,&LstSelectedUsrCods);
|
||||||
case Prj_ORDER_TITLE:
|
|
||||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get projects",
|
/* Create subquery string */
|
||||||
"SELECT projects.PrjCod"
|
Usr_CreateSubqueryUsrCods (LstSelectedUsrCods,NumUsrsInList,
|
||||||
" FROM projects,prj_usr"
|
&SubQueryUsrs);
|
||||||
" WHERE projects.CrsCod=%ld"
|
|
||||||
"%s%s%s"
|
/* Get list of projects */
|
||||||
" AND projects.PrjCod=prj_usr.PrjCod"
|
switch (Gbl.Prjs.SelectedOrder)
|
||||||
" AND prj_usr.UsrCod=%ld"
|
{
|
||||||
" ORDER BY %s",
|
case Prj_ORDER_START_TIME:
|
||||||
Gbl.Hierarchy.Crs.CrsCod,
|
case Prj_ORDER_END_TIME:
|
||||||
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
case Prj_ORDER_TITLE:
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
NumRows = DB_QuerySELECT (&mysql_res,"can not get projects",
|
||||||
OrderBySubQuery[Gbl.Prjs.SelectedOrder]);
|
"SELECT projects.PrjCod"
|
||||||
break;
|
" FROM projects,prj_usr"
|
||||||
case Prj_ORDER_DEPARTMENT:
|
" WHERE projects.CrsCod=%ld"
|
||||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get projects",
|
"%s%s%s"
|
||||||
"SELECT projects.PrjCod"
|
" AND projects.PrjCod=prj_usr.PrjCod"
|
||||||
" FROM prj_usr,projects LEFT JOIN departments"
|
" AND prj_usr.UsrCod IN (%s)"
|
||||||
" ON projects.DptCod=departments.DptCod"
|
" GROUP BY projects.PrjCod" // To not repeat projects (DISTINCT can not be used)
|
||||||
" WHERE projects.CrsCod=%ld"
|
" ORDER BY %s",
|
||||||
"%s%s%s"
|
Gbl.Hierarchy.Crs.CrsCod,
|
||||||
" AND projects.PrjCod=prj_usr.PrjCod"
|
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
||||||
" AND prj_usr.UsrCod=%ld"
|
SubQueryUsrs,
|
||||||
" ORDER BY %s",
|
OrderBySubQuery[Gbl.Prjs.SelectedOrder]);
|
||||||
Gbl.Hierarchy.Crs.CrsCod,
|
break;
|
||||||
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
case Prj_ORDER_DEPARTMENT:
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
NumRows = DB_QuerySELECT (&mysql_res,"can not get projects",
|
||||||
OrderBySubQuery[Gbl.Prjs.SelectedOrder]);
|
"SELECT projects.PrjCod"
|
||||||
break;
|
" FROM prj_usr,projects LEFT JOIN departments"
|
||||||
|
" ON projects.DptCod=departments.DptCod"
|
||||||
|
" WHERE projects.CrsCod=%ld"
|
||||||
|
"%s%s%s"
|
||||||
|
" AND projects.PrjCod=prj_usr.PrjCod"
|
||||||
|
" AND prj_usr.UsrCod IN (%s)"
|
||||||
|
" GROUP BY projects.PrjCod" // To not repeat projects (DISTINCT can not be used)
|
||||||
|
" ORDER BY %s",
|
||||||
|
Gbl.Hierarchy.Crs.CrsCod,
|
||||||
|
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
||||||
|
SubQueryUsrs,
|
||||||
|
OrderBySubQuery[Gbl.Prjs.SelectedOrder]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Free memory for subquery string */
|
||||||
|
Usr_FreeSubqueryUsrCods (SubQueryUsrs);
|
||||||
|
|
||||||
|
/* Free list of user codes */
|
||||||
|
Usr_FreeListSelectedUsrCods (LstSelectedUsrCods);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
NumRows = 0;
|
||||||
|
|
||||||
|
/* Free memory used by list of selected users' codes */
|
||||||
|
// Usr_FreeListsSelectedEncryptedUsrsCods ();
|
||||||
break;
|
break;
|
||||||
case Usr_WHO_ALL:
|
case Usr_WHO_ALL:
|
||||||
|
/* Get list of projects */
|
||||||
switch (Gbl.Prjs.SelectedOrder)
|
switch (Gbl.Prjs.SelectedOrder)
|
||||||
{
|
{
|
||||||
case Prj_ORDER_START_TIME:
|
case Prj_ORDER_START_TIME:
|
||||||
|
@ -2891,13 +2925,6 @@ static void Prj_GetListProjects (void)
|
||||||
|
|
||||||
Gbl.Prjs.Num = NumPrjsAfterFilter;
|
Gbl.Prjs.Num = NumPrjsAfterFilter;
|
||||||
Gbl.Prjs.LstIsRead = true;
|
Gbl.Prjs.LstIsRead = true;
|
||||||
|
|
||||||
/***** Free list of user codes *****/
|
|
||||||
if (NumUsrsInList)
|
|
||||||
Usr_FreeListSelectedUsrCods (LstSelectedUsrCods);
|
|
||||||
|
|
||||||
/***** Free memory used by list of selected users' codes *****/
|
|
||||||
Usr_FreeListsSelectedEncryptedUsrsCods ();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -91,7 +91,6 @@ struct Prj_Filter
|
||||||
{
|
{
|
||||||
Usr_Who_t Who; // Show my / selected users' / all projects
|
Usr_Who_t Who; // Show my / selected users' / all projects
|
||||||
bool ReqUsrs; // Request selection of users to view their projects?
|
bool ReqUsrs; // Request selection of users to view their projects?
|
||||||
bool SelUsrs; // Are there selected users to view their projects?
|
|
||||||
unsigned Assign; // Show assigned / non assigned projects
|
unsigned Assign; // Show assigned / non assigned projects
|
||||||
unsigned Hidden; // Show hidden / visible projects
|
unsigned Hidden; // Show hidden / visible projects
|
||||||
unsigned Faulti; // Show faulty / faultless projects
|
unsigned Faulti; // Show faulty / faultless projects
|
||||||
|
|
|
@ -916,7 +916,7 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
|
||||||
HTM_SECTION_Begin (Sta_STAT_RESULTS_SECTION_ID);
|
HTM_SECTION_Begin (Sta_STAT_RESULTS_SECTION_ID);
|
||||||
|
|
||||||
/***** Check selection *****/
|
/***** Check selection *****/
|
||||||
if (!Usr_CountNumUsrsInListOfSelectedEncryptedUsrCods ()) // Error: there are no users selected
|
if (!Usr_CheckIfThereAreUsrsInListOfSelectedEncryptedUsrCods ()) // Error: there are no users selected
|
||||||
{
|
{
|
||||||
/* Write warning message, clean and abort */
|
/* Write warning message, clean and abort */
|
||||||
Ale_ShowAlert (Ale_WARNING,Txt_You_must_select_one_ore_more_users);
|
Ale_ShowAlert (Ale_WARNING,Txt_You_must_select_one_ore_more_users);
|
||||||
|
|
|
@ -7646,7 +7646,7 @@ void Tst_ShowUsrsTstResults (void)
|
||||||
Dat_GetIniEndDatesFromForm ();
|
Dat_GetIniEndDatesFromForm ();
|
||||||
|
|
||||||
/***** Check the number of users whose tests results will be shown *****/
|
/***** Check the number of users whose tests results will be shown *****/
|
||||||
if (Usr_CountNumUsrsInListOfSelectedEncryptedUsrCods ()) // If some users are selected...
|
if (Usr_CheckIfThereAreUsrsInListOfSelectedEncryptedUsrCods ()) // If some users are selected...
|
||||||
{
|
{
|
||||||
/***** Begin box and table *****/
|
/***** Begin box and table *****/
|
||||||
Box_StartBoxTable (NULL,Txt_Results,NULL,
|
Box_StartBoxTable (NULL,Txt_Results,NULL,
|
||||||
|
|
100
swad_user.c
100
swad_user.c
|
@ -5971,7 +5971,30 @@ bool Usr_FindEncryptedUsrCodsInListOfSelectedEncryptedUsrCods (const char *Encry
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************ Count number of valid users' IDs in encrypted list *************/
|
/******* Check if there are valid users in list of encrypted user codes ******/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
bool Usr_CheckIfThereAreUsrsInListOfSelectedEncryptedUsrCods (void)
|
||||||
|
{
|
||||||
|
const char *Ptr;
|
||||||
|
struct UsrData UsrDat;
|
||||||
|
|
||||||
|
/***** Loop over the list Gbl.Usrs.Selected.List[Rol_UNK]
|
||||||
|
to check if there are valid users *****/
|
||||||
|
Ptr = Gbl.Usrs.Selected.List[Rol_UNK];
|
||||||
|
while (*Ptr)
|
||||||
|
{
|
||||||
|
Par_GetNextStrUntilSeparParamMult (&Ptr,UsrDat.EncryptedUsrCod,
|
||||||
|
Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64);
|
||||||
|
Usr_GetUsrCodFromEncryptedUsrCod (&UsrDat);
|
||||||
|
if (UsrDat.UsrCod > 0)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/******** Count number of valid users in list of encrypted user codes ********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
unsigned Usr_CountNumUsrsInListOfSelectedEncryptedUsrCods (void)
|
unsigned Usr_CountNumUsrsInListOfSelectedEncryptedUsrCods (void)
|
||||||
|
@ -5980,7 +6003,8 @@ unsigned Usr_CountNumUsrsInListOfSelectedEncryptedUsrCods (void)
|
||||||
unsigned NumUsrs = 0;
|
unsigned NumUsrs = 0;
|
||||||
struct UsrData UsrDat;
|
struct UsrData UsrDat;
|
||||||
|
|
||||||
/***** Loop over the list Gbl.Usrs.Selected.List[Rol_UNK] to count the number of users *****/
|
/***** Loop over the list Gbl.Usrs.Selected.List[Rol_UNK]
|
||||||
|
to count the number of users *****/
|
||||||
Ptr = Gbl.Usrs.Selected.List[Rol_UNK];
|
Ptr = Gbl.Usrs.Selected.List[Rol_UNK];
|
||||||
while (*Ptr)
|
while (*Ptr)
|
||||||
{
|
{
|
||||||
|
@ -6081,42 +6105,39 @@ void Usr_FreeListSelectedUsrCods (long *LstSelectedUsrCods)
|
||||||
|
|
||||||
void Usr_CreateSubqueryUsrCods (long LstSelectedUsrCods[],
|
void Usr_CreateSubqueryUsrCods (long LstSelectedUsrCods[],
|
||||||
unsigned NumUsrsInList,
|
unsigned NumUsrsInList,
|
||||||
char **SubQueryAllUsrs)
|
char **SubQueryUsrs)
|
||||||
{
|
{
|
||||||
char SubQueryOneUsr[1 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
|
char SubQueryOneUsr[1 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
|
||||||
unsigned NumUsr;
|
unsigned NumUsr;
|
||||||
size_t MaxLength;
|
size_t MaxLength;
|
||||||
|
|
||||||
if (NumUsrsInList)
|
/***** Allocate space for subquery *****/
|
||||||
{
|
MaxLength = NumUsrsInList * (1 + Cns_MAX_DECIMAL_DIGITS_LONG);
|
||||||
/***** Allocate space for subquery *****/
|
if ((*SubQueryUsrs = (char *) malloc (MaxLength + 1)) == NULL)
|
||||||
MaxLength = NumUsrsInList * (1 + Cns_MAX_DECIMAL_DIGITS_LONG);
|
Lay_NotEnoughMemoryExit ();
|
||||||
if ((*SubQueryAllUsrs = (char *) malloc (MaxLength + 1)) == NULL)
|
(*SubQueryUsrs)[0] = '\0';
|
||||||
Lay_NotEnoughMemoryExit ();
|
|
||||||
(*SubQueryAllUsrs)[0] = '\0';
|
|
||||||
|
|
||||||
/***** Count number of students registered in an event in database *****/
|
/***** Build subquery *****/
|
||||||
for (NumUsr = 0;
|
for (NumUsr = 0;
|
||||||
NumUsr < NumUsrsInList;
|
NumUsr < NumUsrsInList;
|
||||||
NumUsr++)
|
NumUsr++)
|
||||||
if (NumUsr)
|
if (NumUsr)
|
||||||
{
|
{
|
||||||
snprintf (SubQueryOneUsr,sizeof (SubQueryOneUsr),
|
snprintf (SubQueryOneUsr,sizeof (SubQueryOneUsr),
|
||||||
",%ld",
|
",%ld",
|
||||||
LstSelectedUsrCods[NumUsr]);
|
LstSelectedUsrCods[NumUsr]);
|
||||||
Str_Concat (*SubQueryAllUsrs,SubQueryOneUsr,
|
Str_Concat (*SubQueryUsrs,SubQueryOneUsr,
|
||||||
MaxLength);
|
MaxLength);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
snprintf (*SubQueryAllUsrs,sizeof (SubQueryOneUsr),
|
snprintf (*SubQueryUsrs,sizeof (SubQueryOneUsr),
|
||||||
"%ld",
|
"%ld",
|
||||||
LstSelectedUsrCods[NumUsr]);
|
LstSelectedUsrCods[NumUsr]);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Usr_FreeSubqueryUsrCods (char *SubQueryAllUsrs)
|
void Usr_FreeSubqueryUsrCods (char *SubQueryUsrs)
|
||||||
{
|
{
|
||||||
free (SubQueryAllUsrs);
|
free (SubQueryUsrs);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -6283,7 +6304,6 @@ void Usr_PutFormToSelectUsrsToGoToAct (Act_Action_t NextAction,void (*FuncParams
|
||||||
|
|
||||||
/* Hidden parameters */
|
/* Hidden parameters */
|
||||||
Grp_PutParamsCodGrps ();
|
Grp_PutParamsCodGrps ();
|
||||||
Usr_PutHiddenParamSelectedUsrs ();
|
|
||||||
if (NextAction == ActAdmAsgWrkCrs)
|
if (NextAction == ActAdmAsgWrkCrs)
|
||||||
{
|
{
|
||||||
Gbl.FileBrowser.FullTree = true; // By default, show all files
|
Gbl.FileBrowser.FullTree = true; // By default, show all files
|
||||||
|
@ -6337,7 +6357,7 @@ void Usr_GetSelectedUsrsAndGoToAct (void (*FuncWhenUsrsSelected) (),
|
||||||
Usr_GetListsSelectedUsrsCods ();
|
Usr_GetListsSelectedUsrsCods ();
|
||||||
|
|
||||||
/***** Check number of users *****/
|
/***** Check number of users *****/
|
||||||
if (Usr_CountNumUsrsInListOfSelectedEncryptedUsrCods ()) // If some users are selected...
|
if (Usr_CheckIfThereAreUsrsInListOfSelectedEncryptedUsrCods ()) // If some users are selected...
|
||||||
FuncWhenUsrsSelected ();
|
FuncWhenUsrsSelected ();
|
||||||
else // If no users are selected...
|
else // If no users are selected...
|
||||||
{
|
{
|
||||||
|
@ -8453,8 +8473,8 @@ void Usr_DoActionOnSeveralUsrs1 (void)
|
||||||
/* Get list of selected users */
|
/* Get list of selected users */
|
||||||
Usr_GetListsSelectedUsrsCods ();
|
Usr_GetListsSelectedUsrsCods ();
|
||||||
|
|
||||||
/* Check the number of users */
|
/* Check if there are selected users */
|
||||||
if (!Usr_CountNumUsrsInListOfSelectedEncryptedUsrCods ())// If no users selected...
|
if (!Usr_CheckIfThereAreUsrsInListOfSelectedEncryptedUsrCods ())// If no users selected...
|
||||||
{ // ...write warning notice
|
{ // ...write warning notice
|
||||||
Ale_CreateAlert (Ale_WARNING,NULL,
|
Ale_CreateAlert (Ale_WARNING,NULL,
|
||||||
Txt_You_must_select_one_ore_more_users);
|
Txt_You_must_select_one_ore_more_users);
|
||||||
|
@ -9889,17 +9909,3 @@ bool Usr_GetHiddenParamRequestUsrs (void)
|
||||||
{
|
{
|
||||||
return Par_GetParToBool ("RequestUsrs");
|
return Par_GetParToBool ("RequestUsrs");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/**** Hidden param to indicate that some users should have been selected *****/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Usr_PutHiddenParamSelectedUsrs (void)
|
|
||||||
{
|
|
||||||
Par_PutHiddenParamChar ("SelectedUsrs",'Y');
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Usr_GetHiddenParamSelectedUsrs (void)
|
|
||||||
{
|
|
||||||
return Par_GetParToBool ("SelectedUsrs");
|
|
||||||
}
|
|
||||||
|
|
|
@ -434,6 +434,7 @@ void Usr_GetListsSelectedUsrsCods (void);
|
||||||
bool Usr_GetListMsgRecipientsWrittenExplicitelyBySender (bool WriteErrorMsgs);
|
bool Usr_GetListMsgRecipientsWrittenExplicitelyBySender (bool WriteErrorMsgs);
|
||||||
|
|
||||||
bool Usr_FindEncryptedUsrCodsInListOfSelectedEncryptedUsrCods (const char *EncryptedUsrCodToFind);
|
bool Usr_FindEncryptedUsrCodsInListOfSelectedEncryptedUsrCods (const char *EncryptedUsrCodToFind);
|
||||||
|
bool Usr_CheckIfThereAreUsrsInListOfSelectedEncryptedUsrCods (void);
|
||||||
unsigned Usr_CountNumUsrsInListOfSelectedEncryptedUsrCods (void);
|
unsigned Usr_CountNumUsrsInListOfSelectedEncryptedUsrCods (void);
|
||||||
void Usr_FreeListsSelectedEncryptedUsrsCods (void);
|
void Usr_FreeListsSelectedEncryptedUsrsCods (void);
|
||||||
|
|
||||||
|
@ -442,8 +443,8 @@ void Usr_FreeListSelectedUsrCods (long *LstSelectedUsrCods);
|
||||||
|
|
||||||
void Usr_CreateSubqueryUsrCods (long LstSelectedUsrCods[],
|
void Usr_CreateSubqueryUsrCods (long LstSelectedUsrCods[],
|
||||||
unsigned NumUsrsInList,
|
unsigned NumUsrsInList,
|
||||||
char **SubQueryAllUsrs);
|
char **SubQueryUsrs);
|
||||||
void Usr_FreeSubqueryUsrCods (char *SubQueryAllUsrs);
|
void Usr_FreeSubqueryUsrCods (char *SubQueryUsrs);
|
||||||
|
|
||||||
void Usr_FreeListOtherRecipients (void);
|
void Usr_FreeListOtherRecipients (void);
|
||||||
|
|
||||||
|
@ -513,7 +514,5 @@ void Usr_PutHiddenParamWho (Usr_Who_t Who);
|
||||||
Usr_Who_t Usr_GetHiddenParamWho (void);
|
Usr_Who_t Usr_GetHiddenParamWho (void);
|
||||||
void Usr_PutHiddenParamRequestUsrs (void);
|
void Usr_PutHiddenParamRequestUsrs (void);
|
||||||
bool Usr_GetHiddenParamRequestUsrs (void);
|
bool Usr_GetHiddenParamRequestUsrs (void);
|
||||||
void Usr_PutHiddenParamSelectedUsrs (void);
|
|
||||||
bool Usr_GetHiddenParamSelectedUsrs (void);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue