From 391395edc882ce140276190ea16bf5a921f2f7bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Sun, 25 Jan 2015 23:40:07 +0100 Subject: [PATCH] Version 14.68.2 --- swad_changelog.h | 6 +- swad_indicator.c | 5 +- swad_search.c | 179 +++++++++++++++++++++++++++-------------------- 3 files changed, 108 insertions(+), 82 deletions(-) diff --git a/swad_changelog.h b/swad_changelog.h index 448334c70..60d53a702 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -39,15 +39,15 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 14.68.1 (2015/01/25)" +#define Log_PLATFORM_VERSION "SWAD 14.68.2 (2015/01/25)" // 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 /* -TODO: Chequear que no debe haber documentos abiertos en los grupos (no tiene sentido) -Comprobar que no se pueden crear Comprobar que se pueden buscar documentos abiertos en titulaciones, centros e instituciones + 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) 7 changes necessary in database: UPDATE expanded_folders SET FileBrowser='3' WHERE FileBrowser='1'; diff --git a/swad_indicator.c b/swad_indicator.c index 171ce5225..bf470fec0 100644 --- a/swad_indicator.c +++ b/swad_indicator.c @@ -1392,6 +1392,7 @@ void Ind_GetIndicatorsCrs (long CrsCod,struct Ind_IndicatorsCrs *Indicators) static unsigned long Ind_GetNumFilesOfCrsFileZoneFromDB (Brw_FileBrowser_t FileBrowser,long CrsCod) { + extern const Brw_FileBrowser_t Brw_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER]; char Query[512]; MYSQL_RES *mysql_res; MYSQL_ROW row; @@ -1400,8 +1401,8 @@ static unsigned long Ind_GetNumFilesOfCrsFileZoneFromDB (Brw_FileBrowser_t FileB /***** Get number of files in a file browser from database *****/ sprintf (Query,"SELECT SUM(NumFiles)" " FROM file_browser_size" - " WHERE FileBrowser='%u' AND CrsCod='%ld'", - (unsigned) FileBrowser,CrsCod); + " WHERE FileBrowser='%u' AND Cod='%ld'", + (unsigned) Brw_FileBrowserForDB_files[FileBrowser],CrsCod); DB_QuerySELECT (Query,&mysql_res,"can not get the number of files in a file browser"); /***** Get row *****/ diff --git a/swad_search.c b/swad_search.c index 79acbce16..4cb062465 100644 --- a/swad_search.c +++ b/swad_search.c @@ -844,7 +844,7 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery) "(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 crs_grp_types.CrsCod=courses.CrsCod)" ")" " AND courses.DegCod=degrees.DegCod" " AND degrees.CtrCod=centres.CtrCod" @@ -886,7 +886,7 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery) { extern const char *Txt_My_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)*5]; /***** Check user's permission *****/ if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_MY_DOCUMENTS)) @@ -895,81 +895,106 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery) "_latin1 "," COLLATE latin1_general_ci")) { /***** Build the query *****/ - if (Gbl.Scope.Current == Sco_SCOPE_PLATFORM) - /* Show also documents in private zone */ - sprintf (Query,"SELECT * FROM " - "(" - "SELECT files.FilCod," - "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," - "degrees.DegCod,degrees.ShortName AS DegShortName," - "centres.ShortName,courses.ShortName AS CrsShortName" - " 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')" - " 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)" - ")" - " 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," - "'-1','' AS DegShortName,'','' AS CrsShortName" - " FROM files" - " WHERE files.PublisherUsrCod='%ld' AND files.FileBrowser='%u' AND %s" - ") AS my_files" - " WHERE PathFromRoot<>''" - " ORDER BY DegShortName,CrsShortName,PathFromRoot", - Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, - (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_DOCUMENTS_GRP, - (unsigned) Brw_FILE_BRW_COMMON_GRP, - (unsigned) Brw_FILE_BRW_ADMIN_MARKS_GRP, - RangeQuery, - Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) Brw_FILE_BRW_BRIEFCASE_USR,SearchQuery); - else - sprintf (Query,"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.PublisherUsrCod='%ld' 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)" - ")" - " 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", - Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, - (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_DOCUMENTS_GRP, - (unsigned) Brw_FILE_BRW_COMMON_GRP, - (unsigned) Brw_FILE_BRW_ADMIN_MARKS_GRP, - RangeQuery); + sprintf (Query,"SELECT * FROM " + "(" + "SELECT files.FilCod," // Institution + "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," + "'-1','' AS DegShortName,'','' AS CrsShortName" + " 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 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" + " 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 institutions.CtyCod=countries.CtyCod" + "%s" + " UNION " + "SELECT files.FilCod," // Degree + "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," + "degrees.DegCod,degrees.ShortName AS DegShortName," + "centres.ShortName,'' AS CrsShortName" + " 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 institutions.CtyCod=countries.CtyCod" + "%s" + " UNION " + "SELECT files.FilCod," // Course + "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," + "degrees.DegCod,degrees.ShortName AS DegShortName," + "centres.ShortName,courses.ShortName AS CrsShortName" + " FROM files,courses,degrees,centres,institutions,countries" + " WHERE files.PublisherUsrCod='%ld' 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" + " UNION " + "SELECT files.FilCod," // Group + "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," + "degrees.DegCod,degrees.ShortName AS DegShortName," + "centres.ShortName,courses.ShortName AS CrsShortName" + " 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')" + " 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 DegShortName,'','' AS CrsShortName" + " FROM files" + " WHERE files.PublisherUsrCod='%ld' AND %s" + " AND files.FileBrowser='%u'" + ") AS my_files" + " WHERE PathFromRoot<>''" + " ORDER BY DegShortName,CrsShortName,PathFromRoot", + Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, + (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_INS, + RangeQuery, + Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, + (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR, + RangeQuery, + Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, + (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG, + RangeQuery, + Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, + (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS, + (unsigned) Brw_FILE_BRW_COMMON_CRS, + (unsigned) Brw_FILE_BRW_ADMIN_MARKS_CRS, + RangeQuery, + Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, + (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP, + (unsigned) Brw_FILE_BRW_COMMON_GRP, + (unsigned) Brw_FILE_BRW_ADMIN_MARKS_GRP, + RangeQuery, + Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, + (unsigned) Brw_FILE_BRW_BRIEFCASE_USR); /***** Query database and list documents found *****/ /* if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SUPERUSER)