mirror of https://github.com/acanas/swad-core.git
Version 22.57: Oct 29, 2022 Code refactoring in search.
This commit is contained in:
parent
272fed1a69
commit
aa43a66552
10
swad_API.c
10
swad_API.c
|
@ -1634,6 +1634,7 @@ int swad__findUsers (struct soap *soap,
|
||||||
struct swad__getUsersOutput *getUsersOut) // output
|
struct swad__getUsersOutput *getUsersOut) // output
|
||||||
{
|
{
|
||||||
int ReturnCode;
|
int ReturnCode;
|
||||||
|
struct Sch_Search Search;
|
||||||
char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1];
|
char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1];
|
||||||
Rol_Role_t Role;
|
Rol_Role_t Role;
|
||||||
bool FilterTooShort = false;
|
bool FilterTooShort = false;
|
||||||
|
@ -1689,13 +1690,14 @@ int swad__findUsers (struct soap *soap,
|
||||||
Role = API_SvcRole_to_RolRole[userRole];
|
Role = API_SvcRole_to_RolRole[userRole];
|
||||||
|
|
||||||
/***** Query users beloging to course or group from database *****/
|
/***** Query users beloging to course or group from database *****/
|
||||||
Str_Copy (Gbl.Search.Str,filter,sizeof (Gbl.Search.Str) - 1);
|
Search.WhatToSearch = Sch_SEARCH_USERS;
|
||||||
|
Str_Copy (Search.Str,filter,sizeof (Search.Str) - 1);
|
||||||
|
|
||||||
if (Gbl.Search.Str[0]) // Search some users
|
if (Search.Str[0]) // Search some users
|
||||||
{
|
{
|
||||||
Gbl.Scope.Current = (Gbl.Hierarchy.Level == HieLvl_CRS) ? HieLvl_CRS :
|
Gbl.Scope.Current = (Gbl.Hierarchy.Level == HieLvl_CRS) ? HieLvl_CRS :
|
||||||
HieLvl_SYS;
|
HieLvl_SYS;
|
||||||
if (Sch_BuildSearchQuery (SearchQuery,
|
if (Sch_BuildSearchQuery (SearchQuery,&Search,
|
||||||
"CONCAT_WS(' ',FirstName,Surname1,Surname2)",
|
"CONCAT_WS(' ',FirstName,Surname1,Surname2)",
|
||||||
NULL,NULL))
|
NULL,NULL))
|
||||||
{
|
{
|
||||||
|
|
|
@ -605,7 +605,7 @@ TODO: Fix bug: error al enviar un mensaje a dos recipientes, error on duplicate
|
||||||
|
|
||||||
TODO: Attach pdf files in multimedia.
|
TODO: Attach pdf files in multimedia.
|
||||||
*/
|
*/
|
||||||
#define Log_PLATFORM_VERSION "SWAD 22.56 (2022-10-29)"
|
#define Log_PLATFORM_VERSION "SWAD 22.57 (2022-10-29)"
|
||||||
#define CSS_FILE "swad22.49.4.css"
|
#define CSS_FILE "swad22.49.4.css"
|
||||||
#define JS_FILE "swad22.49.js"
|
#define JS_FILE "swad22.49.js"
|
||||||
/*
|
/*
|
||||||
|
@ -616,6 +616,7 @@ Que al subir un fichero por defecto est
|
||||||
Al subir cosas para los grupos, en documentos, resltar más los grupos porque no son conscientes...
|
Al subir cosas para los grupos, en documentos, resltar más los grupos porque no son conscientes...
|
||||||
Exportar listas en CSV.
|
Exportar listas en CSV.
|
||||||
|
|
||||||
|
Version 22.57: Oct 29, 2022 Code refactoring in search. (333762 lines)
|
||||||
Version 22.56: Oct 29, 2022 Code refactoring in user record. (333696 lines)
|
Version 22.56: Oct 29, 2022 Code refactoring in user record. (333696 lines)
|
||||||
Version 22.55: Oct 28, 2022 Code refactoring in degree types. (333694 lines)
|
Version 22.55: Oct 28, 2022 Code refactoring in degree types. (333694 lines)
|
||||||
Version 22.54: Oct 28, 2022 Code refactoring and bug fixing in institutional links. (333614 lines)
|
Version 22.54: Oct 28, 2022 Code refactoring and bug fixing in institutional links. (333614 lines)
|
||||||
|
|
|
@ -221,10 +221,6 @@ void Gbl_InitializeGlobals (void)
|
||||||
Gbl.Crs.Records.LstFields.Num = 0;
|
Gbl.Crs.Records.LstFields.Num = 0;
|
||||||
Gbl.Crs.Records.LstFields.NestedCalls = 0;
|
Gbl.Crs.Records.LstFields.NestedCalls = 0;
|
||||||
|
|
||||||
Gbl.Search.WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
|
|
||||||
Gbl.Search.Str[0] = '\0';
|
|
||||||
Gbl.Search.LogSearch = false;
|
|
||||||
|
|
||||||
Gbl.Usrs.Listing.RecsUsrs = Rec_RECORD_USERS_UNKNOWN;
|
Gbl.Usrs.Listing.RecsUsrs = Rec_RECORD_USERS_UNKNOWN;
|
||||||
Gbl.Usrs.Listing.RecsPerPag = Rec_DEF_RECORDS_PER_PAGE;
|
Gbl.Usrs.Listing.RecsPerPag = Rec_DEF_RECORDS_PER_PAGE;
|
||||||
Gbl.Usrs.Listing.WithPhotos = Usr_LIST_WITH_PHOTOS_DEF;
|
Gbl.Usrs.Listing.WithPhotos = Usr_LIST_WITH_PHOTOS_DEF;
|
||||||
|
|
|
@ -100,12 +100,14 @@ struct Globals
|
||||||
struct Crs_ListCourses Crss; // List of courses in current degree
|
struct Crs_ListCourses Crss; // List of courses in current degree
|
||||||
struct Crs_Course Crs; // Current course. Aditional info about course is stored in Gbl.Crs.
|
struct Crs_Course Crs; // Current course. Aditional info about course is stored in Gbl.Crs.
|
||||||
} Hierarchy;
|
} Hierarchy;
|
||||||
|
/*
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
Sch_WhatToSearch_t WhatToSearch;
|
Sch_WhatToSearch_t WhatToSearch;
|
||||||
char Str[Sch_MAX_BYTES_STRING_TO_FIND + 1];
|
char Str[Sch_MAX_BYTES_STRING_TO_FIND + 1];
|
||||||
bool LogSearch;
|
bool LogSearch;
|
||||||
} Search;
|
} Search;
|
||||||
|
*/
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
bool IsWebService; // Must generate HTML output (IsWebService==false) or SOAP-XML output (IsWebService==true)?
|
bool IsWebService; // Must generate HTML output (IsWebService==false) or SOAP-XML output (IsWebService==true)?
|
||||||
|
|
30
swad_log.c
30
swad_log.c
|
@ -53,6 +53,32 @@
|
||||||
|
|
||||||
extern struct Globals Gbl;
|
extern struct Globals Gbl;
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/************************* Private global variables **************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static bool Log_Search = false; // Log search in database?
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/***************************** Private prototypes ****************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static bool Log_GetLogSearch (void);
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/******************** Set/get logging search in database *********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Log_SetLogSearch (bool Search)
|
||||||
|
{
|
||||||
|
Log_Search = Search;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool Log_GetLogSearch (void)
|
||||||
|
{
|
||||||
|
return Log_Search;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/**************************** Log access in database *************************/
|
/**************************** Log access in database *************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -92,8 +118,8 @@ void Log_LogAccess (const char *Comments)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Log search string */
|
/* Log search string */
|
||||||
if (Gbl.Search.LogSearch && Gbl.Search.Str[0])
|
if (Log_GetLogSearch ())
|
||||||
Log_DB_LogSearchString (LogCod);
|
Log_DB_LogSearchString (LogCod,Sch_GetSearch ());
|
||||||
|
|
||||||
if (Gbl.WebService.IsWebService)
|
if (Gbl.WebService.IsWebService)
|
||||||
/* Log web service plugin and API function */
|
/* Log web service plugin and API function */
|
||||||
|
|
|
@ -33,6 +33,8 @@
|
||||||
/***************************** Public prototypes *****************************/
|
/***************************** Public prototypes *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Log_SetLogSearch (bool Search);
|
||||||
|
|
||||||
void Log_LogAccess (const char *Comments);
|
void Log_LogAccess (const char *Comments);
|
||||||
|
|
||||||
void Log_PutLinkToLastClicks (void);
|
void Log_PutLinkToLastClicks (void);
|
||||||
|
|
|
@ -114,15 +114,14 @@ void Log_DB_LogComments (long LogCod,const char *CommentsDB)
|
||||||
/****************************** Log search string ****************************/
|
/****************************** Log search string ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Log_DB_LogSearchString (long LogCod)
|
void Log_DB_LogSearchString (long LogCod,const struct Sch_Search *Search)
|
||||||
{
|
{
|
||||||
DB_QueryINSERT ("can not log access (search)",
|
DB_QueryINSERT ("can not log access (search)",
|
||||||
"INSERT INTO log_search"
|
"INSERT INTO log_search"
|
||||||
" (LogCod,SearchStr)"
|
" (LogCod,SearchStr)"
|
||||||
" VALUES"
|
" VALUES"
|
||||||
" (%ld,'%s')",
|
" (%ld,'%s')",
|
||||||
LogCod,
|
LogCod,Search->Str);
|
||||||
Gbl.Search.Str);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
long Log_DB_LogAccessInHistoricalLog (long ActCod,Rol_Role_t RoleToStore);
|
long Log_DB_LogAccessInHistoricalLog (long ActCod,Rol_Role_t RoleToStore);
|
||||||
void Log_DB_LogAccessInRecentLog (long LogCod,long ActCod,Rol_Role_t RoleToStore);
|
void Log_DB_LogAccessInRecentLog (long LogCod,long ActCod,Rol_Role_t RoleToStore);
|
||||||
void Log_DB_LogComments (long LogCod,const char *CommentsDB);
|
void Log_DB_LogComments (long LogCod,const char *CommentsDB);
|
||||||
void Log_DB_LogSearchString (long LogCod);
|
void Log_DB_LogSearchString (long LogCod,const struct Sch_Search *Search);
|
||||||
void Log_DB_LogAPI (long LogCod);
|
void Log_DB_LogAPI (long LogCod);
|
||||||
void Log_DB_LogBanner (long LogCod,long BanCodClicked);
|
void Log_DB_LogBanner (long LogCod,long BanCodClicked);
|
||||||
|
|
||||||
|
|
|
@ -89,7 +89,7 @@ extern struct Globals Gbl;
|
||||||
/************************* Private global variables **************************/
|
/************************* Private global variables **************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
struct
|
static struct
|
||||||
{
|
{
|
||||||
struct Usr_Data *UsrDat;
|
struct Usr_Data *UsrDat;
|
||||||
Rec_SharedRecordViewType_t TypeOfView;
|
Rec_SharedRecordViewType_t TypeOfView;
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
#include "swad_HTML.h"
|
#include "swad_HTML.h"
|
||||||
#include "swad_institution_database.h"
|
#include "swad_institution_database.h"
|
||||||
#include "swad_layout.h"
|
#include "swad_layout.h"
|
||||||
|
#include "swad_log.h"
|
||||||
#include "swad_parameter.h"
|
#include "swad_parameter.h"
|
||||||
#include "swad_session_database.h"
|
#include "swad_session_database.h"
|
||||||
#include "swad_user.h"
|
#include "swad_user.h"
|
||||||
|
@ -58,13 +59,22 @@
|
||||||
|
|
||||||
extern struct Globals Gbl;
|
extern struct Globals Gbl;
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/************************* Private global variables **************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static struct Sch_Search Sch_Search =
|
||||||
|
{
|
||||||
|
.WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT,
|
||||||
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************************** Private prototypes ****************************/
|
/***************************** Private prototypes ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Sch_PutFormToSearchWithWhatToSearchAndScope (HieLvl_Level_t DefaultScope);
|
static void Sch_PutFormToSearchWithWhatToSearchAndScope (HieLvl_Level_t DefaultScope);
|
||||||
static bool Sch_CheckIfIHavePermissionToSearch (Sch_WhatToSearch_t WhatToSearch);
|
static bool Sch_CheckIfIHavePermissionToSearch (Sch_WhatToSearch_t WhatToSearch);
|
||||||
static void Sch_GetParamSearch (void);
|
static void Sch_GetParamSearchStr (void);
|
||||||
static void Sch_SearchInDB (void);
|
static void Sch_SearchInDB (void);
|
||||||
|
|
||||||
static unsigned Sch_SearchCountrsInDB (const char *RangeQuery);
|
static unsigned Sch_SearchCountrsInDB (const char *RangeQuery);
|
||||||
|
@ -81,6 +91,16 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery);
|
||||||
|
|
||||||
static void Sch_SaveLastSearchIntoSession (void);
|
static void Sch_SaveLastSearchIntoSession (void);
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/*********************** Get pointer to global search ************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
struct Sch_Search *Sch_GetSearch (void)
|
||||||
|
{
|
||||||
|
return &Sch_Search;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*********************** Request search in system tab ************************/
|
/*********************** Request search in system tab ************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -132,6 +152,7 @@ static void Sch_PutFormToSearchWithWhatToSearchAndScope (HieLvl_Level_t DefaultS
|
||||||
};
|
};
|
||||||
Sch_WhatToSearch_t WhatToSearch;
|
Sch_WhatToSearch_t WhatToSearch;
|
||||||
unsigned WTS;
|
unsigned WTS;
|
||||||
|
const struct Sch_Search *Search = Sch_GetSearch ();
|
||||||
|
|
||||||
/***** Begin container *****/
|
/***** Begin container *****/
|
||||||
HTM_DIV_Begin ("class=\"CM\"");
|
HTM_DIV_Begin ("class=\"CM\"");
|
||||||
|
@ -178,7 +199,7 @@ static void Sch_PutFormToSearchWithWhatToSearchAndScope (HieLvl_Level_t DefaultS
|
||||||
{
|
{
|
||||||
WTS = (unsigned) WhatToSearch;
|
WTS = (unsigned) WhatToSearch;
|
||||||
HTM_OPTION (HTM_Type_UNSIGNED,&WTS,
|
HTM_OPTION (HTM_Type_UNSIGNED,&WTS,
|
||||||
Gbl.Search.WhatToSearch == WhatToSearch,false,
|
Search->WhatToSearch == WhatToSearch,false,
|
||||||
"%s",*Titles[WhatToSearch]);
|
"%s",*Titles[WhatToSearch]);
|
||||||
}
|
}
|
||||||
HTM_SELECT_End ();
|
HTM_SELECT_End ();
|
||||||
|
@ -252,10 +273,11 @@ void Sch_PutFormToSearchInPageTopHeading (void)
|
||||||
void Sch_PutInputStringToSearch (const char *IdInputText)
|
void Sch_PutInputStringToSearch (const char *IdInputText)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Search;
|
extern const char *Txt_Search;
|
||||||
|
const struct Sch_Search *Search = Sch_GetSearch ();
|
||||||
|
|
||||||
/***** String to find *****/
|
/***** String to find *****/
|
||||||
// Input field not required, because it can be hidden (display:none)
|
// Input field not required, because it can be hidden (display:none)
|
||||||
HTM_INPUT_SEARCH ("Search",Sch_MAX_CHARS_STRING_TO_FIND,Gbl.Search.Str,
|
HTM_INPUT_SEARCH ("Search",Sch_MAX_CHARS_STRING_TO_FIND,Search->Str,
|
||||||
"id=\"%s\" size=\"18\" class=\"INPUT_%s\""
|
"id=\"%s\" size=\"18\" class=\"INPUT_%s\""
|
||||||
" placeholder=\"%s…\"",
|
" placeholder=\"%s…\"",
|
||||||
IdInputText,
|
IdInputText,
|
||||||
|
@ -279,6 +301,7 @@ void Sch_PutMagnifyingGlassButton (Ico_Color_t Color)
|
||||||
void Sch_GetParamWhatToSearch (void)
|
void Sch_GetParamWhatToSearch (void)
|
||||||
{
|
{
|
||||||
Sch_WhatToSearch_t WhatToSearch;
|
Sch_WhatToSearch_t WhatToSearch;
|
||||||
|
struct Sch_Search *Search = Sch_GetSearch ();
|
||||||
|
|
||||||
/***** Get what to search from form *****/
|
/***** Get what to search from form *****/
|
||||||
WhatToSearch = (Sch_WhatToSearch_t)
|
WhatToSearch = (Sch_WhatToSearch_t)
|
||||||
|
@ -290,17 +313,19 @@ void Sch_GetParamWhatToSearch (void)
|
||||||
/***** If parameter WhatToSearch is not present,
|
/***** If parameter WhatToSearch is not present,
|
||||||
use parameter from session *****/
|
use parameter from session *****/
|
||||||
if (WhatToSearch != Sch_SEARCH_UNKNOWN)
|
if (WhatToSearch != Sch_SEARCH_UNKNOWN)
|
||||||
Gbl.Search.WhatToSearch = WhatToSearch;
|
Search->WhatToSearch = WhatToSearch;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*********************** Get string from search form *************************/
|
/*********************** Get string from search form *************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Sch_GetParamSearch (void)
|
static void Sch_GetParamSearchStr (void)
|
||||||
{
|
{
|
||||||
|
struct Sch_Search *Search = Sch_GetSearch ();
|
||||||
|
|
||||||
/***** Get string to search *****/
|
/***** Get string to search *****/
|
||||||
Par_GetParToText ("Search",Gbl.Search.Str,Sch_MAX_BYTES_STRING_TO_FIND);
|
Par_GetParToText ("Search",Search->Str,Sch_MAX_BYTES_STRING_TO_FIND);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -313,7 +338,7 @@ void Sch_GetParamsSearch (void)
|
||||||
Sch_GetParamWhatToSearch ();
|
Sch_GetParamWhatToSearch ();
|
||||||
|
|
||||||
/***** Get search string *****/
|
/***** Get search string *****/
|
||||||
Sch_GetParamSearch ();
|
Sch_GetParamSearchStr ();
|
||||||
|
|
||||||
/***** Save my search in order to show it in current session *****/
|
/***** Save my search in order to show it in current session *****/
|
||||||
if (Gbl.Usrs.Me.Logged)
|
if (Gbl.Usrs.Me.Logged)
|
||||||
|
@ -326,8 +351,13 @@ void Sch_GetParamsSearch (void)
|
||||||
|
|
||||||
void Sch_SysSearch (void)
|
void Sch_SysSearch (void)
|
||||||
{
|
{
|
||||||
if (Gbl.Search.Str[0])
|
const struct Sch_Search *Search = Sch_GetSearch ();
|
||||||
|
|
||||||
|
if (Search->Str[0])
|
||||||
{
|
{
|
||||||
|
/***** Activate logging search in database *****/
|
||||||
|
Log_SetLogSearch (true);
|
||||||
|
|
||||||
/***** Show search form again *****/
|
/***** Show search form again *****/
|
||||||
Sch_PutFormToSearchWithWhatToSearchAndScope (HieLvl_SYS);
|
Sch_PutFormToSearchWithWhatToSearchAndScope (HieLvl_SYS);
|
||||||
|
|
||||||
|
@ -348,8 +378,7 @@ static void Sch_SearchInDB (void)
|
||||||
extern const char *Txt_No_results;
|
extern const char *Txt_No_results;
|
||||||
char RangeQuery[256];
|
char RangeQuery[256];
|
||||||
unsigned NumResults = 0; // Initialized to avoid warning
|
unsigned NumResults = 0; // Initialized to avoid warning
|
||||||
|
struct Sch_Search *Search = Sch_GetSearch ();
|
||||||
Gbl.Search.LogSearch = true;
|
|
||||||
|
|
||||||
/***** Select courses in all degrees or in current degree *****/
|
/***** Select courses in all degrees or in current degree *****/
|
||||||
switch (Gbl.Scope.Current)
|
switch (Gbl.Scope.Current)
|
||||||
|
@ -381,9 +410,9 @@ static void Sch_SearchInDB (void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Gbl.Search.WhatToSearch == Sch_SEARCH_UNKNOWN)
|
if (Search->WhatToSearch == Sch_SEARCH_UNKNOWN)
|
||||||
Gbl.Search.WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
|
Search->WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
|
||||||
switch (Gbl.Search.WhatToSearch)
|
switch (Search->WhatToSearch)
|
||||||
{
|
{
|
||||||
case Sch_SEARCH_ALL:
|
case Sch_SEARCH_ALL:
|
||||||
NumResults = Sch_SearchCountrsInDB (RangeQuery);
|
NumResults = Sch_SearchCountrsInDB (RangeQuery);
|
||||||
|
@ -467,7 +496,8 @@ static unsigned Sch_SearchCountrsInDB (const char *RangeQuery)
|
||||||
/***** Split countries string into words *****/
|
/***** Split countries string into words *****/
|
||||||
snprintf (FieldName,sizeof (FieldName),"Name_%s",
|
snprintf (FieldName,sizeof (FieldName),"Name_%s",
|
||||||
Lan_STR_LANG_ID[Gbl.Prefs.Language]);
|
Lan_STR_LANG_ID[Gbl.Prefs.Language]);
|
||||||
if (Sch_BuildSearchQuery (SearchQuery,FieldName,NULL,NULL))
|
if (Sch_BuildSearchQuery (SearchQuery,Sch_GetSearch (),
|
||||||
|
FieldName,NULL,NULL))
|
||||||
{
|
{
|
||||||
/***** Query database and list countries found *****/
|
/***** Query database and list countries found *****/
|
||||||
NumCtys = Cty_DB_SearchCtys (&mysql_res,SearchQuery,RangeQuery);
|
NumCtys = Cty_DB_SearchCtys (&mysql_res,SearchQuery,RangeQuery);
|
||||||
|
@ -498,7 +528,8 @@ static unsigned Sch_SearchInstitsInDB (const char *RangeQuery)
|
||||||
/***** Check user's permission *****/
|
/***** Check user's permission *****/
|
||||||
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_INSTITS))
|
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_INSTITS))
|
||||||
/***** Split institutions string into words *****/
|
/***** Split institutions string into words *****/
|
||||||
if (Sch_BuildSearchQuery (SearchQuery,"ins_instits.FullName",NULL,NULL))
|
if (Sch_BuildSearchQuery (SearchQuery,Sch_GetSearch (),
|
||||||
|
"ins_instits.FullName",NULL,NULL))
|
||||||
{
|
{
|
||||||
/***** Query database and list institutions found *****/
|
/***** Query database and list institutions found *****/
|
||||||
NumInss = Ins_DB_SearchInss (&mysql_res,SearchQuery,RangeQuery);
|
NumInss = Ins_DB_SearchInss (&mysql_res,SearchQuery,RangeQuery);
|
||||||
|
@ -526,7 +557,8 @@ static unsigned Sch_SearchCentersInDB (const char *RangeQuery)
|
||||||
/***** Check user's permission *****/
|
/***** Check user's permission *****/
|
||||||
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_CENTERS))
|
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_CENTERS))
|
||||||
/***** Split center string into words *****/
|
/***** Split center string into words *****/
|
||||||
if (Sch_BuildSearchQuery (SearchQuery,"ctr_centers.FullName",NULL,NULL))
|
if (Sch_BuildSearchQuery (SearchQuery,Sch_GetSearch (),
|
||||||
|
"ctr_centers.FullName",NULL,NULL))
|
||||||
{
|
{
|
||||||
/***** Query database and list centers found *****/
|
/***** Query database and list centers found *****/
|
||||||
NumCtrs = Ctr_DB_SearchCtrs (&mysql_res,SearchQuery,RangeQuery);
|
NumCtrs = Ctr_DB_SearchCtrs (&mysql_res,SearchQuery,RangeQuery);
|
||||||
|
@ -553,7 +585,8 @@ static unsigned Sch_SearchDegreesInDB (const char *RangeQuery)
|
||||||
/***** Check user's permission *****/
|
/***** Check user's permission *****/
|
||||||
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_DEGREES))
|
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_DEGREES))
|
||||||
/***** Split degree string into words *****/
|
/***** Split degree string into words *****/
|
||||||
if (Sch_BuildSearchQuery (SearchQuery,"deg_degrees.FullName",NULL,NULL))
|
if (Sch_BuildSearchQuery (SearchQuery,Sch_GetSearch (),
|
||||||
|
"deg_degrees.FullName",NULL,NULL))
|
||||||
{
|
{
|
||||||
/***** Query database and list degrees found *****/
|
/***** Query database and list degrees found *****/
|
||||||
NumDegs = Deg_DB_SearchDegs (&mysql_res,SearchQuery,RangeQuery);
|
NumDegs = Deg_DB_SearchDegs (&mysql_res,SearchQuery,RangeQuery);
|
||||||
|
@ -578,7 +611,8 @@ static unsigned Sch_SearchCoursesInDB (const char *RangeQuery)
|
||||||
/***** Check user's permission *****/
|
/***** Check user's permission *****/
|
||||||
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_COURSES))
|
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_COURSES))
|
||||||
/***** Split course string into words *****/
|
/***** Split course string into words *****/
|
||||||
if (Sch_BuildSearchQuery (SearchQuery,"crs_courses.FullName",NULL,NULL))
|
if (Sch_BuildSearchQuery (SearchQuery,Sch_GetSearch (),
|
||||||
|
"crs_courses.FullName",NULL,NULL))
|
||||||
{
|
{
|
||||||
/***** Query database and list courses found *****/
|
/***** Query database and list courses found *****/
|
||||||
NumCrss = Crs_DB_SearchCrss (&mysql_res,SearchQuery,RangeQuery);
|
NumCrss = Crs_DB_SearchCrss (&mysql_res,SearchQuery,RangeQuery);
|
||||||
|
@ -601,7 +635,7 @@ static unsigned Sch_SearchUsrsInDB (Rol_Role_t Role)
|
||||||
char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1];
|
char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1];
|
||||||
|
|
||||||
/***** Split user string into words *****/
|
/***** Split user string into words *****/
|
||||||
if (Sch_BuildSearchQuery (SearchQuery,
|
if (Sch_BuildSearchQuery (SearchQuery,Sch_GetSearch (),
|
||||||
"CONCAT_WS(' ',FirstName,Surname1,Surname2)",
|
"CONCAT_WS(' ',FirstName,Surname1,Surname2)",
|
||||||
NULL,NULL))
|
NULL,NULL))
|
||||||
/***** Query database and list users found *****/
|
/***** Query database and list users found *****/
|
||||||
|
@ -633,7 +667,8 @@ static unsigned Sch_SearchOpenDocumentsInDB (const char *RangeQuery)
|
||||||
/***** Check user's permission *****/
|
/***** Check user's permission *****/
|
||||||
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_OPEN_DOCUMENTS))
|
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_OPEN_DOCUMENTS))
|
||||||
/***** Split document string into words *****/
|
/***** Split document string into words *****/
|
||||||
if (Sch_BuildSearchQuery (SearchQuery,"SUBSTRING_INDEX(brw_files.Path,'/',-1)",
|
if (Sch_BuildSearchQuery (SearchQuery,Sch_GetSearch (),
|
||||||
|
"SUBSTRING_INDEX(brw_files.Path,'/',-1)",
|
||||||
"_latin1 "," COLLATE latin1_general_ci"))
|
"_latin1 "," COLLATE latin1_general_ci"))
|
||||||
{
|
{
|
||||||
/***** Query database *****/
|
/***** Query database *****/
|
||||||
|
@ -665,7 +700,8 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
|
||||||
/***** Check user's permission *****/
|
/***** Check user's permission *****/
|
||||||
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_DOCUM_IN_MY_COURSES))
|
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_DOCUM_IN_MY_COURSES))
|
||||||
/***** Split document string into words *****/
|
/***** Split document string into words *****/
|
||||||
if (Sch_BuildSearchQuery (SearchQuery,"SUBSTRING_INDEX(brw_files.Path,'/',-1)",
|
if (Sch_BuildSearchQuery (SearchQuery,Sch_GetSearch (),
|
||||||
|
"SUBSTRING_INDEX(brw_files.Path,'/',-1)",
|
||||||
"_latin1 "," COLLATE latin1_general_ci"))
|
"_latin1 "," COLLATE latin1_general_ci"))
|
||||||
{
|
{
|
||||||
/***** Query database *****/
|
/***** Query database *****/
|
||||||
|
@ -697,7 +733,8 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
|
||||||
/***** Check user's permission *****/
|
/***** Check user's permission *****/
|
||||||
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_MY_DOCUMENTS))
|
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_MY_DOCUMENTS))
|
||||||
/***** Split document string into words *****/
|
/***** Split document string into words *****/
|
||||||
if (Sch_BuildSearchQuery (SearchQuery,"SUBSTRING_INDEX(brw_files.Path,'/',-1)",
|
if (Sch_BuildSearchQuery (SearchQuery,Sch_GetSearch (),
|
||||||
|
"SUBSTRING_INDEX(brw_files.Path,'/',-1)",
|
||||||
"_latin1 "," COLLATE latin1_general_ci"))
|
"_latin1 "," COLLATE latin1_general_ci"))
|
||||||
{
|
{
|
||||||
/***** Query database *****/
|
/***** Query database *****/
|
||||||
|
@ -721,6 +758,7 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
|
||||||
// Returns false when no valid search query
|
// Returns false when no valid search query
|
||||||
|
|
||||||
bool Sch_BuildSearchQuery (char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1],
|
bool Sch_BuildSearchQuery (char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1],
|
||||||
|
const struct Sch_Search *Search,
|
||||||
const char *FieldName,
|
const char *FieldName,
|
||||||
const char *CharSet,const char *Collate)
|
const char *CharSet,const char *Collate)
|
||||||
{
|
{
|
||||||
|
@ -733,10 +771,10 @@ bool Sch_BuildSearchQuery (char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1],
|
||||||
char SearchWords[Sch_MAX_WORDS_IN_SEARCH][Sch_MAX_BYTES_SEARCH_WORD + 1];
|
char SearchWords[Sch_MAX_WORDS_IN_SEARCH][Sch_MAX_BYTES_SEARCH_WORD + 1];
|
||||||
bool SearchWordIsValid = true;
|
bool SearchWordIsValid = true;
|
||||||
|
|
||||||
if (Gbl.Search.Str[0])
|
if (Search->Str[0])
|
||||||
{
|
{
|
||||||
SearchQuery[0] = '\0';
|
SearchQuery[0] = '\0';
|
||||||
Ptr = Gbl.Search.Str;
|
Ptr = Search->Str;
|
||||||
for (NumWords = 0;
|
for (NumWords = 0;
|
||||||
NumWords < Sch_MAX_WORDS_IN_SEARCH && *Ptr;
|
NumWords < Sch_MAX_WORDS_IN_SEARCH && *Ptr;
|
||||||
NumWords++)
|
NumWords++)
|
||||||
|
@ -745,7 +783,7 @@ bool Sch_BuildSearchQuery (char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1],
|
||||||
Str_GetNextStringUntilSpace (&Ptr,SearchWords[NumWords],Sch_MAX_BYTES_SEARCH_WORD);
|
Str_GetNextStringUntilSpace (&Ptr,SearchWords[NumWords],Sch_MAX_BYTES_SEARCH_WORD);
|
||||||
|
|
||||||
/* Is this word valid? */
|
/* Is this word valid? */
|
||||||
switch (Gbl.Search.WhatToSearch)
|
switch (Search->WhatToSearch)
|
||||||
{
|
{
|
||||||
case Sch_SEARCH_OPEN_DOCUMENTS:
|
case Sch_SEARCH_OPEN_DOCUMENTS:
|
||||||
case Sch_SEARCH_DOCUM_IN_MY_COURSES:
|
case Sch_SEARCH_DOCUM_IN_MY_COURSES:
|
||||||
|
@ -807,18 +845,21 @@ bool Sch_BuildSearchQuery (char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1],
|
||||||
|
|
||||||
static void Sch_SaveLastSearchIntoSession (void)
|
static void Sch_SaveLastSearchIntoSession (void)
|
||||||
{
|
{
|
||||||
|
struct Sch_Search *Search;
|
||||||
|
|
||||||
if (Gbl.Usrs.Me.Logged)
|
if (Gbl.Usrs.Me.Logged)
|
||||||
{
|
{
|
||||||
if (Gbl.Search.WhatToSearch == Sch_SEARCH_UNKNOWN)
|
Search = Sch_GetSearch ();
|
||||||
Gbl.Search.WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
|
if (Search->WhatToSearch == Sch_SEARCH_UNKNOWN)
|
||||||
|
Search->WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
|
||||||
|
|
||||||
/***** Save last search in session *****/
|
/***** Save last search in session *****/
|
||||||
Ses_DB_SaveLastSearchIntoSession ();
|
Ses_DB_SaveLastSearchIntoSession (Search);
|
||||||
|
|
||||||
/***** Update my last type of search *****/
|
/***** Update my last type of search *****/
|
||||||
// WhatToSearch is stored in usr_last for next time I log in
|
// WhatToSearch is stored in usr_last for next time I log in
|
||||||
// In other existing sessions distinct to this, WhatToSearch will remain unchanged
|
// In other existing sessions distinct to this, WhatToSearch will remain unchanged
|
||||||
Usr_DB_UpdateMyLastWhatToSearch ();
|
Usr_DB_UpdateMyLastWhatToSearch (Search->WhatToSearch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -67,10 +67,18 @@ typedef enum
|
||||||
} Sch_WhatToSearch_t;
|
} Sch_WhatToSearch_t;
|
||||||
#define Sch_WHAT_TO_SEARCH_DEFAULT Sch_SEARCH_ALL
|
#define Sch_WHAT_TO_SEARCH_DEFAULT Sch_SEARCH_ALL
|
||||||
|
|
||||||
|
struct Sch_Search
|
||||||
|
{
|
||||||
|
Sch_WhatToSearch_t WhatToSearch;
|
||||||
|
char Str[Sch_MAX_BYTES_STRING_TO_FIND + 1];
|
||||||
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/****************************** Public prototypes ****************************/
|
/****************************** Public prototypes ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
struct Sch_Search *Sch_GetSearch (void);
|
||||||
|
|
||||||
void Sch_ReqSysSearch (void);
|
void Sch_ReqSysSearch (void);
|
||||||
|
|
||||||
void Sch_PutFormToSearchInPageTopHeading (void);
|
void Sch_PutFormToSearchInPageTopHeading (void);
|
||||||
|
@ -82,6 +90,7 @@ void Sch_GetParamsSearch (void);
|
||||||
void Sch_SysSearch (void);
|
void Sch_SysSearch (void);
|
||||||
|
|
||||||
bool Sch_BuildSearchQuery (char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1],
|
bool Sch_BuildSearchQuery (char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1],
|
||||||
|
const struct Sch_Search *Search,
|
||||||
const char *FieldName,
|
const char *FieldName,
|
||||||
const char *CharSet,const char *Collate);
|
const char *CharSet,const char *Collate);
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,8 @@ void Ses_GetNumSessions (void)
|
||||||
|
|
||||||
void Ses_CreateSession (void)
|
void Ses_CreateSession (void)
|
||||||
{
|
{
|
||||||
|
struct Sch_Search *Search = Sch_GetSearch ();
|
||||||
|
|
||||||
/***** Create a unique name for the session *****/
|
/***** Create a unique name for the session *****/
|
||||||
Str_Copy (Gbl.Session.Id,Cry_GetUniqueNameEncrypted (),sizeof (Gbl.Session.Id) - 1);
|
Str_Copy (Gbl.Session.Id,Cry_GetUniqueNameEncrypted (),sizeof (Gbl.Session.Id) - 1);
|
||||||
|
|
||||||
|
@ -82,7 +84,9 @@ void Ses_CreateSession (void)
|
||||||
Err_ShowErrorAndExit ("Can not create session.");
|
Err_ShowErrorAndExit ("Can not create session.");
|
||||||
|
|
||||||
/***** Add session to database *****/
|
/***** Add session to database *****/
|
||||||
Ses_DB_InsertSession ();
|
if (Search->WhatToSearch == Sch_SEARCH_UNKNOWN)
|
||||||
|
Search->WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
|
||||||
|
Ses_DB_InsertSession (Search->WhatToSearch);
|
||||||
|
|
||||||
/***** Update time and course in connected list *****/
|
/***** Update time and course in connected list *****/
|
||||||
Con_DB_UpdateMeInConnectedList ();
|
Con_DB_UpdateMeInConnectedList ();
|
||||||
|
@ -155,6 +159,7 @@ bool Ses_GetSessionData (void)
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
unsigned UnsignedNum;
|
unsigned UnsignedNum;
|
||||||
bool Result = false;
|
bool Result = false;
|
||||||
|
struct Sch_Search *Search;
|
||||||
|
|
||||||
/***** Check if the session existed in the database *****/
|
/***** Check if the session existed in the database *****/
|
||||||
if (Ses_DB_GetSessionData (&mysql_res))
|
if (Ses_DB_GetSessionData (&mysql_res))
|
||||||
|
@ -186,16 +191,18 @@ bool Ses_GetSessionData (void)
|
||||||
/***** Get last search *****/
|
/***** Get last search *****/
|
||||||
if (Gbl.Action.Act != ActLogOut) // When closing session, last search will not be needed
|
if (Gbl.Action.Act != ActLogOut) // When closing session, last search will not be needed
|
||||||
{
|
{
|
||||||
|
Search = Sch_GetSearch ();
|
||||||
|
|
||||||
/* Get what to search (row[8]) */
|
/* Get what to search (row[8]) */
|
||||||
Gbl.Search.WhatToSearch = Sch_SEARCH_UNKNOWN;
|
Search->WhatToSearch = Sch_SEARCH_UNKNOWN;
|
||||||
if (sscanf (row[8],"%u",&UnsignedNum) == 1)
|
if (sscanf (row[8],"%u",&UnsignedNum) == 1)
|
||||||
if (UnsignedNum < Sch_NUM_WHAT_TO_SEARCH)
|
if (UnsignedNum < Sch_NUM_WHAT_TO_SEARCH)
|
||||||
Gbl.Search.WhatToSearch = (Sch_WhatToSearch_t) UnsignedNum;
|
Search->WhatToSearch = (Sch_WhatToSearch_t) UnsignedNum;
|
||||||
if (Gbl.Search.WhatToSearch == Sch_SEARCH_UNKNOWN)
|
if (Search->WhatToSearch == Sch_SEARCH_UNKNOWN)
|
||||||
Gbl.Search.WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
|
Search->WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
|
||||||
|
|
||||||
/* Get search string (row[9]) */
|
/* Get search string (row[9]) */
|
||||||
Str_Copy (Gbl.Search.Str,row[9],sizeof (Gbl.Search.Str) - 1);
|
Str_Copy (Search->Str,row[9],sizeof (Search->Str) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result = true;
|
Result = true;
|
||||||
|
|
|
@ -40,11 +40,8 @@ extern struct Globals Gbl;
|
||||||
/******************** Insert new session in the database *********************/
|
/******************** Insert new session in the database *********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Ses_DB_InsertSession (void)
|
void Ses_DB_InsertSession (Sch_WhatToSearch_t WhatToSearch)
|
||||||
{
|
{
|
||||||
if (Gbl.Search.WhatToSearch == Sch_SEARCH_UNKNOWN)
|
|
||||||
Gbl.Search.WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
|
|
||||||
|
|
||||||
DB_QueryINSERT ("can not create session",
|
DB_QueryINSERT ("can not create session",
|
||||||
"INSERT INTO ses_sessions"
|
"INSERT INTO ses_sessions"
|
||||||
" (SessionId,UsrCod,Password,Role,"
|
" (SessionId,UsrCod,Password,Role,"
|
||||||
|
@ -61,7 +58,7 @@ void Ses_DB_InsertSession (void)
|
||||||
Gbl.Hierarchy.Ctr.CtrCod,
|
Gbl.Hierarchy.Ctr.CtrCod,
|
||||||
Gbl.Hierarchy.Deg.DegCod,
|
Gbl.Hierarchy.Deg.DegCod,
|
||||||
Gbl.Hierarchy.Crs.CrsCod,
|
Gbl.Hierarchy.Crs.CrsCod,
|
||||||
Gbl.Search.WhatToSearch);
|
WhatToSearch);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -98,15 +95,15 @@ void Ses_DB_UpdateSession (void)
|
||||||
/********************** Save last search into session ************************/
|
/********************** Save last search into session ************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Ses_DB_SaveLastSearchIntoSession (void)
|
void Ses_DB_SaveLastSearchIntoSession (const struct Sch_Search *Search)
|
||||||
{
|
{
|
||||||
DB_QueryUPDATE ("can not update last search in session",
|
DB_QueryUPDATE ("can not update last search in session",
|
||||||
"UPDATE ses_sessions"
|
"UPDATE ses_sessions"
|
||||||
" SET WhatToSearch=%u,"
|
" SET WhatToSearch=%u,"
|
||||||
"SearchStr='%s'"
|
"SearchStr='%s'"
|
||||||
" WHERE SessionId='%s'",
|
" WHERE SessionId='%s'",
|
||||||
(unsigned) Gbl.Search.WhatToSearch,
|
(unsigned) Search->WhatToSearch,
|
||||||
Gbl.Search.Str,
|
Search->Str,
|
||||||
Gbl.Session.Id);
|
Gbl.Session.Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,9 +33,9 @@
|
||||||
/***************************** Public prototypes *****************************/
|
/***************************** Public prototypes *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
//---------------------------------- Sessions ---------------------------------
|
//---------------------------------- Sessions ---------------------------------
|
||||||
void Ses_DB_InsertSession (void);
|
void Ses_DB_InsertSession (Sch_WhatToSearch_t WhatToSearch);
|
||||||
void Ses_DB_UpdateSession (void);
|
void Ses_DB_UpdateSession (void);
|
||||||
void Ses_DB_SaveLastSearchIntoSession (void);
|
void Ses_DB_SaveLastSearchIntoSession (const struct Sch_Search *Search);
|
||||||
void Ses_DB_SaveLastPageMsgIntoSession (Pag_WhatPaginate_t WhatPaginate,unsigned NumPage);
|
void Ses_DB_SaveLastPageMsgIntoSession (Pag_WhatPaginate_t WhatPaginate,unsigned NumPage);
|
||||||
void Ses_DB_UpdateSessionLastRefresh (void);
|
void Ses_DB_UpdateSessionLastRefresh (void);
|
||||||
|
|
||||||
|
|
|
@ -1947,6 +1947,7 @@ static void Usr_ShowAlertThereAreMoreThanOneUsr (void)
|
||||||
static void Usr_SetMyPrefsAndRoles (void)
|
static void Usr_SetMyPrefsAndRoles (void)
|
||||||
{
|
{
|
||||||
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
|
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
|
||||||
|
struct Sch_Search *Search;
|
||||||
bool GetRoleAndActionFromLastData;
|
bool GetRoleAndActionFromLastData;
|
||||||
Act_Action_t LastSuperAction;
|
Act_Action_t LastSuperAction;
|
||||||
bool JustAfterLogin = Gbl.Action.Act == ActLogIn ||
|
bool JustAfterLogin = Gbl.Action.Act == ActLogIn ||
|
||||||
|
@ -1981,7 +1982,8 @@ static void Usr_SetMyPrefsAndRoles (void)
|
||||||
{
|
{
|
||||||
/***** WhatToSearch is stored in session,
|
/***** WhatToSearch is stored in session,
|
||||||
but in login it is got from user's last data *****/
|
but in login it is got from user's last data *****/
|
||||||
Gbl.Search.WhatToSearch = Gbl.Usrs.Me.UsrLast.WhatToSearch;
|
Search = Sch_GetSearch ();
|
||||||
|
Search->WhatToSearch = Gbl.Usrs.Me.UsrLast.WhatToSearch;
|
||||||
|
|
||||||
/***** Location in hierarchy and role are stored in session,
|
/***** Location in hierarchy and role are stored in session,
|
||||||
but in login the are got from user's last data *****/
|
but in login the are got from user's last data *****/
|
||||||
|
|
|
@ -1492,7 +1492,7 @@ void Usr_DB_UpdateMyLastData (void)
|
||||||
/********************** Update my last type of search ************************/
|
/********************** Update my last type of search ************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Usr_DB_UpdateMyLastWhatToSearch (void)
|
void Usr_DB_UpdateMyLastWhatToSearch (Sch_WhatToSearch_t WhatToSearch)
|
||||||
{
|
{
|
||||||
// WhatToSearch is stored in usr_last for next time I log in
|
// WhatToSearch is stored in usr_last for next time I log in
|
||||||
// In other existing sessions distinct to this, WhatToSearch will remain unchanged
|
// In other existing sessions distinct to this, WhatToSearch will remain unchanged
|
||||||
|
@ -1500,7 +1500,7 @@ void Usr_DB_UpdateMyLastWhatToSearch (void)
|
||||||
"UPDATE usr_last"
|
"UPDATE usr_last"
|
||||||
" SET WhatToSearch=%u"
|
" SET WhatToSearch=%u"
|
||||||
" WHERE UsrCod=%ld",
|
" WHERE UsrCod=%ld",
|
||||||
(unsigned) Gbl.Search.WhatToSearch,
|
(unsigned) WhatToSearch,
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@ void Usr_DB_RemoveUsrData (long UsrCod);
|
||||||
//------------------------------ User's last data -----------------------------
|
//------------------------------ User's last data -----------------------------
|
||||||
void Usr_DB_InsertMyLastData (void);
|
void Usr_DB_InsertMyLastData (void);
|
||||||
void Usr_DB_UpdateMyLastData (void);
|
void Usr_DB_UpdateMyLastData (void);
|
||||||
void Usr_DB_UpdateMyLastWhatToSearch (void);
|
void Usr_DB_UpdateMyLastWhatToSearch (Sch_WhatToSearch_t WhatToSearch);
|
||||||
|
|
||||||
bool Usr_DB_CheckMyLastData (void);
|
bool Usr_DB_CheckMyLastData (void);
|
||||||
unsigned Usr_DB_GetMyLastData (MYSQL_RES **mysql_res);
|
unsigned Usr_DB_GetMyLastData (MYSQL_RES **mysql_res);
|
||||||
|
|
Loading…
Reference in New Issue