From 7c214165c616dd7917d18e76fd8ab1ef39aaf364 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Mon, 26 Jan 2015 01:58:40 +0100 Subject: [PATCH] Version 14.69 --- swad_changelog.h | 3 +- swad_file_browser.c | 110 +++++++++++++++++++++---- swad_search.c | 190 +++++++++++++++++++++++++++++++++----------- 3 files changed, 241 insertions(+), 62 deletions(-) diff --git a/swad_changelog.h b/swad_changelog.h index 60d53a702..c0d62cc29 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -39,13 +39,14 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 14.68.2 (2015/01/25)" +#define Log_PLATFORM_VERSION "SWAD 14.69 (2015/01/26)" // Number of lines (includes comments but not blank lines) has been got with the following command: // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h | tail -1 /* Comprobar que se pueden buscar documentos abiertos en titulaciones, centros e instituciones + Version 14.69: Jan 26, 2015 Changes in search of documents. (175818 lines) Version 14.68.2: Jan 25, 2015 Fixed bugs in search of documents. Search of user's documents now extended to institution, centre and degree. (175644 lines) Version 14.68.1: Jan 25, 2015 Changes in codes stores in expanded_folders table. (175618 lines) diff --git a/swad_file_browser.c b/swad_file_browser.c index a62a2c31f..274ab518c 100644 --- a/swad_file_browser.c +++ b/swad_file_browser.c @@ -10413,6 +10413,8 @@ unsigned Brw_ListDocsFound (const char *Query,const char *Title) { extern const char *Txt_document; extern const char *Txt_documents; + extern const char *Txt_Institution; + extern const char *Txt_Centre; extern const char *Txt_Degree; extern const char *Txt_Course; extern const char *Txt_File_zone; @@ -10435,7 +10437,7 @@ unsigned Brw_ListDocsFound (const char *Query,const char *Title) /* Write header with number of documents found */ fprintf (Gbl.F.Out,"" - ""); if (NumDocs == 1) fprintf (Gbl.F.Out,"1 %s",Txt_document); @@ -10453,6 +10455,12 @@ unsigned Brw_ListDocsFound (const char *Query,const char *Title) "" "%s" "" + "" + "%s" + "" + "" + "%s" + "" "" "%s" "" @@ -10460,6 +10468,8 @@ unsigned Brw_ListDocsFound (const char *Query,const char *Title) "%s" "" "", + Txt_Institution, + Txt_Centre, Txt_Degree, Txt_Course, Txt_File_zone, @@ -10480,7 +10490,7 @@ unsigned Brw_ListDocsFound (const char *Query,const char *Title) /***** Write footer *****/ /* Number of documents not hidden found */ fprintf (Gbl.F.Out,"" - "" "("); NumDocsHidden = NumDocs - NumDocsNotHidden; @@ -10516,29 +10526,63 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row) extern const char *Txt_Private_storage_zone; extern const char *Txt_Go_to_X; struct FileMetadata FileMetadata; + long InsCod; + long CtrCod; long DegCod; long CrsCod; long GrpCod; + const char *InsShortName; + const char *CtrShortName; + const char *DegShortName; + const char *CrsShortName; const char *BgColor; const char *Title; char PathUntilFileName[PATH_MAX+1]; char FileName[NAME_MAX+1]; char FileNameToShow[NAME_MAX+1]; - +/* + row[ 0] = FilCod + row[ 1] = PathFromRoot + row[ 2] = InsCod + row[ 3] = InsShortName + row[ 4] = CtrCod + row[ 5] = CtrShortName + row[ 6] = DegCod + row[ 7] = DegShortName + row[ 8] = CrsCod + row[ 9] = CrsShortName + row[10] = GrpCod +*/ /***** Get file code (row[0]) and metadata *****/ FileMetadata.FilCod = Str_ConvertStrCodToLongCod (row[0]); Brw_GetFileMetadataByCod (&FileMetadata); if (!Brw_CheckIfFileOrFolderIsHidden (&FileMetadata)) { + /***** Get institution code (row[2]) *****/ + InsCod = Str_ConvertStrCodToLongCod (row[2]); + InsShortName = row[3]; + + /***** Get centre code (row[4]) *****/ + CtrCod = Str_ConvertStrCodToLongCod (row[4]); + CtrShortName = row[5]; + + /***** Get degree code (row[6]) *****/ + DegCod = Str_ConvertStrCodToLongCod (row[6]); + DegShortName = row[7]; + + /***** Get course code (row[8]) *****/ + CrsCod = Str_ConvertStrCodToLongCod (row[8]); + CrsShortName = row[9]; + + /***** Get group code (row[8]) *****/ + GrpCod = Str_ConvertStrCodToLongCod (row[10]); + + /***** Set row color *****/ BgColor = Gbl.ColorRows[Gbl.RowEvenOdd]; - Brw_GetCrsGrpFromFileMetadata (FileMetadata.FileBrowser,FileMetadata.Cod,&CrsCod,&GrpCod); if (CrsCod > 0 && CrsCod == Gbl.CurrentCrs.Crs.CrsCod) BgColor = VERY_LIGHT_BLUE; - /***** Get degree code (row[2]) *****/ - DegCod = Str_ConvertStrCodToLongCod (row[2]); - /***** Write number of document in this search *****/ fprintf (Gbl.F.Out,"" "", BgColor,++(*NumDocsNotHidden)); - /***** Write degree logo, degree short name (row[3]) and centre short name (row[4]) *****/ + /***** Write institution logo, institution short name *****/ + fprintf (Gbl.F.Out,"", + BgColor); + if (InsCod > 0) + { + Act_FormGoToStart (ActSeeInsInf); + Deg_PutParamDegCod (InsCod); + sprintf (Gbl.Title,Txt_Go_to_X,InsShortName); + Act_LinkFormSubmit (Gbl.Title,"DAT"); + Log_DrawLogo (Sco_SCOPE_INSTITUTION,InsCod,InsShortName, + 16,"vertical-align:top;",true); + fprintf (Gbl.F.Out," %s" + "", + InsShortName); + } + fprintf (Gbl.F.Out,""); + + /***** Write centre logo, centre short name *****/ + fprintf (Gbl.F.Out,"", + BgColor); + if (CtrCod > 0) + { + Act_FormGoToStart (ActSeeCtrInf); + Deg_PutParamDegCod (CtrCod); + sprintf (Gbl.Title,Txt_Go_to_X,CtrShortName); + Act_LinkFormSubmit (Gbl.Title,"DAT"); + Log_DrawLogo (Sco_SCOPE_CENTRE,CtrCod,CtrShortName, + 16,"vertical-align:top;",true); + fprintf (Gbl.F.Out," %s" + "", + CtrShortName); + } + fprintf (Gbl.F.Out,""); + + /***** Write degree logo, degree short name *****/ fprintf (Gbl.F.Out,"", BgColor); @@ -10555,17 +10635,17 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row) { Act_FormGoToStart (ActSeeDegInf); Deg_PutParamDegCod (DegCod); - sprintf (Gbl.Title,Txt_Go_to_X,row[5]); + sprintf (Gbl.Title,Txt_Go_to_X,DegShortName); Act_LinkFormSubmit (Gbl.Title,"DAT"); - Log_DrawLogo (Sco_SCOPE_DEGREE,DegCod,row[4], + Log_DrawLogo (Sco_SCOPE_DEGREE,DegCod,DegShortName, 16,"vertical-align:top;",true); - fprintf (Gbl.F.Out," %s (%s)" + fprintf (Gbl.F.Out," %s" "", - row[3],row[4]); + DegShortName); } fprintf (Gbl.F.Out,""); - /***** Write course short name (row[5]) *****/ + /***** Write course short name *****/ fprintf (Gbl.F.Out,"", BgColor); @@ -10573,11 +10653,11 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row) { Act_FormGoToStart (ActSeeCrsInf); Crs_PutParamCrsCod (CrsCod); - sprintf (Gbl.Title,Txt_Go_to_X,row[5]); + sprintf (Gbl.Title,Txt_Go_to_X,CrsShortName); Act_LinkFormSubmit (Gbl.Title,"DAT"); fprintf (Gbl.F.Out,"%s" "", - row[5]); + CrsShortName); } fprintf (Gbl.F.Out,""); diff --git a/swad_search.c b/swad_search.c index 4cb062465..6a316978e 100644 --- a/swad_search.c +++ b/swad_search.c @@ -749,7 +749,7 @@ static unsigned Sch_SearchOpenDocumentsInDB (const char *RangeQuery) { extern const char *Txt_Open_documents; char SearchQuery[Sch_MAX_LENGTH_SEARCH_QUERY+1]; - char Query[1024+Sch_MAX_LENGTH_SEARCH_QUERY*2]; + char Query[(512+Sch_MAX_LENGTH_SEARCH_QUERY)*4]; /***** Check user's permission *****/ if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_OPEN_DOCUMENTS)) @@ -758,10 +758,60 @@ static unsigned Sch_SearchOpenDocumentsInDB (const char *RangeQuery) "_latin1 "," COLLATE latin1_general_ci")) { /***** Build the query *****/ - sprintf (Query,"SELECT files.FilCod," + sprintf (Query,"SELECT * FROM " + "(" + "SELECT files.FilCod," // Institution "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," - "degrees.DegCod,degrees.ShortName," - "centres.ShortName,courses.ShortName" + "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,degrees,centres,institutions,countries" + " WHERE files.Public='Y' AND %s" + " AND files.FileBrowser='%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,degrees,centres,institutions,countries" + " WHERE files.Public='Y' AND %s" + " AND files.FileBrowser='%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,degrees,centres,institutions,countries" + " WHERE files.Public='Y' AND %s" + " AND files.FileBrowser='%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')" @@ -771,8 +821,18 @@ static unsigned Sch_SearchOpenDocumentsInDB (const char *RangeQuery) " AND centres.InsCod=institutions.InsCod" " AND institutions.CtyCod=countries.CtyCod" "%s" - " HAVING PathFromRoot<>''" - " ORDER BY degrees.ShortName,courses.ShortName,PathFromRoot", + ") AS selected_files" + " WHERE PathFromRoot<>''" + " ORDER BY InsShortName,CtrShortName,DegShortName,CrsShortName,PathFromRoot", + SearchQuery, + (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_INS, + RangeQuery, + SearchQuery, + (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR, + RangeQuery, + SearchQuery, + (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG, + RangeQuery, SearchQuery, (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS, (unsigned) Brw_FILE_BRW_COMMON_CRS, @@ -795,7 +855,7 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery) { extern const char *Txt_Documents_in_my_courses; char SearchQuery[Sch_MAX_LENGTH_SEARCH_QUERY+1]; - char Query[1024+Sch_MAX_LENGTH_SEARCH_QUERY*2]; + char Query[(512+Sch_MAX_LENGTH_SEARCH_QUERY)*2]; unsigned NumDocs; /***** Check user's permission *****/ @@ -806,20 +866,22 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery) { /***** Create temporary table with codes of files in documents and shared areas accessible by me. It is necessary to speed up the second query *****/ - sprintf (Query,"CREATE TEMPORARY TABLE my_files (FilCod INT NOT NULL,UNIQUE INDEX(FilCod)) ENGINE=MEMORY" + sprintf (Query,"CREATE TEMPORARY TABLE my_files_crs (FilCod INT NOT NULL,UNIQUE INDEX(FilCod)) ENGINE=MEMORY" " SELECT files.FilCod FROM crs_usr,files" " WHERE crs_usr.UsrCod='%ld'" " AND crs_usr.CrsCod=files.Cod" - " AND files.FileBrowser IN ('%u','%u','%u')" - " UNION" - " SELECT files.FilCod FROM crs_grp_usr,files" - " WHERE crs_grp_usr.UsrCod='%ld'" - " AND crs_grp_usr.GrpCod=files.Cod" " AND files.FileBrowser IN ('%u','%u','%u')", Gbl.Usrs.Me.UsrDat.UsrCod, (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS, (unsigned) Brw_FILE_BRW_COMMON_CRS, - (unsigned) Brw_FILE_BRW_ADMIN_MARKS_CRS, + (unsigned) Brw_FILE_BRW_ADMIN_MARKS_CRS); + if (mysql_query (&Gbl.mysql,Query)) + DB_ExitOnMySQLError ("can not create temporary table"); + sprintf (Query,"CREATE TEMPORARY TABLE my_files_grp (FilCod INT NOT NULL,UNIQUE INDEX(FilCod)) ENGINE=MEMORY" + " SELECT files.FilCod FROM crs_grp_usr,files" + " WHERE crs_grp_usr.UsrCod='%ld'" + " AND crs_grp_usr.GrpCod=files.Cod" + " AND files.FileBrowser IN ('%u','%u','%u')", Gbl.Usrs.Me.UsrDat.UsrCod, (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP, (unsigned) Brw_FILE_BRW_COMMON_GRP, @@ -830,33 +892,52 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery) DB_ExitOnMySQLError ("can not create temporary table"); /***** Build the query *****/ - sprintf (Query,"SELECT files.FilCod," + sprintf (Query,"SELECT * FROM " + "(" + "SELECT files.FilCod," "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," - "degrees.DegCod,degrees.ShortName," - "centres.ShortName,courses.ShortName" - " FROM files,crs_grp,crs_grp_types,courses,degrees,centres,institutions,countries" - " WHERE files.FilCod IN (SELECT FilCod FROM my_files) AND %s" - " AND " - "(" - "(files.FileBrowser IN ('%u','%u','%u')" - " AND files.Cod=courses.CrsCod)" - " OR " - "(files.FileBrowser IN ('%u','%u','%u')" - " AND files.Cod=crs_grp.GrpCod" - " AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod" - " AND crs_grp_types.CrsCod=courses.CrsCod)" - ")" + "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')" + " 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" - " HAVING PathFromRoot<>''" - " ORDER BY degrees.ShortName,courses.ShortName,PathFromRoot", + " 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')" + " 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_FILE_BRW_ADMIN_DOCUMENTS_CRS, (unsigned) Brw_FILE_BRW_COMMON_CRS, (unsigned) Brw_FILE_BRW_ADMIN_MARKS_CRS, + RangeQuery, + SearchQuery, (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP, (unsigned) Brw_FILE_BRW_COMMON_GRP, (unsigned) Brw_FILE_BRW_ADMIN_MARKS_GRP, @@ -868,7 +949,7 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery) NumDocs = Brw_ListDocsFound (Query,Txt_Documents_in_my_courses); /***** Drop temporary table *****/ - sprintf (Query,"DROP TABLE IF EXISTS my_files"); + sprintf (Query,"DROP TEMPORARY TABLE IF EXISTS my_files_crs,my_files_grp"); if (mysql_query (&Gbl.mysql,Query)) DB_ExitOnMySQLError ("can not remove temporary table"); @@ -899,33 +980,40 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery) "(" "SELECT files.FilCod," // Institution "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," - "'-1','' AS DegShortName,'','' AS CrsShortName" + "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,degrees,centres,institutions,countries" " WHERE files.PublisherUsrCod='%ld' AND %s" " AND files.FileBrowser='%u'" - " AND files.Cod=degrees.DegCod" - " AND degrees.CtrCod=centres.CtrCod" - " AND centres.InsCod=institutions.InsCod" + " AND files.Cod=institutions.InsCod" " AND institutions.CtyCod=countries.CtyCod" "%s" " UNION " "SELECT files.FilCod," // Centre "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," - "'-1','' AS DegShortName," - "centres.ShortName,'' AS CrsShortName" + "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,degrees,centres,institutions,countries" " WHERE files.PublisherUsrCod='%ld' AND %s" " AND files.FileBrowser='%u'" - " AND files.Cod=degrees.DegCod" - " AND degrees.CtrCod=centres.CtrCod" + " 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," - "centres.ShortName,'' AS CrsShortName" + "'-1' AS CrsCod,'' AS CrsShortName," + "'-1' AS GrpCod" " FROM files,degrees,centres,institutions,countries" " WHERE files.PublisherUsrCod='%ld' AND %s" " AND files.FileBrowser='%u'" @@ -937,8 +1025,11 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery) " 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," - "centres.ShortName,courses.ShortName AS CrsShortName" + "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')" @@ -951,8 +1042,11 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery) " 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," - "centres.ShortName,courses.ShortName AS CrsShortName" + "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')" @@ -967,13 +1061,17 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery) " UNION " "SELECT files.FilCod," // Briefcase "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," - "'-1','' AS DegShortName,'','' AS CrsShortName" + "'-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 my_files" + ") AS selected_files" " WHERE PathFromRoot<>''" - " ORDER BY DegShortName,CrsShortName,PathFromRoot", + " ORDER BY InsShortName,CtrShortName,DegShortName,CrsShortName,PathFromRoot", Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_INS, RangeQuery,