From e506e736f4e6fe5e1db7d3b32a0185b9a714055b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Mon, 26 Jan 2015 22:12:49 +0100 Subject: [PATCH] Version 14.70 --- swad_changelog.h | 5 +- swad_config.h | 4 +- swad_statistic.c | 785 ++++++++++++++++++++++++++++++++++------------- swad_text.c | 42 --- 4 files changed, 577 insertions(+), 259 deletions(-) diff --git a/swad_changelog.h b/swad_changelog.h index d1fc94b94..045622ba7 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -39,12 +39,15 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 14.69.2 (2015/01/26)" +#define Log_PLATFORM_VERSION "SWAD 14.70 (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 /* TODO: Change the way of computing total sizes of file browsers. + Version 14.70: Jan 26, 2015 Fixed bugs in statistics about sizes of file browsers. + Statistics about sizes of group zones. + New scope (country) in statistics about sizes of file browsers. (176181 lines) Version 14.69.2: Jan 26, 2015 Fixed bugs in statistics about sizes of file browsers. (175864 lines) Version 14.69.1: Jan 26, 2015 Code refactoring related to file browsers. (175822 lines) Version 14.69: Jan 26, 2015 Changes in search of documents. (175818 lines) diff --git a/swad_config.h b/swad_config.h index 026614fa1..4702408af 100644 --- a/swad_config.h +++ b/swad_config.h @@ -28,8 +28,8 @@ /** Uncomment one of the following installations of SWAD or create your own **/ /*****************************************************************************/ -#define LOCALHOST_UBUNTU // Comment this line if not applicable -//#define OPENSWAD_ORG // Comment this line if not applicable +//#define LOCALHOST_UBUNTU // Comment this line if not applicable +#define OPENSWAD_ORG // Comment this line if not applicable //#define SWAD_UGR_ES // Comment this line if not applicable //#define WWW_CEVUNA_UNA_PY // Comment this line if not applicable diff --git a/swad_statistic.c b/swad_statistic.c index d1820efee..c5b73f601 100644 --- a/swad_statistic.c +++ b/swad_statistic.c @@ -70,6 +70,7 @@ extern struct Act_Actions Act_Actions[Act_NUM_ACTIONS]; struct Sta_SizeOfFileZones { int NumCrss; // -1 stands for not aplicable + int NumGrps; // -1 stands for not aplicable int NumUsrs; // -1 stands for not aplicable unsigned MaxLevels; unsigned long NumFolders; @@ -134,8 +135,10 @@ static void Sta_GetAndShowUsersStats (void); static void Sta_GetAndShowFileBrowsersStats (void); static void Sta_WriteStatsExpTreesTableHead (void); -static void Sta_WriteRowStatsExpTrees (Brw_FileBrowser_t FileZone,const char *NameOfFileZones); -static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope,Brw_FileBrowser_t FileBrowser,struct Sta_SizeOfFileZones *SizeOfFileZones); +static void Sta_WriteRowStatsFileBrowsers (Brw_FileBrowser_t FileZone,const char *NameOfFileZones); +static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, + Brw_FileBrowser_t FileBrowser, + struct Sta_SizeOfFileZones *SizeOfFileZones); static void Sta_GetAndShowOERsStats (void); static void Sta_GetNumberOfOERsFromDB (Sco_Scope_t Scope,Brw_License_t License,unsigned long NumFiles[2]); @@ -4484,13 +4487,13 @@ static void Sta_GetAndShowFileBrowsersStats (void) for (NumStat = 0; NumStat < Sta_NUM_STAT_CRS_FILE_ZONES; NumStat++) - Sta_WriteRowStatsExpTrees (StatCrsFileZones[NumStat],Txt_STAT_COURSE_FILE_ZONES[NumStat]); + Sta_WriteRowStatsFileBrowsers (StatCrsFileZones[NumStat],Txt_STAT_COURSE_FILE_ZONES[NumStat]); /***** Write table heading *****/ Sta_WriteStatsExpTreesTableHead (); /***** Write size of briefcases *****/ - Sta_WriteRowStatsExpTrees (Brw_ADMI_BRIEF_USR,Txt_Virtual_pendrives); + Sta_WriteRowStatsFileBrowsers (Brw_ADMI_BRIEF_USR,Txt_Virtual_pendrives); /***** End table *****/ Lay_EndRoundFrameTable10 (); @@ -4503,11 +4506,12 @@ static void Sta_GetAndShowFileBrowsersStats (void) static void Sta_WriteStatsExpTreesTableHead (void) { extern const char *Txt_File_zones; - extern const char *Txt_Number_of_courses; - extern const char *Txt_No_of_users; + extern const char *Txt_Courses; + extern const char *Txt_Groups; + extern const char *Txt_Users; extern const char *Txt_Max_levels; - extern const char *Txt_No_of_folders; - extern const char *Txt_No_of_files; + extern const char *Txt_Folders; + extern const char *Txt_Files; extern const char *Txt_Size; extern const char *Txt_STAT_COURSE_FILE_ZONES[]; extern const char *Txt_crs; @@ -4536,6 +4540,9 @@ static void Sta_WriteStatsExpTreesTableHead (void) "%s" "" "" + "%s" + "" + "" "%s/
%s" "" "" @@ -4555,17 +4562,18 @@ static void Sta_WriteStatsExpTreesTableHead (void) "" "", Txt_File_zones, - Txt_Number_of_courses, - Txt_No_of_users, + Txt_Courses, + Txt_Groups, + Txt_Users, Txt_Max_levels, - Txt_No_of_folders, - Txt_No_of_files, + Txt_Folders, + Txt_Files, Txt_Size, - Txt_No_of_folders,Txt_crs, - Txt_No_of_files,Txt_crs, + Txt_Folders,Txt_crs, + Txt_Files,Txt_crs, Txt_Size,Txt_crs, - Txt_No_of_folders,Txt_usr, - Txt_No_of_files,Txt_usr, + Txt_Folders,Txt_usr, + Txt_Files,Txt_usr, Txt_Size,Txt_usr); } @@ -4573,9 +4581,10 @@ static void Sta_WriteStatsExpTreesTableHead (void) /*************** Write a row of stats of exploration trees *******************/ /*****************************************************************************/ -static void Sta_WriteRowStatsExpTrees (Brw_FileBrowser_t FileZone,const char *NameOfFileZones) +static void Sta_WriteRowStatsFileBrowsers (Brw_FileBrowser_t FileZone,const char *NameOfFileZones) { char StrNumCrss[10+1]; + char StrNumGrps[10+1]; char StrNumUsrs[10+1]; char StrNumFoldersPerCrs[10+1]; char StrNumFoldersPerUsr[10+1]; @@ -4607,6 +4616,12 @@ static void Sta_WriteRowStatsExpTrees (Brw_FileBrowser_t FileZone,const char *Na (double) SizeOfFileZones.NumCrss : 0.0); } + + if (SizeOfFileZones.NumGrps == -1) + strcpy (StrNumGrps,"-"); + else + sprintf (StrNumGrps,"%d",SizeOfFileZones.NumGrps); + if (SizeOfFileZones.NumUsrs == -1) { strcpy (StrNumUsrs ,"-"); @@ -4636,6 +4651,9 @@ static void Sta_WriteRowStatsExpTrees (Brw_FileBrowser_t FileZone,const char *Na "%s" "" "" + "%s" + "" + "" "%u" "" "" @@ -4647,6 +4665,7 @@ static void Sta_WriteRowStatsExpTrees (Brw_FileBrowser_t FileZone,const char *Na "", ClassData,StyleTableCell,NameOfFileZones, ClassData,StyleTableCell,StrNumCrss, + ClassData,StyleTableCell,StrNumGrps, ClassData,StyleTableCell,StrNumUsrs, ClassData,StyleTableCell,SizeOfFileZones.MaxLevels, ClassData,StyleTableCell,SizeOfFileZones.NumFolders, @@ -4695,7 +4714,9 @@ static void Sta_WriteRowStatsExpTrees (Brw_FileBrowser_t FileZone,const char *Na /**************** Get the size of a file zone from database ******************/ /*****************************************************************************/ -static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope,Brw_FileBrowser_t FileBrowser,struct Sta_SizeOfFileZones *SizeOfFileZones) +static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, + Brw_FileBrowser_t FileBrowser, + struct Sta_SizeOfFileZones *SizeOfFileZones) { char Query[2048]; MYSQL_RES *mysql_res; @@ -4704,197 +4725,528 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope,Brw_FileBrowser_t Fil /***** Get the size of a file browser *****/ switch (Scope) { + /* Scope = the whole platform */ case Sco_SCOPE_PLATFORM: - if (FileBrowser == Brw_UNKNOWN) - sprintf (Query,"SELECT COUNT(DISTINCT Cod),'-1',MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" - " FROM file_browser_size" - " WHERE FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u')", - (unsigned) Brw_ADMI_DOCUM_CRS, - (unsigned) Brw_ADMI_SHARE_CRS, - (unsigned) Brw_ADMI_ASSIG_USR, - (unsigned) Brw_ADMI_ASSIG_CRS, - (unsigned) Brw_ADMI_WORKS_USR, - (unsigned) Brw_ADMI_WORKS_CRS, - (unsigned) Brw_ADMI_MARKS_CRS); - else if (FileBrowser == Brw_ADMI_BRIEF_USR) - sprintf (Query,"SELECT '-1',COUNT(DISTINCT ZoneUsrCod),MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" - " FROM file_browser_size" - " WHERE FileBrowser='%u'", - (unsigned) FileBrowser); - else if (FileBrowser == Brw_ADMI_ASSIG_USR || - FileBrowser == Brw_ADMI_WORKS_USR) - sprintf (Query,"SELECT COUNT(DISTINCT Cod),COUNT(DISTINCT ZoneUsrCod),MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" - " FROM file_browser_size" - " WHERE FileBrowser='%u'", - (unsigned) FileBrowser); - else - sprintf (Query,"SELECT COUNT(DISTINCT Cod),'-1',MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" - " FROM file_browser_size" - " WHERE FileBrowser='%u'", - (unsigned) FileBrowser); + switch (FileBrowser) + { + case Brw_UNKNOWN: + sprintf (Query,"SELECT COUNT(DISTINCT CrsCod),COUNT(DISTINCT GrpCod)-1,'-1'," + "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + " FROM " + "(" + "SELECT Cod AS CrsCod,'-1' AS GrpCod," + "NumLevels,NumFolders,NumFiles,TotalSize" + " FROM file_browser_size" + " WHERE FileBrowser IN ('%u','%u','%u','%u','%u')" + " UNION " + "SELECT crs_grp_types.CrsCod,file_browser_size.Cod AS GrpCod," + "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + " FROM crs_grp_types,crs_grp,file_browser_size" + " WHERE crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" + " AND crs_grp.GrpCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u')" + ") AS sizes", + (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_SHARE_CRS, + (unsigned) Brw_ADMI_ASSIG_USR, + (unsigned) Brw_ADMI_WORKS_USR, + (unsigned) Brw_ADMI_MARKS_CRS, + (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_SHARE_GRP, + (unsigned) Brw_ADMI_MARKS_GRP); + break; + case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_SHARE_CRS: + case Brw_ADMI_MARKS_CRS: + sprintf (Query,"SELECT COUNT(DISTINCT Cod),'-1','-1'," + "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + " FROM file_browser_size" + " WHERE FileBrowser='%u'", + (unsigned) FileBrowser); + break; + case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_SHARE_GRP: + case Brw_ADMI_MARKS_GRP: + sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod),COUNT(DISTINCT file_browser_size.Cod),'-1'," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM crs_grp_types,crs_grp,file_browser_size" + " WHERE crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" + " AND crs_grp.GrpCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser='%u'", + (unsigned) FileBrowser); + break; + case Brw_ADMI_ASSIG_USR: + case Brw_ADMI_WORKS_USR: + sprintf (Query,"SELECT COUNT(DISTINCT Cod),'-1',COUNT(DISTINCT ZoneUsrCod)," + "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + " FROM file_browser_size" + " WHERE FileBrowser='%u'", + (unsigned) FileBrowser); + break; + case Brw_ADMI_BRIEF_USR: + sprintf (Query,"SELECT '-1','-1',COUNT(DISTINCT ZoneUsrCod)," + "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + " FROM file_browser_size" + " WHERE FileBrowser='%u'", + (unsigned) FileBrowser); + break; + default: + Lay_ShowErrorAndExit ("Wrong file browser."); + break; + } break; + /* Scope = the current country */ + case Sco_SCOPE_COUNTRY: + switch (FileBrowser) + { + case Brw_UNKNOWN: + sprintf (Query,"SELECT COUNT(DISTINCT CrsCod),COUNT(DISTINCT GrpCod)-1,'-1'," + "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + " FROM " + "(" + "SELECT file_browser_size.Cod AS CrsCod,'-1' AS GrpCod," // Course zones + "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + " FROM institutions,centres,degrees,courses,file_browser_size" + " WHERE institutions.CtyCod='%ld'" + " AND institutions.InsCod=centres.InsCod" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u','%u')" + " UNION " + "SELECT crs_grp_types.CrsCod,file_browser_size.Cod AS GrpCod," // Group zones + "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + " FROM institutions,centres,degrees,courses,crs_grp_types,crs_grp,file_browser_size" + " WHERE institutions.CtyCod='%ld'" + " AND institutions.InsCod=centres.InsCod" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=crs_grp_types.CrsCod" + " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" + " AND crs_grp.GrpCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u')" + ") AS sizes", + Gbl.CurrentCty.Cty.CtyCod, + (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_SHARE_CRS, + (unsigned) Brw_ADMI_ASSIG_USR, + (unsigned) Brw_ADMI_WORKS_USR, + (unsigned) Brw_ADMI_MARKS_CRS, + Gbl.CurrentCty.Cty.CtyCod, + (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_SHARE_GRP, + (unsigned) Brw_ADMI_MARKS_GRP); + break; + case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_SHARE_CRS: + case Brw_ADMI_MARKS_CRS: + sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1','-1'," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM institutions,centres,degrees,courses,file_browser_size" + " WHERE institutions.CtyCod='%ld'" + " AND institutions.InsCod=centres.InsCod" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=file_browser_size.Cod" + " and file_browser_size.FileBrowser='%u'", + Gbl.CurrentCty.Cty.CtyCod,(unsigned) FileBrowser); + break; + case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_SHARE_GRP: + case Brw_ADMI_MARKS_GRP: + sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod),COUNT(DISTINCT file_browser_size.Cod),'-1'," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM institutions,centres,degrees,courses,crs_grp_types,crs_grp,file_browser_size" + " WHERE institutions.CtyCod='%ld'" + " AND institutions.InsCod=centres.InsCod" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=crs_grp_types.CrsCod" + " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" + " AND crs_grp.GrpCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser='%u'", + Gbl.CurrentCty.Cty.CtyCod,(unsigned) FileBrowser); + break; + case Brw_ADMI_ASSIG_USR: + case Brw_ADMI_WORKS_USR: + sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod)," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM institutions,centres,degrees,courses,file_browser_size" + " WHERE institutions.CtyCod='%ld'" + " AND institutions.InsCod=centres.InsCod" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser='%u'", + Gbl.CurrentCty.Cty.CtyCod,(unsigned) FileBrowser); + break; + case Brw_ADMI_BRIEF_USR: + sprintf (Query,"SELECT '-1','-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod)," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM institutions,centres,degrees,courses,crs_usr,file_browser_size" + " WHERE institutions.CtyCod='%ld'" + " AND institutions.InsCod=centres.InsCod" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=crs_usr.CrsCod" + " AND crs_usr.UsrCod=file_browser_size.ZoneUsrCod" + " AND file_browser_size.FileBrowser='%u'", + Gbl.CurrentCty.Cty.CtyCod,(unsigned) FileBrowser); + break; + default: + Lay_ShowErrorAndExit ("Wrong file browser."); + break; + } + break; + /* Scope = the current institution */ case Sco_SCOPE_INSTITUTION: - if (FileBrowser == Brw_UNKNOWN) - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1',MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" - " FROM centres,degrees,courses,file_browser_size" - " WHERE centres.InsCod='%ld'" - " AND centres.CtrCod=degrees.CtrCod" - " AND degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=file_browser_size.Cod" - " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u')", - Gbl.CurrentIns.Ins.InsCod, - (unsigned) Brw_ADMI_DOCUM_CRS, - (unsigned) Brw_ADMI_SHARE_CRS, - (unsigned) Brw_ADMI_ASSIG_USR, - (unsigned) Brw_ADMI_ASSIG_CRS, - (unsigned) Brw_ADMI_WORKS_USR, - (unsigned) Brw_ADMI_WORKS_CRS, - (unsigned) Brw_ADMI_MARKS_CRS); - else if (FileBrowser == Brw_ADMI_BRIEF_USR) - sprintf (Query,"SELECT '-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod),MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" - " FROM file_browser_size,centres,degrees,courses,crs_usr" - " WHERE file_browser_size.FileBrowser='%u'" - " AND centres.InsCod='%ld'" - " AND centres.CtrCod=degrees.CtrCod" - " AND degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" - " AND file_browser_size.ZoneUsrCod=crs_usr.UsrCod", - (unsigned) FileBrowser,Gbl.CurrentIns.Ins.InsCod); - else if (FileBrowser == Brw_ADMI_ASSIG_USR || - FileBrowser == Brw_ADMI_WORKS_USR) - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),COUNT(DISTINCT file_browser_size.ZoneUsrCod),MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" - " FROM file_browser_size,centres,degrees,courses" - " WHERE file_browser_size.FileBrowser='%u'" - " AND centres.InsCod='%ld'" - " AND centres.CtrCod=degrees.CtrCod" - " AND degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=file_browser_size.Cod", - (unsigned) FileBrowser,Gbl.CurrentIns.Ins.InsCod); - else - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1',MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" - " FROM file_browser_size,centres,degrees,courses" - " WHERE file_browser_size.FileBrowser='%u'" - " AND centres.InsCod='%ld'" - " AND centres.CtrCod=degrees.CtrCod" - " AND degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=file_browser_size.Cod", - (unsigned) FileBrowser,Gbl.CurrentIns.Ins.InsCod); + switch (FileBrowser) + { + case Brw_UNKNOWN: + sprintf (Query,"SELECT COUNT(DISTINCT CrsCod),COUNT(DISTINCT GrpCod)-1,'-1'," + "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + " FROM " + "(" + "SELECT file_browser_size.Cod AS CrsCod,'-1' AS GrpCod," // Course zones + "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + " FROM centres,degrees,courses,file_browser_size" + " WHERE centres.InsCod='%ld'" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u','%u')" + " UNION " + "SELECT crs_grp_types.CrsCod,file_browser_size.Cod AS GrpCod," // Group zones + "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + " FROM centres,degrees,courses,crs_grp_types,crs_grp,file_browser_size" + " WHERE centres.InsCod='%ld'" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=crs_grp_types.CrsCod" + " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" + " AND crs_grp.GrpCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u')" + ") AS sizes", + Gbl.CurrentIns.Ins.InsCod, + (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_SHARE_CRS, + (unsigned) Brw_ADMI_ASSIG_USR, + (unsigned) Brw_ADMI_WORKS_USR, + (unsigned) Brw_ADMI_MARKS_CRS, + Gbl.CurrentIns.Ins.InsCod, + (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_SHARE_GRP, + (unsigned) Brw_ADMI_MARKS_GRP); + break; + case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_SHARE_CRS: + case Brw_ADMI_MARKS_CRS: + sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1','-1'," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM centres,degrees,courses,file_browser_size" + " WHERE centres.InsCod='%ld'" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=file_browser_size.Cod" + " and file_browser_size.FileBrowser='%u'", + Gbl.CurrentIns.Ins.InsCod,(unsigned) FileBrowser); + break; + case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_SHARE_GRP: + case Brw_ADMI_MARKS_GRP: + sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod),COUNT(DISTINCT file_browser_size.Cod),'-1'," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM centres,degrees,courses,crs_grp_types,crs_grp,file_browser_size" + " WHERE centres.InsCod='%ld'" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=crs_grp_types.CrsCod" + " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" + " AND crs_grp.GrpCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser='%u'", + Gbl.CurrentIns.Ins.InsCod,(unsigned) FileBrowser); + break; + case Brw_ADMI_ASSIG_USR: + case Brw_ADMI_WORKS_USR: + sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod)," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM centres,degrees,courses,file_browser_size" + " WHERE centres.InsCod='%ld'" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser='%u'", + Gbl.CurrentIns.Ins.InsCod,(unsigned) FileBrowser); + break; + case Brw_ADMI_BRIEF_USR: + sprintf (Query,"SELECT '-1','-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod)," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM centres,degrees,courses,crs_usr,file_browser_size" + " WHERE centres.InsCod='%ld'" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=crs_usr.CrsCod" + " AND crs_usr.UsrCod=file_browser_size.ZoneUsrCod" + " AND file_browser_size.FileBrowser='%u'", + Gbl.CurrentIns.Ins.InsCod,(unsigned) FileBrowser); + break; + default: + Lay_ShowErrorAndExit ("Wrong file browser."); + break; + } break; + /* Scope = the current centre */ case Sco_SCOPE_CENTRE: - if (FileBrowser == Brw_UNKNOWN) - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1',MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" - " FROM degrees,courses,file_browser_size" - " WHERE degrees.CtrCod='%ld'" - " AND degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=file_browser_size.Cod" - " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u')", - Gbl.CurrentCtr.Ctr.CtrCod, - (unsigned) Brw_ADMI_DOCUM_CRS, - (unsigned) Brw_ADMI_SHARE_CRS, - (unsigned) Brw_ADMI_ASSIG_USR, - (unsigned) Brw_ADMI_ASSIG_CRS, - (unsigned) Brw_ADMI_WORKS_USR, - (unsigned) Brw_ADMI_WORKS_CRS, - (unsigned) Brw_ADMI_MARKS_CRS); - else if (FileBrowser == Brw_ADMI_BRIEF_USR) - sprintf (Query,"SELECT '-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod),MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" - " FROM file_browser_size,degrees,courses,crs_usr" - " WHERE file_browser_size.FileBrowser='%u'" - " AND degrees.CtrCod='%ld'" - " AND degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" - " AND file_browser_size.ZoneUsrCod=crs_usr.UsrCod", - (unsigned) FileBrowser,Gbl.CurrentCtr.Ctr.CtrCod); - else if (FileBrowser == Brw_ADMI_ASSIG_USR || - FileBrowser == Brw_ADMI_WORKS_USR) - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),COUNT(DISTINCT file_browser_size.ZoneUsrCod),MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" - " FROM file_browser_size,degrees,courses" - " WHERE file_browser_size.FileBrowser='%u'" - " AND degrees.CtrCod='%ld'" - " AND degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=file_browser_size.Cod", - (unsigned) FileBrowser,Gbl.CurrentCtr.Ctr.CtrCod); - else - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1',MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" - " FROM file_browser_size,degrees,courses" - " WHERE file_browser_size.FileBrowser='%u'" - " AND degrees.CtrCod='%ld'" - " AND degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=file_browser_size.Cod", - (unsigned) FileBrowser,Gbl.CurrentCtr.Ctr.CtrCod); + switch (FileBrowser) + { + case Brw_UNKNOWN: + sprintf (Query,"SELECT COUNT(DISTINCT CrsCod),COUNT(DISTINCT GrpCod)-1,'-1'," + "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + " FROM " + "(" + "SELECT file_browser_size.Cod AS CrsCod,'-1' AS GrpCod," // Course zones + "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + " FROM degrees,courses,file_browser_size" + " WHERE degrees.CtrCod='%ld'" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u','%u')" + " UNION " + "SELECT crs_grp_types.CrsCod,file_browser_size.Cod AS GrpCod," // Group zones + "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + " FROM degrees,courses,crs_grp_types,crs_grp,file_browser_size" + " WHERE degrees.CtrCod='%ld'" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=crs_grp_types.CrsCod" + " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" + " AND crs_grp.GrpCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u')" + ") AS sizes", + Gbl.CurrentCtr.Ctr.CtrCod, + (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_SHARE_CRS, + (unsigned) Brw_ADMI_ASSIG_USR, + (unsigned) Brw_ADMI_WORKS_USR, + (unsigned) Brw_ADMI_MARKS_CRS, + Gbl.CurrentCtr.Ctr.CtrCod, + (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_SHARE_GRP, + (unsigned) Brw_ADMI_MARKS_GRP); + break; + case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_SHARE_CRS: + case Brw_ADMI_MARKS_CRS: + sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1','-1'," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM degrees,courses,file_browser_size" + " WHERE degrees.CtrCod='%ld'" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser='%u'", + Gbl.CurrentCtr.Ctr.CtrCod,(unsigned) FileBrowser); + break; + case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_SHARE_GRP: + case Brw_ADMI_MARKS_GRP: + sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod),COUNT(DISTINCT file_browser_size.Cod),'-1'," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM degrees,courses,crs_grp_types,crs_grp,file_browser_size" + " WHERE degrees.CtrCod='%ld'" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=crs_grp_types.CrsCod" + " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" + " AND crs_grp.GrpCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser='%u'", + Gbl.CurrentCtr.Ctr.CtrCod,(unsigned) FileBrowser); + break; + case Brw_ADMI_ASSIG_USR: + case Brw_ADMI_WORKS_USR: + sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod)," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM degrees,courses,file_browser_size" + " WHERE degrees.CtrCod='%ld'" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser='%u'", + Gbl.CurrentCtr.Ctr.CtrCod,(unsigned) FileBrowser); + break; + case Brw_ADMI_BRIEF_USR: + sprintf (Query,"SELECT '-1','-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod)," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM degrees,courses,crs_usr,file_browser_size" + " WHERE degrees.CtrCod='%ld'" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=crs_usr.CrsCod" + " AND crs_usr.UsrCod=file_browser_size.ZoneUsrCod" + " AND file_browser_size.FileBrowser='%u'", + Gbl.CurrentCtr.Ctr.CtrCod,(unsigned) FileBrowser); + break; + default: + Lay_ShowErrorAndExit ("Wrong file browser."); + break; + } break; + /* Scope = the current degree */ case Sco_SCOPE_DEGREE: - if (FileBrowser == Brw_UNKNOWN) - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1',MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" - " FROM file_browser_size,courses" - " WHERE courses.DegCod='%ld' AND courses.CrsCod=file_browser_size.Cod" - " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u')", - Gbl.CurrentDeg.Deg.DegCod, - (unsigned) Brw_ADMI_DOCUM_CRS, - (unsigned) Brw_ADMI_SHARE_CRS, - (unsigned) Brw_ADMI_ASSIG_USR, - (unsigned) Brw_ADMI_ASSIG_CRS, - (unsigned) Brw_ADMI_WORKS_USR, - (unsigned) Brw_ADMI_WORKS_CRS, - (unsigned) Brw_ADMI_MARKS_CRS); - else if (FileBrowser == Brw_ADMI_BRIEF_USR) - sprintf (Query,"SELECT '-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod),MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" - " FROM file_browser_size,courses,crs_usr" - " WHERE file_browser_size.FileBrowser='%u'" - " AND courses.DegCod='%ld'" - " AND courses.CrsCod=crs_usr.CrsCod" - " AND file_browser_size.ZoneUsrCod=crs_usr.UsrCod", - (unsigned) FileBrowser,Gbl.CurrentDeg.Deg.DegCod); - else if (FileBrowser == Brw_ADMI_ASSIG_USR || - FileBrowser == Brw_ADMI_WORKS_USR) - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),COUNT(DISTINCT file_browser_size.ZoneUsrCod),MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" - " FROM file_browser_size,courses" - " WHERE file_browser_size.FileBrowser='%u'" - " AND courses.DegCod='%ld'" - " AND courses.CrsCod=file_browser_size.Cod", - (unsigned) FileBrowser,Gbl.CurrentDeg.Deg.DegCod); - else - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1',MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" - " FROM file_browser_size,courses" - " WHERE file_browser_size.FileBrowser='%u'" - " AND courses.DegCod='%ld'" - " AND courses.CrsCod=file_browser_size.Cod", - (unsigned) FileBrowser,Gbl.CurrentDeg.Deg.DegCod); + switch (FileBrowser) + { + case Brw_UNKNOWN: + sprintf (Query,"SELECT COUNT(DISTINCT CrsCod),COUNT(DISTINCT GrpCod)-1,'-1'," + "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + " FROM " + "(" + "SELECT file_browser_size.Cod AS CrsCod,'-1' AS GrpCod," // Course zones + "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + " FROM courses,file_browser_size" + " WHERE courses.DegCod='%ld'" + " AND courses.CrsCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u','%u')" + " UNION " + "SELECT crs_grp_types.CrsCod,file_browser_size.Cod AS GrpCod," // Group zones + "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + " FROM courses,crs_grp_types,crs_grp,file_browser_size" + " WHERE courses.DegCod='%ld'" + " AND courses.CrsCod=crs_grp_types.CrsCod" + " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" + " AND crs_grp.GrpCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u')" + ") AS sizes", + Gbl.CurrentDeg.Deg.DegCod, + (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_SHARE_CRS, + (unsigned) Brw_ADMI_ASSIG_USR, + (unsigned) Brw_ADMI_WORKS_USR, + (unsigned) Brw_ADMI_MARKS_CRS, + Gbl.CurrentDeg.Deg.DegCod, + (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_SHARE_GRP, + (unsigned) Brw_ADMI_MARKS_GRP); + break; + case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_SHARE_CRS: + case Brw_ADMI_MARKS_CRS: + sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1','-1'," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM courses,file_browser_size" + " WHERE courses.DegCod='%ld'" + " AND courses.CrsCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser='%u'", + Gbl.CurrentDeg.Deg.DegCod,(unsigned) FileBrowser); + break; + case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_SHARE_GRP: + case Brw_ADMI_MARKS_GRP: + sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod),COUNT(DISTINCT file_browser_size.Cod),'-1'," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM courses,crs_grp_types,crs_grp,file_browser_size" + " WHERE courses.DegCod='%ld'" + " AND courses.CrsCod=crs_grp_types.CrsCod" + " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" + " AND crs_grp.GrpCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser='%u'", + Gbl.CurrentDeg.Deg.DegCod,(unsigned) FileBrowser); + break; + case Brw_ADMI_ASSIG_USR: + case Brw_ADMI_WORKS_USR: + sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod)," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM courses,file_browser_size" + " WHERE courses.DegCod='%ld'" + " AND courses.CrsCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser='%u'", + Gbl.CurrentDeg.Deg.DegCod,(unsigned) FileBrowser); + break; + case Brw_ADMI_BRIEF_USR: + sprintf (Query,"SELECT '-1','-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod)," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM courses,crs_usr,file_browser_size" + " WHERE courses.DegCod='%ld'" + " AND courses.CrsCod=crs_usr.CrsCod" + " AND crs_usr.UsrCod=file_browser_size.ZoneUsrCod" + " AND file_browser_size.FileBrowser='%u'", + Gbl.CurrentDeg.Deg.DegCod,(unsigned) FileBrowser); + break; + default: + Lay_ShowErrorAndExit ("Wrong file browser."); + break; + } break; + /* Scope = the current course */ case Sco_SCOPE_COURSE: - if (FileBrowser == Brw_UNKNOWN) - sprintf (Query,"SELECT '1','-1',MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" - " FROM file_browser_size" - " WHERE Cod='%ld'" - " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u')", - Gbl.CurrentCrs.Crs.CrsCod, - (unsigned) Brw_ADMI_DOCUM_CRS, - (unsigned) Brw_ADMI_SHARE_CRS, - (unsigned) Brw_ADMI_ASSIG_USR, - (unsigned) Brw_ADMI_ASSIG_CRS, - (unsigned) Brw_ADMI_WORKS_USR, - (unsigned) Brw_ADMI_WORKS_CRS, - (unsigned) Brw_ADMI_MARKS_CRS); - else if (FileBrowser == Brw_ADMI_BRIEF_USR) - sprintf (Query,"SELECT '-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod),MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" - " FROM file_browser_size,crs_usr" - " WHERE file_browser_size.FileBrowser='%u'" - " AND crs_usr.CrsCod='%ld'" - " AND file_browser_size.ZoneUsrCod=crs_usr.UsrCod", - (unsigned) FileBrowser,Gbl.CurrentCrs.Crs.CrsCod); - else if (FileBrowser == Brw_ADMI_ASSIG_USR || - FileBrowser == Brw_ADMI_WORKS_USR) - sprintf (Query,"SELECT '1',COUNT(DISTINCT ZoneUsrCod),MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" - " FROM file_browser_size" - " WHERE FileBrowser='%u'" - " AND Cod='%ld'", - (unsigned) FileBrowser,Gbl.CurrentCrs.Crs.CrsCod); - else - sprintf (Query,"SELECT '1','-1',MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" - " FROM file_browser_size" - " WHERE FileBrowser='%u'" - " AND Cod='%ld'", - (unsigned) FileBrowser,Gbl.CurrentCrs.Crs.CrsCod); + switch (FileBrowser) + { + case Brw_UNKNOWN: + sprintf (Query,"SELECT COUNT(DISTINCT CrsCod),COUNT(DISTINCT GrpCod)-1,'-1'," + "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + " FROM " + "(" + "SELECT Cod AS CrsCod,'-1' AS GrpCod," // Course zones + "NumLevels,NumFolders,NumFiles,TotalSize" + " FROM file_browser_size" + " WHERE Cod='%ld'" + " AND FileBrowser IN ('%u','%u','%u','%u','%u')" + " UNION " + "SELECT crs_grp_types.CrsCod,file_browser_size.Cod AS GrpCod," // Group zones + "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + " FROM crs_grp_types,crs_grp,file_browser_size" + " WHERE crs_grp_types.CrsCod='%ld'" + " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" + " AND crs_grp.GrpCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u')" + ") AS sizes", + Gbl.CurrentCrs.Crs.CrsCod, + (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_SHARE_CRS, + (unsigned) Brw_ADMI_ASSIG_USR, + (unsigned) Brw_ADMI_WORKS_USR, + (unsigned) Brw_ADMI_MARKS_CRS, + Gbl.CurrentCrs.Crs.CrsCod, + (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_SHARE_GRP, + (unsigned) Brw_ADMI_MARKS_GRP); + break; + case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_SHARE_CRS: + case Brw_ADMI_MARKS_CRS: + sprintf (Query,"SELECT '1','-1','-1'," + "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + " FROM file_browser_size" + " WHERE Cod='%ld' AND FileBrowser='%u'", + Gbl.CurrentCrs.Crs.CrsCod,(unsigned) FileBrowser); + break; + case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_SHARE_GRP: + case Brw_ADMI_MARKS_GRP: + sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod),COUNT(DISTINCT file_browser_size.Cod),'-1'," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM crs_grp_types,crs_grp,file_browser_size" + " WHERE crs_grp_types.CrsCod='%ld'" + " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" + " AND crs_grp.GrpCod=file_browser_size.Cod" + " AND file_browser_size.FileBrowser='%u'", + Gbl.CurrentCrs.Crs.CrsCod,(unsigned) FileBrowser); + break; + case Brw_ADMI_ASSIG_USR: + case Brw_ADMI_WORKS_USR: + sprintf (Query,"SELECT '1','-1',COUNT(DISTINCT ZoneUsrCod)," + "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + " FROM file_browser_size" + " WHERE Cod='%ld' AND FileBrowser='%u'", + Gbl.CurrentCrs.Crs.CrsCod,(unsigned) FileBrowser); + break; + case Brw_ADMI_BRIEF_USR: + sprintf (Query,"SELECT '-1','-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod)," + "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + " FROM crs_usr,file_browser_size" + " WHERE crs_usr.CrsCod='%ld'" + " AND crs_usr.UsrCod=file_browser_size.ZoneUsrCod" + " AND file_browser_size.FileBrowser='%u'", + Gbl.CurrentCrs.Crs.CrsCod,(unsigned) FileBrowser); + break; + default: + Lay_ShowErrorAndExit ("Wrong file browser."); + break; + } break; default: Lay_ShowErrorAndExit ("Wrong scope."); @@ -4916,29 +5268,34 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope,Brw_FileBrowser_t Fil if (sscanf (row[0],"%u",&(SizeOfFileZones->NumCrss)) != 1) Lay_ShowErrorAndExit ("Error when getting number of courses."); - /* Get number of users (row[1]) */ + /* Get number of groups (row[1]) */ if (row[1]) - if (sscanf (row[1],"%u",&(SizeOfFileZones->NumUsrs)) != 1) + if (sscanf (row[1],"%u",&(SizeOfFileZones->NumGrps)) != 1) + Lay_ShowErrorAndExit ("Error when getting number of groups."); + + /* Get number of users (row[2]) */ + if (row[2]) + if (sscanf (row[2],"%u",&(SizeOfFileZones->NumUsrs)) != 1) Lay_ShowErrorAndExit ("Error when getting number of users."); - /* Get maximum number of levels (row[2]) */ - if (row[2]) - if (sscanf (row[2],"%u",&(SizeOfFileZones->MaxLevels)) != 1) + /* Get maximum number of levels (row[3]) */ + if (row[3]) + if (sscanf (row[3],"%u",&(SizeOfFileZones->MaxLevels)) != 1) Lay_ShowErrorAndExit ("Error when getting maximum number of levels."); - /* Get number of folders (row[3]) */ - if (row[3]) - if (sscanf (row[3],"%lu",&(SizeOfFileZones->NumFolders)) != 1) + /* Get number of folders (row[4]) */ + if (row[4]) + if (sscanf (row[4],"%lu",&(SizeOfFileZones->NumFolders)) != 1) Lay_ShowErrorAndExit ("Error when getting number of folders."); - /* Get number of files (row[4]) */ - if (row[4]) - if (sscanf (row[4],"%lu",&(SizeOfFileZones->NumFiles)) != 1) + /* Get number of files (row[5]) */ + if (row[5]) + if (sscanf (row[5],"%lu",&(SizeOfFileZones->NumFiles)) != 1) Lay_ShowErrorAndExit ("Error when getting number of files."); - /* Get total size (row[5]) */ - if (row[5]) - if (sscanf (row[5],"%llu",&(SizeOfFileZones->Size)) != 1) + /* Get total size (row[6]) */ + if (row[6]) + if (sscanf (row[6],"%llu",&(SizeOfFileZones->Size)) != 1) Lay_ShowErrorAndExit ("Error when getting toal size."); /* Free structure that stores the query result */ diff --git a/swad_text.c b/swad_text.c index 504a0005c..d6a3a0d86 100644 --- a/swad_text.c +++ b/swad_text.c @@ -22770,27 +22770,6 @@ const char *Txt_No_of_files_in_DOCUM_zones = "Nº de arquivos em zonas de documentos"; #endif -const char *Txt_No_of_folders = -#if L==0 - "Nombre de carpetes"; -#elif L==1 - "Anzahl der Verzeichnisse"; -#elif L==2 - "No. of folders"; -#elif L==3 - "Nº de carpetas"; -#elif L==4 - "Nombre de répertoires"; -#elif L==5 - "Nº de carpetas"; // Okoteve traducción -#elif L==6 - "Numero di cartelle"; -#elif L==7 - "Liczba folderów"; -#elif L==8 - "Nº de diretórios"; -#endif - const char *Txt_No_of_forums = #if L==0 "Nº de foros"; // Necessita traduccio @@ -24558,27 +24537,6 @@ const char *Txt_Number_of_BR_assignments = "Nº de
atividades"; #endif -const char *Txt_Number_of_courses = -#if L==0 - "Nombre d'assignat."; -#elif L==1 - "Anzahl der Kursen"; -#elif L==2 - "Number of courses"; -#elif L==3 - "Nº de asignat."; -#elif L==4 - "Nombre de matières"; -#elif L==5 - "Nº de asignat."; // Okoteve traducción -#elif L==6 - "Numero di corsi"; -#elif L==7 - "Liczba kursów"; -#elif L==8 - "Nº de disciplinas"; -#endif - const char *Txt_Number_of_BR_courses_with_BR_assignments = #if L==0 "Nombre
d'assignatures
amb activitats";