Version19.67

This commit is contained in:
Antonio Cañas Vargas 2019-11-14 02:29:18 +01:00
parent 21f7aec522
commit 8298f13fb6
9 changed files with 148 additions and 118 deletions

View File

@ -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;

View File

@ -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)

View File

@ -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,

View File

@ -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 ();
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -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

View File

@ -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);

View File

@ -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,

View File

@ -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");
}

View File

@ -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