From b1fbfa2f5f2fb0034191fb54e6c5953a53b661bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Wed, 31 Oct 2018 00:53:39 +0100 Subject: [PATCH] Version 18.11.5 --- swad_changelog.h | 4 +- swad_file_browser.c | 30 ++- swad_file_browser.h | 3 +- swad_search.c | 553 +++++++++++++++++++++++--------------------- 4 files changed, 300 insertions(+), 290 deletions(-) diff --git a/swad_changelog.h b/swad_changelog.h index 74cd90ef8..db6e1121a 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -355,11 +355,11 @@ En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 18.11.5 (2018-10-30)" +#define Log_PLATFORM_VERSION "SWAD 18.11.5 (2018-10-31)" #define CSS_FILE "swad18.4.css" #define JS_FILE "swad17.17.1.js" /* - Version 18.11.5: Oct 30, 2018 Joining building and performing query into one function. (? lines) + Version 18.11.5: Oct 31, 2018 Joining building and performing query into one function. (235619 lines) Version 18.11.4: Oct 30, 2018 Joining building and performing query into one function. (235593 lines) Version 18.11.3: Oct 30, 2018 Joining building and performing query into one function. (235553 lines) Version 18.11.2: Oct 30, 2018 Joining building and performing query into one function. (235531 lines) diff --git a/swad_file_browser.c b/swad_file_browser.c index 037fa9dc6..c28a612b1 100644 --- a/swad_file_browser.c +++ b/swad_file_browser.c @@ -1718,7 +1718,7 @@ static bool Brw_CheckIfICanModifyPrjDocFileOrFolder (void); static bool Brw_CheckIfICanModifyPrjAssFileOrFolder (void); static long Brw_GetPublisherOfSubtree (void); -static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row); +static void Brw_WriteRowDocData (unsigned long *NumDocsNotHidden,MYSQL_ROW row); static void Brw_PutLinkToAskRemOldFiles (void); static void Brw_RemoveOldFilesInBrowser (unsigned Months,struct Brw_NumObjects *Removed); @@ -12493,9 +12493,9 @@ void Brw_GetSummaryAndContentOfFile (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1], /*****************************************************************************/ /**************************** List documents found ***************************/ /*****************************************************************************/ -// Returns the number of documents found -unsigned Brw_ListDocsFound (const char *TitleSingular,const char *TitlePlural) +void Brw_ListDocsFound (MYSQL_RES **mysql_res,unsigned long NumDocs, + const char *TitleSingular,const char *TitlePlural) { extern const char *Txt_Institution; extern const char *Txt_Centre; @@ -12505,20 +12505,18 @@ unsigned Brw_ListDocsFound (const char *TitleSingular,const char *TitlePlural) extern const char *Txt_Document; extern const char *Txt_hidden_document; extern const char *Txt_hidden_documents; - MYSQL_RES *mysql_res; MYSQL_ROW row; - unsigned NumDocs; - unsigned NumDoc; - unsigned NumDocsNotHidden = 0; - unsigned NumDocsHidden; + unsigned long NumDoc; + unsigned long NumDocsNotHidden = 0; + unsigned long NumDocsHidden; /***** Query database *****/ - if ((NumDocs = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get files"))) + if (NumDocs) { /***** Start box and table *****/ /* Number of documents found */ snprintf (Gbl.Title,sizeof (Gbl.Title), - "%u %s", + "%lu %s", NumDocs,(NumDocs == 1) ? TitleSingular : TitlePlural); Box_StartBoxTable (NULL,Gbl.Title,NULL, @@ -12559,7 +12557,7 @@ unsigned Brw_ListDocsFound (const char *TitleSingular,const char *TitlePlural) NumDoc++) { /* Get next course */ - row = mysql_fetch_row (mysql_res); + row = mysql_fetch_row (*mysql_res); /* Write data of this course */ Brw_WriteRowDocData (&NumDocsNotHidden,row); @@ -12574,7 +12572,7 @@ unsigned Brw_ListDocsFound (const char *TitleSingular,const char *TitlePlural) if (NumDocsHidden == 1) fprintf (Gbl.F.Out,"1 %s",Txt_hidden_document); else - fprintf (Gbl.F.Out,"%u %s",NumDocsHidden,Txt_hidden_documents); + fprintf (Gbl.F.Out,"%lu %s",NumDocsHidden,Txt_hidden_documents); fprintf (Gbl.F.Out,")" "" ""); @@ -12584,16 +12582,14 @@ unsigned Brw_ListDocsFound (const char *TitleSingular,const char *TitlePlural) } /***** Free structure that stores the query result *****/ - DB_FreeMySQLResult (&mysql_res); - - return NumDocs; + DB_FreeMySQLResult (mysql_res); } /*****************************************************************************/ /************ Write the data of a document (result of a query) ***************/ /*****************************************************************************/ -static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row) +static void Brw_WriteRowDocData (unsigned long *NumDocsNotHidden,MYSQL_ROW row) { extern const char *Txt_Documents_area; extern const char *Txt_Teachers_files_area; @@ -12666,7 +12662,7 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row) /***** Write number of document in this search *****/ fprintf (Gbl.F.Out,"" "" - "%u" + "%lu" "", BgColor,++(*NumDocsNotHidden)); diff --git a/swad_file_browser.h b/swad_file_browser.h index 69b0de0fd..5e49eedc0 100644 --- a/swad_file_browser.h +++ b/swad_file_browser.h @@ -259,7 +259,8 @@ void Brw_GetSummaryAndContentOfFile (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1], char **ContentStr, long FilCod,bool GetContent); -unsigned Brw_ListDocsFound (const char *TitleSingular,const char *TitlePlural); +void Brw_ListDocsFound (MYSQL_RES **mysql_res,unsigned long NumDocs, + const char *TitleSingular,const char *TitlePlural); void Brw_AskRemoveOldFiles (void); void Brw_RemoveOldFilesBriefcase (void); diff --git a/swad_search.c b/swad_search.c index 166713234..478965fce 100644 --- a/swad_search.c +++ b/swad_search.c @@ -830,6 +830,8 @@ static unsigned Sch_SearchOpenDocumentsInDB (const char *RangeQuery) extern const char *Txt_open_document; extern const char *Txt_open_documents; char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1]; + MYSQL_RES *mysql_res; + unsigned long NumDocs; /***** Check user's permission *****/ if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_OPEN_DOCUMENTS)) @@ -837,95 +839,97 @@ static unsigned Sch_SearchOpenDocumentsInDB (const char *RangeQuery) if (Sch_BuildSearchQuery (SearchQuery,"SUBSTRING_INDEX(files.Path,'/',-1)", "_latin1 "," COLLATE latin1_general_ci")) { - /***** Build the query *****/ - DB_BuildQuery ("SELECT * FROM " - "(" - "SELECT files.FilCod," // Institution - "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," - "institutions.InsCod,institutions.ShortName AS InsShortName," - "-1 AS CtrCod,'' AS CtrShortName," - "-1 AS DegCod,'' AS DegShortName," - "-1 AS CrsCod,'' AS CrsShortName," - "-1 AS GrpCod" - " FROM files,courses,degrees,centres,institutions,countries" - " WHERE files.Public='Y' AND %s" - " AND files.FileBrowser IN (%u,%u)" - " AND files.Cod=institutions.InsCod" - " AND institutions.CtyCod=countries.CtyCod" - "%s" - " UNION " - "SELECT files.FilCod," // Centre - "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," - "institutions.InsCod,institutions.ShortName AS InsShortName," - "centres.CtrCod,centres.ShortName AS CtrShortName," - "-1 AS DegCod,'' AS DegShortName," - "-1 AS CrsCod,'' AS CrsShortName," - "-1 AS GrpCod" - " FROM files,courses,degrees,centres,institutions,countries" - " WHERE files.Public='Y' AND %s" - " AND files.FileBrowser IN (%u,%u)" - " AND files.Cod=centres.CtrCod" - " AND centres.InsCod=institutions.InsCod" - " AND institutions.CtyCod=countries.CtyCod" - "%s" - " UNION " - "SELECT files.FilCod," // Degree - "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," - "institutions.InsCod,institutions.ShortName AS InsShortName," - "centres.CtrCod,centres.ShortName AS CtrShortName," - "degrees.DegCod,degrees.ShortName AS DegShortName," - "-1,'' AS CrsShortName," - "-1" - " FROM files,courses,degrees,centres,institutions,countries" - " WHERE files.Public='Y' AND %s" - " AND files.FileBrowser IN (%u,%u)" - " AND files.Cod=degrees.DegCod" - " AND degrees.CtrCod=centres.CtrCod" - " AND centres.InsCod=institutions.InsCod" - " AND institutions.CtyCod=countries.CtyCod" - "%s" - " UNION " - "SELECT files.FilCod," // Course - "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," - "institutions.InsCod,institutions.ShortName AS InsShortName," - "centres.CtrCod,centres.ShortName AS CtrShortName," - "degrees.DegCod,degrees.ShortName AS DegShortName," - "courses.CrsCod,courses.ShortName AS CrsShortName," - "-1" - " FROM files,courses,degrees,centres,institutions,countries" - " WHERE files.Public='Y' AND %s" - " AND files.FileBrowser IN (%u,%u)" - " AND files.Cod=courses.CrsCod" - " AND courses.DegCod=degrees.DegCod" - " AND degrees.CtrCod=centres.CtrCod" - " AND centres.InsCod=institutions.InsCod" - " AND institutions.CtyCod=countries.CtyCod" - "%s" - ") AS selected_files" - " WHERE PathFromRoot<>''" - " ORDER BY InsShortName,CtrShortName,DegShortName,CrsShortName,PathFromRoot", - SearchQuery, - (unsigned) Brw_ADMI_DOC_INS, - (unsigned) Brw_ADMI_SHR_INS, - RangeQuery, - SearchQuery, - (unsigned) Brw_ADMI_DOC_CTR, - (unsigned) Brw_ADMI_SHR_CTR, - RangeQuery, - SearchQuery, - (unsigned) Brw_ADMI_DOC_DEG, - (unsigned) Brw_ADMI_SHR_DEG, - RangeQuery, - SearchQuery, - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - RangeQuery); + /***** Query database *****/ + NumDocs = DB_QuerySELECT (&mysql_res,"can not get files", + "SELECT * FROM " + "(" + "SELECT files.FilCod," // Institution + "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," + "institutions.InsCod,institutions.ShortName AS InsShortName," + "-1 AS CtrCod,'' AS CtrShortName," + "-1 AS DegCod,'' AS DegShortName," + "-1 AS CrsCod,'' AS CrsShortName," + "-1 AS GrpCod" + " FROM files,courses,degrees,centres,institutions,countries" + " WHERE files.Public='Y' AND %s" + " AND files.FileBrowser IN (%u,%u)" + " AND files.Cod=institutions.InsCod" + " AND institutions.CtyCod=countries.CtyCod" + "%s" + " UNION " + "SELECT files.FilCod," // Centre + "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," + "institutions.InsCod,institutions.ShortName AS InsShortName," + "centres.CtrCod,centres.ShortName AS CtrShortName," + "-1 AS DegCod,'' AS DegShortName," + "-1 AS CrsCod,'' AS CrsShortName," + "-1 AS GrpCod" + " FROM files,courses,degrees,centres,institutions,countries" + " WHERE files.Public='Y' AND %s" + " AND files.FileBrowser IN (%u,%u)" + " AND files.Cod=centres.CtrCod" + " AND centres.InsCod=institutions.InsCod" + " AND institutions.CtyCod=countries.CtyCod" + "%s" + " UNION " + "SELECT files.FilCod," // Degree + "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," + "institutions.InsCod,institutions.ShortName AS InsShortName," + "centres.CtrCod,centres.ShortName AS CtrShortName," + "degrees.DegCod,degrees.ShortName AS DegShortName," + "-1,'' AS CrsShortName," + "-1" + " FROM files,courses,degrees,centres,institutions,countries" + " WHERE files.Public='Y' AND %s" + " AND files.FileBrowser IN (%u,%u)" + " AND files.Cod=degrees.DegCod" + " AND degrees.CtrCod=centres.CtrCod" + " AND centres.InsCod=institutions.InsCod" + " AND institutions.CtyCod=countries.CtyCod" + "%s" + " UNION " + "SELECT files.FilCod," // Course + "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," + "institutions.InsCod,institutions.ShortName AS InsShortName," + "centres.CtrCod,centres.ShortName AS CtrShortName," + "degrees.DegCod,degrees.ShortName AS DegShortName," + "courses.CrsCod,courses.ShortName AS CrsShortName," + "-1" + " FROM files,courses,degrees,centres,institutions,countries" + " WHERE files.Public='Y' AND %s" + " AND files.FileBrowser IN (%u,%u)" + " AND files.Cod=courses.CrsCod" + " AND courses.DegCod=degrees.DegCod" + " AND degrees.CtrCod=centres.CtrCod" + " AND centres.InsCod=institutions.InsCod" + " AND institutions.CtyCod=countries.CtyCod" + "%s" + ") AS selected_files" + " WHERE PathFromRoot<>''" + " ORDER BY InsShortName,CtrShortName,DegShortName,CrsShortName,PathFromRoot", + SearchQuery, + (unsigned) Brw_ADMI_DOC_INS, + (unsigned) Brw_ADMI_SHR_INS, + RangeQuery, + SearchQuery, + (unsigned) Brw_ADMI_DOC_CTR, + (unsigned) Brw_ADMI_SHR_CTR, + RangeQuery, + SearchQuery, + (unsigned) Brw_ADMI_DOC_DEG, + (unsigned) Brw_ADMI_SHR_DEG, + RangeQuery, + SearchQuery, + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + RangeQuery); - /***** Query database and list documents found *****/ - /* if (Gbl.Usrs.Me.Roles.LoggedRole == Rol_SYS_ADM) - Lay_ShowAlert (Lay_INFO,Query); */ - return Brw_ListDocsFound (Txt_open_document, - Txt_open_documents); + /***** List documents found *****/ + Brw_ListDocsFound (&mysql_res,NumDocs, + Txt_open_document, + Txt_open_documents); + + return (unsigned) NumDocs; } return 0; @@ -940,7 +944,8 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery) extern const char *Txt_document_in_my_courses; extern const char *Txt_documents_in_my_courses; char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1]; - unsigned NumDocs; + MYSQL_RES *mysql_res; + unsigned long NumDocs; /***** Check user's permission *****/ if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_DOCUM_IN_MY_COURSES)) @@ -984,68 +989,70 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery) DB_Query_new ("can not create temporary table"); /***** Build the query *****/ - DB_BuildQuery ("SELECT * FROM " - "(" - "SELECT files.FilCod," - "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," - "institutions.InsCod,institutions.ShortName AS InsShortName," - "centres.CtrCod,centres.ShortName AS CtrShortName," - "degrees.DegCod,degrees.ShortName AS DegShortName," - "courses.CrsCod,courses.ShortName AS CrsShortName," - "-1 AS GrpCod" - " FROM files,courses,degrees,centres,institutions,countries" - " WHERE files.FilCod IN (SELECT FilCod FROM my_files_crs) AND %s" - " AND files.FileBrowser IN (%u,%u,%u,%u)" - " AND files.Cod=courses.CrsCod" - " AND courses.DegCod=degrees.DegCod" - " AND degrees.CtrCod=centres.CtrCod" - " AND centres.InsCod=institutions.InsCod" - " AND institutions.CtyCod=countries.CtyCod" - "%s" - " UNION " - "SELECT files.FilCod," - "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," - "institutions.InsCod,institutions.ShortName AS InsShortName," - "centres.CtrCod,centres.ShortName AS CtrShortName," - "degrees.DegCod,degrees.ShortName AS DegShortName," - "courses.CrsCod,courses.ShortName AS CrsShortName," - "crs_grp.GrpCod" - " FROM files,crs_grp,crs_grp_types,courses,degrees,centres,institutions,countries" - " WHERE files.FilCod IN (SELECT FilCod FROM my_files_grp) AND %s" - " AND files.FileBrowser IN (%u,%u,%u,%u)" - " AND files.Cod=crs_grp.GrpCod" - " AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod" - " AND crs_grp_types.CrsCod=courses.CrsCod" - " AND courses.DegCod=degrees.DegCod" - " AND degrees.CtrCod=centres.CtrCod" - " AND centres.InsCod=institutions.InsCod" - " AND institutions.CtyCod=countries.CtyCod" - "%s" - ") AS selected_files" - " WHERE PathFromRoot<>''" - " ORDER BY InsShortName,CtrShortName,DegShortName,CrsShortName,PathFromRoot", - SearchQuery, - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_TCH_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - (unsigned) Brw_ADMI_MRK_CRS, - RangeQuery, - SearchQuery, - (unsigned) Brw_ADMI_DOC_GRP, - (unsigned) Brw_ADMI_TCH_GRP, - (unsigned) Brw_ADMI_SHR_GRP, - (unsigned) Brw_ADMI_MRK_GRP, - RangeQuery); + NumDocs = DB_QuerySELECT (&mysql_res,"can not get files", + "SELECT * FROM " + "(" + "SELECT files.FilCod," + "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," + "institutions.InsCod,institutions.ShortName AS InsShortName," + "centres.CtrCod,centres.ShortName AS CtrShortName," + "degrees.DegCod,degrees.ShortName AS DegShortName," + "courses.CrsCod,courses.ShortName AS CrsShortName," + "-1 AS GrpCod" + " FROM files,courses,degrees,centres,institutions,countries" + " WHERE files.FilCod IN (SELECT FilCod FROM my_files_crs) AND %s" + " AND files.FileBrowser IN (%u,%u,%u,%u)" + " AND files.Cod=courses.CrsCod" + " AND courses.DegCod=degrees.DegCod" + " AND degrees.CtrCod=centres.CtrCod" + " AND centres.InsCod=institutions.InsCod" + " AND institutions.CtyCod=countries.CtyCod" + "%s" + " UNION " + "SELECT files.FilCod," + "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," + "institutions.InsCod,institutions.ShortName AS InsShortName," + "centres.CtrCod,centres.ShortName AS CtrShortName," + "degrees.DegCod,degrees.ShortName AS DegShortName," + "courses.CrsCod,courses.ShortName AS CrsShortName," + "crs_grp.GrpCod" + " FROM files,crs_grp,crs_grp_types,courses,degrees,centres,institutions,countries" + " WHERE files.FilCod IN (SELECT FilCod FROM my_files_grp) AND %s" + " AND files.FileBrowser IN (%u,%u,%u,%u)" + " AND files.Cod=crs_grp.GrpCod" + " AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod" + " AND crs_grp_types.CrsCod=courses.CrsCod" + " AND courses.DegCod=degrees.DegCod" + " AND degrees.CtrCod=centres.CtrCod" + " AND centres.InsCod=institutions.InsCod" + " AND institutions.CtyCod=countries.CtyCod" + "%s" + ") AS selected_files" + " WHERE PathFromRoot<>''" + " ORDER BY InsShortName,CtrShortName,DegShortName,CrsShortName,PathFromRoot", + SearchQuery, + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_TCH_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + (unsigned) Brw_ADMI_MRK_CRS, + RangeQuery, + SearchQuery, + (unsigned) Brw_ADMI_DOC_GRP, + (unsigned) Brw_ADMI_TCH_GRP, + (unsigned) Brw_ADMI_SHR_GRP, + (unsigned) Brw_ADMI_MRK_GRP, + RangeQuery); - /***** Query database and list documents found *****/ - NumDocs = Brw_ListDocsFound (Txt_document_in_my_courses, - Txt_documents_in_my_courses); + /***** List documents found *****/ + Brw_ListDocsFound (&mysql_res,NumDocs, + Txt_document_in_my_courses, + Txt_documents_in_my_courses); /***** Drop temporary table *****/ DB_BuildQuery ("DROP TEMPORARY TABLE IF EXISTS my_files_crs,my_files_grp"); DB_Query_new ("can not remove temporary table"); - return NumDocs; + return (unsigned) NumDocs; } return 0; @@ -1060,6 +1067,8 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery) extern const char *Txt_document_from_me; extern const char *Txt_documents_from_me; char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1]; + MYSQL_RES *mysql_res; + unsigned long NumDocs; /***** Check user's permission *****/ if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_MY_DOCUMENTS)) @@ -1068,132 +1077,136 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery) "_latin1 "," COLLATE latin1_general_ci")) { /***** Build the query *****/ - DB_BuildQuery ("SELECT * FROM " - "(" - "SELECT files.FilCod," // Institution - "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," - "institutions.InsCod,institutions.ShortName AS InsShortName," - "-1 AS CtrCod,'' AS CtrShortName," - "-1 AS DegCod,'' AS DegShortName," - "-1 AS CrsCod,'' AS CrsShortName," - "-1 AS GrpCod" - " FROM files,courses,degrees,centres,institutions,countries" - " WHERE files.PublisherUsrCod=%ld AND %s" - " AND files.FileBrowser IN (%u,%u)" - " AND files.Cod=institutions.InsCod" - " AND institutions.CtyCod=countries.CtyCod" - "%s" - " UNION " - "SELECT files.FilCod," // Centre - "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," - "institutions.InsCod,institutions.ShortName AS InsShortName," - "centres.CtrCod,centres.ShortName AS CtrShortName," - "-1 AS DegCod,'' AS DegShortName," - "-1 AS CrsCod,'' AS CrsShortName," - "-1 AS GrpCod" - " FROM files,courses,degrees,centres,institutions,countries" - " WHERE files.PublisherUsrCod=%ld AND %s" - " AND files.FileBrowser IN (%u,%u)" - " AND files.Cod=centres.CtrCod" - " AND centres.InsCod=institutions.InsCod" - " AND institutions.CtyCod=countries.CtyCod" - "%s" - " UNION " - "SELECT files.FilCod," // Degree - "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," - "institutions.InsCod,institutions.ShortName AS InsShortName," - "centres.CtrCod,centres.ShortName AS CtrShortName," - "degrees.DegCod,degrees.ShortName AS DegShortName," - "-1 AS CrsCod,'' AS CrsShortName," - "-1 AS GrpCod" - " FROM files,courses,degrees,centres,institutions,countries" - " WHERE files.PublisherUsrCod=%ld AND %s" - " AND files.FileBrowser IN (%u,%u)" - " AND files.Cod=degrees.DegCod" - " AND degrees.CtrCod=centres.CtrCod" - " AND centres.InsCod=institutions.InsCod" - " AND institutions.CtyCod=countries.CtyCod" - "%s" - " UNION " - "SELECT files.FilCod," // Course - "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," - "institutions.InsCod,institutions.ShortName AS InsShortName," - "centres.CtrCod,centres.ShortName AS CtrShortName," - "degrees.DegCod,degrees.ShortName AS DegShortName," - "courses.CrsCod,courses.ShortName AS CrsShortName," - "-1 AS GrpCod" - " FROM files,courses,degrees,centres,institutions,countries" - " WHERE files.PublisherUsrCod=%ld AND %s" - " AND files.FileBrowser IN (%u,%u,%u,%u)" - " AND files.Cod=courses.CrsCod" - " AND courses.DegCod=degrees.DegCod" - " AND degrees.CtrCod=centres.CtrCod" - " AND centres.InsCod=institutions.InsCod" - " AND institutions.CtyCod=countries.CtyCod" - "%s" - " UNION " - "SELECT files.FilCod," // Group - "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," - "institutions.InsCod,institutions.ShortName AS InsShortName," - "centres.CtrCod,centres.ShortName AS CtrShortName," - "degrees.DegCod,degrees.ShortName AS DegShortName," - "courses.CrsCod,courses.ShortName AS CrsShortName," - "crs_grp.GrpCod" - " FROM files,crs_grp,crs_grp_types,courses,degrees,centres,institutions,countries" - " WHERE files.PublisherUsrCod=%ld AND %s" - " AND files.FileBrowser IN (%u,%u,%u,%u)" - " AND files.Cod=crs_grp.GrpCod" - " AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod" - " AND crs_grp_types.CrsCod=courses.CrsCod" - " AND courses.DegCod=degrees.DegCod" - " AND degrees.CtrCod=centres.CtrCod" - " AND centres.InsCod=institutions.InsCod" - " AND institutions.CtyCod=countries.CtyCod" - "%s" - " UNION " - "SELECT files.FilCod," // Briefcase - "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," - "-1 AS InsCod,'' AS InsShortName," - "-1 AS CtrCod,'' AS CtrShortName," - "-1 AS DegCod,'' AS DegShortName," - "-1 AS CrsCod,'' AS CrsShortName," - "-1 AS GrpCod" - " FROM files" - " WHERE files.PublisherUsrCod=%ld AND %s" - " AND files.FileBrowser=%u" - ") AS selected_files" - " WHERE PathFromRoot<>''" - " ORDER BY InsShortName,CtrShortName,DegShortName,CrsShortName,PathFromRoot", - Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, - (unsigned) Brw_ADMI_DOC_INS, - (unsigned) Brw_ADMI_SHR_INS, - RangeQuery, - Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, - (unsigned) Brw_ADMI_DOC_CTR, - (unsigned) Brw_ADMI_SHR_CTR, - RangeQuery, - Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, - (unsigned) Brw_ADMI_DOC_DEG, - (unsigned) Brw_ADMI_SHR_DEG, - RangeQuery, - Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_TCH_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - (unsigned) Brw_ADMI_MRK_CRS, - RangeQuery, - Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, - (unsigned) Brw_ADMI_DOC_GRP, - (unsigned) Brw_ADMI_TCH_GRP, - (unsigned) Brw_ADMI_SHR_GRP, - (unsigned) Brw_ADMI_MRK_GRP, - RangeQuery, - Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, - (unsigned) Brw_ADMI_BRF_USR); + NumDocs = DB_QuerySELECT (&mysql_res,"can not get files", + "SELECT * FROM " + "(" + "SELECT files.FilCod," // Institution + "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," + "institutions.InsCod,institutions.ShortName AS InsShortName," + "-1 AS CtrCod,'' AS CtrShortName," + "-1 AS DegCod,'' AS DegShortName," + "-1 AS CrsCod,'' AS CrsShortName," + "-1 AS GrpCod" + " FROM files,courses,degrees,centres,institutions,countries" + " WHERE files.PublisherUsrCod=%ld AND %s" + " AND files.FileBrowser IN (%u,%u)" + " AND files.Cod=institutions.InsCod" + " AND institutions.CtyCod=countries.CtyCod" + "%s" + " UNION " + "SELECT files.FilCod," // Centre + "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," + "institutions.InsCod,institutions.ShortName AS InsShortName," + "centres.CtrCod,centres.ShortName AS CtrShortName," + "-1 AS DegCod,'' AS DegShortName," + "-1 AS CrsCod,'' AS CrsShortName," + "-1 AS GrpCod" + " FROM files,courses,degrees,centres,institutions,countries" + " WHERE files.PublisherUsrCod=%ld AND %s" + " AND files.FileBrowser IN (%u,%u)" + " AND files.Cod=centres.CtrCod" + " AND centres.InsCod=institutions.InsCod" + " AND institutions.CtyCod=countries.CtyCod" + "%s" + " UNION " + "SELECT files.FilCod," // Degree + "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," + "institutions.InsCod,institutions.ShortName AS InsShortName," + "centres.CtrCod,centres.ShortName AS CtrShortName," + "degrees.DegCod,degrees.ShortName AS DegShortName," + "-1 AS CrsCod,'' AS CrsShortName," + "-1 AS GrpCod" + " FROM files,courses,degrees,centres,institutions,countries" + " WHERE files.PublisherUsrCod=%ld AND %s" + " AND files.FileBrowser IN (%u,%u)" + " AND files.Cod=degrees.DegCod" + " AND degrees.CtrCod=centres.CtrCod" + " AND centres.InsCod=institutions.InsCod" + " AND institutions.CtyCod=countries.CtyCod" + "%s" + " UNION " + "SELECT files.FilCod," // Course + "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," + "institutions.InsCod,institutions.ShortName AS InsShortName," + "centres.CtrCod,centres.ShortName AS CtrShortName," + "degrees.DegCod,degrees.ShortName AS DegShortName," + "courses.CrsCod,courses.ShortName AS CrsShortName," + "-1 AS GrpCod" + " FROM files,courses,degrees,centres,institutions,countries" + " WHERE files.PublisherUsrCod=%ld AND %s" + " AND files.FileBrowser IN (%u,%u,%u,%u)" + " AND files.Cod=courses.CrsCod" + " AND courses.DegCod=degrees.DegCod" + " AND degrees.CtrCod=centres.CtrCod" + " AND centres.InsCod=institutions.InsCod" + " AND institutions.CtyCod=countries.CtyCod" + "%s" + " UNION " + "SELECT files.FilCod," // Group + "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," + "institutions.InsCod,institutions.ShortName AS InsShortName," + "centres.CtrCod,centres.ShortName AS CtrShortName," + "degrees.DegCod,degrees.ShortName AS DegShortName," + "courses.CrsCod,courses.ShortName AS CrsShortName," + "crs_grp.GrpCod" + " FROM files,crs_grp,crs_grp_types,courses,degrees,centres,institutions,countries" + " WHERE files.PublisherUsrCod=%ld AND %s" + " AND files.FileBrowser IN (%u,%u,%u,%u)" + " AND files.Cod=crs_grp.GrpCod" + " AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod" + " AND crs_grp_types.CrsCod=courses.CrsCod" + " AND courses.DegCod=degrees.DegCod" + " AND degrees.CtrCod=centres.CtrCod" + " AND centres.InsCod=institutions.InsCod" + " AND institutions.CtyCod=countries.CtyCod" + "%s" + " UNION " + "SELECT files.FilCod," // Briefcase + "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," + "-1 AS InsCod,'' AS InsShortName," + "-1 AS CtrCod,'' AS CtrShortName," + "-1 AS DegCod,'' AS DegShortName," + "-1 AS CrsCod,'' AS CrsShortName," + "-1 AS GrpCod" + " FROM files" + " WHERE files.PublisherUsrCod=%ld AND %s" + " AND files.FileBrowser=%u" + ") AS selected_files" + " WHERE PathFromRoot<>''" + " ORDER BY InsShortName,CtrShortName,DegShortName,CrsShortName,PathFromRoot", + Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, + (unsigned) Brw_ADMI_DOC_INS, + (unsigned) Brw_ADMI_SHR_INS, + RangeQuery, + Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, + (unsigned) Brw_ADMI_DOC_CTR, + (unsigned) Brw_ADMI_SHR_CTR, + RangeQuery, + Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, + (unsigned) Brw_ADMI_DOC_DEG, + (unsigned) Brw_ADMI_SHR_DEG, + RangeQuery, + Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_TCH_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + (unsigned) Brw_ADMI_MRK_CRS, + RangeQuery, + Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, + (unsigned) Brw_ADMI_DOC_GRP, + (unsigned) Brw_ADMI_TCH_GRP, + (unsigned) Brw_ADMI_SHR_GRP, + (unsigned) Brw_ADMI_MRK_GRP, + RangeQuery, + Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, + (unsigned) Brw_ADMI_BRF_USR); - /***** Query database and list documents found *****/ - return Brw_ListDocsFound (Txt_document_from_me, - Txt_documents_from_me); + /***** List documents found *****/ + Brw_ListDocsFound (&mysql_res,NumDocs, + Txt_document_from_me, + Txt_documents_from_me); + + return (unsigned) NumDocs; } return 0;