Version 14.62

This commit is contained in:
Antonio Cañas Vargas 2015-01-20 18:55:59 +01:00
parent 9ddb2ebd06
commit b67123091a
10 changed files with 316 additions and 119 deletions

View File

@ -459,12 +459,18 @@ CREATE TABLE IF NOT EXISTS exam_announcements (
CREATE TABLE IF NOT EXISTS expanded_folders (
UsrCod INT NOT NULL,
FileBrowser TINYINT NOT NULL,
InsCod INT NOT NULL DEFAULT -1,
CtrCod INT NOT NULL DEFAULT -1,
DegCod INT NOT NULL DEFAULT -1,
CrsCod INT NOT NULL DEFAULT -1,
GrpCod INT NOT NULL,
WorksUsrCod INT NOT NULL,
Path TEXT COLLATE latin1_bin NOT NULL,
ClickTime DATETIME NOT NULL,
INDEX(UsrCod,FileBrowser),
INDEX(InsCod),
INDEX(CtrCod),
INDEX(DegCod),
INDEX(CrsCod));
--
-- Table file_browser_size: stores the sizes of the file zones

View File

@ -775,7 +775,7 @@ static void Acc_RemoveUsrBriefcase (struct UsrData *UsrDat)
Brw_RemoveTree (PathRelUsr);
/***** Remove files in the course from database *****/
Brw_RemoveFilesFromDB (-1L,-1L,UsrDat->UsrCod);
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

@ -1429,6 +1429,9 @@ void Ctr_RemoveCentre (void)
Ctr.CtrCod);
DB_QueryDELETE (Query,"can not remove clipboards in a centre");
/* Remove files in the centre from database */
Brw_RemoveFilesFromDB (-1L,Ctr.CtrCod,-1L,-1L,-1L,-1L);
/***** Remove centre *****/
sprintf (Query,"DELETE FROM centres WHERE CtrCod='%ld'",
Ctr.CtrCod);

View File

@ -44,7 +44,12 @@
// 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: adapt table file_view !!!!!
Version 14.62: Jan 20, 2015 See/admin documents of degree, centre and institution (not finished). (175296 lines)
3 changes necessary in database:
ALTER TABLE expanded_folders ADD COLUMN InsCod INT NOT NULL DEFAULT -1 AFTER FileBrowser, ADD INDEX (InsCod);
ALTER TABLE expanded_folders ADD COLUMN CtrCod INT NOT NULL DEFAULT -1 AFTER InsCod, ADD INDEX (CtrCod);
ALTER TABLE expanded_folders ADD COLUMN DegCod INT NOT NULL DEFAULT -1 AFTER CtrCod, ADD INDEX (DegCod);
Version 14.61: Jan 20, 2015 See/admin documents of degree, centre and institution (not finished). (175112 lines)
6 changes necessary in database:
ALTER TABLE files ADD COLUMN InsCod INT NOT NULL DEFAULT -1 AFTER FilCod;

View File

@ -2444,7 +2444,7 @@ static void Crs_EmptyCourseCompletely (long CrsCod)
DB_QueryDELETE (Query,"can not remove the properties of marks associated to a course");
/* Remove files in the course from database */
Brw_RemoveFilesFromDB (CrsCod,-1L,-1L);
Brw_RemoveFilesFromDB (-1L,-1L,-1L,CrsCod,-1L,-1L);
/* Remove size of file zones in the course from database */
Brw_RemoveSizeOfFileTreeFromDB (CrsCod,-1L,-1L);

View File

@ -969,28 +969,34 @@ mysql> DESCRIBE exam_announcements;
/***** Table expanded_folders *****/
/*
mysql> DESCRIBE expanded_folders;
+-------------+------------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------+------+-----+---------------------+-------+
| UsrCod | int(11) | NO | MUL | NULL | |
| FileBrowser | tinyint(4) | NO | | NULL | |
| CrsCod | int(11) | NO | MUL | -1 | |
| GrpCod | int(11) | NO | | 0 | |
| WorksUsrCod | int(11) | NO | | NULL | |
| Path | text | NO | | NULL | |
| ClickTime | datetime | NO | | 0000-00-00 00:00:00 | |
+-------------+------------+------+-----+---------------------+-------+
7 rows in set (0.00 sec)
+-------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------+------+-----+---------+-------+
| UsrCod | int(11) | NO | MUL | NULL | |
| FileBrowser | tinyint(4) | NO | | NULL | |
| InsCod | int(11) | NO | MUL | -1 | |
| CtrCod | int(11) | NO | MUL | -1 | |
| DegCod | int(11) | NO | MUL | -1 | |
| CrsCod | int(11) | NO | MUL | -1 | |
| GrpCod | int(11) | NO | | NULL | |
| WorksUsrCod | int(11) | NO | | NULL | |
| Path | text | NO | | NULL | |
| ClickTime | datetime | NO | | NULL | |
+-------------+------------+------+-----+---------+-------+
10 rows in set (0.00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS expanded_folders ("
"UsrCod INT NOT NULL,"
"FileBrowser TINYINT NOT NULL,"
"InsCod INT NOT NULL DEFAULT -1,"
"CtrCod INT NOT NULL DEFAULT -1,"
"DegCod INT NOT NULL DEFAULT -1,"
"CrsCod INT NOT NULL DEFAULT -1,"
"GrpCod INT NOT NULL,"
"WorksUsrCod INT NOT NULL,"
"Path TEXT COLLATE latin1_bin NOT NULL,"
"ClickTime DATETIME NOT NULL,"
"INDEX(UsrCod,FileBrowser),INDEX(CrsCod))");
"INDEX(UsrCod,FileBrowser),INDEX(InsCod),INDEX(CtrCod),INDEX(DegCod),INDEX(CrsCod))");
/***** Table file_browser_size *****/
/*

View File

@ -3188,6 +3188,9 @@ static void Deg_RemoveDegreeCompletely (long DegCod)
DegCod);
DB_QueryDELETE (Query,"can not remove clipboards in a degree");
/* Remove files in the degree from database */
Brw_RemoveFilesFromDB (-1L,-1L,DegCod,-1L,-1L,-1L);
/***** Remove administrators of this degree *****/
sprintf (Query,"DELETE FROM deg_admin WHERE DegCod='%ld'",
DegCod);

View File

@ -72,6 +72,16 @@ typedef enum
Brw_ADMIN,
} Brw_ShowOrAdmin_t;
struct Brw_Codes
{
long InsCod;
long CtrCod;
long DegCod;
long CrsCod;
long GrpCod;
long WorksUsrCod;
};
/*****************************************************************************/
/**************************** Internal constants *****************************/
/*****************************************************************************/
@ -1228,6 +1238,7 @@ static inline void Brw_GetAndWriteClipboard (void);
static void Brw_WriteCurrentClipboard (void);
static bool Brw_GetMyClipboard (void);
static bool Brw_CheckIfClipboardIsInThisTree (void);
static void Brw_SetCodes (struct Brw_Codes *Codes);
static void Brw_AddPathToClipboards (Brw_FileType_t FileType,const char *Path);
static void Brw_UpdatePathInClipboard (Brw_FileType_t FileType,const char *Path);
static void Brw_InsFoldersInPathAndUpdOtherFoldersInExpandedFolders (const char *Path);
@ -3486,13 +3497,40 @@ void Brw_RemoveSizeOfFileTreeFromDB (long CrsCod,long GrpCod,long UsrCod)
/**************** Remove a file or folder from the database ******************/
/*****************************************************************************/
void Brw_RemoveFilesFromDB (long CrsCod,long GrpCod,long UsrCod)
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 (CrsCod > 0 && GrpCod <= 0 && UsrCod <= 0) // All the zones of the course
if (InsCod > 0) // Documents of the institution
{
sprintf (Query1,"DELETE FROM file_view USING file_view,files"
" WHERE files.InsCod='%ld'"
" AND files.FilCod=file_view.FilCod",
InsCod);
sprintf (Query2,"DELETE FROM files WHERE InsCod='%ld'",
InsCod);
}
else if (CtrCod > 0) // Documents of the centre
{
sprintf (Query1,"DELETE FROM file_view USING file_view,files"
" WHERE files.CtrCod='%ld'"
" AND files.FilCod=file_view.FilCod",
CtrCod);
sprintf (Query2,"DELETE FROM files WHERE CtrCod='%ld'",
DegCod);
}
else if (DegCod > 0) // Documents of the degree
{
sprintf (Query1,"DELETE FROM file_view USING file_view,files"
" WHERE files.DegCod='%ld'"
" AND files.FilCod=file_view.FilCod",
DegCod);
sprintf (Query2,"DELETE FROM files WHERE DegCod='%ld'",
DegCod);
}
else if (CrsCod > 0 && GrpCod <= 0 && UsrCod <= 0) // All the zones of the course
{
sprintf (Query1,"DELETE FROM file_view USING file_view,files"
" WHERE files.CrsCod='%ld'"
@ -5831,6 +5869,51 @@ static bool Brw_CheckIfClipboardIsInThisTree (void)
return IsThisTree;
}
/*****************************************************************************/
/************* Set ins/ctr/deg/crs/grp code and works user code **************/
/*****************************************************************************/
static void Brw_SetCodes (struct Brw_Codes *Codes)
{
/***** Set default codes *****/
Codes->InsCod = -1L;
Codes->CtrCod = -1L;
Codes->DegCod = -1L;
Codes->CrsCod = -1L;
Codes->GrpCod = -1L;
Codes->WorksUsrCod = -1L;
switch (Gbl.FileBrowser.Type)
{
case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
Codes->InsCod = Gbl.CurrentIns.Ins.InsCod;
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
Codes->CtrCod = Gbl.CurrentCtr.Ctr.CtrCod;
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
Codes->DegCod = Gbl.CurrentDeg.Deg.DegCod;
break;
case Brw_FILE_BRW_ASSIGNMENTS_CRS:
case Brw_FILE_BRW_WORKS_CRS:
Codes->WorksUsrCod = Gbl.Usrs.Other.UsrDat.UsrCod;
/* no break */
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
case Brw_FILE_BRW_COMMON_CRS:
case Brw_FILE_BRW_ADMIN_MARKS_CRS:
Codes->CrsCod = Gbl.CurrentCrs.Crs.CrsCod;
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
case Brw_FILE_BRW_COMMON_GRP:
case Brw_FILE_BRW_ADMIN_MARKS_GRP:
Codes->CrsCod = Gbl.CurrentCrs.Crs.CrsCod;
Codes->GrpCod = Gbl.CurrentCrs.Grps.GrpCod;
break;
default:
break;
}
}
/*****************************************************************************/
/***************************** Add path to clipboards ************************/
/*****************************************************************************/
@ -5838,51 +5921,24 @@ static bool Brw_CheckIfClipboardIsInThisTree (void)
static void Brw_AddPathToClipboards (Brw_FileType_t FileType,const char *Path)
{
char Query[512+PATH_MAX];
long InsCod = -1L;
long CtrCod = -1L;
long DegCod = -1L;
long CrsCod = -1L;
long GrpCod = -1L;
long WorksUsrCod = -1L;
switch (Gbl.FileBrowser.Type)
{
case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
InsCod = Gbl.CurrentIns.Ins.InsCod;
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
CtrCod = Gbl.CurrentCtr.Ctr.CtrCod;
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
DegCod = Gbl.CurrentDeg.Deg.DegCod;
break;
case Brw_FILE_BRW_ASSIGNMENTS_CRS:
case Brw_FILE_BRW_WORKS_CRS:
WorksUsrCod = Gbl.Usrs.Other.UsrDat.UsrCod;
/* no break */
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_ADMIN_DOCUMENTS_GRP:
case Brw_FILE_BRW_COMMON_GRP:
case Brw_FILE_BRW_ADMIN_MARKS_GRP:
CrsCod = Gbl.CurrentCrs.Crs.CrsCod;
GrpCod = Gbl.CurrentCrs.Grps.GrpCod;
break;
default:
break;
}
struct Brw_Codes Codes;
/***** Add path to clipboards *****/
sprintf (Query,"INSERT INTO clipboard (UsrCod,FileBrowser,InsCod,CtrCod,DegCod,"
"CrsCod,GrpCod,WorksUsrCod,FileType,Path)"
" VALUES ('%ld','%u','%ld','%ld','%ld',"
"'%ld','%ld','%ld','%u','%s')",
Brw_SetCodes (&Codes);
sprintf (Query,"INSERT INTO clipboard (UsrCod,FileBrowser,"
"InsCod,CtrCod,DegCod,CrsCod,GrpCod,WorksUsrCod,"
"FileType,Path)"
" VALUES ('%ld','%u',"
"'%ld','%ld','%ld','%ld','%ld','%ld',"
"'%u','%s')",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Gbl.FileBrowser.Type,
InsCod,CtrCod,DegCod,CrsCod,GrpCod,WorksUsrCod,
Codes.InsCod,
Codes.CtrCod,
Codes.DegCod,
Codes.CrsCod,
Codes.GrpCod,
Codes.WorksUsrCod,
(unsigned) FileType,
Path);
DB_QueryINSERT (Query,"can not add source of copy to clipboard");
@ -5895,50 +5951,22 @@ static void Brw_AddPathToClipboards (Brw_FileType_t FileType,const char *Path)
static void Brw_UpdatePathInClipboard (Brw_FileType_t FileType,const char *Path)
{
char Query[512+PATH_MAX];
long InsCod = -1L;
long CtrCod = -1L;
long DegCod = -1L;
long CrsCod = -1L;
long GrpCod = -1L;
long WorksUsrCod = -1L;
switch (Gbl.FileBrowser.Type)
{
case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
InsCod = Gbl.CurrentIns.Ins.InsCod;
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
CtrCod = Gbl.CurrentCtr.Ctr.CtrCod;
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
DegCod = Gbl.CurrentDeg.Deg.DegCod;
break;
case Brw_FILE_BRW_ASSIGNMENTS_CRS:
case Brw_FILE_BRW_WORKS_CRS:
WorksUsrCod = Gbl.Usrs.Other.UsrDat.UsrCod;
/* no break */
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_ADMIN_DOCUMENTS_GRP:
case Brw_FILE_BRW_COMMON_GRP:
case Brw_FILE_BRW_ADMIN_MARKS_GRP:
CrsCod = Gbl.CurrentCrs.Crs.CrsCod;
GrpCod = Gbl.CurrentCrs.Grps.GrpCod;
break;
default:
break;
}
struct Brw_Codes Codes;
/***** Update path in my clipboard *****/
sprintf (Query,"UPDATE clipboard"
" SET FileBrowser='%u',InsCod='%ld',CtrCod='%ld',DegCod='%ld',"
"CrsCod='%ld',GrpCod='%ld',WorksUsrCod='%ld',FileType='%u',Path='%s'"
Brw_SetCodes (&Codes);
sprintf (Query,"UPDATE clipboard SET FileBrowser='%u',"
"InsCod='%ld',CtrCod='%ld',DegCod='%ld',"
"CrsCod='%ld',GrpCod='%ld',WorksUsrCod='%ld',"
"FileType='%u',Path='%s'"
" WHERE UsrCod='%ld'",
(unsigned) Gbl.FileBrowser.Type,
InsCod,CtrCod,DegCod,CrsCod,GrpCod,WorksUsrCod,
Codes.InsCod,
Codes.CtrCod,
Codes.DegCod,
Codes.CrsCod,
Codes.GrpCod,
Codes.WorksUsrCod,
(unsigned) FileType,
Path,
Gbl.Usrs.Me.UsrDat.UsrCod);
@ -6006,25 +6034,23 @@ static void Brw_RemThisFolderAndUpdOtherFoldersFromExpandedFolders (const char *
static void Brw_InsertFolderInExpandedFolders (const char *Path)
{
char Query[512+PATH_MAX];
struct Brw_Codes Codes;
/***** Add path to expanded folders *****/
Brw_SetCodes (&Codes);
// Path must be stored with final '/'
sprintf (Query,"INSERT INTO expanded_folders (UsrCod,FileBrowser,"
"CrsCod,GrpCod,WorksUsrCod,Path,ClickTime)"
" VALUES ('%ld','%u','%ld','%ld','%ld','%s/',NOW())",
"InsCod,CtrCod,DegCod,CrsCod,GrpCod,WorksUsrCod,Path,ClickTime)"
" VALUES ('%ld','%u','%ld','%ld','%ld','%ld','%ld','%ld','%s/',NOW())",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Brw_FileBrowserForExpandedFolders[Gbl.FileBrowser.Type],
(Gbl.FileBrowser.Type == Brw_FILE_BRW_BRIEFCASE_USR) ? -1L :
Gbl.CurrentCrs.Crs.CrsCod,
(Gbl.FileBrowser.Type == Brw_FILE_BRW_SEE_DOCUMENTS_GRP ||
Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP ||
Gbl.FileBrowser.Type == Brw_FILE_BRW_COMMON_GRP ||
Gbl.FileBrowser.Type == Brw_FILE_BRW_SEE_MARKS_GRP ||
Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_MARKS_GRP) ? Gbl.CurrentCrs.Grps.GrpCod :
-1L,
(Gbl.FileBrowser.Type == Brw_FILE_BRW_ASSIGNMENTS_CRS ||
Gbl.FileBrowser.Type == Brw_FILE_BRW_WORKS_CRS) ? Gbl.Usrs.Other.UsrDat.UsrCod :
-1L,
Codes.InsCod,
Codes.CtrCod,
Codes.DegCod,
Codes.CrsCod,
Codes.GrpCod,
Codes.WorksUsrCod,
Path);
DB_QueryINSERT (Query,"can not expand the content of a folder");
}
@ -6041,6 +6067,30 @@ static void Brw_UpdateClickTimeOfThisFileBrowserInExpandedFolders (void)
/***** Update path in table of expanded folders *****/
switch (FileBrowserForExpandedFolders)
{
case Brw_FILE_BRW_SEE_DOCUMENTS_INS:
sprintf (Query,"UPDATE expanded_folders SET ClickTime=NOW()"
" WHERE UsrCod='%ld' AND FileBrowser='%u'"
" AND InsCod='%ld'",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) FileBrowserForExpandedFolders,
Gbl.CurrentIns.Ins.InsCod);
break;
case Brw_FILE_BRW_SEE_DOCUMENTS_CTR:
sprintf (Query,"UPDATE expanded_folders SET ClickTime=NOW()"
" WHERE UsrCod='%ld' AND FileBrowser='%u'"
" AND CtrCod='%ld'",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) FileBrowserForExpandedFolders,
Gbl.CurrentCtr.Ctr.CtrCod);
break;
case Brw_FILE_BRW_SEE_DOCUMENTS_DEG:
sprintf (Query,"UPDATE expanded_folders SET ClickTime=NOW()"
" WHERE UsrCod='%ld' AND FileBrowser='%u'"
" AND DegCod='%ld'",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) FileBrowserForExpandedFolders,
Gbl.CurrentDeg.Deg.DegCod);
break;
case Brw_FILE_BRW_SEE_DOCUMENTS_CRS:
case Brw_FILE_BRW_COMMON_CRS:
case Brw_FILE_BRW_SEE_MARKS_CRS:
@ -6098,6 +6148,30 @@ static void Brw_RemoveFolderFromExpandedFolders (const char *Path)
/***** Remove expanded folders associated to a file browser from a course or from a user *****/
switch (FileBrowserForExpandedFolders)
{
case Brw_FILE_BRW_SEE_DOCUMENTS_INS:
sprintf (Query,"DELETE FROM expanded_folders"
" WHERE UsrCod='%ld' AND FileBrowser='%u'"
" AND InsCod='%ld' AND Path='%s/'",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) FileBrowserForExpandedFolders,
Gbl.CurrentIns.Ins.InsCod,Path);
break;
case Brw_FILE_BRW_SEE_DOCUMENTS_CTR:
sprintf (Query,"DELETE FROM expanded_folders"
" WHERE UsrCod='%ld' AND FileBrowser='%u'"
" AND CtrCod='%ld' AND Path='%s/'",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) FileBrowserForExpandedFolders,
Gbl.CurrentCtr.Ctr.CtrCod,Path);
break;
case Brw_FILE_BRW_SEE_DOCUMENTS_DEG:
sprintf (Query,"DELETE FROM expanded_folders"
" WHERE UsrCod='%ld' AND FileBrowser='%u'"
" AND DegCod='%ld' AND Path='%s/'",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) FileBrowserForExpandedFolders,
Gbl.CurrentDeg.Deg.DegCod,Path);
break;
case Brw_FILE_BRW_SEE_DOCUMENTS_CRS:
case Brw_FILE_BRW_COMMON_CRS:
case Brw_FILE_BRW_SEE_MARKS_CRS:
@ -6314,6 +6388,27 @@ static void Brw_RemoveAffectedExpandedFolders (const char *Path)
/***** Remove expanded folders associated to a file browser from a course or from a user *****/
switch (FileBrowserForExpandedFolders)
{
case Brw_FILE_BRW_SEE_DOCUMENTS_INS:
sprintf (Query,"DELETE FROM expanded_folders"
" WHERE FileBrowser='%u'"
" AND InsCod='%ld' AND Path LIKE '%s/%%'",
(unsigned) FileBrowserForExpandedFolders,
Gbl.CurrentIns.Ins.InsCod,Path);
break;
case Brw_FILE_BRW_SEE_DOCUMENTS_CTR:
sprintf (Query,"DELETE FROM expanded_folders"
" WHERE FileBrowser='%u'"
" AND CtrCod='%ld' AND Path LIKE '%s/%%'",
(unsigned) FileBrowserForExpandedFolders,
Gbl.CurrentCtr.Ctr.CtrCod,Path);
break;
case Brw_FILE_BRW_SEE_DOCUMENTS_DEG:
sprintf (Query,"DELETE FROM expanded_folders"
" WHERE FileBrowser='%u'"
" AND DegCod='%ld' AND Path LIKE '%s/%%'",
(unsigned) FileBrowserForExpandedFolders,
Gbl.CurrentDeg.Deg.DegCod,Path);
break;
case Brw_FILE_BRW_SEE_DOCUMENTS_CRS:
case Brw_FILE_BRW_COMMON_CRS:
case Brw_FILE_BRW_SEE_MARKS_CRS:
@ -6376,6 +6471,30 @@ static void Brw_RenameAffectedExpandedFolders (Brw_FileBrowser_t FileBrowser,lon
/***** Update expanded folders associated to a file browser from a course or from a user *****/
switch (FileBrowserForExpandedFolders)
{
case Brw_FILE_BRW_SEE_DOCUMENTS_INS:
sprintf (Query,"UPDATE expanded_folders SET Path=CONCAT('%s','/',SUBSTRING(Path,%u))"
" WHERE FileBrowser='%u'"
" AND InsCod='%ld' AND Path LIKE '%s/%%'",
NewPath,StartFinalSubpathNotChanged,
(unsigned) FileBrowserForExpandedFolders,
Gbl.CurrentIns.Ins.InsCod,OldPath);
break;
case Brw_FILE_BRW_SEE_DOCUMENTS_CTR:
sprintf (Query,"UPDATE expanded_folders SET Path=CONCAT('%s','/',SUBSTRING(Path,%u))"
" WHERE FileBrowser='%u'"
" AND CtrCod='%ld' AND Path LIKE '%s/%%'",
NewPath,StartFinalSubpathNotChanged,
(unsigned) FileBrowserForExpandedFolders,
Gbl.CurrentCtr.Ctr.CtrCod,OldPath);
break;
case Brw_FILE_BRW_SEE_DOCUMENTS_DEG:
sprintf (Query,"UPDATE expanded_folders SET Path=CONCAT('%s','/',SUBSTRING(Path,%u))"
" WHERE FileBrowser='%u'"
" AND DegCod='%ld' AND Path LIKE '%s/%%'",
NewPath,StartFinalSubpathNotChanged,
(unsigned) FileBrowserForExpandedFolders,
Gbl.CurrentDeg.Deg.DegCod,OldPath);
break;
case Brw_FILE_BRW_SEE_DOCUMENTS_CRS:
case Brw_FILE_BRW_COMMON_CRS:
case Brw_FILE_BRW_SEE_MARKS_CRS:
@ -9421,6 +9540,36 @@ static bool Brw_GetIfExpandedTree (const char *Path)
/***** Get if a folder is expanded from database *****/
switch (FileBrowserForExpandedFolders)
{
case Brw_FILE_BRW_SEE_DOCUMENTS_INS:
sprintf (Query,"SELECT COUNT(*) FROM expanded_folders"
" WHERE UsrCod='%ld' AND FileBrowser='%u'"
" AND InsCod='%ld'"
" AND Path='%s/'",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) FileBrowserForExpandedFolders,
Gbl.CurrentIns.Ins.InsCod,
Path);
break;
case Brw_FILE_BRW_SEE_DOCUMENTS_CTR:
sprintf (Query,"SELECT COUNT(*) FROM expanded_folders"
" WHERE UsrCod='%ld' AND FileBrowser='%u'"
" AND CtrCod='%ld'"
" AND Path='%s/'",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) FileBrowserForExpandedFolders,
Gbl.CurrentCtr.Ctr.CtrCod,
Path);
break;
case Brw_FILE_BRW_SEE_DOCUMENTS_DEG:
sprintf (Query,"SELECT COUNT(*) FROM expanded_folders"
" WHERE UsrCod='%ld' AND FileBrowser='%u'"
" AND DegCod='%ld'"
" AND Path='%s/'",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) FileBrowserForExpandedFolders,
Gbl.CurrentDeg.Deg.DegCod,
Path);
break;
case Brw_FILE_BRW_SEE_DOCUMENTS_CRS:
case Brw_FILE_BRW_COMMON_CRS:
case Brw_FILE_BRW_SEE_MARKS_CRS:
@ -9484,10 +9633,14 @@ static void Brw_ChangeFileOrFolderHiddenInDB (const char *Path,bool IsHidden)
/***** Mark file as hidden in database *****/
sprintf (Query,"UPDATE files SET Hidden='%c'"
" WHERE CrsCod='%ld' AND GrpCod='%ld' AND ZoneUsrCod='%ld'"
" WHERE InsCod='%ld' AND CtrCod='%ld' AND DegCod='%ld'"
" AND CrsCod='%ld' AND GrpCod='%ld' AND ZoneUsrCod='%ld'"
" AND FileBrowser='%u' AND Path='%s'",
IsHidden ? 'Y' :
'N',
Brw_GetInsCod (),
Brw_GetCtrCod (),
Brw_GetDegCod (),
Brw_GetCrsCod (),
Brw_GetGrpCod (),
Brw_GetZoneUsrCod (),
@ -9507,12 +9660,16 @@ static void Brw_ChangeFilePublicInDB (long PublisherUsrCod,const char *Path,
/***** Change publisher, public and license of file in database *****/
sprintf (Query,"UPDATE files SET PublisherUsrCod='%ld',Public='%c',License='%u'"
" WHERE CrsCod='%ld' AND GrpCod='%ld' AND ZoneUsrCod='%ld'"
" WHERE InsCod='%ld' AND CtrCod='%ld' AND DegCod='%ld'"
" AND CrsCod='%ld' AND GrpCod='%ld' AND ZoneUsrCod='%ld'"
" AND FileBrowser='%u' AND Path='%s'",
PublisherUsrCod,
IsPublic ? 'Y' :
'N',
(unsigned) License,
Brw_GetInsCod (),
Brw_GetCtrCod (),
Brw_GetDegCod (),
Brw_GetCrsCod (),
Brw_GetGrpCod (),
Brw_GetZoneUsrCod (),
@ -9628,6 +9785,9 @@ long Brw_AddPathToDB (long PublisherUsrCod,Brw_FileType_t FileType,
static void Brw_RemoveOneFileOrFolderFromDB (const char *Path)
{
char Query[512+PATH_MAX];
long InsCod = Brw_GetInsCod ();
long CtrCod = Brw_GetCtrCod ();
long DegCod = Brw_GetDegCod ();
long CrsCod = Brw_GetCrsCod ();
long GrpCod = Brw_GetGrpCod ();
long ZoneUsrCod = Brw_GetZoneUsrCod ();
@ -9653,9 +9813,13 @@ static void Brw_RemoveOneFileOrFolderFromDB (const char *Path)
/***** Remove from database the entries that store the file views *****/
sprintf (Query,"DELETE FROM file_view USING file_view,files"
" WHERE files.CrsCod='%ld' AND files.GrpCod='%ld' AND files.ZoneUsrCod='%ld'"
" WHERE files.InsCod='%ld' AND files.CtrCod='%ld' AND files.DegCod='%ld'"
" AND files.CrsCod='%ld' AND files.GrpCod='%ld' AND files.ZoneUsrCod='%ld'"
" AND files.FileBrowser='%u' AND files.Path='%s'"
" AND files.FilCod=file_view.FilCod",
InsCod,
CtrCod,
DegCod,
CrsCod,
GrpCod,
ZoneUsrCod,
@ -9680,6 +9844,9 @@ static void Brw_RemoveOneFileOrFolderFromDB (const char *Path)
static void Brw_RemoveChildrenOfFolderFromDB (const char *Path)
{
char Query[512+PATH_MAX];
long InsCod = Brw_GetInsCod ();
long CtrCod = Brw_GetCtrCod ();
long DegCod = Brw_GetDegCod ();
long CrsCod = Brw_GetCrsCod ();
long GrpCod = Brw_GetGrpCod ();
long ZoneUsrCod = Brw_GetZoneUsrCod ();
@ -9705,9 +9872,13 @@ static void Brw_RemoveChildrenOfFolderFromDB (const char *Path)
/***** Remove from database the entries that store the file views *****/
sprintf (Query,"DELETE FROM file_view USING file_view,files"
" WHERE files.CrsCod='%ld' AND files.GrpCod='%ld' AND files.ZoneUsrCod='%ld'"
" WHERE files.InsCod='%ld' AND files.CtrCod='%ld' AND files.DegCod='%ld'"
" AND files.CrsCod='%ld' AND files.GrpCod='%ld' AND files.ZoneUsrCod='%ld'"
" AND files.FileBrowser='%u' AND files.Path LIKE '%s/%%'"
" AND files.FilCod=file_view.FilCod",
InsCod,
CtrCod,
DegCod,
CrsCod,
GrpCod,
ZoneUsrCod,
@ -9948,7 +10119,7 @@ void Brw_RemoveGrpZones (long CrsCod,long GrpCod)
Ntf_SetNotifFilesInGroupAsRemoved (CrsCod,GrpCod);
/***** Remove files in the course from database *****/
Brw_RemoveFilesFromDB (CrsCod,GrpCod,-1L);
Brw_RemoveFilesFromDB (-1L,-1L,-1L,CrsCod,GrpCod,-1L);
/***** Remove size of file zones in the group from database *****/
Brw_RemoveSizeOfFileTreeFromDB (CrsCod,GrpCod,-1L);
@ -9974,7 +10145,7 @@ void Brw_RemoveUsrWorksInCrs (struct UsrData *UsrDat,struct Course *Crs,Cns_Quie
// If this was the last user in his/her subfolder ==> the subfolder will be empty
/***** Remove files in the course from database *****/
Brw_RemoveFilesFromDB (Crs->CrsCod,-1L,UsrDat->UsrCod);
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);

View File

@ -147,7 +147,7 @@ void Brw_RemoveFoldersAssignmentsIfExistForAllUsrs (const char *FolderName);
void Brw_ShowFileBrowserOrWorks (void);
void Brw_ShowAgainFileBrowserOrWorks (void);
void Brw_RemoveSizeOfFileTreeFromDB (long CrsCod,long GrpCod,long UsrCod);
void Brw_RemoveFilesFromDB (long CrsCod,long GrpCod,long UsrCod);
void Brw_RemoveFilesFromDB (long InsCod,long CtrCod,long DegCod,long CrsCod,long GrpCod,long UsrCod);
void Brw_CreateDirDownloadTmp (void);
void Brw_AskEditWorksCrs (void);
void Brw_AskRemFileFromTree (void);

View File

@ -1384,6 +1384,9 @@ void Ins_RemoveInstitution (void)
Ins.InsCod);
DB_QueryDELETE (Query,"can not remove clipboards in an institution");
/* Remove files in the institution from database */
Brw_RemoveFilesFromDB (Ins.InsCod,-1L,-1L,-1L,-1L,-1L);
/***** Remove institution *****/
sprintf (Query,"DELETE FROM institutions WHERE InsCod='%ld'",
Ins.InsCod);