Version 14.68

This commit is contained in:
Antonio Cañas Vargas 2015-01-25 18:50:43 +01:00
parent 0358f6ca96
commit 8fe68819d6
13 changed files with 688 additions and 458 deletions

View File

@ -689,12 +689,20 @@ void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat,
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message); Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
} }
/***** Remove user's clipboards *****/ /***** Remove user's clipboard in forums *****/
Brw_RemoveUsrClipboard (UsrDat->UsrCod);
For_RemoveUsrFromThrClipboard (UsrDat->UsrCod); For_RemoveUsrFromThrClipboard (UsrDat->UsrCod);
/***** Remove user's expanded folders *****/ /***** Remove some files of the user's from database *****/
Brw_RemoveUsrExpandedFolders (UsrDat->UsrCod); Brw_RemoveUsrFilesFromDB (UsrDat->UsrCod);
/***** Remove the file tree of a user *****/
Acc_RemoveUsrBriefcase (UsrDat);
if (QuietOrVerbose == Cns_VERBOSE)
{
sprintf (Gbl.Message,Txt_Virtual_pendrive_of_THE_USER_X_has_been_removed,
UsrDat->FullName);
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
}
/***** Remove exams made by user in all courses *****/ /***** Remove exams made by user in all courses *****/
Tst_RemoveExamsMadeByUsrInAllCrss (UsrDat->UsrCod); Tst_RemoveExamsMadeByUsrInAllCrss (UsrDat->UsrCod);
@ -734,15 +742,6 @@ void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat,
/***** Remove the user from the list of users without photo *****/ /***** Remove the user from the list of users without photo *****/
Pho_RemoveUsrFromTableClicksWithoutPhoto (UsrDat->UsrCod); Pho_RemoveUsrFromTableClicksWithoutPhoto (UsrDat->UsrCod);
/***** Remove the file tree of a user *****/
Acc_RemoveUsrBriefcase (UsrDat);
if (QuietOrVerbose == Cns_VERBOSE)
{
sprintf (Gbl.Message,Txt_Virtual_pendrive_of_THE_USER_X_has_been_removed,
UsrDat->FullName);
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
}
/***** Remove user's photo *****/ /***** Remove user's photo *****/
PhotoRemoved = Pho_RemovePhoto (UsrDat); PhotoRemoved = Pho_RemovePhoto (UsrDat);
if (PhotoRemoved && QuietOrVerbose == Cns_VERBOSE) if (PhotoRemoved && QuietOrVerbose == Cns_VERBOSE)
@ -770,15 +769,9 @@ static void Acc_RemoveUsrBriefcase (struct UsrData *UsrDat)
{ {
char PathRelUsr[PATH_MAX+1]; char PathRelUsr[PATH_MAX+1];
/***** Remove the briefcase of the user *****/ /***** Remove files of the user's briefcase from disc *****/
Usr_ConstructPathUsr (UsrDat->UsrCod,PathRelUsr); Usr_ConstructPathUsr (UsrDat->UsrCod,PathRelUsr);
Brw_RemoveTree (PathRelUsr); Brw_RemoveTree (PathRelUsr);
/***** Remove files in the course from database *****/
Brw_RemoveFilesFromDB (-1L,-1L,-1L,-1L,-1L,UsrDat->UsrCod);
/***** Remove size of the briefcase of the user from database *****/
Brw_RemoveSizeOfFileTreeFromDB (-1L,-1L,UsrDat->UsrCod);
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -1409,6 +1409,7 @@ void Ctr_RemoveCentre (void)
extern const char *Txt_Centre_X_removed; extern const char *Txt_Centre_X_removed;
char Query[512]; char Query[512];
struct Centre Ctr; struct Centre Ctr;
char PathCtr[PATH_MAX+1];
/***** Get centre code *****/ /***** Get centre code *****/
if ((Ctr.CtrCod = Ctr_GetParamOtherCtrCod ()) < 0) if ((Ctr.CtrCod = Ctr_GetParamOtherCtrCod ()) < 0)
@ -1424,16 +1425,14 @@ void Ctr_RemoveCentre (void)
else // Centre has no teachers ==> remove it else // Centre has no teachers ==> remove it
{ {
/***** Remove information related to files in centre *****/ /***** Remove information related to files in centre *****/
/* Remove clipboards related to the centre */ Brw_RemoveCtrFilesFromDB (Ctr.CtrCod);
sprintf (Query,"DELETE FROM clipboard WHERE CtrCod='%ld'",
Ctr.CtrCod);
DB_QueryDELETE (Query,"can not remove clipboards in a centre");
/* Remove last accesses to file browsers related with this centre */ /***** Remove directories of the centre *****/
Brw_RemoveFileBrowserLast (Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR,Ctr.CtrCod); sprintf (PathCtr,"%s/%s/%02u/%u",
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR,
/* Remove files in the centre from database */ (unsigned) (Ctr.CtrCod % 100),
Brw_RemoveFilesFromDB (-1L,Ctr.CtrCod,-1L,-1L,-1L,-1L); (unsigned) Ctr.CtrCod);
Brw_RemoveTree (PathCtr);
/***** Remove centre *****/ /***** Remove centre *****/
sprintf (Query,"DELETE FROM centres WHERE CtrCod='%ld'", sprintf (Query,"DELETE FROM centres WHERE CtrCod='%ld'",

View File

@ -39,11 +39,22 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 14.67.1 (2015/01/25)" #define Log_PLATFORM_VERSION "SWAD 14.68 (2015/01/25)"
// Number of lines (includes comments but not blank lines) has been got with the following command: // 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 // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h | tail -1
/* /*
Version 14.68: Jan 25, 2015 Changes in file_browser_size table. (175606 lines)
8 changes necessary in database:
DROP INDEX FileBrowser ON file_browser_size;
DROP INDEX UsrCod ON file_browser_size;
ALTER TABLE file_browser_size CHANGE COLUMN UsrCod ZoneUsrCod INT NOT NULL DEFAULT -1,ADD INDEX (ZoneUsrCod);
ALTER TABLE file_browser_size ADD COLUMN Cod INT NOT NULL DEFAULT -1 AFTER FileBrowser, ADD UNIQUE INDEX (FileBrowser,Cod,ZoneUsrCod);
UPDATE file_browser_size SET Cod=CrsCod WHERE CrsCod>'0' AND GrpCod<='0';
UPDATE file_browser_size SET Cod=GrpCod WHERE GrpCod>'0';
ALTER TABLE file_browser_size DROP COLUMN CrsCod;
ALTER TABLE file_browser_size DROP COLUMN GrpCod;
Version 14.67.1: Jan 25, 2015 Fixed bugs in file browsers. (175395 lines) Version 14.67.1: Jan 25, 2015 Fixed bugs in file browsers. (175395 lines)
Version 14.67: Jan 25, 2015 Changes in files table. (175369 lines) Version 14.67: Jan 25, 2015 Changes in files table. (175369 lines)
16 changes necessary in database: 16 changes necessary in database:
@ -56,7 +67,7 @@ CREATE INDEX ZoneUsrCod ON files (ZoneUsrCod);
UPDATE files SET Cod=InsCod WHERE InsCod>'0'; UPDATE files SET Cod=InsCod WHERE InsCod>'0';
UPDATE files SET Cod=CtrCod WHERE CtrCod>'0'; UPDATE files SET Cod=CtrCod WHERE CtrCod>'0';
UPDATE files SET Cod=DegCod WHERE DegCod>'0'; UPDATE files SET Cod=DegCod WHERE DegCod>'0';
UPDATE files SET Cod=CrsCod WHERE CrsCod>'0'; UPDATE files SET Cod=CrsCod WHERE CrsCod>'0' AND GrpCod<='0';
UPDATE files SET Cod=GrpCod WHERE GrpCod>'0'; UPDATE files SET Cod=GrpCod WHERE GrpCod>'0';
ALTER TABLE files DROP COLUMN InsCod; ALTER TABLE files DROP COLUMN InsCod;
ALTER TABLE files DROP COLUMN CtrCod; ALTER TABLE files DROP COLUMN CtrCod;
@ -73,7 +84,7 @@ CREATE INDEX WorksUsrCod ON clipboard (WorksUsrCod);
UPDATE clipboard SET Cod=InsCod WHERE InsCod>'0'; UPDATE clipboard SET Cod=InsCod WHERE InsCod>'0';
UPDATE clipboard SET Cod=CtrCod WHERE CtrCod>'0'; UPDATE clipboard SET Cod=CtrCod WHERE CtrCod>'0';
UPDATE clipboard SET Cod=DegCod WHERE DegCod>'0'; UPDATE clipboard SET Cod=DegCod WHERE DegCod>'0';
UPDATE clipboard SET Cod=CrsCod WHERE CrsCod>'0'; UPDATE clipboard SET Cod=CrsCod WHERE CrsCod>'0' AND GrpCod<='0';
UPDATE clipboard SET Cod=GrpCod WHERE GrpCod>'0'; UPDATE clipboard SET Cod=GrpCod WHERE GrpCod>'0';
ALTER TABLE clipboard DROP COLUMN InsCod; ALTER TABLE clipboard DROP COLUMN InsCod;
ALTER TABLE clipboard DROP COLUMN CtrCod; ALTER TABLE clipboard DROP COLUMN CtrCod;
@ -89,7 +100,7 @@ CREATE INDEX WorksUsrCod ON expanded_folders (WorksUsrCod);
UPDATE expanded_folders SET Cod=InsCod WHERE InsCod>'0'; UPDATE expanded_folders SET Cod=InsCod WHERE InsCod>'0';
UPDATE expanded_folders SET Cod=CtrCod WHERE CtrCod>'0'; UPDATE expanded_folders SET Cod=CtrCod WHERE CtrCod>'0';
UPDATE expanded_folders SET Cod=DegCod WHERE DegCod>'0'; UPDATE expanded_folders SET Cod=DegCod WHERE DegCod>'0';
UPDATE expanded_folders SET Cod=CrsCod WHERE CrsCod>'0'; UPDATE expanded_folders SET Cod=CrsCod WHERE CrsCod>'0' AND GrpCod<='0';
UPDATE expanded_folders SET Cod=GrpCod WHERE GrpCod>'0'; UPDATE expanded_folders SET Cod=GrpCod WHERE GrpCod>'0';
ALTER TABLE expanded_folders DROP COLUMN InsCod; ALTER TABLE expanded_folders DROP COLUMN InsCod;
ALTER TABLE expanded_folders DROP COLUMN CtrCod; ALTER TABLE expanded_folders DROP COLUMN CtrCod;

View File

@ -2425,27 +2425,7 @@ static void Crs_EmptyCourseCompletely (long CrsCod)
DB_QueryDELETE (Query,"can not remove users from a course"); DB_QueryDELETE (Query,"can not remove users from a course");
/***** Remove information related to files in course *****/ /***** Remove information related to files in course *****/
/* Remove clipboards related to the course */ Brw_RemoveCrsFilesFromDB (CrsCod);
sprintf (Query,"DELETE FROM clipboard WHERE CrsCod='%ld'",
CrsCod);
DB_QueryDELETE (Query,"can not remove clipboards in a course");
/* Remove expanded folders in the course */
Brw_RemoveExpandedFoldersInCrs (CrsCod);
/* Remove format of files of marks of the course */
sprintf (Query,"DELETE FROM marks_properties"
" USING files,marks_properties"
" WHERE files.CrsCod='%ld'"
" AND files.FilCod=marks_properties.FilCod",
CrsCod);
DB_QueryDELETE (Query,"can not remove the properties of marks associated to a course");
/* Remove files in the course from database */
Brw_RemoveFilesFromDB (-1L,-1L,-1L,CrsCod,-1L,-1L);
/* Remove size of file zones in the course from database */
Brw_RemoveSizeOfFileTreeFromDB (CrsCod,-1L,-1L);
/***** Remove directories of the course *****/ /***** Remove directories of the course *****/
sprintf (PathRelCrs,"%s/%s/%ld", sprintf (PathRelCrs,"%s/%s/%ld",

View File

@ -1005,14 +1005,14 @@ mysql> DESCRIBE file_browser_size;
*/ */
DB_CreateTable ("CREATE TABLE IF NOT EXISTS file_browser_size (" DB_CreateTable ("CREATE TABLE IF NOT EXISTS file_browser_size ("
"FileBrowser TINYINT NOT NULL," "FileBrowser TINYINT NOT NULL,"
"CrsCod INT NOT NULL DEFAULT -1," "Cod INT NOT NULL DEFAULT -1,"
"GrpCod INT NOT NULL DEFAULT -1," "ZoneUsrCod INT NOT NULL DEFAULT -1,"
"UsrCod INT NOT NULL DEFAULT -1,"
"NumLevels INT NOT NULL," "NumLevels INT NOT NULL,"
"NumFolders INT NOT NULL," "NumFolders INT NOT NULL,"
"NumFiles INT NOT NULL," "NumFiles INT NOT NULL,"
"TotalSize BIGINT NOT NULL," "TotalSize BIGINT NOT NULL,"
"UNIQUE INDEX(FileBrowser,CrsCod,GrpCod,UsrCod),INDEX(CrsCod),INDEX(GrpCod),INDEX(UsrCod))"); "UNIQUE INDEX(FileBrowser,Cod,ZoneUsrCod),"
"INDEX(ZoneUsrCod))");
/***** Table file_view *****/ /***** Table file_view *****/
/* /*

View File

@ -3122,6 +3122,7 @@ static void Deg_RemoveDegreeCompletely (long DegCod)
MYSQL_ROW row; MYSQL_ROW row;
unsigned long NumRow,NumRows; unsigned long NumRow,NumRows;
long CrsCod; long CrsCod;
char PathDeg[PATH_MAX+1];
/***** Get courses of a degree from database *****/ /***** Get courses of a degree from database *****/
sprintf (Query,"SELECT CrsCod FROM courses" sprintf (Query,"SELECT CrsCod FROM courses"
@ -3183,16 +3184,14 @@ static void Deg_RemoveDegreeCompletely (long DegCod)
DB_QueryDELETE (Query,"can not remove threads in forums of a degree"); DB_QueryDELETE (Query,"can not remove threads in forums of a degree");
/***** Remove information related to files in degree *****/ /***** Remove information related to files in degree *****/
/* Remove clipboards related to the degree */ Brw_RemoveDegFilesFromDB (DegCod);
sprintf (Query,"DELETE FROM clipboard WHERE DegCod='%ld'",
DegCod);
DB_QueryDELETE (Query,"can not remove clipboards in a degree");
/* Remove last accesses to file browsers related with this degree */ /***** Remove directories of the degree *****/
Brw_RemoveFileBrowserLast (Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG,DegCod); sprintf (PathDeg,"%s/%s/%02u/%u",
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_DEG,
/* Remove files in the degree from database */ (unsigned) (DegCod % 100),
Brw_RemoveFilesFromDB (-1L,-1L,DegCod,-1L,-1L,-1L); (unsigned) DegCod);
Brw_RemoveTree (PathDeg);
/***** Remove administrators of this degree *****/ /***** Remove administrators of this degree *****/
sprintf (Query,"DELETE FROM deg_admin WHERE DegCod='%ld'", sprintf (Query,"DELETE FROM deg_admin WHERE DegCod='%ld'",

View File

@ -3219,11 +3219,8 @@ static void Enr_EffectivelyRemUsrFromCrs (struct UsrData *UsrDat,struct Course *
/***** Remove fields of this user in its course record *****/ /***** Remove fields of this user in its course record *****/
Rec_RemoveFieldsCrsRecordInCrs (UsrDat->UsrCod,Crs,QuietOrVerbose); Rec_RemoveFieldsCrsRecordInCrs (UsrDat->UsrCod,Crs,QuietOrVerbose);
/***** Remove user's clipboard *****/ /***** Remove some information about files in course and groups *****/
Brw_RemoveUsrClipboardInCrs (UsrDat->UsrCod,Crs->CrsCod); Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (UsrDat->UsrCod,Crs->CrsCod);
/***** Remove user's expanded folders in course *****/
Brw_RemoveUsrExpandedFoldersInCrs (UsrDat->UsrCod,Crs->CrsCod);
/***** Remove exams made by user in course *****/ /***** Remove exams made by user in course *****/
Tst_RemoveExamsMadeByUsrInCrs (UsrDat->UsrCod,Crs->CrsCod); Tst_RemoveExamsMadeByUsrInCrs (UsrDat->UsrCod,Crs->CrsCod);

View File

@ -95,7 +95,7 @@ const char *Brw_Licenses_DB[Brw_NUM_LICENSES] =
"cc_by_nc_nd", // CC Attribution-NonCommercial-NoDerivs License "cc_by_nc_nd", // CC Attribution-NonCommercial-NoDerivs License
}; };
*/ */
// Brosers types for database "files" table // Browsers types for database "files" and "file_browser_size" tables
const Brw_FileBrowser_t Brw_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER] = const Brw_FileBrowser_t Brw_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER] =
{ {
Brw_FILE_BRW_UNKNOWN, // Brw_FILE_BRW_UNKNOWN = 0, Brw_FILE_BRW_UNKNOWN, // Brw_FILE_BRW_UNKNOWN = 0,
@ -121,7 +121,7 @@ const Brw_FileBrowser_t Brw_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER] =
Brw_FILE_BRW_ADMIN_DOCUMENTS_INS, // Brw_FILE_BRW_SEE_DOCUMENTS_INS = 20, Brw_FILE_BRW_ADMIN_DOCUMENTS_INS, // Brw_FILE_BRW_SEE_DOCUMENTS_INS = 20,
Brw_FILE_BRW_ADMIN_DOCUMENTS_INS, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS = 21, Brw_FILE_BRW_ADMIN_DOCUMENTS_INS, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS = 21,
}; };
// Brosers types for database "clipboard" table // Browsers types for database "clipboard" table
static const Brw_FileBrowser_t Brw_FileBrowserForDB_clipboard[Brw_NUM_TYPES_FILE_BROWSER] = static const Brw_FileBrowser_t Brw_FileBrowserForDB_clipboard[Brw_NUM_TYPES_FILE_BROWSER] =
{ {
Brw_FILE_BRW_UNKNOWN, // Brw_FILE_BRW_UNKNOWN = 0, Brw_FILE_BRW_UNKNOWN, // Brw_FILE_BRW_UNKNOWN = 0,
@ -147,7 +147,7 @@ static const Brw_FileBrowser_t Brw_FileBrowserForDB_clipboard[Brw_NUM_TYPES_FILE
Brw_FILE_BRW_ADMIN_DOCUMENTS_INS, // Brw_FILE_BRW_SEE_DOCUMENTS_INS = 20, Brw_FILE_BRW_ADMIN_DOCUMENTS_INS, // Brw_FILE_BRW_SEE_DOCUMENTS_INS = 20,
Brw_FILE_BRW_ADMIN_DOCUMENTS_INS, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS = 21, Brw_FILE_BRW_ADMIN_DOCUMENTS_INS, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS = 21,
}; };
// Brosers types for database "expanded_folders" table // Browsers types for database "expanded_folders" table
static const Brw_FileBrowser_t Brw_FileBrowserForDB_expanded_folders[Brw_NUM_TYPES_FILE_BROWSER] = static const Brw_FileBrowser_t Brw_FileBrowserForDB_expanded_folders[Brw_NUM_TYPES_FILE_BROWSER] =
{ {
Brw_FILE_BRW_UNKNOWN, // Brw_FILE_BRW_UNKNOWN Brw_FILE_BRW_UNKNOWN, // Brw_FILE_BRW_UNKNOWN
@ -173,7 +173,9 @@ static const Brw_FileBrowser_t Brw_FileBrowserForDB_expanded_folders[Brw_NUM_TYP
Brw_FILE_BRW_SEE_DOCUMENTS_INS, // Brw_FILE_BRW_SEE_DOCUMENTS_INS Brw_FILE_BRW_SEE_DOCUMENTS_INS, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
Brw_FILE_BRW_SEE_DOCUMENTS_INS, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS Brw_FILE_BRW_SEE_DOCUMENTS_INS, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
}; };
// Brosers types for database "file_browser_last" table // Browsers types for database "file_browser_last" table
// Assignments and works are stored as one in file_browser_last...
// ...because a user views them at the same time
static const Brw_FileBrowser_t Brw_FileBrowserForDB_file_browser_last[Brw_NUM_TYPES_FILE_BROWSER] = static const Brw_FileBrowser_t Brw_FileBrowserForDB_file_browser_last[Brw_NUM_TYPES_FILE_BROWSER] =
{ {
Brw_FILE_BRW_UNKNOWN, // Brw_FILE_BRW_UNKNOWN = 0, Brw_FILE_BRW_UNKNOWN, // Brw_FILE_BRW_UNKNOWN = 0,
@ -3475,147 +3477,199 @@ static void Brw_ShowSizeOfFileTree (void)
static void Brw_StoreSizeOfFileTreeInDB (void) static void Brw_StoreSizeOfFileTreeInDB (void)
{ {
long Cod = Brw_GetCodForFiles ();
long ZoneUsrCod = Brw_GetZoneUsrCodForFiles ();
char Query[512]; char Query[512];
long CrsCod = -1L;
long GrpCod = -1L;
long UsrCod = -1L;
Brw_FileBrowser_t FileBrowser = Gbl.FileBrowser.Type;
switch (Gbl.FileBrowser.Type)
{
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
case Brw_FILE_BRW_COMMON_CRS:
case Brw_FILE_BRW_ADMIN_MARKS_CRS:
CrsCod = Gbl.CurrentCrs.Crs.CrsCod;
break;
case Brw_FILE_BRW_COMMON_GRP:
case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
case Brw_FILE_BRW_ADMIN_MARKS_GRP:
CrsCod = Gbl.CurrentCrs.Crs.CrsCod;
GrpCod = Gbl.CurrentCrs.Grps.GrpCod;
break;
case Brw_FILE_BRW_ASSIGNMENTS_USR:
case Brw_FILE_BRW_WORKS_USR:
CrsCod = Gbl.CurrentCrs.Crs.CrsCod;
UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
break;
case Brw_FILE_BRW_ASSIGNMENTS_CRS:
CrsCod = Gbl.CurrentCrs.Crs.CrsCod;
UsrCod = Gbl.Usrs.Other.UsrDat.UsrCod;
FileBrowser = Brw_FILE_BRW_ASSIGNMENTS_USR;
break;
case Brw_FILE_BRW_WORKS_CRS:
CrsCod = Gbl.CurrentCrs.Crs.CrsCod;
UsrCod = Gbl.Usrs.Other.UsrDat.UsrCod;
FileBrowser = Brw_FILE_BRW_WORKS_USR;
break;
case Brw_FILE_BRW_BRIEFCASE_USR:
UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
break;
default: // Not aplicable here
break;
}
/***** Update size of the file browser in database *****/ /***** Update size of the file browser in database *****/
sprintf (Query,"REPLACE INTO file_browser_size" sprintf (Query,"REPLACE INTO file_browser_size (FileBrowser,Cod,ZoneUsrCod,"
" (FileBrowser,CrsCod,GrpCod,UsrCod,NumLevels,NumFolders,NumFiles,TotalSize)" "NumLevels,NumFolders,NumFiles,TotalSize)"
" VALUES ('%u','%ld','%ld','%ld','%u','%lu','%lu','%llu')", " VALUES ('%u','%ld','%ld',"
(unsigned) FileBrowser,CrsCod,GrpCod,UsrCod, "'%u','%lu','%lu','%llu')",
Gbl.FileBrowser.Size.NumLevls,Gbl.FileBrowser.Size.NumFolds,Gbl.FileBrowser.Size.NumFiles,Gbl.FileBrowser.Size.TotalSiz); (unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type],Cod,ZoneUsrCod,
Gbl.FileBrowser.Size.NumLevls,
Gbl.FileBrowser.Size.NumFolds,
Gbl.FileBrowser.Size.NumFiles,
Gbl.FileBrowser.Size.TotalSiz);
DB_QueryREPLACE (Query,"can not store the size of a file browser"); DB_QueryREPLACE (Query,"can not store the size of a file browser");
} }
/*****************************************************************************/ /*****************************************************************************/
/**************** Remove size of a file browser from database ****************/ /******** Remove files related to an institution from the database ***********/
/*****************************************************************************/ /*****************************************************************************/
void Brw_RemoveSizeOfFileTreeFromDB (long CrsCod,long GrpCod,long UsrCod) void Brw_RemoveInsFilesFromDB (long InsCod)
{ {
char Query[512]; char Query[512];
/***** Remove size of the file browser from database *****/ /***** Remove from database the entries that store the file views *****/
if (CrsCod > 0 && GrpCod == -1L && UsrCod == -1L) // All the zones of the course sprintf (Query,"DELETE FROM file_view USING file_view,files"
sprintf (Query,"DELETE FROM file_browser_size WHERE CrsCod='%ld'",
CrsCod);
else if (CrsCod > 0 && UsrCod > 0) // Works of a student in the course
sprintf (Query,"DELETE FROM file_browser_size WHERE CrsCod='%ld' AND UsrCod='%ld'",
CrsCod,UsrCod);
else if (GrpCod > 0) // All the zones of the group
sprintf (Query,"DELETE FROM file_browser_size WHERE GrpCod='%ld'",
GrpCod);
else if (UsrCod > 0) // All the zones of the user
sprintf (Query,"DELETE FROM file_browser_size WHERE UsrCod='%ld'",
UsrCod);
DB_QueryDELETE (Query,"can not remove the size of a file browser");
}
/*****************************************************************************/
/**************** Remove a file or folder from the database ******************/
/*****************************************************************************/
void Brw_RemoveFilesFromDB (long InsCod,long CtrCod,long DegCod,long CrsCod,long GrpCod,long UsrCod)
{
char Query1[512];
char Query2[512];
/***** Remove size of the file browser from database *****/
if (InsCod > 0) // Documents of the institution
{
sprintf (Query1,"DELETE FROM file_view USING file_view,files"
" WHERE files.FileBrowser='%u' AND files.Cod='%ld'" " WHERE files.FileBrowser='%u' AND files.Cod='%ld'"
" AND files.FilCod=file_view.FilCod", " AND files.FilCod=file_view.FilCod",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_INS, (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_INS,
InsCod); InsCod);
sprintf (Query2,"DELETE FROM files" DB_QueryDELETE (Query,"can not remove file views to files of an institution");
/***** Remove from database expanded folders *****/
sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders"
" WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_SEE_DOCUMENTS_INS,
InsCod);
DB_QueryDELETE (Query,"can not remove expanded folders of an institution");
/***** Remove from database the entries that store clipboards *****/
sprintf (Query,"DELETE FROM clipboard"
" WHERE FileBrowser='%u' AND Cod='%ld'", " WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_INS, (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_INS,
InsCod); InsCod);
DB_QueryDELETE (Query,"can not remove clipboards related to files of an institution");
/***** Remove from database the entries that store the last time users visited file zones *****/
sprintf (Query,"DELETE FROM file_browser_last"
" WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_INS,
InsCod);
DB_QueryDELETE (Query,"can not remove file last visits to files of an institution");
/***** Remove from database the entries that store the sizes of the file zones *****/
sprintf (Query,"DELETE FROM file_browser_size"
" WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_INS,
InsCod);
DB_QueryDELETE (Query,"can not remove sizes of file zones of an institution");
/***** Remove from database the entries that store the data files *****/
sprintf (Query,"DELETE FROM files"
" WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_INS,
InsCod);
DB_QueryDELETE (Query,"can not remove files of an institution");
} }
else if (CtrCod > 0) // Documents of the centre
/*****************************************************************************/
/************ Remove files related to a centre from the database *************/
/*****************************************************************************/
void Brw_RemoveCtrFilesFromDB (long CtrCod)
{ {
sprintf (Query1,"DELETE FROM file_view USING file_view,files" char Query[512];
/***** Remove from database the entries that store the file views *****/
sprintf (Query,"DELETE FROM file_view USING file_view,files"
" WHERE files.FileBrowser='%u' AND files.Cod='%ld'" " WHERE files.FileBrowser='%u' AND files.Cod='%ld'"
" AND files.FilCod=file_view.FilCod", " AND files.FilCod=file_view.FilCod",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR, (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR,
CtrCod); CtrCod);
sprintf (Query2,"DELETE FROM files" DB_QueryDELETE (Query,"can not remove file views to files of a centre");
/***** Remove from database expanded folders *****/
sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders"
" WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_SEE_DOCUMENTS_CTR,
CtrCod);
DB_QueryDELETE (Query,"can not remove expanded folders of a centre");
/***** Remove from database the entries that store clipboards *****/
sprintf (Query,"DELETE FROM clipboard"
" WHERE FileBrowser='%u' AND Cod='%ld'", " WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR, (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR,
DegCod); CtrCod);
DB_QueryDELETE (Query,"can not remove clipboards related to files of a centre");
/***** Remove from database the entries that store the last time users visited file zones *****/
sprintf (Query,"DELETE FROM file_browser_last"
" WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR,
CtrCod);
DB_QueryDELETE (Query,"can not remove file last visits to files of a centre");
/***** Remove from database the entries that store the sizes of the file zones *****/
sprintf (Query,"DELETE FROM file_browser_size"
" WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR,
CtrCod);
DB_QueryDELETE (Query,"can not remove sizes of file zones of a centre");
/***** Remove from database the entries that store the data files *****/
sprintf (Query,"DELETE FROM files"
" WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR,
CtrCod);
DB_QueryDELETE (Query,"can not remove files of a centre");
} }
else if (DegCod > 0) // Documents of the degree
/*****************************************************************************/
/************ Remove files related to a degree from the database *************/
/*****************************************************************************/
void Brw_RemoveDegFilesFromDB (long DegCod)
{ {
sprintf (Query1,"DELETE FROM file_view USING file_view,files" char Query[512];
/***** Remove from database the entries that store the file views *****/
sprintf (Query,"DELETE FROM file_view USING file_view,files"
" WHERE files.FileBrowser='%u' AND files.Cod='%ld'" " WHERE files.FileBrowser='%u' AND files.Cod='%ld'"
" AND files.FilCod=file_view.FilCod", " AND files.FilCod=file_view.FilCod",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG, (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG,
DegCod); DegCod);
sprintf (Query2,"DELETE FROM files" DB_QueryDELETE (Query,"can not remove file views to files of a degree");
/***** Remove from database expanded folders *****/
sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders"
" WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_SEE_DOCUMENTS_DEG,
DegCod);
DB_QueryDELETE (Query,"can not remove expanded folders of a degree");
/***** Remove from database the entries that store clipboards *****/
sprintf (Query,"DELETE FROM clipboard"
" WHERE FileBrowser='%u' AND Cod='%ld'", " WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG, (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG,
DegCod); DegCod);
DB_QueryDELETE (Query,"can not remove clipboards related to files of a degree");
/***** Remove from database the entries that store the last time users visited file zones *****/
sprintf (Query,"DELETE FROM file_browser_last"
" WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG,
DegCod);
DB_QueryDELETE (Query,"can not remove file last visits to files of a degree");
/***** Remove from database the entries that store the sizes of the file zones *****/
sprintf (Query,"DELETE FROM file_browser_size"
" WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG,
DegCod);
DB_QueryDELETE (Query,"can not remove sizes of file zones of a degree");
/***** Remove from database the entries that store the data files *****/
sprintf (Query,"DELETE FROM files"
" WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG,
DegCod);
DB_QueryDELETE (Query,"can not remove files of a degree");
} }
else if (CrsCod > 0)
/*****************************************************************************/
/************ Remove files related to a course from the database *************/
/*****************************************************************************/
// This function assumes that all the groups in the course have been removed before
void Brw_RemoveCrsFilesFromDB (long CrsCod)
{ {
if (UsrCod > 0) // Works of a user in the course char Query[512];
{
sprintf (Query1,"DELETE FROM file_view USING file_view,files" /***** Remove format of files of marks *****/
" WHERE files.FileBrowser IN ('%u','%u')" sprintf (Query,"DELETE FROM marks_properties USING files,marks_properties"
" AND files.Cod='%ld' AND files.ZoneUsrCod='%ld'" " WHERE files.FileBrowser='%u'"
" AND files.FilCod=file_view.FilCod", " AND files.Cod='%ld'"
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_USR, " AND files.FilCod=marks_properties.FilCod",
(unsigned) Brw_FILE_BRW_WORKS_USR, (unsigned) Brw_FILE_BRW_ADMIN_MARKS_CRS,
CrsCod,UsrCod); CrsCod);
sprintf (Query2,"DELETE FROM files" DB_QueryDELETE (Query,"can not remove the properties of marks associated to a course");
" WHERE FileBrowser IN ('%u','%u')"
" AND Cod='%ld' AND ZoneUsrCod='%ld'", /***** Remove from database the entries that store the file views *****/
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_USR, sprintf (Query,"DELETE FROM file_view USING file_view,files"
(unsigned) Brw_FILE_BRW_WORKS_USR,
CrsCod,UsrCod);
}
else // UsrCod <= 0 // All the zones of the course
{
sprintf (Query1,"DELETE FROM file_view USING file_view,files"
" WHERE files.FileBrowser IN ('%u','%u','%u','%u','%u')" " WHERE files.FileBrowser IN ('%u','%u','%u','%u','%u')"
" AND files.Cod='%ld'" " AND files.Cod='%ld'"
" AND files.FilCod=file_view.FilCod", " AND files.FilCod=file_view.FilCod",
@ -3625,8 +3679,52 @@ void Brw_RemoveFilesFromDB (long InsCod,long CtrCod,long DegCod,long CrsCod,long
(unsigned) Brw_FILE_BRW_WORKS_USR, (unsigned) Brw_FILE_BRW_WORKS_USR,
(unsigned) Brw_FILE_BRW_ADMIN_MARKS_CRS, (unsigned) Brw_FILE_BRW_ADMIN_MARKS_CRS,
CrsCod); CrsCod);
sprintf (Query2,"DELETE FROM files" DB_QueryDELETE (Query,"can not remove file views to files of a course");
" WHERE files.FileBrowser IN ('%u','%u','%u','%u','%u')"
/***** Remove from database expanded folders *****/
sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders"
" WHERE FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u')"
" AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_SEE_DOCUMENTS_CRS,
(unsigned) Brw_FILE_BRW_COMMON_CRS,
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_USR,
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_CRS,
(unsigned) Brw_FILE_BRW_WORKS_USR,
(unsigned) Brw_FILE_BRW_WORKS_CRS,
(unsigned) Brw_FILE_BRW_SEE_MARKS_CRS,
CrsCod);
DB_QueryDELETE (Query,"can not remove expanded folders of a course");
/***** Remove from database the entries that store clipboards *****/
sprintf (Query,"DELETE FROM clipboard"
" WHERE FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u')"
" AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS,
(unsigned) Brw_FILE_BRW_COMMON_CRS,
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_USR,
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_CRS,
(unsigned) Brw_FILE_BRW_WORKS_USR,
(unsigned) Brw_FILE_BRW_WORKS_CRS,
(unsigned) Brw_FILE_BRW_ADMIN_MARKS_CRS,
CrsCod);
DB_QueryDELETE (Query,"can not remove clipboards related to files of a course");
/***** Remove from database the entries that store the last time users visited file zones *****/
// Assignments and works are stored as one in file_browser_last...
// ...because a user views them at the same time
sprintf (Query,"DELETE FROM file_browser_last"
" WHERE FileBrowser IN ('%u','%u','%u','%u')"
" AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS,
(unsigned) Brw_FILE_BRW_COMMON_CRS,
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_USR,
(unsigned) Brw_FILE_BRW_ADMIN_MARKS_CRS,
CrsCod);
DB_QueryDELETE (Query,"can not remove file last visits to files of a course");
/***** Remove from database the entries that store the sizes of the file zones *****/
sprintf (Query,"DELETE FROM file_browser_size"
" WHERE FileBrowser IN ('%u','%u','%u','%u','%u')"
" AND Cod='%ld'", " AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS, (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS,
(unsigned) Brw_FILE_BRW_COMMON_CRS, (unsigned) Brw_FILE_BRW_COMMON_CRS,
@ -3634,11 +3732,40 @@ void Brw_RemoveFilesFromDB (long InsCod,long CtrCod,long DegCod,long CrsCod,long
(unsigned) Brw_FILE_BRW_WORKS_USR, (unsigned) Brw_FILE_BRW_WORKS_USR,
(unsigned) Brw_FILE_BRW_ADMIN_MARKS_CRS, (unsigned) Brw_FILE_BRW_ADMIN_MARKS_CRS,
CrsCod); CrsCod);
DB_QueryDELETE (Query,"can not remove sizes of file zones of a course");
/***** Remove from database the entries that store the data files *****/
sprintf (Query,"DELETE FROM files"
" WHERE FileBrowser IN ('%u','%u','%u','%u','%u')"
" AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS,
(unsigned) Brw_FILE_BRW_COMMON_CRS,
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_USR,
(unsigned) Brw_FILE_BRW_WORKS_USR,
(unsigned) Brw_FILE_BRW_ADMIN_MARKS_CRS,
CrsCod);
DB_QueryDELETE (Query,"can not remove files of a course");
} }
}
else if (GrpCod > 0) // All the zones of the group /*****************************************************************************/
/************ Remove files related to a group from the database **************/
/*****************************************************************************/
void Brw_RemoveGrpFilesFromDB (long GrpCod)
{ {
sprintf (Query1,"DELETE FROM file_view USING file_view,files" char Query[512];
/***** Remove format of files of marks *****/
sprintf (Query,"DELETE FROM marks_properties USING files,marks_properties"
" WHERE files.FileBrowser='%u'"
" AND files.Cod='%ld'"
" AND files.FilCod=marks_properties.FilCod",
(unsigned) Brw_FILE_BRW_ADMIN_MARKS_GRP,
GrpCod);
DB_QueryDELETE (Query,"can not remove the properties of marks associated to a group");
/***** Remove from database the entries that store the file views *****/
sprintf (Query,"DELETE FROM file_view USING file_view,files"
" WHERE files.FileBrowser IN ('%u','%u','%u')" " WHERE files.FileBrowser IN ('%u','%u','%u')"
" AND files.Cod='%ld'" " AND files.Cod='%ld'"
" AND files.FilCod=file_view.FilCod", " AND files.FilCod=file_view.FilCod",
@ -3646,30 +3773,250 @@ void Brw_RemoveFilesFromDB (long InsCod,long CtrCod,long DegCod,long CrsCod,long
(unsigned) Brw_FILE_BRW_COMMON_GRP, (unsigned) Brw_FILE_BRW_COMMON_GRP,
(unsigned) Brw_FILE_BRW_ADMIN_MARKS_GRP, (unsigned) Brw_FILE_BRW_ADMIN_MARKS_GRP,
GrpCod); GrpCod);
sprintf (Query2,"DELETE FROM files" DB_QueryDELETE (Query,"can not remove file views to files of a group");
/***** Remove from database expanded folders *****/
sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders"
" WHERE FileBrowser IN ('%u','%u','%u')"
" AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_SEE_DOCUMENTS_GRP,
(unsigned) Brw_FILE_BRW_COMMON_GRP,
(unsigned) Brw_FILE_BRW_SEE_MARKS_GRP,
GrpCod);
DB_QueryDELETE (Query,"can not remove expanded folders of a group");
/***** Remove from database the entries that store clipboards *****/
sprintf (Query,"DELETE FROM clipboard"
" WHERE FileBrowser IN ('%u','%u','%u')" " WHERE FileBrowser IN ('%u','%u','%u')"
" AND Cod='%ld'", " AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP, (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP,
(unsigned) Brw_FILE_BRW_COMMON_GRP, (unsigned) Brw_FILE_BRW_COMMON_GRP,
(unsigned) Brw_FILE_BRW_ADMIN_MARKS_GRP, (unsigned) Brw_FILE_BRW_ADMIN_MARKS_GRP,
GrpCod); GrpCod);
DB_QueryDELETE (Query,"can not remove clipboards related to files of a group");
/***** Remove from database the entries that store the last time users visited file zones *****/
sprintf (Query,"DELETE FROM file_browser_last"
" WHERE FileBrowser IN ('%u','%u','%u')"
" AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP,
(unsigned) Brw_FILE_BRW_COMMON_GRP,
(unsigned) Brw_FILE_BRW_ADMIN_MARKS_GRP,
GrpCod);
DB_QueryDELETE (Query,"can not remove file last visits to files of a group");
/***** Remove from database the entries that store the sizes of the file zones *****/
sprintf (Query,"DELETE FROM file_browser_size"
" WHERE FileBrowser IN ('%u','%u','%u')"
" AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP,
(unsigned) Brw_FILE_BRW_COMMON_GRP,
(unsigned) Brw_FILE_BRW_ADMIN_MARKS_GRP,
GrpCod);
DB_QueryDELETE (Query,"can not remove sizes of file zones of a group");
/***** Remove from database the entries that store the data files *****/
sprintf (Query,"DELETE FROM files"
" WHERE FileBrowser IN ('%u','%u','%u')"
" AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP,
(unsigned) Brw_FILE_BRW_COMMON_GRP,
(unsigned) Brw_FILE_BRW_ADMIN_MARKS_GRP,
GrpCod);
DB_QueryDELETE (Query,"can not remove files of a group");
} }
else if (UsrCod > 0) // All the zones of the user
/*****************************************************************************/
/* Remove some info about files related to a course and a user from database */
/*****************************************************************************/
void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long CrsCod,long UsrCod)
{ {
sprintf (Query1,"DELETE FROM file_view USING file_view,files" char Query[512];
/***** Remove from database expanded folders *****/
sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders"
" WHERE UsrCod='%ld' AND ("
"(FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u')"
" AND Cod='%ld')"
" OR "
"(FileBrowser IN ('%u','%u','%u')"
" AND Cod IN (SELECT GrpCod FROM crs_grp WHERE CrsCod='%ld'))"
")",
UsrCod,
(unsigned) Brw_FILE_BRW_SEE_DOCUMENTS_CRS,
(unsigned) Brw_FILE_BRW_COMMON_CRS,
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_USR,
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_CRS,
(unsigned) Brw_FILE_BRW_WORKS_USR,
(unsigned) Brw_FILE_BRW_WORKS_CRS,
(unsigned) Brw_FILE_BRW_SEE_MARKS_CRS,
CrsCod,
(unsigned) Brw_FILE_BRW_SEE_DOCUMENTS_GRP,
(unsigned) Brw_FILE_BRW_COMMON_GRP,
(unsigned) Brw_FILE_BRW_SEE_MARKS_GRP,
CrsCod);
DB_QueryDELETE (Query,"can not remove expanded folders for a user in a course");
/***** Remove from database the entries that store clipboards *****/
sprintf (Query,"DELETE FROM clipboard"
" WHERE UsrCod='%ld' AND ("
"(FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u')"
" AND Cod='%ld')"
" OR "
"(FileBrowser IN ('%u','%u','%u')"
" AND Cod IN (SELECT GrpCod FROM crs_grp WHERE CrsCod='%ld'))"
")",
UsrCod,
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS,
(unsigned) Brw_FILE_BRW_COMMON_CRS,
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_USR,
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_CRS,
(unsigned) Brw_FILE_BRW_WORKS_USR,
(unsigned) Brw_FILE_BRW_WORKS_CRS,
(unsigned) Brw_FILE_BRW_ADMIN_MARKS_CRS,
CrsCod,
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP,
(unsigned) Brw_FILE_BRW_COMMON_GRP,
(unsigned) Brw_FILE_BRW_ADMIN_MARKS_GRP,
CrsCod);
DB_QueryDELETE (Query,"can not remove source of copy for a user in a course");
/***** Remove from database the entries that store the last time user visited file zones *****/
// Assignments and works are stored as one in file_browser_last...
// ...because a user views them at the same time
sprintf (Query,"DELETE FROM file_browser_last"
" WHERE UsrCod='%ld' AND ("
"(FileBrowser IN ('%u','%u','%u','%u')"
" AND Cod='%ld')"
" OR "
"(FileBrowser IN ('%u','%u','%u')"
" AND Cod IN (SELECT GrpCod FROM crs_grp WHERE CrsCod='%ld'))"
")",
UsrCod,
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS,
(unsigned) Brw_FILE_BRW_COMMON_CRS,
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_USR,
(unsigned) Brw_FILE_BRW_ADMIN_MARKS_CRS,
CrsCod,
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP,
(unsigned) Brw_FILE_BRW_COMMON_GRP,
(unsigned) Brw_FILE_BRW_ADMIN_MARKS_GRP,
CrsCod);
DB_QueryDELETE (Query,"can not remove file last visits to files of a course from a user");
}
/*****************************************************************************/
/*************** Remove user's works in a course from database ***************/
/*****************************************************************************/
void Brw_RemoveWrkFilesFromDB (long CrsCod,long UsrCod)
{
char Query[512];
/***** Remove from database the entries that store the file views *****/
sprintf (Query,"DELETE FROM file_view USING file_view,files"
" WHERE files.FileBrowser IN ('%u','%u')"
" AND files.Cod='%ld' AND files.ZoneUsrCod='%ld'"
" AND files.FilCod=file_view.FilCod",
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_USR,
(unsigned) Brw_FILE_BRW_WORKS_USR,
CrsCod,UsrCod);
DB_QueryDELETE (Query,"can not remove file views");
/***** Remove from database expanded folders *****/
sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders"
" WHERE FileBrowser IN ('%u','%u')"
" AND Cod='%ld' AND WorksUsrCod='%ld'",
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_CRS,
(unsigned) Brw_FILE_BRW_WORKS_CRS,
CrsCod,UsrCod);
DB_QueryDELETE (Query,"can not remove expanded folders of a group");
/***** Remove from database the entries that store clipboards *****/
sprintf (Query,"DELETE FROM clipboard"
" WHERE FileBrowser IN ('%u','%u')"
" AND Cod='%ld' AND WorksUsrCod='%ld'",
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_CRS,
(unsigned) Brw_FILE_BRW_WORKS_CRS,
CrsCod,UsrCod);
DB_QueryDELETE (Query,"can not remove clipboards");
/***** Remove from database the entries that store the last time users visited file zones *****/
// Assignments and works are stored as one in file_browser_last...
// ...because a user views them at the same time
sprintf (Query,"DELETE FROM file_browser_last"
" WHERE FileBrowser='%u'"
" AND Cod='%ld' AND ZoneUsrCod='%ld'",
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_USR,
CrsCod,UsrCod);
DB_QueryDELETE (Query,"can not remove file last visits");
/***** Remove from database the entries that store the sizes of the file zones *****/
sprintf (Query,"DELETE FROM file_browser_size"
" WHERE FileBrowser IN ('%u','%u')"
" AND Cod='%ld' AND ZoneUsrCod='%ld'",
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_USR,
(unsigned) Brw_FILE_BRW_WORKS_USR,
CrsCod,UsrCod);
DB_QueryDELETE (Query,"can not remove file browser sizes");
/***** Remove from database the entries that store the data files *****/
sprintf (Query,"DELETE FROM files"
" WHERE FileBrowser IN ('%u','%u')"
" AND Cod='%ld' AND ZoneUsrCod='%ld'",
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_USR,
(unsigned) Brw_FILE_BRW_WORKS_USR,
CrsCod,UsrCod);
DB_QueryDELETE (Query,"can not remove files");
}
/*****************************************************************************/
/************* Remove files related to a user from the database **************/
/*****************************************************************************/
void Brw_RemoveUsrFilesFromDB (long UsrCod)
{
char Query[512];
/***** Remove from database the entries that store the file views *****/
// User is not removed from file_view table,
// in order to take into account his/her views
sprintf (Query,"DELETE FROM file_view USING file_view,files"
" WHERE files.ZoneUsrCod='%ld'" " WHERE files.ZoneUsrCod='%ld'"
" AND files.FilCod=file_view.FilCod", " AND files.FilCod=file_view.FilCod",
UsrCod); UsrCod);
sprintf (Query2,"DELETE FROM files" DB_QueryDELETE (Query,"can not remove file views to files of a user");
/***** Remove from database expanded folders *****/
sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders"
" WHERE UsrCod='%ld'",
UsrCod);
DB_QueryDELETE (Query,"can not remove expanded folders for a user");
/***** Remove from database the entries that store clipboards *****/
sprintf (Query,"DELETE FROM clipboard"
" WHERE UsrCod='%ld'", // User's clipboard
UsrCod);
DB_QueryDELETE (Query,"can not remove user's clipboards");
/***** Remove from database the entries that store the last time users visited file zones *****/
sprintf (Query,"DELETE FROM file_browser_last"
" WHERE UsrCod='%ld'", // User's last visits to all zones
UsrCod);
DB_QueryDELETE (Query,"can not remove user's last visits to file zones");
/***** Remove from database the entries that store the sizes of the file zones *****/
sprintf (Query,"DELETE FROM file_browser_size"
" WHERE ZoneUsrCod='%ld'", " WHERE ZoneUsrCod='%ld'",
UsrCod); UsrCod);
} DB_QueryDELETE (Query,"can not remove sizes of user's file zones");
/***** Remove from database the entries that store the file views *****/ /***** Remove from database the entries that store the data files *****/
DB_QueryDELETE (Query1,"can not remove files"); sprintf (Query,"DELETE FROM files"
" WHERE ZoneUsrCod='%ld'",
/***** Remove from database the entry that stores the data of a file *****/ UsrCod);
DB_QueryDELETE (Query2,"can not remove files"); DB_QueryDELETE (Query,"can not remove files in user's file zones");
} }
/*****************************************************************************/ /*****************************************************************************/
@ -3897,20 +4244,6 @@ static void Brw_GetAndUpdateDateLastAccFileBrowser (void)
DB_QueryUPDATE (Query,"can not update date of last access to a file browser"); DB_QueryUPDATE (Query,"can not update date of last access to a file browser");
} }
/*****************************************************************************/
/******************** Remove last accesses to file browser *******************/
/*****************************************************************************/
void Brw_RemoveFileBrowserLast (Brw_FileBrowser_t FileBrowser,long Cod)
{
char Query[128];
sprintf (Query,"DELETE FROM file_browser_last"
" WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) Brw_FileBrowserForDB_file_browser_last[FileBrowser],Cod);
DB_QueryDELETE (Query,"can not remove last accesses to file browsers");
}
/*****************************************************************************/ /*****************************************************************************/
/************* Get the group of my last access to a common zone **************/ /************* Get the group of my last access to a common zone **************/
/*****************************************************************************/ /*****************************************************************************/
@ -6389,78 +6722,6 @@ static long Brw_GetWorksUsrCodForExpandedFolders (void)
} }
} }
/*****************************************************************************/
/******************* Remove expanded folders of a course *********************/
/*****************************************************************************/
void Brw_RemoveExpandedFoldersInCrs (long CrsCod)
{
char Query[512];
/***** Remove all the expanded folders related to the course *****/
sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders"
" WHERE FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u')"
" AND Cod='%ld'",
(unsigned) Brw_FileBrowserForDB_expanded_folders[Brw_FILE_BRW_SEE_DOCUMENTS_CRS],
(unsigned) Brw_FileBrowserForDB_expanded_folders[Brw_FILE_BRW_COMMON_CRS],
(unsigned) Brw_FileBrowserForDB_expanded_folders[Brw_FILE_BRW_ASSIGNMENTS_USR],
(unsigned) Brw_FileBrowserForDB_expanded_folders[Brw_FILE_BRW_ASSIGNMENTS_CRS],
(unsigned) Brw_FileBrowserForDB_expanded_folders[Brw_FILE_BRW_WORKS_USR],
(unsigned) Brw_FileBrowserForDB_expanded_folders[Brw_FILE_BRW_WORKS_CRS],
(unsigned) Brw_FileBrowserForDB_expanded_folders[Brw_FILE_BRW_SEE_MARKS_CRS],
CrsCod);
DB_QueryDELETE (Query,"can not remove expanded folders in a course");
}
/*****************************************************************************/
/******************* Remove all expanded folders of a user *******************/
/*****************************************************************************/
void Brw_RemoveUsrExpandedFolders (long UsrCod)
{
char Query[512];
/***** Remove expanded folders of specified user *****/
sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders"
" WHERE UsrCod='%ld' OR WorksUsrCod='%ld'",
UsrCod,UsrCod);
DB_QueryDELETE (Query,"can not remove expanded folders for a user");
}
/*****************************************************************************/
/********** Remove all expanded folders of a user in this course *************/
/*****************************************************************************/
void Brw_RemoveUsrExpandedFoldersInCrs (long UsrCod,long CrsCod)
{
char Query[512];
/***** Remove expanded folders of specified user in course *****/
sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders"
" WHERE UsrCod='%ld'"
" AND FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u')"
" AND Cod='%ld'",
UsrCod,
(unsigned) Brw_FileBrowserForDB_expanded_folders[Brw_FILE_BRW_SEE_DOCUMENTS_CRS],
(unsigned) Brw_FileBrowserForDB_expanded_folders[Brw_FILE_BRW_COMMON_CRS],
(unsigned) Brw_FileBrowserForDB_expanded_folders[Brw_FILE_BRW_ASSIGNMENTS_USR],
(unsigned) Brw_FileBrowserForDB_expanded_folders[Brw_FILE_BRW_ASSIGNMENTS_CRS],
(unsigned) Brw_FileBrowserForDB_expanded_folders[Brw_FILE_BRW_WORKS_USR],
(unsigned) Brw_FileBrowserForDB_expanded_folders[Brw_FILE_BRW_WORKS_CRS],
(unsigned) Brw_FileBrowserForDB_expanded_folders[Brw_FILE_BRW_SEE_MARKS_CRS],
CrsCod);
DB_QueryDELETE (Query,"can not remove expanded folders for a user in a course");
/***** Remove expanded folders related to user's assignments or works in course *****/
sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders"
" WHERE FileBrowser IN ('%u','%u')"
" AND Cod='%ld' AND WorksUsrCod='%ld'",
(unsigned) Brw_FileBrowserForDB_expanded_folders[Brw_FILE_BRW_ASSIGNMENTS_CRS],
(unsigned) Brw_FileBrowserForDB_expanded_folders[Brw_FILE_BRW_WORKS_CRS],
CrsCod,UsrCod);
DB_QueryDELETE (Query,"can not remove expanded folders for a user in a course");
}
/*****************************************************************************/ /*****************************************************************************/
/************* Remove expired expanded folders (from all users) **************/ /************* Remove expired expanded folders (from all users) **************/
/*****************************************************************************/ /*****************************************************************************/
@ -6476,63 +6737,6 @@ void Brw_RemoveExpiredExpandedFolders (void)
DB_QueryDELETE (Query,"can not remove old expanded folders"); DB_QueryDELETE (Query,"can not remove old expanded folders");
} }
/*****************************************************************************/
/************************* Remove clipboard of a user ************************/
/*****************************************************************************/
void Brw_RemoveUsrClipboard (long UsrCod)
{
char Query[512];
/***** Remove clipboard of specified user *****/
sprintf (Query,"DELETE FROM clipboard WHERE UsrCod='%ld'",UsrCod);
DB_QueryDELETE (Query,"can not remove source of copy for a user");
}
/*****************************************************************************/
/************************ Remove clipboards of a group ***********************/
/*****************************************************************************/
void Brw_RemoveGrpClipboards (long GrpCod)
{
char Query[512];
/***** Remove clipboard of specified user *****/
sprintf (Query,"DELETE FROM clipboard"
" WHERE FileBrowser IN ('%u','%u','%u')"
" AND Cod='%ld'",
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP,
(unsigned) Brw_FILE_BRW_COMMON_GRP,
(unsigned) Brw_FILE_BRW_ADMIN_MARKS_GRP,
GrpCod);
DB_QueryDELETE (Query,"can not remove source of copy for a group");
}
/*****************************************************************************/
/****************** Remove clipboards of a user and a coruse *****************/
/*****************************************************************************/
void Brw_RemoveUsrClipboardInCrs (long UsrCod,long CrsCod)
{
char Query[512];
/***** Remove clipboard of specified user *****/
sprintf (Query,"DELETE FROM clipboard"
" WHERE UsrCod='%ld'"
" AND FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u')"
" AND CrsCod='%ld'",
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_ASSIGNMENTS_USR,
(unsigned) Brw_FILE_BRW_WORKS_USR,
(unsigned) Brw_FILE_BRW_ASSIGNMENTS_CRS,
(unsigned) Brw_FILE_BRW_WORKS_CRS,
CrsCod);
DB_QueryDELETE (Query,"can not remove source of copy for a user and a course");
}
/*****************************************************************************/ /*****************************************************************************/
/****************** Remove expired clipboards (from all users) ***************/ /****************** Remove expired clipboards (from all users) ***************/
/*****************************************************************************/ /*****************************************************************************/
@ -9710,7 +9914,6 @@ static long Brw_GetZoneUsrCodForFiles (void)
} }
} }
/*****************************************************************************/ /*****************************************************************************/
/******** Get code of user in assignment / works for expanded folders ********/ /******** Get code of user in assignment / works for expanded folders ********/
/*****************************************************************************/ /*****************************************************************************/
@ -9787,8 +9990,8 @@ static void Brw_RemoveOneFileOrFolderFromDB (const char *Path)
Ntf_SetNotifOneFileAsRemoved (FileBrowser,Cod,Path); Ntf_SetNotifOneFileAsRemoved (FileBrowser,Cod,Path);
/***** Remove from database the entries that store the marks properties *****/ /***** Remove from database the entries that store the marks properties *****/
if (Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_MARKS_CRS || if (FileBrowser == Brw_FILE_BRW_ADMIN_MARKS_CRS ||
Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_MARKS_GRP) FileBrowser == Brw_FILE_BRW_ADMIN_MARKS_GRP)
{ {
sprintf (Query,"DELETE FROM marks_properties USING files,marks_properties" sprintf (Query,"DELETE FROM marks_properties USING files,marks_properties"
" WHERE files.FileBrowser='%u' AND files.Cod='%ld'" " WHERE files.FileBrowser='%u' AND files.Cod='%ld'"
@ -9830,14 +10033,14 @@ static void Brw_RemoveChildrenOfFolderFromDB (const char *Path)
Ntf_SetNotifChildrenOfFolderAsRemoved (FileBrowser,Cod,Path); Ntf_SetNotifChildrenOfFolderAsRemoved (FileBrowser,Cod,Path);
/***** Remove from database the entries that store the marks properties *****/ /***** Remove from database the entries that store the marks properties *****/
if (Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_MARKS_CRS || if (FileBrowser == Brw_FILE_BRW_ADMIN_MARKS_CRS ||
Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_MARKS_GRP) FileBrowser == Brw_FILE_BRW_ADMIN_MARKS_GRP)
{ {
sprintf (Query,"DELETE FROM marks_properties USING files,marks_properties" sprintf (Query,"DELETE FROM marks_properties USING files,marks_properties"
" WHERE files.FileBrowser='%u' AND files.Cod='%ld'" " WHERE files.FileBrowser='%u' AND files.Cod='%ld'"
" AND files.Path LIKE '%s/%%'" " AND files.Path LIKE '%s/%%'"
" AND files.FilCod=marks_properties.FilCod", " AND files.FilCod=marks_properties.FilCod",
FileBrowser,Cod,Path); (unsigned) FileBrowser,Cod,Path);
DB_QueryDELETE (Query,"can not remove properties of marks from database"); DB_QueryDELETE (Query,"can not remove properties of marks from database");
} }
@ -9846,14 +10049,14 @@ static void Brw_RemoveChildrenOfFolderFromDB (const char *Path)
" WHERE files.FileBrowser='%u' AND files.Cod='%ld' AND files.ZoneUsrCod='%ld'" " WHERE files.FileBrowser='%u' AND files.Cod='%ld' AND files.ZoneUsrCod='%ld'"
" AND files.Path LIKE '%s/%%'" " AND files.Path LIKE '%s/%%'"
" AND files.FilCod=file_view.FilCod", " AND files.FilCod=file_view.FilCod",
FileBrowser,Cod,ZoneUsrCod,Path); (unsigned) FileBrowser,Cod,ZoneUsrCod,Path);
DB_QueryDELETE (Query,"can not remove file views from database"); DB_QueryDELETE (Query,"can not remove file views from database");
/***** Remove from database the entries that store the data of files *****/ /***** Remove from database the entries that store the data of files *****/
sprintf (Query,"DELETE FROM files" sprintf (Query,"DELETE FROM files"
" WHERE FileBrowser='%u' AND Cod='%ld' AND ZoneUsrCod='%ld'" " WHERE FileBrowser='%u' AND Cod='%ld' AND ZoneUsrCod='%ld'"
" AND Path LIKE '%s/%%'", " AND Path LIKE '%s/%%'",
FileBrowser,Cod,ZoneUsrCod,Path); (unsigned) FileBrowser,Cod,ZoneUsrCod,Path);
DB_QueryDELETE (Query,"can not remove paths from database"); DB_QueryDELETE (Query,"can not remove paths from database");
} }
@ -10012,7 +10215,7 @@ static bool Brw_CheckIfIHavePermissionFileOrFolderCommon (void)
} }
/*****************************************************************************/ /*****************************************************************************/
/************ Remove common zones of all the groups of a type ***************/ /************* Remove common zones of all the groups of a type ***************/
/*****************************************************************************/ /*****************************************************************************/
void Brw_RemoveZonesOfGroupsOfType (long GrpTypCod) void Brw_RemoveZonesOfGroupsOfType (long GrpTypCod)
@ -10047,7 +10250,7 @@ void Brw_RemoveZonesOfGroupsOfType (long GrpTypCod)
} }
/*****************************************************************************/ /*****************************************************************************/
/************* Remove file zones of a group and show message ****************/ /************** Remove file zones of a group and show message ****************/
/*****************************************************************************/ /*****************************************************************************/
void Brw_RemoveGrpZonesVerbose (struct GroupData *GrpDat) void Brw_RemoveGrpZonesVerbose (struct GroupData *GrpDat)
@ -10064,33 +10267,27 @@ void Brw_RemoveGrpZonesVerbose (struct GroupData *GrpDat)
} }
/*****************************************************************************/ /*****************************************************************************/
/********************** Remove file zones of a group ************************/ /*********************** Remove file zones of a group ************************/
/*****************************************************************************/ /*****************************************************************************/
void Brw_RemoveGrpZones (long CrsCod,long GrpCod) void Brw_RemoveGrpZones (long CrsCod,long GrpCod)
{ {
char PathGrpFileZones[PATH_MAX+1]; char PathGrpFileZones[PATH_MAX+1];
/***** Remove group zones *****/
sprintf (PathGrpFileZones,"%s/%s/%ld/grp/%ld",
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,CrsCod,GrpCod);
Brw_RemoveTree (PathGrpFileZones);
/***** Set notifications about files in this group zone as removed *****/ /***** Set notifications about files in this group zone as removed *****/
Ntf_SetNotifFilesInGroupAsRemoved (GrpCod); Ntf_SetNotifFilesInGroupAsRemoved (GrpCod);
/***** Remove files in the group from database *****/ /***** Remove files in the group from database *****/
Brw_RemoveFilesFromDB (-1L,-1L,-1L,-1L,GrpCod,-1L); Brw_RemoveGrpFilesFromDB (GrpCod);
/***** Remove size of file zones in the group from database *****/ /***** Remove group zones *****/
Brw_RemoveSizeOfFileTreeFromDB (CrsCod,GrpCod,-1L); sprintf (PathGrpFileZones,"%s/%s/%ld/grp/%ld",
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,CrsCod,GrpCod);
/***** Remove clipboard entries in this group *****/ Brw_RemoveTree (PathGrpFileZones);
Brw_RemoveGrpClipboards (GrpCod);
} }
/*****************************************************************************/ /*****************************************************************************/
/**************** Remove the works of a user in a course ********************/ /***************** Remove the works of a user in a course ********************/
/*****************************************************************************/ /*****************************************************************************/
void Brw_RemoveUsrWorksInCrs (struct UsrData *UsrDat,struct Course *Crs,Cns_QuietOrVerbose_t QuietOrVerbose) void Brw_RemoveUsrWorksInCrs (struct UsrData *UsrDat,struct Course *Crs,Cns_QuietOrVerbose_t QuietOrVerbose)
@ -10098,6 +10295,9 @@ void Brw_RemoveUsrWorksInCrs (struct UsrData *UsrDat,struct Course *Crs,Cns_Quie
extern const char *Txt_Works_of_X_in_Y_removed; extern const char *Txt_Works_of_X_in_Y_removed;
char PathUsrInCrs[PATH_MAX+1]; char PathUsrInCrs[PATH_MAX+1];
/***** Remove user's works in the course from database *****/
Brw_RemoveWrkFilesFromDB (Crs->CrsCod,UsrDat->UsrCod);
/***** Remove the folder for this user inside the course *****/ /***** Remove the folder for this user inside the course *****/
sprintf (PathUsrInCrs,"%s/%s/%ld/usr/%02u/%ld", sprintf (PathUsrInCrs,"%s/%s/%ld/usr/%02u/%ld",
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Crs->CrsCod, Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Crs->CrsCod,
@ -10105,12 +10305,6 @@ void Brw_RemoveUsrWorksInCrs (struct UsrData *UsrDat,struct Course *Crs,Cns_Quie
Brw_RemoveTree (PathUsrInCrs); Brw_RemoveTree (PathUsrInCrs);
// If this was the last user in his/her subfolder ==> the subfolder will be empty // If this was the last user in his/her subfolder ==> the subfolder will be empty
/***** Remove files in the course from database *****/
Brw_RemoveFilesFromDB (-1L,-1L,-1L,Crs->CrsCod,-1L,UsrDat->UsrCod);
/***** Remove size of file zone of the course from database *****/
Brw_RemoveSizeOfFileTreeFromDB (Crs->CrsCod,-1L,UsrDat->UsrCod);
/***** Write message *****/ /***** Write message *****/
if (QuietOrVerbose == Cns_VERBOSE) if (QuietOrVerbose == Cns_VERBOSE)
{ {
@ -10121,7 +10315,7 @@ void Brw_RemoveUsrWorksInCrs (struct UsrData *UsrDat,struct Course *Crs,Cns_Quie
} }
/*****************************************************************************/ /*****************************************************************************/
/************* Remove the works of a user in all of his courses *************/ /************* Remove the works of a user in all of his courses **************/
/*****************************************************************************/ /*****************************************************************************/
void Brw_RemoveUsrWorksInAllCrss (struct UsrData *UsrDat,Cns_QuietOrVerbose_t QuietOrVerbose) void Brw_RemoveUsrWorksInAllCrss (struct UsrData *UsrDat,Cns_QuietOrVerbose_t QuietOrVerbose)

View File

@ -142,10 +142,17 @@ bool Brw_UpdateFoldersAssigmentsIfExistForAllUsrs (const char *OldFolderName,con
void Brw_RemoveFoldersAssignmentsIfExistForAllUsrs (const char *FolderName); void Brw_RemoveFoldersAssignmentsIfExistForAllUsrs (const char *FolderName);
void Brw_ShowFileBrowserOrWorks (void); void Brw_ShowFileBrowserOrWorks (void);
void Brw_ShowAgainFileBrowserOrWorks (void); void Brw_ShowAgainFileBrowserOrWorks (void);
void Brw_RemoveSizeOfFileTreeFromDB (long CrsCod,long GrpCod,long UsrCod);
void Brw_RemoveFilesFromDB (long InsCod,long CtrCod,long DegCod,long CrsCod,long GrpCod,long UsrCod); void Brw_RemoveInsFilesFromDB (long InsCod);
void Brw_RemoveCtrFilesFromDB (long CtrCod);
void Brw_RemoveDegFilesFromDB (long DegCod);
void Brw_RemoveCrsFilesFromDB (long CrsCod);
void Brw_RemoveGrpFilesFromDB (long GrpCod);
void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long CrsCod,long UsrCod);
void Brw_RemoveWrkFilesFromDB (long CrsCod,long UsrCod);
void Brw_RemoveUsrFilesFromDB (long UsrCod);
void Brw_CreateDirDownloadTmp (void); void Brw_CreateDirDownloadTmp (void);
void Brw_RemoveFileBrowserLast (Brw_FileBrowser_t FileBrowser,long Cod);
void Brw_AskEditWorksCrs (void); void Brw_AskEditWorksCrs (void);
void Brw_AskRemFileFromTree (void); void Brw_AskRemFileFromTree (void);
void Brw_RemFileFromTree (void); void Brw_RemFileFromTree (void);
@ -183,15 +190,8 @@ void Brw_GetCrsGrpFromFileMetadata (Brw_FileBrowser_t FileBrowser,long Cod,
long Brw_AddPathToDB (long PublisherUsrCod,Brw_FileType_t FileType, long Brw_AddPathToDB (long PublisherUsrCod,Brw_FileType_t FileType,
const char *Path,bool IsPublic,Brw_License_t License); const char *Path,bool IsPublic,Brw_License_t License);
void Brw_RemoveExpandedFoldersInCrs (long CrsCod);
void Brw_RemoveExpiredExpandedFolders (void); void Brw_RemoveExpiredExpandedFolders (void);
void Brw_RemoveUsrClipboard (long UsrCod);
void Brw_RemoveGrpClipboards (long GrpCod);
void Brw_RemoveUsrClipboardInCrs (long UsrCod,long CrsCod);
void Brw_RemoveUsrExpandedFolders (long UsrCod);
void Brw_RemoveUsrExpandedFoldersInCrs (long UsrCod,long CrsCod);
void Brw_RemoveTree (const char *Path); void Brw_RemoveTree (const char *Path);
void Brw_CalcSizeOfDir (char *Path); void Brw_CalcSizeOfDir (char *Path);

View File

@ -1364,6 +1364,7 @@ void Ins_RemoveInstitution (void)
extern const char *Txt_Institution_X_removed; extern const char *Txt_Institution_X_removed;
char Query[512]; char Query[512];
struct Institution Ins; struct Institution Ins;
char PathIns[PATH_MAX+1];
/***** Get institution code *****/ /***** Get institution code *****/
if ((Ins.InsCod = Ins_GetParamOtherInsCod ()) < 0) if ((Ins.InsCod = Ins_GetParamOtherInsCod ()) < 0)
@ -1379,16 +1380,14 @@ void Ins_RemoveInstitution (void)
else // Institution has no users ==> remove it else // Institution has no users ==> remove it
{ {
/***** Remove information related to files in institution *****/ /***** Remove information related to files in institution *****/
/* Remove clipboards related to the institution */ Brw_RemoveInsFilesFromDB (Ins.InsCod);
sprintf (Query,"DELETE FROM clipboard WHERE InsCod='%ld'",
Ins.InsCod);
DB_QueryDELETE (Query,"can not remove clipboards in an institution");
/* Remove last accesses to file browsers related with this institution */ /***** Remove directories of the institution *****/
Brw_RemoveFileBrowserLast (Brw_FILE_BRW_ADMIN_DOCUMENTS_INS,Ins.InsCod); sprintf (PathIns,"%s/%s/%02u/%u",
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_INS,
/* Remove files in the institution from database */ (unsigned) (Ins.InsCod % 100),
Brw_RemoveFilesFromDB (Ins.InsCod,-1L,-1L,-1L,-1L,-1L); (unsigned) Ins.InsCod);
Brw_RemoveTree (PathIns);
/***** Remove institution *****/ /***** Remove institution *****/
sprintf (Query,"DELETE FROM institutions WHERE InsCod='%ld'", sprintf (Query,"DELETE FROM institutions WHERE InsCod='%ld'",

View File

@ -273,8 +273,6 @@ static void Mrk_ChangeNumRowsHeaderOrFooter (Brw_HeadOrFoot_t HeaderOrFooter)
Gbl.FileBrowser.Priv.FullPathInTree); Gbl.FileBrowser.Priv.FullPathInTree);
DB_QueryUPDATE (Query,"can not update properties of marks"); DB_QueryUPDATE (Query,"can not update properties of marks");
Lay_ShowAlert (Lay_INFO,Query);
/***** Write message of success *****/ /***** Write message of success *****/
sprintf (Gbl.Message,Txt_The_number_of_rows_is_now_X, sprintf (Gbl.Message,Txt_The_number_of_rows_is_now_X,
NumRows); NumRows);

View File

@ -764,7 +764,8 @@ static unsigned Sch_SearchOpenDocumentsInDB (const char *RangeQuery)
"centres.ShortName,courses.ShortName" "centres.ShortName,courses.ShortName"
" FROM files,courses,degrees,centres,institutions,countries" " FROM files,courses,degrees,centres,institutions,countries"
" WHERE files.Public='Y' AND %s" " WHERE files.Public='Y' AND %s"
" AND files.CrsCod=courses.CrsCod" " AND files.FileBrowser IN ('%u','%u')"
" AND files.Cod=courses.CrsCod"
" AND courses.DegCod=degrees.DegCod" " AND courses.DegCod=degrees.DegCod"
" AND degrees.CtrCod=centres.CtrCod" " AND degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod" " AND centres.InsCod=institutions.InsCod"
@ -773,6 +774,8 @@ static unsigned Sch_SearchOpenDocumentsInDB (const char *RangeQuery)
" HAVING PathFromRoot<>''" " HAVING PathFromRoot<>''"
" ORDER BY degrees.ShortName,courses.ShortName,PathFromRoot", " ORDER BY degrees.ShortName,courses.ShortName,PathFromRoot",
SearchQuery, SearchQuery,
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS,
(unsigned) Brw_FILE_BRW_COMMON_CRS,
RangeQuery); RangeQuery);
/***** Query database and list documents found *****/ /***** Query database and list documents found *****/
@ -805,11 +808,13 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
It is necessary to speed up the second query *****/ 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 (FilCod INT NOT NULL,UNIQUE INDEX(FilCod)) ENGINE=MEMORY"
" SELECT files.FilCod FROM crs_usr,files" " SELECT files.FilCod FROM crs_usr,files"
" WHERE crs_usr.UsrCod='%ld' AND crs_usr.CrsCod=files.CrsCod" " WHERE crs_usr.UsrCod='%ld'"
" AND crs_usr.CrsCod=files.Cod"
" AND files.FileBrowser IN ('%u','%u','%u')" " AND files.FileBrowser IN ('%u','%u','%u')"
" UNION" " UNION"
" SELECT files.FilCod FROM crs_grp_usr,files" " SELECT files.FilCod FROM crs_grp_usr,files"
" WHERE crs_grp_usr.UsrCod='%ld' AND crs_grp_usr.GrpCod=files.GrpCod" " WHERE crs_grp_usr.UsrCod='%ld'"
" AND crs_grp_usr.GrpCod=files.Cod"
" AND files.FileBrowser IN ('%u','%u','%u')", " AND files.FileBrowser IN ('%u','%u','%u')",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS, (unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS,
@ -829,9 +834,18 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"degrees.DegCod,degrees.ShortName," "degrees.DegCod,degrees.ShortName,"
"centres.ShortName,courses.ShortName" "centres.ShortName,courses.ShortName"
" FROM files,courses,degrees,centres,institutions,countries" " FROM files,crs_grp,crs_grp_types,courses,degrees,centres,institutions,countries"
" WHERE files.FilCod IN (SELECT FilCod FROM my_files) AND %s" " WHERE files.FilCod IN (SELECT FilCod FROM my_files) AND %s"
" AND files.CrsCod=courses.CrsCod" " 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 courses.DegCod=degrees.DegCod"
" AND degrees.CtrCod=centres.CtrCod" " AND degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod" " AND centres.InsCod=institutions.InsCod"
@ -840,6 +854,12 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
" HAVING PathFromRoot<>''" " HAVING PathFromRoot<>''"
" ORDER BY degrees.ShortName,courses.ShortName,PathFromRoot", " ORDER BY degrees.ShortName,courses.ShortName,PathFromRoot",
SearchQuery, 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); RangeQuery);
/***** Query database and list documents found *****/ /***** Query database and list documents found *****/
@ -883,9 +903,18 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"degrees.DegCod,degrees.ShortName AS DegShortName," "degrees.DegCod,degrees.ShortName AS DegShortName,"
"centres.ShortName,courses.ShortName AS CrsShortName" "centres.ShortName,courses.ShortName AS CrsShortName"
" FROM files,courses,degrees,centres,institutions,countries" " FROM files,crs_grp,crs_grp_types,courses,degrees,centres,institutions,countries"
" WHERE files.PublisherUsrCod='%ld' AND %s" " WHERE files.PublisherUsrCod='%ld' AND %s"
" AND files.CrsCod=courses.CrsCod" " 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 courses.DegCod=degrees.DegCod"
" AND degrees.CtrCod=centres.CtrCod" " AND degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod" " AND centres.InsCod=institutions.InsCod"
@ -900,16 +929,32 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
") AS my_files" ") AS my_files"
" WHERE PathFromRoot<>''" " WHERE PathFromRoot<>''"
" ORDER BY DegShortName,CrsShortName,PathFromRoot", " ORDER BY DegShortName,CrsShortName,PathFromRoot",
Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery,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,
(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); Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) Brw_FILE_BRW_BRIEFCASE_USR,SearchQuery);
else else
sprintf (Query,"SELECT files.FilCod," sprintf (Query,"SELECT files.FilCod,"
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot," "SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"degrees.DegCod,degrees.ShortName," "degrees.DegCod,degrees.ShortName,"
"centres.ShortName,courses.ShortName" "centres.ShortName,courses.ShortName"
" FROM files,courses,degrees,centres,institutions,countries" " FROM files,crs_grp,crs_grp_types,courses,degrees,centres,institutions,countries"
" WHERE files.PublisherUsrCod='%ld' AND %s" " WHERE files.PublisherUsrCod='%ld' AND %s"
" AND files.CrsCod=courses.CrsCod" " 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 courses.DegCod=degrees.DegCod"
" AND degrees.CtrCod=centres.CtrCod" " AND degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod" " AND centres.InsCod=institutions.InsCod"
@ -918,6 +963,12 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
" HAVING PathFromRoot<>''" " HAVING PathFromRoot<>''"
" ORDER BY degrees.ShortName,courses.ShortName,PathFromRoot", " ORDER BY degrees.ShortName,courses.ShortName,PathFromRoot",
Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, 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); RangeQuery);
/***** Query database and list documents found *****/ /***** Query database and list documents found *****/

View File

@ -4994,10 +4994,13 @@ static void Sta_GetNumberOfOERsFromDB (Sco_Scope_t Scope,Brw_License_t License,u
" WHERE centres.InsCod='%ld'" " WHERE centres.InsCod='%ld'"
" AND centres.CtrCod=degrees.CtrCod" " AND centres.CtrCod=degrees.CtrCod"
" AND degrees.DegCod=courses.DegCod" " AND degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=files.CrsCod" " AND courses.CrsCod=files.Cod"
" AND files.FileBrowser IN ('%u','%u')"
" AND files.License='%u'" " AND files.License='%u'"
" GROUP BY files.Public", " GROUP BY files.Public",
Gbl.CurrentIns.Ins.InsCod, Gbl.CurrentIns.Ins.InsCod,
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS,
(unsigned) Brw_FILE_BRW_COMMON_CRS,
(unsigned) License); (unsigned) License);
break; break;
case Sco_SCOPE_CENTRE: case Sco_SCOPE_CENTRE:
@ -5005,20 +5008,26 @@ static void Sta_GetNumberOfOERsFromDB (Sco_Scope_t Scope,Brw_License_t License,u
" FROM degrees,courses,files" " FROM degrees,courses,files"
" WHERE degrees.CtrCod='%ld'" " WHERE degrees.CtrCod='%ld'"
" AND degrees.DegCod=courses.DegCod" " AND degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=files.CrsCod" " AND courses.CrsCod=files.Cod"
" AND files.FileBrowser IN ('%u','%u')"
" AND files.License='%u'" " AND files.License='%u'"
" GROUP BY files.Public", " GROUP BY files.Public",
Gbl.CurrentCtr.Ctr.CtrCod, Gbl.CurrentCtr.Ctr.CtrCod,
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS,
(unsigned) Brw_FILE_BRW_COMMON_CRS,
(unsigned) License); (unsigned) License);
break; break;
case Sco_SCOPE_DEGREE: case Sco_SCOPE_DEGREE:
sprintf (Query,"SELECT files.Public,COUNT(*)" sprintf (Query,"SELECT files.Public,COUNT(*)"
" FROM courses,files" " FROM courses,files"
" WHERE courses.DegCod='%ld'" " WHERE courses.DegCod='%ld'"
" AND courses.CrsCod=files.CrsCod" " AND courses.CrsCod=files.Cod"
" AND files.FileBrowser IN ('%u','%u')"
" AND files.License='%u'" " AND files.License='%u'"
" GROUP BY files.Public", " GROUP BY files.Public",
Gbl.CurrentDeg.Deg.DegCod, Gbl.CurrentDeg.Deg.DegCod,
(unsigned) Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS,
(unsigned) Brw_FILE_BRW_COMMON_CRS,
(unsigned) License); (unsigned) License);
break; break;
case Sco_SCOPE_COURSE: case Sco_SCOPE_COURSE: