mirror of https://github.com/acanas/swad-core.git
Version 14.62
This commit is contained in:
parent
9ddb2ebd06
commit
b67123091a
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 *****/
|
||||
/*
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue