diff --git a/sql/cambios.sql b/sql/cambios.sql
index d9a79ec4e..4454ba101 100644
--- a/sql/cambios.sql
+++ b/sql/cambios.sql
@@ -10482,3 +10482,4 @@ CREATE TABLE IF NOT EXISTS file_browser_last (UsrCod INT NOT NULL,FileBrowser TI
INSERT INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'9','-1',LastAccBriefcase FROM usr_last WHERE LastAccBriefcase>0;
ALTER TABLE usr_last DROP COLUMN LastAccBriefcase;
+
diff --git a/sql/swad.sql b/sql/swad.sql
index 1e4bd2849..1bcba45bc 100644
--- a/sql/swad.sql
+++ b/sql/swad.sql
@@ -172,21 +172,14 @@ CREATE TABLE IF NOT EXISTS clicks_without_photo (
CREATE TABLE IF NOT EXISTS clipboard (
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,
+ Cod INT NOT NULL DEFAULT -1,
WorksUsrCod INT NOT NULL,
FileType TINYINT NOT NULL DEFAULT 0,
Path TEXT COLLATE latin1_bin NOT NULL,
CopyTime TIMESTAMP,
UNIQUE INDEX(UsrCod),
- INDEX(FileBrowser),
- INDEX(InsCod),
- INDEX(CtrCod),
- INDEX(DegCod),
- INDEX(CrsCod));
+ INDEX(FileBrowser,Cod),
+ INDEX(WorksUsrCod));
--
-- Table connected: users currently connected to the platform
--
@@ -451,19 +444,13 @@ 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,
+ Cod INT NOT NULL DEFAULT -1,
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));
+ INDEX(UsrCod,FileBrowser,Cod),
+ INDEX(FileBrowser,Cod),
+ INDEX(WorksUsrCod));
--
-- Table file_browser_last: stores the last click of every user in each file browser zone
--
diff --git a/swad_changelog.h b/swad_changelog.h
index 73a043e35..49dd7d19e 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -39,27 +39,59 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
-#define Log_PLATFORM_VERSION "SWAD 14.64 (2015/01/22)"
+#define Log_PLATFORM_VERSION "SWAD 14.66 (2015/01/24)"
// 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
/*
+ Version 14.66: Jan 24, 2015 Changes in clipboard table. (175401 lines)
+ 13 changes necessary in database:
+DROP INDEX FileBrowser ON clipboard;
+ALTER TABLE clipboard ADD COLUMN Cod INT NOT NULL DEFAULT -1 AFTER FileBrowser, ADD INDEX (FileBrowser,Cod);
+CREATE INDEX WorksUsrCod ON clipboard (WorksUsrCod);
+UPDATE clipboard SET Cod=InsCod WHERE InsCod>'0';
+UPDATE clipboard SET Cod=CtrCod WHERE CtrCod>'0';
+UPDATE clipboard SET Cod=DegCod WHERE DegCod>'0';
+UPDATE clipboard SET Cod=CrsCod WHERE CrsCod>'0';
+UPDATE clipboard SET Cod=GrpCod WHERE GrpCod>'0';
+ALTER TABLE clipboard DROP COLUMN InsCod;
+ALTER TABLE clipboard DROP COLUMN CtrCod;
+ALTER TABLE clipboard DROP COLUMN DegCod;
+ALTER TABLE clipboard DROP COLUMN CrsCod;
+ALTER TABLE clipboard DROP COLUMN GrpCod;
+
+ Version 14.65: Jan 24, 2015 Changes in expanded_folders table. (175394 lines)
+ 13 changes necessary in database:
+DROP INDEX UsrCod ON expanded_folders;
+ALTER TABLE expanded_folders ADD COLUMN Cod INT NOT NULL DEFAULT -1 AFTER FileBrowser, ADD INDEX (UsrCod,FileBrowser,Cod), ADD INDEX (FileBrowser,Cod);
+CREATE INDEX WorksUsrCod ON expanded_folders (WorksUsrCod);
+UPDATE expanded_folders SET Cod=InsCod WHERE InsCod>'0';
+UPDATE expanded_folders SET Cod=CtrCod WHERE CtrCod>'0';
+UPDATE expanded_folders SET Cod=DegCod WHERE DegCod>'0';
+UPDATE expanded_folders SET Cod=CrsCod WHERE CrsCod>'0';
+UPDATE expanded_folders SET Cod=GrpCod WHERE GrpCod>'0';
+ALTER TABLE expanded_folders DROP COLUMN InsCod;
+ALTER TABLE expanded_folders DROP COLUMN CtrCod;
+ALTER TABLE expanded_folders DROP COLUMN DegCod;
+ALTER TABLE expanded_folders DROP COLUMN CrsCod;
+ALTER TABLE expanded_folders DROP COLUMN GrpCod;
+
Version 14.64: Jan 22, 2015 Changes in last accesses to group file browsers. (175510 lines)
6 changes necessary in database:
-INSERT INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'11',GrpCod,LastAccDownloadGrp FROM crs_grp_usr WHERE LastAccDownloadGrp>0;
-INSERT INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'5',GrpCod,LastAccCommonGrp FROM crs_grp_usr WHERE LastAccCommonGrp>0;
-INSERT INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'13',GrpCod,LastAccCommonGrp FROM crs_grp_usr WHERE LastAccMarksGrp>0;
+REPLACE INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'11',GrpCod,LastAccDownloadGrp FROM crs_grp_usr WHERE LastAccDownloadGrp>0;
+REPLACE INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'5',GrpCod,LastAccCommonGrp FROM crs_grp_usr WHERE LastAccCommonGrp>0;
+REPLACE INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'13',GrpCod,LastAccCommonGrp FROM crs_grp_usr WHERE LastAccMarksGrp>0;
ALTER TABLE crs_grp_usr DROP COLUMN LastAccDownloadGrp;
ALTER TABLE crs_grp_usr DROP COLUMN LastAccCommonGrp;
ALTER TABLE crs_grp_usr DROP COLUMN LastAccMarksGrp;
Version 14.63.6: Jan 22, 2015 Changes in last accesses to course file browsers. (175588 lines)
10 changes necessary in database:
-INSERT INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'3',CrsCod,LastAccDownloadCrs FROM crs_usr WHERE LastAccDownloadCrs>0;
-INSERT INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'4',CrsCod,LastAccCommonCrs FROM crs_usr WHERE LastAccCommonCrs>0;
-INSERT INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'8',CrsCod,LastAccMarksCrs FROM crs_usr WHERE LastAccMarksCrs>0;
-INSERT INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'14',CrsCod,LastAccMyWorks FROM crs_usr WHERE LastAccMyWorks>0;
-INSERT INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'15',CrsCod,LastAccMyWorks FROM crs_usr WHERE LastAccCrsWorks>0;
+REPLACE INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'3',CrsCod,LastAccDownloadCrs FROM crs_usr WHERE LastAccDownloadCrs>0;
+REPLACE INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'4',CrsCod,LastAccCommonCrs FROM crs_usr WHERE LastAccCommonCrs>0;
+REPLACE INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'8',CrsCod,LastAccMarksCrs FROM crs_usr WHERE LastAccMarksCrs>0;
+REPLACE INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'14',CrsCod,LastAccMyWorks FROM crs_usr WHERE LastAccMyWorks>0;
+REPLACE INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'15',CrsCod,LastAccMyWorks FROM crs_usr WHERE LastAccCrsWorks>0;
ALTER TABLE crs_usr DROP COLUMN LastAccDownloadCrs;
ALTER TABLE crs_usr DROP COLUMN LastAccCommonCrs;
ALTER TABLE crs_usr DROP COLUMN LastAccMarksCrs;
@@ -68,7 +100,7 @@ ALTER TABLE crs_usr DROP COLUMN LastAccCrsWorks;
Version 14.63.5: Jan 22, 2015 Changes in last accesses to file browsers (briefcases). (? lines)
2 changes necessary in database:
-INSERT INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'9','-1',LastAccBriefcase FROM usr_last WHERE LastAccBriefcase>0;
+REPLACE INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick) SELECT UsrCod,'9','-1',LastAccBriefcase FROM usr_last WHERE LastAccBriefcase>0;
ALTER TABLE usr_last DROP COLUMN LastAccBriefcase;
Version 14.63.4: Jan 21, 2015 Fixed bug in listing of degree administrators, reported by Antonio Fernández Ares. (175548 lines)
diff --git a/swad_course.c b/swad_course.c
index e7b5094d0..6254c4061 100644
--- a/swad_course.c
+++ b/swad_course.c
@@ -2431,9 +2431,7 @@ static void Crs_EmptyCourseCompletely (long CrsCod)
DB_QueryDELETE (Query,"can not remove clipboards in a course");
/* Remove expanded folders in the course */
- sprintf (Query,"DELETE FROM expanded_folders WHERE CrsCod='%ld'",
- CrsCod);
- DB_QueryDELETE (Query,"can not remove expanded folders in a course");
+ Brw_RemoveExpandedFoldersInCrs (CrsCod);
/* Remove format of files of marks of the course */
sprintf (Query,"DELETE FROM marks_properties"
diff --git a/swad_database.c b/swad_database.c
index f5b8ab4ee..8cb6e577f 100644
--- a/swad_database.c
+++ b/swad_database.c
@@ -435,31 +435,23 @@ mysql> DESCRIBE clipboard;
+-------------+------------+------+-----+-------------------+-----------------------------+
| UsrCod | int(11) | NO | PRI | NULL | |
| FileBrowser | tinyint(4) | NO | MUL | 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 | |
+| Cod | int(11) | NO | | -1 | |
+| WorksUsrCod | int(11) | NO | MUL | NULL | |
| FileType | tinyint(4) | NO | | 0 | |
| Path | text | NO | | NULL | |
| CopyTime | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------------+------------+------+-----+-------------------+-----------------------------+
-11 rows in set (0.00 sec)
+7 rows in set (0.00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS clipboard ("
"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,"
+ "Cod INT NOT NULL DEFAULT -1,"
"WorksUsrCod INT NOT NULL,"
"FileType TINYINT NOT NULL DEFAULT 0,"
"Path TEXT COLLATE latin1_bin NOT NULL,"
"CopyTime TIMESTAMP,"
- "UNIQUE INDEX(UsrCod),INDEX(FileBrowser),INDEX(InsCod),INDEX(CtrCod),INDEX(DegCod),INDEX(CrsCod))");
+ "UNIQUE INDEX(UsrCod),INDEX(FileBrowser,Cod),INDEX(WorksUsrCod))");
/***** Table connected *****/
/*
@@ -957,30 +949,22 @@ mysql> DESCRIBE expanded_folders;
| 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 | |
+| FileBrowser | tinyint(4) | NO | MUL | NULL | |
+| Cod | int(11) | NO | | -1 | |
+| WorksUsrCod | int(11) | NO | MUL | NULL | |
| Path | text | NO | | NULL | |
| ClickTime | datetime | NO | | NULL | |
+-------------+------------+------+-----+---------+-------+
-10 rows in set (0.00 sec)
+6 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,"
+ "Cod INT NOT NULL DEFAULT -1,"
"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))");
+ "INDEX(UsrCod,FileBrowser,Cod),INDEX(FileBrowser,Cod),INDEX(WorksUsrCod))");
/***** Table file_browser_last *****/
/*
diff --git a/swad_file_browser.c b/swad_file_browser.c
index 96d025f89..2e62b1604 100644
--- a/swad_file_browser.c
+++ b/swad_file_browser.c
@@ -93,8 +93,20 @@ const char *Brw_FileTypeParamName[Brw_NUM_FILE_TYPES] =
"BrwFol", // Brw_IS_FOLDER
"BrwLnk", // Brw_IS_LINK
};
-
-static long Brw_FileBrowserForDB[Brw_NUM_TYPES_FILE_BROWSER] =
+/*
+const char *Brw_Licenses_DB[Brw_NUM_LICENSES] =
+ {
+ "all_rights_reserved", // All Rights Reserved
+ "cc_by", // CC Attribution License
+ "cc_by_sa", // CC Attribution-ShareAlike License
+ "cc_by_nd", // CC Attribution-NoDerivs License
+ "cc_by_nc", // CC Attribution-NonCommercial License
+ "cc_by_nc_sa", // CC Attribution-NonCommercial-ShareAlike License
+ "cc_by_nc_nd", // CC Attribution-NonCommercial-NoDerivs License
+ };
+*/
+// Brosers types for database "files" table
+static const Brw_FileBrowser_t Brw_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER] =
{
Brw_FILE_BRW_UNKNOWN, // Brw_FILE_BRW_UNKNOWN = 0,
Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS = 1,
@@ -119,7 +131,8 @@ static long Brw_FileBrowserForDB[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_ADMIN_DOCUMENTS_INS = 21,
};
-static long Brw_FileBrowserForLastAccess[Brw_NUM_TYPES_FILE_BROWSER] =
+// Brosers types for database "clipboard" table
+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_ADMIN_DOCUMENTS_CRS, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS = 1,
@@ -127,8 +140,8 @@ static long Brw_FileBrowserForLastAccess[Brw_NUM_TYPES_FILE_BROWSER] =
Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS, // Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS = 3,
Brw_FILE_BRW_COMMON_CRS, // Brw_FILE_BRW_COMMON_CRS = 4,
Brw_FILE_BRW_COMMON_GRP, // Brw_FILE_BRW_COMMON_GRP = 5,
- Brw_FILE_BRW_ASSIGNMENTS_USR, // Brw_FILE_BRW_WORKS_USR = 6,
- Brw_FILE_BRW_ASSIGNMENTS_CRS, // Brw_FILE_BRW_WORKS_CRS = 7,
+ Brw_FILE_BRW_WORKS_USR, // Brw_FILE_BRW_WORKS_USR = 6,
+ Brw_FILE_BRW_WORKS_CRS, // Brw_FILE_BRW_WORKS_CRS = 7,
Brw_FILE_BRW_ADMIN_MARKS_CRS, // Brw_FILE_BRW_ADMIN_MARKS_CRS = 8,
Brw_FILE_BRW_BRIEFCASE_USR, // Brw_FILE_BRW_BRIEFCASE_USR = 9,
Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP, // Brw_FILE_BRW_SEE_DOCUMENTS_GRP = 10,
@@ -144,21 +157,8 @@ static long Brw_FileBrowserForLastAccess[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_ADMIN_DOCUMENTS_INS = 21,
};
-/*
-const char *Brw_Licenses_DB[Brw_NUM_LICENSES] =
- {
- "all_rights_reserved", // All Rights Reserved
- "cc_by", // CC Attribution License
- "cc_by_sa", // CC Attribution-ShareAlike License
- "cc_by_nd", // CC Attribution-NoDerivs License
- "cc_by_nc", // CC Attribution-NonCommercial License
- "cc_by_nc_sa", // CC Attribution-NonCommercial-ShareAlike License
- "cc_by_nc_nd", // CC Attribution-NonCommercial-NoDerivs License
- };
-*/
-
-// Brosers types for expanded folders
-const Brw_FileBrowser_t Brw_FileBrowserForExpandedFolders[Brw_NUM_TYPES_FILE_BROWSER] =
+// Brosers types for database "expanded_folders" table
+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_SEE_DOCUMENTS_CRS, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -183,6 +183,32 @@ const Brw_FileBrowser_t Brw_FileBrowserForExpandedFolders[Brw_NUM_TYPES_FILE_BRO
Brw_FILE_BRW_SEE_DOCUMENTS_INS, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
Brw_FILE_BRW_SEE_DOCUMENTS_INS, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
+// Brosers types for database "file_browser_last" table
+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_ADMIN_DOCUMENTS_CRS, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS = 1,
+ Brw_FILE_BRW_ADMIN_MARKS_CRS, // Brw_FILE_BRW_SEE_MARKS_CRS = 2,
+ Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS, // Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS = 3,
+ Brw_FILE_BRW_COMMON_CRS, // Brw_FILE_BRW_COMMON_CRS = 4,
+ Brw_FILE_BRW_COMMON_GRP, // Brw_FILE_BRW_COMMON_GRP = 5,
+ Brw_FILE_BRW_ASSIGNMENTS_USR, // Brw_FILE_BRW_WORKS_USR = 6,
+ Brw_FILE_BRW_ASSIGNMENTS_CRS, // Brw_FILE_BRW_WORKS_CRS = 7,
+ Brw_FILE_BRW_ADMIN_MARKS_CRS, // Brw_FILE_BRW_ADMIN_MARKS_CRS = 8,
+ Brw_FILE_BRW_BRIEFCASE_USR, // Brw_FILE_BRW_BRIEFCASE_USR = 9,
+ Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP, // Brw_FILE_BRW_SEE_DOCUMENTS_GRP = 10,
+ Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP, // Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP = 11,
+ Brw_FILE_BRW_ADMIN_MARKS_GRP, // Brw_FILE_BRW_SEE_MARKS_GRP = 12,
+ Brw_FILE_BRW_ADMIN_MARKS_GRP, // Brw_FILE_BRW_ADMIN_MARKS_GRP = 13,
+ Brw_FILE_BRW_ASSIGNMENTS_USR, // Brw_FILE_BRW_ASSIGNMENTS_USR = 14,
+ Brw_FILE_BRW_ASSIGNMENTS_CRS, // Brw_FILE_BRW_ASSIGNMENTS_CRS = 15,
+ Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG, // Brw_FILE_BRW_SEE_DOCUMENTS_DEG = 16,
+ Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG, // Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG = 17,
+ Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR, // Brw_FILE_BRW_SEE_DOCUMENTS_CTR = 18,
+ Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR, // Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR = 19,
+ 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,
+ };
// Internal names of root folders
const char *Brw_RootFolderInternalNames[Brw_NUM_TYPES_FILE_BROWSER] =
@@ -212,7 +238,7 @@ const char *Brw_RootFolderInternalNames[Brw_NUM_TYPES_FILE_BROWSER] =
};
// Number of columns of a file browser
-const unsigned Brw_NumColumnsInExpTree[Brw_NUM_TYPES_FILE_BROWSER] =
+static const unsigned Brw_NumColumnsInExpTree[Brw_NUM_TYPES_FILE_BROWSER] =
{
5, // Brw_FILE_BRW_UNKNOWN
5, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -237,7 +263,7 @@ const unsigned Brw_NumColumnsInExpTree[Brw_NUM_TYPES_FILE_BROWSER] =
5, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
8, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const bool Brw_FileBrowserIsEditable[Brw_NUM_TYPES_FILE_BROWSER] =
+static const bool Brw_FileBrowserIsEditable[Brw_NUM_TYPES_FILE_BROWSER] =
{
false, // Brw_FILE_BRW_UNKNOWN
false, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -262,7 +288,7 @@ const bool Brw_FileBrowserIsEditable[Brw_NUM_TYPES_FILE_BROWSER] =
false, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
true, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActSeeAdm[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActSeeAdm[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActSeeDocCrs, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -287,7 +313,7 @@ const Act_Action_t Brw_ActSeeAdm[Brw_NUM_TYPES_FILE_BROWSER] =
ActSeeDocIns, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActAdmDocIns, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActChgZone[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActChgZone[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActChgToSeeDocCrs, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -312,7 +338,7 @@ const Act_Action_t Brw_ActChgZone[Brw_NUM_TYPES_FILE_BROWSER] =
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActUnk, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActShow[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActShow[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -337,7 +363,7 @@ const Act_Action_t Brw_ActShow[Brw_NUM_TYPES_FILE_BROWSER] =
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActShoDocIns, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActHide[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActHide[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -362,7 +388,7 @@ const Act_Action_t Brw_ActHide[Brw_NUM_TYPES_FILE_BROWSER] =
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActHidDocIns, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActReqDatFile[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActReqDatFile[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActReqDatSeeDocCrs, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -387,7 +413,7 @@ const Act_Action_t Brw_ActReqDatFile[Brw_NUM_TYPES_FILE_BROWSER] =
ActReqDatSeeDocIns, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActReqDatAdmDocIns, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActDowFile[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActDowFile[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActDowSeeDocCrs, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -412,7 +438,7 @@ const Act_Action_t Brw_ActDowFile[Brw_NUM_TYPES_FILE_BROWSER] =
ActDowSeeDocIns, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActDowAdmDocIns, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActAskRemoveFile[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActAskRemoveFile[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -437,7 +463,7 @@ const Act_Action_t Brw_ActAskRemoveFile[Brw_NUM_TYPES_FILE_BROWSER] =
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActReqRemFilDocIns, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActRemoveFile[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActRemoveFile[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -462,7 +488,7 @@ const Act_Action_t Brw_ActRemoveFile[Brw_NUM_TYPES_FILE_BROWSER] =
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActRemFilDocIns, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActRemoveFolder[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActRemoveFolder[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -487,7 +513,7 @@ const Act_Action_t Brw_ActRemoveFolder[Brw_NUM_TYPES_FILE_BROWSER] =
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActRemFolDocIns, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActRemoveFolderNotEmpty[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActRemoveFolderNotEmpty[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -512,7 +538,7 @@ const Act_Action_t Brw_ActRemoveFolderNotEmpty[Brw_NUM_TYPES_FILE_BROWSER] =
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActRemTreDocIns, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActCopy[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActCopy[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -537,7 +563,7 @@ const Act_Action_t Brw_ActCopy[Brw_NUM_TYPES_FILE_BROWSER] =
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActCopDocIns, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActPaste[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActPaste[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -562,7 +588,7 @@ const Act_Action_t Brw_ActPaste[Brw_NUM_TYPES_FILE_BROWSER] =
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActPasDocIns, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActFormCreate[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActFormCreate[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -587,7 +613,7 @@ const Act_Action_t Brw_ActFormCreate[Brw_NUM_TYPES_FILE_BROWSER] =
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActFrmCreDocIns, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActCreateFolder[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActCreateFolder[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -612,7 +638,7 @@ const Act_Action_t Brw_ActCreateFolder[Brw_NUM_TYPES_FILE_BROWSER] =
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActCreFolDocIns, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActCreateLink[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActCreateLink[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -637,7 +663,7 @@ const Act_Action_t Brw_ActCreateLink[Brw_NUM_TYPES_FILE_BROWSER] =
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActCreLnkDocIns, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActRenameFolder[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActRenameFolder[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -662,7 +688,7 @@ const Act_Action_t Brw_ActRenameFolder[Brw_NUM_TYPES_FILE_BROWSER] =
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActRenFolDocIns, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActUploadFileDropzone[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActUploadFileDropzone[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -687,7 +713,7 @@ const Act_Action_t Brw_ActUploadFileDropzone[Brw_NUM_TYPES_FILE_BROWSER] =
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActRcvFilDocInsDZ, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActUploadFileClassic[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActUploadFileClassic[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -712,7 +738,7 @@ const Act_Action_t Brw_ActUploadFileClassic[Brw_NUM_TYPES_FILE_BROWSER] =
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActRcvFilDocInsCla, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActRefreshAfterUploadFiles[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActRefreshAfterUploadFiles[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -737,7 +763,7 @@ const Act_Action_t Brw_ActRefreshAfterUploadFiles[Brw_NUM_TYPES_FILE_BROWSER] =
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActAdmDocIns, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActExpandFolder[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActExpandFolder[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActExpSeeDocCrs, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -762,7 +788,7 @@ const Act_Action_t Brw_ActExpandFolder[Brw_NUM_TYPES_FILE_BROWSER] =
ActExpSeeDocIns, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActExpAdmDocIns, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActContractFolder[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActContractFolder[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActConSeeDocCrs, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -787,7 +813,7 @@ const Act_Action_t Brw_ActContractFolder[Brw_NUM_TYPES_FILE_BROWSER] =
ActConSeeDocIns, // Brw_FILE_BRW_SEE_DOCUMENTS_INS
ActConAdmDocIns, // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
};
-const Act_Action_t Brw_ActRecDatFile[Brw_NUM_TYPES_FILE_BROWSER] =
+static const Act_Action_t Brw_ActRecDatFile[Brw_NUM_TYPES_FILE_BROWSER] =
{
ActUnk, // Brw_FILE_BRW_UNKNOWN
ActUnk, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS
@@ -1259,22 +1285,29 @@ static void Brw_WriteDatesAssignment (void);
static void Brw_WriteFileSizeAndDate (Brw_FileType_t FileType,struct FileMetadata *FileMetadata);
static void Brw_WriteFileOrFolderPublisher (unsigned Level,unsigned long UsrCod);
static void Brw_AskConfirmRemoveFolderNotEmpty (void);
+
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 long Brw_GetCodForClipboard (void);
+static long Brw_GetWorksUsrCodForClipboard (void);
+
static void Brw_InsFoldersInPathAndUpdOtherFoldersInExpandedFolders (const char *Path);
static void Brw_RemThisFolderAndUpdOtherFoldersFromExpandedFolders (const char *Path);
static void Brw_InsertFolderInExpandedFolders (const char *Path);
static void Brw_UpdateClickTimeOfThisFileBrowserInExpandedFolders (void);
static void Brw_RemoveFolderFromExpandedFolders (const char *Path);
-static void Brw_RemoveExpiredClipboards (void);
-static void Brw_RemoveAffectedClipboards (Brw_FileBrowser_t FileBrowser,long MyUsrCod,long WorksUsrCod);
static void Brw_RemoveAffectedExpandedFolders (const char *Path);
static void Brw_RenameAffectedExpandedFolders (Brw_FileBrowser_t FileBrowser,long MyUsrCod,long WorksUsrCod,const char *OldPath,const char *NewPath);
+static bool Brw_GetIfExpandedTree (const char *Path);
+static long Brw_GetCodForExpandedFolders (void);
+static long Brw_GetWorksUsrCodForExpandedFolders (void);
+
+static void Brw_RemoveExpiredClipboards (void);
+static void Brw_RemoveAffectedClipboards (Brw_FileBrowser_t FileBrowser,long MyUsrCod,long WorksUsrCod);
static void Brw_PasteClipboard (void);
static unsigned Brw_NumLevelsInPath (const char *Path);
static bool Brw_PasteTreeIntoFolder (const char *PathOrg,const char *PathDstInTree,
@@ -1302,7 +1335,6 @@ static void Brw_GetFileViewsFromNonLoggedUsrs (struct FileMetadata *FileMetadata
static unsigned Brw_GetFileViewsFromMe (long FilCod);
static void Brw_UpdateFileViews (unsigned NumViews,long FilCod);
static bool Brw_GetIfFolderHasPublicFiles (const char *Path);
-static bool Brw_GetIfExpandedTree (const char *Path);
static void Brw_ChangeFileOrFolderHiddenInDB (const char *Path,bool IsHidden);
@@ -3808,7 +3840,7 @@ static void Brw_GetAndUpdateDateLastAccFileBrowser (void)
sprintf (Query,"SELECT UNIX_TIMESTAMP(LastClick) FROM file_browser_last"
" WHERE UsrCod='%ld' AND FileBrowser='%u' AND Cod='%ld'",
Gbl.Usrs.Me.UsrDat.UsrCod,
- (unsigned) Brw_FileBrowserForLastAccess[Gbl.FileBrowser.Type],
+ (unsigned) Brw_FileBrowserForDB_file_browser_last[Gbl.FileBrowser.Type],
Cod);
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get date-time of last access to a file browser");
@@ -3833,7 +3865,7 @@ static void Brw_GetAndUpdateDateLastAccFileBrowser (void)
sprintf (Query,"REPLACE INTO file_browser_last (UsrCod,FileBrowser,Cod,LastClick)"
" VALUES ('%ld','%u','%ld',NOW())",
Gbl.Usrs.Me.UsrDat.UsrCod,
- (unsigned) Brw_FileBrowserForLastAccess[Gbl.FileBrowser.Type],
+ (unsigned) Brw_FileBrowserForDB_file_browser_last[Gbl.FileBrowser.Type],
Cod);
DB_QueryUPDATE (Query,"can not update date of last access to a file browser");
}
@@ -3848,7 +3880,7 @@ void Brw_RemoveFileBrowserLast (Brw_FileBrowser_t FileBrowser,long Cod)
sprintf (Query,"DELETE FROM file_browser_last"
" WHERE FileBrowser='%u' AND Cod='%ld'",
- (unsigned) Brw_FileBrowserForDB[FileBrowser],Cod);
+ (unsigned) Brw_FileBrowserForDB_file_browser_last[FileBrowser],Cod);
DB_QueryDELETE (Query,"can not remove last accesses to file browsers");
}
@@ -5604,89 +5636,85 @@ static void Brw_WriteCurrentClipboard (void)
const char *Ptr;
char FileNameToShow[NAME_MAX+1];
- if (Gbl.FileBrowser.Clipboard.FileBrowser != Brw_FILE_BRW_BRIEFCASE_USR)
- {
- if (Gbl.FileBrowser.Clipboard.CrsCod > 0)
- {
- Crs.CrsCod = Gbl.FileBrowser.Clipboard.CrsCod;
- Crs_GetDataOfCourseByCod (&Crs);
- }
- else if (Gbl.FileBrowser.Clipboard.DegCod > 0)
- {
- Deg.DegCod = Gbl.FileBrowser.Clipboard.DegCod;
- Deg_GetDataOfDegreeByCod (&Deg);
- }
- else if (Gbl.FileBrowser.Clipboard.CtrCod > 0)
- {
- Ctr.CtrCod = Gbl.FileBrowser.Clipboard.CtrCod;
- Ctr_GetDataOfCentreByCod (&Ctr);
- }
- else if (Gbl.FileBrowser.Clipboard.InsCod > 0)
- {
- Ins.InsCod = Gbl.FileBrowser.Clipboard.InsCod;
- Ins_GetDataOfInstitutionByCod (&Ins,false);
- }
- }
-
fprintf (Gbl.F.Out,"
"
"%s: ",
Txt_Copy_source);
switch (Gbl.FileBrowser.Clipboard.FileBrowser)
{
case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
+ Ins.InsCod = Gbl.FileBrowser.Clipboard.Cod;
+ Ins_GetDataOfInstitutionByCod (&Ins,false);
fprintf (Gbl.F.Out,"%s, %s %s",
Txt_documents_management_zone,
Txt_institution,Ins.ShortName);
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
+ Ctr.CtrCod = Gbl.FileBrowser.Clipboard.Cod;
+ Ctr_GetDataOfCentreByCod (&Ctr);
fprintf (Gbl.F.Out,"%s, %s %s",
Txt_documents_management_zone,
Txt_centre,Ctr.ShortName);
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
+ Deg.DegCod = Gbl.FileBrowser.Clipboard.Cod;
+ Deg_GetDataOfDegreeByCod (&Deg);
fprintf (Gbl.F.Out,"%s, %s %s",
Txt_documents_management_zone,
Txt_degree,Deg.ShortName);
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
+ Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
+ Crs_GetDataOfCourseByCod (&Crs);
fprintf (Gbl.F.Out,"%s, %s %s",
Txt_documents_management_zone,
Txt_course,Crs.ShortName);
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
- GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.GrpCod;
+ GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetDataOfGroupByCod (&GrpDat);
+ Crs.CrsCod = GrpDat.CrsCod;
+ Crs_GetDataOfCourseByCod (&Crs);
fprintf (Gbl.F.Out,"%s, %s %s, %s %s %s",
Txt_documents_management_zone,
Txt_course,Crs.ShortName,
Txt_group,GrpDat.GrpTypName,GrpDat.GrpName);
break;
case Brw_FILE_BRW_COMMON_CRS:
+ Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
+ Crs_GetDataOfCourseByCod (&Crs);
fprintf (Gbl.F.Out,"%s, %s %s",
Txt_common_zone,
Txt_course,Crs.ShortName);
break;
case Brw_FILE_BRW_COMMON_GRP:
- GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.GrpCod;
+ GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetDataOfGroupByCod (&GrpDat);
+ Crs.CrsCod = GrpDat.CrsCod;
+ Crs_GetDataOfCourseByCod (&Crs);
fprintf (Gbl.F.Out,"%s, %s %s, %s %s %s",
Txt_common_zone,
Txt_course,Crs.ShortName,
Txt_group,GrpDat.GrpTypName,GrpDat.GrpName);
break;
case Brw_FILE_BRW_ASSIGNMENTS_USR:
+ Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
+ Crs_GetDataOfCourseByCod (&Crs);
fprintf (Gbl.F.Out,"%s, %s %s, %s %s",
Txt_assignments_zone,
Txt_course,Crs.ShortName,
Txt_user[Gbl.Usrs.Me.UsrDat.Sex],Gbl.Usrs.Me.UsrDat.FullName);
break;
case Brw_FILE_BRW_WORKS_USR:
+ Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
+ Crs_GetDataOfCourseByCod (&Crs);
fprintf (Gbl.F.Out,"%s, %s %s, %s %s",
Txt_works_zone,
Txt_course,Crs.ShortName,
Txt_user[Gbl.Usrs.Me.UsrDat.Sex],Gbl.Usrs.Me.UsrDat.FullName);
break;
case Brw_FILE_BRW_ASSIGNMENTS_CRS:
+ Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
+ Crs_GetDataOfCourseByCod (&Crs);
Usr_UsrDataConstructor (&UsrDat);
UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod;
Usr_GetAllUsrDataFromUsrCod (&UsrDat);
@@ -5697,6 +5725,8 @@ static void Brw_WriteCurrentClipboard (void)
Usr_UsrDataDestructor (&UsrDat);
break;
case Brw_FILE_BRW_WORKS_CRS:
+ Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
+ Crs_GetDataOfCourseByCod (&Crs);
Usr_UsrDataConstructor (&UsrDat);
UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod;
Usr_GetAllUsrDataFromUsrCod (&UsrDat);
@@ -5707,13 +5737,17 @@ static void Brw_WriteCurrentClipboard (void)
Usr_UsrDataDestructor (&UsrDat);
break;
case Brw_FILE_BRW_ADMIN_MARKS_CRS:
+ Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
+ Crs_GetDataOfCourseByCod (&Crs);
fprintf (Gbl.F.Out,"%s, %s %s",
Txt_marks_management_zone,
Txt_course,Crs.ShortName);
break;
case Brw_FILE_BRW_ADMIN_MARKS_GRP:
- GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.GrpCod;
+ GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetDataOfGroupByCod (&GrpDat);
+ Crs.CrsCod = GrpDat.CrsCod;
+ Crs_GetDataOfCourseByCod (&Crs);
fprintf (Gbl.F.Out,"%s, %s %s, %s %s %s",
Txt_marks_management_zone,
Txt_course,Crs.ShortName,
@@ -5778,7 +5812,7 @@ static bool Brw_GetMyClipboard (void)
unsigned UnsignedNum;
/***** Get my current clipboard from database *****/
- sprintf (Query,"SELECT FileBrowser,InsCod,CtrCod,DegCod,CrsCod,GrpCod,WorksUsrCod,FileType,Path"
+ sprintf (Query,"SELECT FileBrowser,Cod,WorksUsrCod,FileType,Path"
" FROM clipboard WHERE UsrCod='%ld'",
Gbl.Usrs.Me.UsrDat.UsrCod);
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get source of copy from clipboard");
@@ -5788,11 +5822,7 @@ static bool Brw_GetMyClipboard (void)
{
/***** Clear clipboard data *****/
Gbl.FileBrowser.Clipboard.FileBrowser = Brw_FILE_BRW_UNKNOWN;
- Gbl.FileBrowser.Clipboard.InsCod = -1L;
- Gbl.FileBrowser.Clipboard.CtrCod = -1L;
- Gbl.FileBrowser.Clipboard.DegCod = -1L;
- Gbl.FileBrowser.Clipboard.CrsCod = -1L;
- Gbl.FileBrowser.Clipboard.GrpCod = -1L;
+ Gbl.FileBrowser.Clipboard.Cod = -1L;
Gbl.FileBrowser.Clipboard.WorksUsrCod = -1L;
Gbl.FileBrowser.Clipboard.FileType = Brw_IS_UNKNOWN;
Gbl.FileBrowser.Clipboard.Path[0] = '\0';
@@ -5808,33 +5838,20 @@ static bool Brw_GetMyClipboard (void)
{
Gbl.FileBrowser.Clipboard.FileBrowser = (Brw_FileBrowser_t) UnsignedNum;
- /* Get institution code (row[1]) */
- Gbl.FileBrowser.Clipboard.InsCod = Str_ConvertStrCodToLongCod (row[1]);
+ /* Get institution/centre/degree/course/group code (row[1]) */
+ Gbl.FileBrowser.Clipboard.Cod = Str_ConvertStrCodToLongCod (row[1]);
- /* Get centre code (row[2]) */
- Gbl.FileBrowser.Clipboard.CtrCod = Str_ConvertStrCodToLongCod (row[2]);
+ /* Get works user's code (row[2]) */
+ Gbl.FileBrowser.Clipboard.WorksUsrCod = Str_ConvertStrCodToLongCod (row[2]);
- /* Get degree code (row[3]) */
- Gbl.FileBrowser.Clipboard.DegCod = Str_ConvertStrCodToLongCod (row[3]);
-
- /* Get course code (row[4]) */
- Gbl.FileBrowser.Clipboard.CrsCod = Str_ConvertStrCodToLongCod (row[4]);
-
- /* Get group code (row[5]) */
- if (sscanf (row[5],"%ld",&Gbl.FileBrowser.Clipboard.GrpCod) != 1)
- Gbl.FileBrowser.Clipboard.GrpCod = -1L;
-
- /* Get works user's code (row[6]) */
- Gbl.FileBrowser.Clipboard.WorksUsrCod = Str_ConvertStrCodToLongCod (row[6]);
-
- /* Get file type (row[7]) */
+ /* Get file type (row[3]) */
Gbl.FileBrowser.Clipboard.FileType = Brw_IS_UNKNOWN; // default
- if (sscanf (row[7],"%u",&UnsignedNum) == 1)
+ if (sscanf (row[3],"%u",&UnsignedNum) == 1)
if (UnsignedNum < Brw_NUM_FILE_TYPES)
Gbl.FileBrowser.Clipboard.FileType = (Brw_FileType_t) UnsignedNum;
- /* Get file path (row[8]) */
- strcpy (Gbl.FileBrowser.Clipboard.Path,row[8]);
+ /* Get file path (row[4]) */
+ strcpy (Gbl.FileBrowser.Clipboard.Path,row[4]);
Str_SplitFullPathIntoPathAndFileName (Gbl.FileBrowser.Clipboard.Path,
PathUntilFileName,
Gbl.FileBrowser.Clipboard.FileName);
@@ -5842,11 +5859,7 @@ static bool Brw_GetMyClipboard (void)
else
{
Gbl.FileBrowser.Clipboard.FileBrowser = Brw_FILE_BRW_UNKNOWN;
- Gbl.FileBrowser.Clipboard.InsCod = -1L;
- Gbl.FileBrowser.Clipboard.CtrCod = -1L;
- Gbl.FileBrowser.Clipboard.DegCod = -1L;
- Gbl.FileBrowser.Clipboard.CrsCod = -1L;
- Gbl.FileBrowser.Clipboard.GrpCod = -1L;
+ Gbl.FileBrowser.Clipboard.Cod = -1L;
Gbl.FileBrowser.Clipboard.WorksUsrCod = -1L;
Gbl.FileBrowser.Clipboard.FileType = Brw_IS_UNKNOWN;
Gbl.FileBrowser.Clipboard.Path[0] = '\0';
@@ -5865,119 +5878,51 @@ static bool Brw_GetMyClipboard (void)
/*****************************************************************************/
/********* Check if the clipboard is in the current file browser *************/
/*****************************************************************************/
-// Asigna false o true a Gbl.FileBrowser.Clipboard.IsThisTree
static bool Brw_CheckIfClipboardIsInThisTree (void)
{
- bool IsThisTree = false;
-
- if (Gbl.FileBrowser.Clipboard.FileBrowser == Gbl.FileBrowser.Type)
+ if (Gbl.FileBrowser.Clipboard.FileBrowser == Brw_FileBrowserForDB_clipboard[Gbl.FileBrowser.Type])
{
- switch (Gbl.FileBrowser.Type)
+ switch (Gbl.FileBrowser.Clipboard.FileBrowser)
{
case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
- if (Gbl.FileBrowser.Clipboard.InsCod == Gbl.CurrentIns.Ins.InsCod)
- IsThisTree = true; // I am in the institution of the clipboard
+ if (Gbl.FileBrowser.Clipboard.Cod == Gbl.CurrentIns.Ins.InsCod)
+ return true; // I am in the institution of the clipboard
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
- if (Gbl.FileBrowser.Clipboard.CtrCod == Gbl.CurrentCtr.Ctr.CtrCod)
- IsThisTree = true; // I am in the centre of the clipboard
+ if (Gbl.FileBrowser.Clipboard.Cod == Gbl.CurrentCtr.Ctr.CtrCod)
+ return true; // I am in the centre of the clipboard
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
- if (Gbl.FileBrowser.Clipboard.DegCod == Gbl.CurrentDeg.Deg.DegCod)
- IsThisTree = true; // I am in the degree of the clipboard
+ if (Gbl.FileBrowser.Clipboard.Cod == Gbl.CurrentDeg.Deg.DegCod)
+ return true; // I am in the degree of the clipboard
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
- case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
case Brw_FILE_BRW_COMMON_CRS:
- case Brw_FILE_BRW_COMMON_GRP:
case Brw_FILE_BRW_ADMIN_MARKS_CRS:
- case Brw_FILE_BRW_ADMIN_MARKS_GRP:
case Brw_FILE_BRW_ASSIGNMENTS_USR:
case Brw_FILE_BRW_WORKS_USR:
- case Brw_FILE_BRW_ASSIGNMENTS_CRS:
- case Brw_FILE_BRW_WORKS_CRS:
- if (Gbl.FileBrowser.Clipboard.CrsCod == Gbl.CurrentCrs.Crs.CrsCod)
- IsThisTree = true; // I am in the course of the clipboard
+ if (Gbl.FileBrowser.Clipboard.Cod == Gbl.CurrentCrs.Crs.CrsCod)
+ return true; // I am in the course of the clipboard
break;
- case Brw_FILE_BRW_BRIEFCASE_USR:
- IsThisTree = true;
+ case Brw_FILE_BRW_ASSIGNMENTS_CRS:
+ case Brw_FILE_BRW_WORKS_CRS:
+ if (Gbl.FileBrowser.Clipboard.Cod == Gbl.CurrentCrs.Crs.CrsCod &&
+ Gbl.FileBrowser.Clipboard.WorksUsrCod == Gbl.Usrs.Other.UsrDat.UsrCod)
+ return true; // I am in the course of the clipboard
+ // I am in the student's works of the clipboard
+ break;
+ case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
+ case Brw_FILE_BRW_COMMON_GRP:
+ case Brw_FILE_BRW_ADMIN_MARKS_GRP:
+ if (Gbl.FileBrowser.Clipboard.Cod == Gbl.CurrentCrs.Grps.GrpCod)
+ return true; // I am in the group of the clipboard
break;
- default:
- break;
- }
- switch (Gbl.FileBrowser.Type)
- {
- case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
- case Brw_FILE_BRW_COMMON_GRP:
- case Brw_FILE_BRW_ADMIN_MARKS_GRP:
- if (Gbl.FileBrowser.Clipboard.GrpCod != Gbl.CurrentCrs.Grps.GrpCod)
- IsThisTree = false; // We are not in the group zone of the clipboard
- break;
- case Brw_FILE_BRW_ASSIGNMENTS_CRS:
- case Brw_FILE_BRW_WORKS_CRS:
- if (Gbl.FileBrowser.Clipboard.WorksUsrCod != Gbl.Usrs.Other.UsrDat.UsrCod)
- IsThisTree = false; // We are not in the student's works of the clipboard
- break;
- default:
- break;
- }
- }
- 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_SEE_DOCUMENTS_INS:
- case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
- Codes->InsCod = Gbl.CurrentIns.Ins.InsCod;
- break;
- case Brw_FILE_BRW_SEE_DOCUMENTS_CTR:
- case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
- Codes->CtrCod = Gbl.CurrentCtr.Ctr.CtrCod;
- break;
- case Brw_FILE_BRW_SEE_DOCUMENTS_DEG:
- 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_SEE_DOCUMENTS_CRS:
- case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
- case Brw_FILE_BRW_COMMON_CRS:
- case Brw_FILE_BRW_ASSIGNMENTS_USR:
- case Brw_FILE_BRW_WORKS_USR:
- case Brw_FILE_BRW_SEE_MARKS_CRS:
- case Brw_FILE_BRW_ADMIN_MARKS_CRS:
- Codes->CrsCod = Gbl.CurrentCrs.Crs.CrsCod;
- break;
- case Brw_FILE_BRW_SEE_DOCUMENTS_GRP:
- case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
- case Brw_FILE_BRW_COMMON_GRP:
- case Brw_FILE_BRW_SEE_MARKS_GRP:
- case Brw_FILE_BRW_ADMIN_MARKS_GRP:
- Codes->CrsCod = Gbl.CurrentCrs.Crs.CrsCod;
- Codes->GrpCod = Gbl.CurrentCrs.Grps.GrpCod;
- break;
- default:
- break;
+ default:
+ break;
+ }
}
+ return false;
}
/*****************************************************************************/
@@ -5986,27 +5931,20 @@ static void Brw_SetCodes (struct Brw_Codes *Codes)
static void Brw_AddPathToClipboards (Brw_FileType_t FileType,const char *Path)
{
+ long Cod = Brw_GetCodForClipboard ();
+ long WorksUsrCod = Brw_GetWorksUsrCodForClipboard ();
char Query[512+PATH_MAX];
- struct Brw_Codes Codes;
/***** Add path to clipboards *****/
- Brw_SetCodes (&Codes);
sprintf (Query,"INSERT INTO clipboard (UsrCod,FileBrowser,"
- "InsCod,CtrCod,DegCod,CrsCod,GrpCod,WorksUsrCod,"
+ "Cod,WorksUsrCod,"
"FileType,Path)"
" VALUES ('%ld','%u',"
- "'%ld','%ld','%ld','%ld','%ld','%ld',"
+ "'%ld','%ld',"
"'%u','%s')",
- Gbl.Usrs.Me.UsrDat.UsrCod,
- (unsigned) Gbl.FileBrowser.Type,
- Codes.InsCod,
- Codes.CtrCod,
- Codes.DegCod,
- Codes.CrsCod,
- Codes.GrpCod,
- Codes.WorksUsrCod,
- (unsigned) FileType,
- Path);
+ Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) Gbl.FileBrowser.Type,
+ Cod,WorksUsrCod,
+ (unsigned) FileType,Path);
DB_QueryINSERT (Query,"can not add source of copy to clipboard");
}
@@ -6016,29 +5954,68 @@ static void Brw_AddPathToClipboards (Brw_FileType_t FileType,const char *Path)
static void Brw_UpdatePathInClipboard (Brw_FileType_t FileType,const char *Path)
{
+ long Cod = Brw_GetCodForClipboard ();
+ long WorksUsrCod = Brw_GetWorksUsrCodForClipboard ();
char Query[512+PATH_MAX];
- struct Brw_Codes Codes;
/***** Update path in my clipboard *****/
- 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'"
+ "Cod='%ld',WorksUsrCod='%ld',"
+ "FileType='%u',Path='%s'"
" WHERE UsrCod='%ld'",
(unsigned) Gbl.FileBrowser.Type,
- Codes.InsCod,
- Codes.CtrCod,
- Codes.DegCod,
- Codes.CrsCod,
- Codes.GrpCod,
- Codes.WorksUsrCod,
- (unsigned) FileType,
- Path,
+ Cod,WorksUsrCod,(unsigned) FileType,Path,
Gbl.Usrs.Me.UsrDat.UsrCod);
DB_QueryUPDATE (Query,"can not update source of copy in clipboard");
}
+/*****************************************************************************/
+/**** Get code of institution, degree, course, group for expanded folders ****/
+/*****************************************************************************/
+
+static long Brw_GetCodForClipboard (void)
+ {
+ switch (Brw_FileBrowserForDB_clipboard[Gbl.FileBrowser.Type])
+ {
+ case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
+ return Gbl.CurrentIns.Ins.InsCod;
+ case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
+ return Gbl.CurrentCtr.Ctr.CtrCod;
+ case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
+ return Gbl.CurrentDeg.Deg.DegCod;
+ case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
+ case Brw_FILE_BRW_COMMON_CRS:
+ case Brw_FILE_BRW_ASSIGNMENTS_USR:
+ case Brw_FILE_BRW_ASSIGNMENTS_CRS:
+ case Brw_FILE_BRW_WORKS_USR:
+ case Brw_FILE_BRW_WORKS_CRS:
+ case Brw_FILE_BRW_ADMIN_MARKS_CRS:
+ return Gbl.CurrentCrs.Crs.CrsCod;
+ case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
+ case Brw_FILE_BRW_COMMON_GRP:
+ case Brw_FILE_BRW_ADMIN_MARKS_GRP:
+ return Gbl.CurrentCrs.Grps.GrpCod;
+ default:
+ return -1L;
+ }
+ }
+
+/*****************************************************************************/
+/******** Get code of user in assignment / works for expanded folders ********/
+/*****************************************************************************/
+
+static long Brw_GetWorksUsrCodForClipboard (void)
+ {
+ switch (Brw_FileBrowserForDB_clipboard[Gbl.FileBrowser.Type])
+ {
+ case Brw_FILE_BRW_ASSIGNMENTS_CRS:
+ case Brw_FILE_BRW_WORKS_CRS:
+ return Gbl.Usrs.Other.UsrDat.UsrCod;
+ default:
+ return -1L;
+ }
+ }
+
/*****************************************************************************/
/***** Insert folders until specified folder to table of expanded folders ****/
/***** and update click time of the other folders in the expl. tree ****/
@@ -6099,24 +6076,18 @@ static void Brw_RemThisFolderAndUpdOtherFoldersFromExpandedFolders (const char *
static void Brw_InsertFolderInExpandedFolders (const char *Path)
{
+ long Cod = Brw_GetCodForExpandedFolders ();
+ long WorksUsrCod = Brw_GetWorksUsrCodForExpandedFolders ();
char Query[512+PATH_MAX];
- struct Brw_Codes Codes;
-
- /***** Add path to expanded folders *****/
- Brw_SetCodes (&Codes);
+ /***** Update path time in table of expanded folders *****/
// Path must be stored with final '/'
- sprintf (Query,"INSERT INTO expanded_folders (UsrCod,FileBrowser,"
- "InsCod,CtrCod,DegCod,CrsCod,GrpCod,WorksUsrCod,Path,ClickTime)"
- " VALUES ('%ld','%u','%ld','%ld','%ld','%ld','%ld','%ld','%s/',NOW())",
+ sprintf (Query,"INSERT INTO expanded_folders"
+ " (UsrCod,FileBrowser,Cod,WorksUsrCod,Path,ClickTime)"
+ " VALUES ('%ld','%u','%ld','%ld','%s/',NOW())",
Gbl.Usrs.Me.UsrDat.UsrCod,
- (unsigned) Brw_FileBrowserForExpandedFolders[Gbl.FileBrowser.Type],
- Codes.InsCod,
- Codes.CtrCod,
- Codes.DegCod,
- Codes.CrsCod,
- Codes.GrpCod,
- Codes.WorksUsrCod,
+ (unsigned) Brw_FileBrowserForDB_expanded_folders[Gbl.FileBrowser.Type],
+ Cod,WorksUsrCod,
Path);
DB_QueryINSERT (Query,"can not expand the content of a folder");
}
@@ -6127,78 +6098,35 @@ static void Brw_InsertFolderInExpandedFolders (const char *Path)
static void Brw_UpdateClickTimeOfThisFileBrowserInExpandedFolders (void)
{
- char Query[512+PATH_MAX];
- Brw_FileBrowser_t FileBrowserForExpandedFolders = Brw_FileBrowserForExpandedFolders[Gbl.FileBrowser.Type];
+ long Cod = Brw_GetCodForExpandedFolders ();
+ long WorksUsrCod = Brw_GetWorksUsrCodForExpandedFolders ();
+ char Query[512];
+ Brw_FileBrowser_t FileBrowserForExpandedFolders = Brw_FileBrowserForDB_expanded_folders[Gbl.FileBrowser.Type];
- /***** Update path in table of expanded folders *****/
- switch (FileBrowserForExpandedFolders)
+ /***** Update click time in table of expanded folders *****/
+ if (Cod > 0)
{
- 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:
- case Brw_FILE_BRW_ASSIGNMENTS_USR:
- case Brw_FILE_BRW_WORKS_USR:
- sprintf (Query,"UPDATE expanded_folders SET ClickTime=NOW()"
- " WHERE UsrCod='%ld' AND FileBrowser='%u'"
- " AND CrsCod='%ld'",
- Gbl.Usrs.Me.UsrDat.UsrCod,
- (unsigned) FileBrowserForExpandedFolders,
- Gbl.CurrentCrs.Crs.CrsCod);
- break;
- case Brw_FILE_BRW_SEE_DOCUMENTS_GRP:
- case Brw_FILE_BRW_COMMON_GRP:
- case Brw_FILE_BRW_SEE_MARKS_GRP:
- sprintf (Query,"UPDATE expanded_folders SET ClickTime=NOW()"
- " WHERE UsrCod='%ld' AND FileBrowser='%u'"
- " AND CrsCod='%ld' AND GrpCod='%ld'",
- Gbl.Usrs.Me.UsrDat.UsrCod,
- (unsigned) FileBrowserForExpandedFolders,
- Gbl.CurrentCrs.Crs.CrsCod,
- Gbl.CurrentCrs.Grps.GrpCod);
- break;
- case Brw_FILE_BRW_ASSIGNMENTS_CRS:
- case Brw_FILE_BRW_WORKS_CRS:
- sprintf (Query,"UPDATE expanded_folders SET ClickTime=NOW()"
- " WHERE UsrCod='%ld' AND FileBrowser='%u'"
- " AND CrsCod='%ld' AND WorksUsrCod='%ld'",
- Gbl.Usrs.Me.UsrDat.UsrCod,
- (unsigned) FileBrowserForExpandedFolders,
- Gbl.CurrentCrs.Crs.CrsCod,
- Gbl.Usrs.Other.UsrDat.UsrCod);
- break;
- case Brw_FILE_BRW_BRIEFCASE_USR:
- sprintf (Query,"UPDATE expanded_folders SET ClickTime=NOW()"
- " WHERE UsrCod='%ld' AND FileBrowser='%u'",
- Gbl.Usrs.Me.UsrDat.UsrCod,
- (unsigned) FileBrowserForExpandedFolders);
- break;
- default:
- break;
+ if (WorksUsrCod > 0)
+ sprintf (Query,"UPDATE expanded_folders SET ClickTime=NOW()"
+ " WHERE UsrCod='%ld' AND FileBrowser='%u'"
+ " AND Cod='%ld' AND WorksUsrCod='%ld'",
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ (unsigned) FileBrowserForExpandedFolders,
+ Cod,
+ WorksUsrCod);
+ else
+ sprintf (Query,"UPDATE expanded_folders SET ClickTime=NOW()"
+ " WHERE UsrCod='%ld' AND FileBrowser='%u'"
+ " AND Cod='%ld'",
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ (unsigned) FileBrowserForExpandedFolders,
+ Cod);
}
+ else // Briefcase
+ sprintf (Query,"UPDATE expanded_folders SET ClickTime=NOW()"
+ " WHERE UsrCod='%ld' AND FileBrowser='%u'",
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ (unsigned) FileBrowserForExpandedFolders);
DB_QueryUPDATE (Query,"can not update expanded folder");
}
@@ -6208,76 +6136,315 @@ static void Brw_UpdateClickTimeOfThisFileBrowserInExpandedFolders (void)
static void Brw_RemoveFolderFromExpandedFolders (const char *Path)
{
+ long Cod = Brw_GetCodForExpandedFolders ();
+ long WorksUsrCod = Brw_GetWorksUsrCodForExpandedFolders ();
char Query[512+PATH_MAX];
- Brw_FileBrowser_t FileBrowserForExpandedFolders = Brw_FileBrowserForExpandedFolders[Gbl.FileBrowser.Type];
+ Brw_FileBrowser_t FileBrowserForExpandedFolders = Brw_FileBrowserForDB_expanded_folders[Gbl.FileBrowser.Type];
+
+ /***** Remove expanded folders associated to a file browser *****/
+ if (Cod > 0)
+ {
+ if (WorksUsrCod > 0)
+ sprintf (Query,"DELETE FROM expanded_folders"
+ " WHERE UsrCod='%ld' AND FileBrowser='%u'"
+ " AND Cod='%ld' AND WorksUsrCod='%ld' AND Path='%s/'",
+ Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) FileBrowserForExpandedFolders,
+ Cod,WorksUsrCod,Path);
+ else
+ sprintf (Query,"DELETE FROM expanded_folders"
+ " WHERE UsrCod='%ld' AND FileBrowser='%u'"
+ " AND Cod='%ld' AND Path='%s/'",
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ (unsigned) FileBrowserForExpandedFolders,
+ Cod,Path);
+ }
+ else // Briefcase
+ sprintf (Query,"DELETE FROM expanded_folders"
+ " WHERE UsrCod='%ld' AND FileBrowser='%u'"
+ " AND Path='%s/'",
+ Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) FileBrowserForExpandedFolders,
+ Path);
+ DB_QueryDELETE (Query,"can not contract the content of a folder");
+ }
+
+/*****************************************************************************/
+/***** Remove expanded folders with paths from a course or from a user *******/
+/*****************************************************************************/
+
+static void Brw_RemoveAffectedExpandedFolders (const char *Path)
+ {
+ long Cod = Brw_GetCodForExpandedFolders ();
+ long WorksUsrCod = Brw_GetWorksUsrCodForExpandedFolders ();
+ char Query[512+PATH_MAX];
+ Brw_FileBrowser_t FileBrowserForExpandedFolders = Brw_FileBrowserForDB_expanded_folders[Gbl.FileBrowser.Type];
/***** Remove expanded folders associated to a file browser from a course or from a user *****/
- switch (FileBrowserForExpandedFolders)
+ if (Cod > 0)
+ {
+ if (WorksUsrCod > 0)
+ sprintf (Query,"DELETE FROM expanded_folders"
+ " WHERE UsrCod='%ld' AND FileBrowser='%u'"
+ " AND Cod='%ld' AND WorksUsrCod='%ld' AND Path LIKE '%s/%%'",
+ Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) FileBrowserForExpandedFolders,
+ Cod,WorksUsrCod,Path);
+ else
+ sprintf (Query,"DELETE FROM expanded_folders"
+ " WHERE UsrCod='%ld' AND FileBrowser='%u'"
+ " AND Cod='%ld' AND Path LIKE '%s/%%'",
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ (unsigned) FileBrowserForExpandedFolders,
+ Cod,Path);
+ }
+ else // Briefcase
+ sprintf (Query,"DELETE FROM expanded_folders"
+ " WHERE UsrCod='%ld' AND FileBrowser='%u'"
+ " AND Path LIKE '%s/%%'",
+ Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) FileBrowserForExpandedFolders,
+ Path);
+ DB_QueryDELETE (Query,"can not remove expanded folders");
+ }
+
+/*****************************************************************************/
+/***** Remove expanded folders with paths from a course or from a user *******/
+/*****************************************************************************/
+
+static void Brw_RenameAffectedExpandedFolders (Brw_FileBrowser_t FileBrowser,long MyUsrCod,long WorksUsrCod,const char *OldPath,const char *NewPath)
+ {
+ long Cod = Brw_GetCodForExpandedFolders ();
+ char Query[512+PATH_MAX*2];
+ Brw_FileBrowser_t FileBrowserForExpandedFolders = Brw_FileBrowserForDB_expanded_folders[FileBrowser];
+ unsigned StartFinalSubpathNotChanged = strlen (OldPath) + 2;
+
+ /***** Update expanded folders associated to a file browser from a course or from a user *****/
+ if (Cod > 0)
+ {
+ if (MyUsrCod > 0)
+ {
+ if (WorksUsrCod > 0)
+ sprintf (Query,"UPDATE expanded_folders SET Path=CONCAT('%s','/',SUBSTRING(Path,%u))"
+ " WHERE UsrCod='%ld' AND FileBrowser='%u'"
+ " AND Cod='%ld' AND WorksUsrCod='%ld'"
+ " AND Path LIKE '%s/%%'",
+ NewPath,StartFinalSubpathNotChanged,
+ MyUsrCod,(unsigned) FileBrowserForExpandedFolders,
+ Cod,WorksUsrCod,
+ OldPath);
+ else
+ sprintf (Query,"UPDATE expanded_folders SET Path=CONCAT('%s','/',SUBSTRING(Path,%u))"
+ " WHERE UsrCod='%ld' AND FileBrowser='%u'"
+ " AND Cod='%ld'"
+ " AND Path LIKE '%s/%%'",
+ NewPath,StartFinalSubpathNotChanged,
+ MyUsrCod,(unsigned) FileBrowserForExpandedFolders,
+ Cod,
+ OldPath);
+ }
+ else // MyUsrCod <= 0 means expanded folders for any user
+ {
+ if (WorksUsrCod > 0)
+ sprintf (Query,"UPDATE expanded_folders SET Path=CONCAT('%s','/',SUBSTRING(Path,%u))"
+ " WHERE FileBrowser='%u' AND Cod='%ld'"
+ " AND WorksUsrCod='%ld'"
+ " AND Path LIKE '%s/%%'",
+ NewPath,StartFinalSubpathNotChanged,
+ (unsigned) FileBrowserForExpandedFolders,Cod,
+ WorksUsrCod,
+ OldPath);
+ else
+ sprintf (Query,"UPDATE expanded_folders SET Path=CONCAT('%s','/',SUBSTRING(Path,%u))"
+ " WHERE FileBrowser='%u' AND Cod='%ld'"
+ " AND Path LIKE '%s/%%'",
+ NewPath,StartFinalSubpathNotChanged,
+ (unsigned) FileBrowserForExpandedFolders,Cod,
+ OldPath);
+ }
+ }
+ else // Briefcase
+ sprintf (Query,"UPDATE expanded_folders SET Path=CONCAT('%s','/',SUBSTRING(Path,%u))"
+ " WHERE UsrCod='%ld' AND FileBrowser='%u'"
+ " AND Path LIKE '%s/%%'",
+ NewPath,StartFinalSubpathNotChanged,
+ MyUsrCod,
+ (unsigned) FileBrowserForExpandedFolders,
+ OldPath);
+ DB_QueryUPDATE (Query,"can not update expanded folders");
+ }
+
+/*****************************************************************************/
+/************* Check if a folder from a file browser is expanded *************/
+/*****************************************************************************/
+
+static bool Brw_GetIfExpandedTree (const char *Path)
+ {
+ long Cod = Brw_GetCodForExpandedFolders ();
+ long WorksUsrCod = Brw_GetWorksUsrCodForExpandedFolders ();
+ char Query[512+PATH_MAX];
+ Brw_FileBrowser_t FileBrowserForExpandedFolders = Brw_FileBrowserForDB_expanded_folders[Gbl.FileBrowser.Type];
+
+ /***** Get if a folder is expanded from database *****/
+ if (Cod > 0)
+ {
+ if (WorksUsrCod > 0)
+ sprintf (Query,"SELECT COUNT(*) FROM expanded_folders"
+ " WHERE UsrCod='%ld' AND FileBrowser='%u'"
+ " AND Cod='%ld' AND WorksUsrCod='%ld'"
+ " AND Path='%s/'",
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ (unsigned) FileBrowserForExpandedFolders,
+ Cod,WorksUsrCod,
+ Path);
+ else
+ sprintf (Query,"SELECT COUNT(*) FROM expanded_folders"
+ " WHERE UsrCod='%ld' AND FileBrowser='%u'"
+ " AND Cod='%ld'"
+ " AND Path='%s/'",
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ (unsigned) FileBrowserForExpandedFolders,
+ Cod,
+ Path);
+ }
+ else // Briefcase
+ sprintf (Query,"SELECT COUNT(*) FROM expanded_folders"
+ " WHERE UsrCod='%ld' AND FileBrowser='%u'"
+ " AND Path='%s/'",
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ (unsigned) FileBrowserForExpandedFolders,
+ Path);
+ return (DB_QueryCOUNT (Query,"can not get check if a folder is expanded") != 0);
+ }
+
+/*****************************************************************************/
+/**** Get code of institution, degree, course, group for expanded folders ****/
+/*****************************************************************************/
+
+static long Brw_GetCodForExpandedFolders (void)
+ {
+ switch (Brw_FileBrowserForDB_expanded_folders[Gbl.FileBrowser.Type])
{
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;
+ return Gbl.CurrentIns.Ins.InsCod;
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;
+ return Gbl.CurrentCtr.Ctr.CtrCod;
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;
+ return Gbl.CurrentDeg.Deg.DegCod;
case Brw_FILE_BRW_SEE_DOCUMENTS_CRS:
case Brw_FILE_BRW_COMMON_CRS:
- case Brw_FILE_BRW_SEE_MARKS_CRS:
case Brw_FILE_BRW_ASSIGNMENTS_USR:
+ case Brw_FILE_BRW_ASSIGNMENTS_CRS:
case Brw_FILE_BRW_WORKS_USR:
- sprintf (Query,"DELETE FROM expanded_folders"
- " WHERE UsrCod='%ld' AND FileBrowser='%u'"
- " AND CrsCod='%ld' AND Path='%s/'",
- Gbl.Usrs.Me.UsrDat.UsrCod,
- (unsigned) FileBrowserForExpandedFolders,
- Gbl.CurrentCrs.Crs.CrsCod,Path);
- break;
+ case Brw_FILE_BRW_WORKS_CRS:
+ case Brw_FILE_BRW_SEE_MARKS_CRS:
+ return Gbl.CurrentCrs.Crs.CrsCod;
case Brw_FILE_BRW_SEE_DOCUMENTS_GRP:
case Brw_FILE_BRW_COMMON_GRP:
case Brw_FILE_BRW_SEE_MARKS_GRP:
- sprintf (Query,"DELETE FROM expanded_folders"
- " WHERE UsrCod='%ld' AND FileBrowser='%u'"
- " AND CrsCod='%ld' AND GrpCod='%ld' AND Path='%s/'",
- Gbl.Usrs.Me.UsrDat.UsrCod,
- (unsigned) FileBrowserForExpandedFolders,
- Gbl.CurrentCrs.Crs.CrsCod,Gbl.CurrentCrs.Grps.GrpCod,Path);
- break;
+ return Gbl.CurrentCrs.Grps.GrpCod;
+ default:
+ return -1L;
+ }
+ }
+
+/*****************************************************************************/
+/******** Get code of user in assignment / works for expanded folders ********/
+/*****************************************************************************/
+
+static long Brw_GetWorksUsrCodForExpandedFolders (void)
+ {
+ switch (Brw_FileBrowserForDB_expanded_folders[Gbl.FileBrowser.Type])
+ {
case Brw_FILE_BRW_ASSIGNMENTS_CRS:
case Brw_FILE_BRW_WORKS_CRS:
- sprintf (Query,"DELETE FROM expanded_folders"
- " WHERE UsrCod='%ld' AND FileBrowser='%u'"
- " AND CrsCod='%ld' AND WorksUsrCod='%ld' AND Path='%s/'",
- Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) FileBrowserForExpandedFolders,
- Gbl.CurrentCrs.Crs.CrsCod,Gbl.Usrs.Other.UsrDat.UsrCod,Path);
- break;
- case Brw_FILE_BRW_BRIEFCASE_USR:
- sprintf (Query,"DELETE FROM expanded_folders"
- " WHERE UsrCod='%ld' AND FileBrowser='%u' AND Path='%s/'",
- Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) FileBrowserForExpandedFolders,
- Path);
- break;
+ return Gbl.Usrs.Other.UsrDat.UsrCod;
default:
- break;
+ return -1L;
}
- DB_QueryDELETE (Query,"can not contract the content of a folder");
+ }
+
+/*****************************************************************************/
+/******************* 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) **************/
+/*****************************************************************************/
+
+void Brw_RemoveExpiredExpandedFolders (void)
+ {
+ char Query[512];
+
+ /***** Remove all expired clipboards *****/
+ sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders"
+ " WHERE UNIX_TIMESTAMP() > UNIX_TIMESTAMP(ClickTime)+%ld",
+ Cfg_TIME_TO_DELETE_BROWSER_EXPANDED_FOLDERS);
+ DB_QueryDELETE (Query,"can not remove old expanded folders");
}
/*****************************************************************************/
@@ -6302,7 +6469,13 @@ void Brw_RemoveGrpClipboards (long GrpCod)
char Query[512];
/***** Remove clipboard of specified user *****/
- sprintf (Query,"DELETE FROM clipboard WHERE GrpCod='%ld'",GrpCod);
+ 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");
}
@@ -6315,39 +6488,22 @@ void Brw_RemoveUsrClipboardInCrs (long UsrCod,long CrsCod)
char Query[512];
/***** Remove clipboard of specified user *****/
- sprintf (Query,"DELETE FROM clipboard WHERE UsrCod='%ld' AND CrsCod='%ld'",
- UsrCod,CrsCod);
+ 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 all expanded folders of a user *******************/
-/*****************************************************************************/
-
-void Brw_RemoveUsrExpandedFolders (long UsrCod)
- {
- char Query[512];
-
- /***** Remove expanded folders of specified user *****/
- sprintf (Query,"DELETE FROM expanded_folders WHERE UsrCod='%ld'",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 *****/
- sprintf (Query,"DELETE FROM expanded_folders"
- " WHERE UsrCod='%ld' AND CrsCod='%ld'",
- UsrCod,CrsCod);
- DB_QueryDELETE (Query,"can not remove expanded folders for a user in a course");
- }
-
/*****************************************************************************/
/****************** Remove expired clipboards (from all users) ***************/
/*****************************************************************************/
@@ -6363,21 +6519,6 @@ static void Brw_RemoveExpiredClipboards (void)
DB_QueryDELETE (Query,"can not remove old paths from clipboard");
}
-/*****************************************************************************/
-/************* Remove expired expanded folders (from all users) **************/
-/*****************************************************************************/
-
-void Brw_RemoveExpiredExpandedFolders (void)
- {
- char Query[512];
-
- /***** Remove all expired clipboards *****/
- sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders"
- " WHERE UNIX_TIMESTAMP() > UNIX_TIMESTAMP(ClickTime)+%ld",
- Cfg_TIME_TO_DELETE_BROWSER_EXPANDED_FOLDERS);
- DB_QueryDELETE (Query,"can not remove old expanded folders");
- }
-
/*****************************************************************************/
/********* Remove clipboards with paths from a course or from a user *********/
/*****************************************************************************/
@@ -6392,43 +6533,43 @@ static void Brw_RemoveAffectedClipboards (Brw_FileBrowser_t FileBrowser,long MyU
{
case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
sprintf (Query,"DELETE FROM clipboard"
- " WHERE FileBrowser='%u' AND InsCod='%ld'",
+ " WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) FileBrowser,Gbl.CurrentIns.Ins.InsCod);
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
sprintf (Query,"DELETE FROM clipboard"
- " WHERE FileBrowser='%u' AND CtrCod='%ld'",
+ " WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) FileBrowser,Gbl.CurrentCtr.Ctr.CtrCod);
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
sprintf (Query,"DELETE FROM clipboard"
- " WHERE FileBrowser='%u' AND DegCod='%ld'",
+ " WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) FileBrowser,Gbl.CurrentDeg.Deg.DegCod);
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
case Brw_FILE_BRW_COMMON_CRS:
case Brw_FILE_BRW_ADMIN_MARKS_CRS:
sprintf (Query,"DELETE FROM clipboard"
- " WHERE FileBrowser='%u' AND CrsCod='%ld'",
+ " WHERE FileBrowser='%u' AND Cod='%ld'",
(unsigned) FileBrowser,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:
sprintf (Query,"DELETE FROM clipboard"
- " WHERE FileBrowser='%u' AND CrsCod='%ld' AND GrpCod='%ld'",
- (unsigned) FileBrowser,Gbl.CurrentCrs.Crs.CrsCod,Gbl.CurrentCrs.Grps.GrpCod);
+ " WHERE FileBrowser='%u' AND Cod='%ld'",
+ (unsigned) FileBrowser,Gbl.CurrentCrs.Grps.GrpCod);
break;
case Brw_FILE_BRW_ASSIGNMENTS_USR:
case Brw_FILE_BRW_WORKS_USR:
sprintf (Query,"DELETE FROM clipboard"
- " WHERE UsrCod='%ld' AND FileBrowser='%u' AND CrsCod='%ld'",
+ " WHERE UsrCod='%ld' AND FileBrowser='%u' AND Cod='%ld'",
MyUsrCod,(unsigned) FileBrowser,Gbl.CurrentCrs.Crs.CrsCod);
break;
case Brw_FILE_BRW_ASSIGNMENTS_CRS:
case Brw_FILE_BRW_WORKS_CRS:
sprintf (Query,"DELETE FROM clipboard"
- " WHERE FileBrowser='%u' AND CrsCod='%ld' AND WorksUsrCod='%ld'",
+ " WHERE FileBrowser='%u' AND Cod='%ld' AND WorksUsrCod='%ld'",
(unsigned) FileBrowser,Gbl.CurrentCrs.Crs.CrsCod,WorksUsrCod);
break;
case Brw_FILE_BRW_BRIEFCASE_USR:
@@ -6442,177 +6583,6 @@ static void Brw_RemoveAffectedClipboards (Brw_FileBrowser_t FileBrowser,long MyU
DB_QueryDELETE (Query,"can not remove source of copy");
}
-/*****************************************************************************/
-/***** Remove expanded folders with paths from a course or from a user *******/
-/*****************************************************************************/
-
-static void Brw_RemoveAffectedExpandedFolders (const char *Path)
- {
- char Query[512+PATH_MAX];
- Brw_FileBrowser_t FileBrowserForExpandedFolders = Brw_FileBrowserForExpandedFolders[Gbl.FileBrowser.Type];
-
- /***** 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:
- sprintf (Query,"DELETE FROM expanded_folders"
- " WHERE FileBrowser='%u'"
- " AND CrsCod='%ld' AND Path LIKE '%s/%%'",
- (unsigned) FileBrowserForExpandedFolders,
- Gbl.CurrentCrs.Crs.CrsCod,Path);
- break;
- case Brw_FILE_BRW_SEE_DOCUMENTS_GRP:
- case Brw_FILE_BRW_COMMON_GRP:
- case Brw_FILE_BRW_SEE_MARKS_GRP:
- sprintf (Query,"DELETE FROM expanded_folders"
- " WHERE FileBrowser='%u'"
- " AND CrsCod='%ld' AND GrpCod='%ld' AND Path LIKE '%s/%%'",
- (unsigned) FileBrowserForExpandedFolders,
- Gbl.CurrentCrs.Crs.CrsCod,Gbl.CurrentCrs.Grps.GrpCod,Path);
- break;
- case Brw_FILE_BRW_ASSIGNMENTS_USR:
- case Brw_FILE_BRW_WORKS_USR:
- sprintf (Query,"DELETE FROM expanded_folders"
- " WHERE UsrCod='%ld' AND FileBrowser='%u'"
- " AND CrsCod='%ld' AND Path LIKE '%s/%%'",
- Gbl.Usrs.Me.UsrDat.UsrCod,
- (unsigned) FileBrowserForExpandedFolders,
- Gbl.CurrentCrs.Crs.CrsCod,Path);
- break;
- case Brw_FILE_BRW_ASSIGNMENTS_CRS:
- case Brw_FILE_BRW_WORKS_CRS:
- sprintf (Query,"DELETE FROM expanded_folders"
- " WHERE FileBrowser='%u'"
- " AND CrsCod='%ld' AND WorksUsrCod='%ld' AND Path LIKE '%s/%%'",
- (unsigned) FileBrowserForExpandedFolders,
- Gbl.CurrentCrs.Crs.CrsCod,Gbl.Usrs.Other.UsrDat.UsrCod,Path);
- break;
- case Brw_FILE_BRW_BRIEFCASE_USR:
- sprintf (Query,"DELETE FROM expanded_folders"
- " WHERE UsrCod='%ld' AND FileBrowser='%u'"
- " AND Path LIKE '%s/%%'",
- Gbl.Usrs.Me.UsrDat.UsrCod,
- (unsigned) FileBrowserForExpandedFolders,
- Path);
- break;
- default:
- break;
- }
- DB_QueryDELETE (Query,"can not remove expanded folders");
- }
-
-/*****************************************************************************/
-/***** Remove expanded folders with paths from a course or from a user *******/
-/*****************************************************************************/
-
-static void Brw_RenameAffectedExpandedFolders (Brw_FileBrowser_t FileBrowser,long MyUsrCod,long WorksUsrCod,const char *OldPath,const char *NewPath)
- {
- char Query[512+PATH_MAX*2];
- Brw_FileBrowser_t FileBrowserForExpandedFolders = Brw_FileBrowserForExpandedFolders[FileBrowser];
- unsigned StartFinalSubpathNotChanged = strlen (OldPath) + 2;
-
- /***** 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:
- sprintf (Query,"UPDATE expanded_folders SET Path=CONCAT('%s','/',SUBSTRING(Path,%u))"
- " WHERE FileBrowser='%u'"
- " AND CrsCod='%ld' AND Path LIKE '%s/%%'",
- NewPath,StartFinalSubpathNotChanged,
- (unsigned) FileBrowserForExpandedFolders,
- Gbl.CurrentCrs.Crs.CrsCod,OldPath);
- break;
- case Brw_FILE_BRW_SEE_DOCUMENTS_GRP:
- case Brw_FILE_BRW_COMMON_GRP:
- case Brw_FILE_BRW_SEE_MARKS_GRP:
- sprintf (Query,"UPDATE expanded_folders SET Path=CONCAT('%s','/',SUBSTRING(Path,%u))"
- " WHERE FileBrowser='%u'"
- " AND CrsCod='%ld' AND GrpCod='%ld' AND Path LIKE '%s/%%'",
- NewPath,StartFinalSubpathNotChanged,
- (unsigned) FileBrowserForExpandedFolders,
- Gbl.CurrentCrs.Crs.CrsCod,Gbl.CurrentCrs.Grps.GrpCod,OldPath);
- break;
- case Brw_FILE_BRW_ASSIGNMENTS_USR:
- case Brw_FILE_BRW_WORKS_USR:
- sprintf (Query,"UPDATE expanded_folders SET Path=CONCAT('%s','/',SUBSTRING(Path,%u))"
- " WHERE UsrCod='%ld' AND FileBrowser='%u'"
- " AND CrsCod='%ld' AND Path LIKE '%s/%%'",
- NewPath,StartFinalSubpathNotChanged,
- MyUsrCod,(unsigned) FileBrowserForExpandedFolders,
- Gbl.CurrentCrs.Crs.CrsCod,OldPath);
- break;
- case Brw_FILE_BRW_ASSIGNMENTS_CRS:
- case Brw_FILE_BRW_WORKS_CRS:
- sprintf (Query,"UPDATE expanded_folders SET Path=CONCAT('%s','/',SUBSTRING(Path,%u))"
- " WHERE FileBrowser='%u'"
- " AND CrsCod='%ld' AND WorksUsrCod='%ld' AND Path LIKE '%s/%%'",
- NewPath,StartFinalSubpathNotChanged,
- (unsigned) FileBrowserForExpandedFolders,
- Gbl.CurrentCrs.Crs.CrsCod,WorksUsrCod,OldPath);
- break;
- case Brw_FILE_BRW_BRIEFCASE_USR:
- sprintf (Query,"UPDATE expanded_folders SET Path=CONCAT('%s','/',SUBSTRING(Path,%u))"
- " WHERE UsrCod='%ld' AND FileBrowser='%u'"
- " AND Path LIKE '%s/%%'",
- NewPath,StartFinalSubpathNotChanged,MyUsrCod,
- (unsigned) FileBrowserForExpandedFolders,
- OldPath);
- break;
- default:
- break;
- }
- DB_QueryUPDATE (Query,"can not remove expanded folders");
- }
-
/*****************************************************************************/
/**** Paste the arch/carp indicado in the portapapelesde in file browser *****/
/*****************************************************************************/
@@ -6627,10 +6597,16 @@ void Brw_PasteIntoFileBrowser (void)
if (Brw_GetMyClipboard ())
{
- if (Gbl.FileBrowser.Clipboard.GrpCod > 0) // Clipboard in a group zone
+ switch (Gbl.FileBrowser.Clipboard.FileBrowser)
{
- GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.GrpCod;
- Brw_GetSelectedGroupData (&GrpDat,true);
+ case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
+ case Brw_FILE_BRW_COMMON_GRP:
+ case Brw_FILE_BRW_ADMIN_MARKS_GRP: // Clipboard in a group zone
+ GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
+ Brw_GetSelectedGroupData (&GrpDat,true);
+ break;
+ default:
+ break;
}
/***** Write the origin of the copy *****/
@@ -6682,7 +6658,7 @@ static void Brw_PasteClipboard (void)
struct Centre Ctr;
struct Degree Deg;
struct Course Crs;
- char PathAboveRootFolderOrg[PATH_MAX+1];
+ struct GroupData GrpDat;
char PathOrg[PATH_MAX+1];
unsigned NumFilesPasted = 0;
unsigned NumFoldsPasted = 0;
@@ -6698,90 +6674,87 @@ static void Brw_PasteClipboard (void)
switch (Gbl.FileBrowser.Clipboard.FileBrowser)
{
case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
- Ins.InsCod = Gbl.FileBrowser.Clipboard.InsCod;
+ Ins.InsCod = Gbl.FileBrowser.Clipboard.Cod;
if (Ins_GetDataOfInstitutionByCod (&Ins,false))
- sprintf (PathAboveRootFolderOrg,"%s/%s/%02u/%u",
+ sprintf (PathOrg,"%s/%s/%02u/%u/%s",
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_INS,
(unsigned) (Ins.InsCod % 100),
- (unsigned) Ins.InsCod);
+ (unsigned) Ins.InsCod,
+ Gbl.FileBrowser.Clipboard.Path);
else
Lay_ShowErrorAndExit ("The institution of copy source does not exist.");
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
- Ctr.CtrCod = Gbl.FileBrowser.Clipboard.CtrCod;
+ Ctr.CtrCod = Gbl.FileBrowser.Clipboard.Cod;
if (Ctr_GetDataOfCentreByCod (&Ctr))
- sprintf (PathAboveRootFolderOrg,"%s/%s/%02u/%u",
+ sprintf (PathOrg,"%s/%s/%02u/%u/%s",
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CTR,
(unsigned) (Ctr.CtrCod % 100),
- (unsigned) Ctr.CtrCod);
+ (unsigned) Ctr.CtrCod,
+ Gbl.FileBrowser.Clipboard.Path);
else
Lay_ShowErrorAndExit ("The centre of copy source does not exist.");
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
- Deg.DegCod = Gbl.FileBrowser.Clipboard.DegCod;
+ Deg.DegCod = Gbl.FileBrowser.Clipboard.Cod;
if (Deg_GetDataOfDegreeByCod (&Deg))
- sprintf (PathAboveRootFolderOrg,"%s/%s/%02u/%u",
+ sprintf (PathOrg,"%s/%s/%02u/%u/%s",
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_DEG,
(unsigned) (Deg.DegCod % 100),
- (unsigned) Deg.DegCod);
+ (unsigned) Deg.DegCod,
+ Gbl.FileBrowser.Clipboard.Path);
else
Lay_ShowErrorAndExit ("The degree of copy source does not exist.");
break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
- case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
case Brw_FILE_BRW_COMMON_CRS:
- case Brw_FILE_BRW_COMMON_GRP:
case Brw_FILE_BRW_ADMIN_MARKS_CRS:
- case Brw_FILE_BRW_ADMIN_MARKS_GRP:
- case Brw_FILE_BRW_ASSIGNMENTS_USR:
- case Brw_FILE_BRW_WORKS_USR:
- case Brw_FILE_BRW_ASSIGNMENTS_CRS:
- case Brw_FILE_BRW_WORKS_CRS:
- Crs.CrsCod = Gbl.FileBrowser.Clipboard.CrsCod;
+ Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
if (Crs_GetDataOfCourseByCod (&Crs))
- sprintf (PathAboveRootFolderOrg,"%s/%s/%ld",
- Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Crs.CrsCod);
+ sprintf (PathOrg,"%s/%s/%ld/%s",
+ Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Crs.CrsCod,
+ Gbl.FileBrowser.Clipboard.Path);
else
Lay_ShowErrorAndExit ("The course of copy source does not exist.");
break;
- default:
- break;
- }
- switch (Gbl.FileBrowser.Clipboard.FileBrowser)
- {
- case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
- case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
- case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
- case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
- case Brw_FILE_BRW_COMMON_CRS:
- case Brw_FILE_BRW_ADMIN_MARKS_CRS:
- sprintf (PathOrg,"%s/%s",
- PathAboveRootFolderOrg,
- Gbl.FileBrowser.Clipboard.Path);
- break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
case Brw_FILE_BRW_COMMON_GRP:
case Brw_FILE_BRW_ADMIN_MARKS_GRP:
- sprintf (PathOrg,"%s/grp/%ld/%s",
- PathAboveRootFolderOrg,
- Gbl.FileBrowser.Clipboard.GrpCod,
- Gbl.FileBrowser.Clipboard.Path);
+ GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
+ Grp_GetDataOfGroupByCod (&GrpDat);
+ Crs.CrsCod = GrpDat.CrsCod;
+ if (Crs_GetDataOfCourseByCod (&Crs))
+ sprintf (PathOrg,"%s/%s/%ld/grp/%ld/%s",
+ Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Crs.CrsCod,
+ Gbl.FileBrowser.Clipboard.Cod,
+ Gbl.FileBrowser.Clipboard.Path);
+ else
+ Lay_ShowErrorAndExit ("The course of copy source does not exist.");
break;
case Brw_FILE_BRW_ASSIGNMENTS_USR:
case Brw_FILE_BRW_WORKS_USR:
- sprintf (PathOrg,"%s/usr/%02u/%ld/%s",
- PathAboveRootFolderOrg,
- (unsigned) (Gbl.Usrs.Me.UsrDat.UsrCod % 100),
- Gbl.Usrs.Me.UsrDat.UsrCod,
- Gbl.FileBrowser.Clipboard.Path);
+ Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
+ if (Crs_GetDataOfCourseByCod (&Crs))
+ sprintf (PathOrg,"%s/%s/%ld/usr/%02u/%ld/%s",
+ Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Crs.CrsCod,
+ (unsigned) (Gbl.Usrs.Me.UsrDat.UsrCod % 100),
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ Gbl.FileBrowser.Clipboard.Path);
+ else
+ Lay_ShowErrorAndExit ("The course of copy source does not exist.");
break;
case Brw_FILE_BRW_ASSIGNMENTS_CRS:
case Brw_FILE_BRW_WORKS_CRS:
- sprintf (PathOrg,"%s/usr/%02u/%ld/%s",
- PathAboveRootFolderOrg,
- (unsigned) (Gbl.FileBrowser.Clipboard.WorksUsrCod % 100),
- Gbl.FileBrowser.Clipboard.WorksUsrCod,
- Gbl.FileBrowser.Clipboard.Path);
+ Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
+ if (Crs_GetDataOfCourseByCod (&Crs))
+ sprintf (PathOrg,"%s/%s/%ld/usr/%02u/%ld/%s",
+ Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Crs.CrsCod,
+ (unsigned) (Gbl.FileBrowser.Clipboard.WorksUsrCod % 100),
+ Gbl.FileBrowser.Clipboard.WorksUsrCod,
+ Gbl.FileBrowser.Clipboard.Path);
+ else
+ Lay_ShowErrorAndExit ("The course of copy source does not exist.");
+ break;
break;
case Brw_FILE_BRW_BRIEFCASE_USR:
sprintf (PathOrg,"%s/%s",
@@ -8139,7 +8112,7 @@ bool Brw_CheckIfFileOrFolderIsSetAsHiddenInDB (Brw_FileType_t FileType,const cha
Brw_GetCrsCod (),
Brw_GetGrpCod (),
Brw_GetZoneUsrCod (),
- (unsigned) Brw_FileBrowserForDB[Gbl.FileBrowser.Type],
+ (unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type],
Path);
if (DB_QuerySELECT (Query,&mysql_res,"can not check if a file is hidden"))
{
@@ -9116,7 +9089,7 @@ long Brw_GetFilCodByPath (const char *Path)
Brw_GetCrsCod (),
Brw_GetGrpCod (),
Brw_GetZoneUsrCod (),
- (unsigned) Brw_FileBrowserForDB[Gbl.FileBrowser.Type],
+ (unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type],
Path);
if (DB_QuerySELECT (Query,&mysql_res,"can not get file code"))
{
@@ -9161,7 +9134,7 @@ void Brw_GetFileMetadataByPath (struct FileMetadata *FileMetadata)
Brw_GetCrsCod (),
Brw_GetGrpCod (),
Brw_GetZoneUsrCod (),
- (unsigned) Brw_FileBrowserForDB[Gbl.FileBrowser.Type],
+ (unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type],
Gbl.FileBrowser.Priv.FullPathInTree);
if (DB_QuerySELECT (Query,&mysql_res,"can not get file metadata"))
{
@@ -9646,106 +9619,11 @@ static bool Brw_GetIfFolderHasPublicFiles (const char *Path)
Brw_GetCrsCod (),
Brw_GetGrpCod (),
Brw_GetZoneUsrCod (),
- (unsigned) Brw_FileBrowserForDB[Gbl.FileBrowser.Type],
+ (unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type],
Path);
return (DB_QueryCOUNT (Query,"can not check if a folder contains public files") != 0);
}
-/*****************************************************************************/
-/************* Check if a folder from a file browser is expanded *************/
-/*****************************************************************************/
-
-static bool Brw_GetIfExpandedTree (const char *Path)
- {
- char Query[512+PATH_MAX];
- Brw_FileBrowser_t FileBrowserForExpandedFolders = Brw_FileBrowserForExpandedFolders[Gbl.FileBrowser.Type];
-
- /***** 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:
- case Brw_FILE_BRW_ASSIGNMENTS_USR:
- case Brw_FILE_BRW_WORKS_USR:
- sprintf (Query,"SELECT COUNT(*) FROM expanded_folders"
- " WHERE UsrCod='%ld' AND FileBrowser='%u'"
- " AND CrsCod='%ld'"
- " AND Path='%s/'",
- Gbl.Usrs.Me.UsrDat.UsrCod,
- (unsigned) FileBrowserForExpandedFolders,
- Gbl.CurrentCrs.Crs.CrsCod,
- Path);
- break;
- case Brw_FILE_BRW_SEE_DOCUMENTS_GRP:
- case Brw_FILE_BRW_COMMON_GRP:
- case Brw_FILE_BRW_SEE_MARKS_GRP:
- sprintf (Query,"SELECT COUNT(*) FROM expanded_folders"
- " WHERE UsrCod='%ld' AND FileBrowser='%u'"
- " AND CrsCod='%ld' AND GrpCod='%ld'"
- " AND Path='%s/'",
- Gbl.Usrs.Me.UsrDat.UsrCod,
- (unsigned) FileBrowserForExpandedFolders,
- Gbl.CurrentCrs.Crs.CrsCod,
- Gbl.CurrentCrs.Grps.GrpCod,
- Path);
- break;
- case Brw_FILE_BRW_ASSIGNMENTS_CRS:
- case Brw_FILE_BRW_WORKS_CRS:
- sprintf (Query,"SELECT COUNT(*) FROM expanded_folders"
- " WHERE UsrCod='%ld' AND FileBrowser='%u'"
- " AND CrsCod='%ld' AND WorksUsrCod='%ld'"
- " AND Path='%s/'",
- Gbl.Usrs.Me.UsrDat.UsrCod,
- (unsigned) FileBrowserForExpandedFolders,
- Gbl.CurrentCrs.Crs.CrsCod,
- Gbl.Usrs.Other.UsrDat.UsrCod,
- Path);
- break;
- case Brw_FILE_BRW_BRIEFCASE_USR:
- sprintf (Query,"SELECT COUNT(*) FROM expanded_folders"
- " WHERE UsrCod='%ld' AND FileBrowser='%u'"
- " AND Path='%s/'",
- Gbl.Usrs.Me.UsrDat.UsrCod,
- (unsigned) FileBrowserForExpandedFolders,
- Path);
- break;
- default:
- break;
- }
- return (DB_QueryCOUNT (Query,"can not get check if a folder is expanded") != 0);
- }
-
/*****************************************************************************/
/***************** Change hiddeness of file in the database ******************/
/*****************************************************************************/
@@ -9767,7 +9645,7 @@ static void Brw_ChangeFileOrFolderHiddenInDB (const char *Path,bool IsHidden)
Brw_GetCrsCod (),
Brw_GetGrpCod (),
Brw_GetZoneUsrCod (),
- (unsigned) Brw_FileBrowserForDB[Gbl.FileBrowser.Type],
+ (unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type],
Path);
DB_QueryUPDATE (Query,"can not change status of a file in database");
}
@@ -9796,7 +9674,7 @@ static void Brw_ChangeFilePublicInDB (long PublisherUsrCod,const char *Path,
Brw_GetCrsCod (),
Brw_GetGrpCod (),
Brw_GetZoneUsrCod (),
- (unsigned) Brw_FileBrowserForDB[Gbl.FileBrowser.Type],
+ (unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type],
Path);
DB_QueryUPDATE (Query,"can not change metadata of a file in database");
}
@@ -9894,7 +9772,7 @@ long Brw_AddPathToDB (long PublisherUsrCod,Brw_FileType_t FileType,
Brw_GetCrsCod (),
Brw_GetGrpCod (),
Brw_GetZoneUsrCod (),
- (unsigned) Brw_FileBrowserForDB[Gbl.FileBrowser.Type],
+ (unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type],
PublisherUsrCod,
(unsigned) FileType,
Path,
@@ -9917,7 +9795,7 @@ static void Brw_RemoveOneFileOrFolderFromDB (const char *Path)
long CrsCod = Brw_GetCrsCod ();
long GrpCod = Brw_GetGrpCod ();
long ZoneUsrCod = Brw_GetZoneUsrCod ();
- Brw_FileBrowser_t FileBrowser = Brw_FileBrowserForDB[Gbl.FileBrowser.Type];
+ Brw_FileBrowser_t FileBrowser = Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type];
/***** Set possible notifications as removed.
Important: do this before removing from files *****/
@@ -9976,7 +9854,7 @@ static void Brw_RemoveChildrenOfFolderFromDB (const char *Path)
long CrsCod = Brw_GetCrsCod ();
long GrpCod = Brw_GetGrpCod ();
long ZoneUsrCod = Brw_GetZoneUsrCod ();
- Brw_FileBrowser_t FileBrowser = Brw_FileBrowserForDB[Gbl.FileBrowser.Type];
+ Brw_FileBrowser_t FileBrowser = Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type];
/***** Set possible notifications as removed.
Important: do this before removing from files *****/
@@ -10037,7 +9915,7 @@ static void Brw_RenameOneFolderInDB (const char *OldPath,const char *NewPath)
Brw_GetCrsCod (),
Brw_GetGrpCod (),
Brw_GetZoneUsrCod (),
- (unsigned) Brw_FileBrowserForDB[Gbl.FileBrowser.Type],
+ (unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type],
OldPath);
DB_QueryUPDATE (Query,"can not update folder name in a common zone");
}
@@ -10059,7 +9937,7 @@ static void Brw_RenameChildrenFilesOrFoldersInDB (const char *OldPath,const char
Brw_GetCrsCod (),
Brw_GetGrpCod (),
Brw_GetZoneUsrCod (),
- (unsigned) Brw_FileBrowserForDB[Gbl.FileBrowser.Type],
+ (unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type],
OldPath);
DB_QueryUPDATE (Query,"can not rename file or folder names in a common zone");
}
diff --git a/swad_file_browser.h b/swad_file_browser.h
index 6c80141c6..07fdc8c04 100644
--- a/swad_file_browser.h
+++ b/swad_file_browser.h
@@ -157,7 +157,6 @@ void Brw_RemFolderFromTree (void);
void Brw_ExpandFileTree (void);
void Brw_ContractFileTree (void);
void Brw_CopyFromFileBrowser (void);
-void Brw_RemoveExpiredExpandedFolders (void);
void Brw_PasteIntoFileBrowser (void);
void Brw_RemSubtreeInFileBrowser (void);
void Brw_ShowFormFileBrowser (void);
@@ -183,6 +182,9 @@ void Brw_UpdateMyFileViews (long FilCod);
long Brw_AddPathToDB (long PublisherUsrCod,Brw_FileType_t FileType,
const char *Path,bool IsPublic,Brw_License_t License);
+void Brw_RemoveExpandedFoldersInCrs (long CrsCod);
+void Brw_RemoveExpiredExpandedFolders (void);
+
void Brw_RemoveUsrClipboard (long UsrCod);
void Brw_RemoveGrpClipboards (long GrpCod);
void Brw_RemoveUsrClipboardInCrs (long UsrCod,long CrsCod);
diff --git a/swad_global.h b/swad_global.h
index c67ffc588..10ce5e6fd 100644
--- a/swad_global.h
+++ b/swad_global.h
@@ -513,11 +513,7 @@ struct Globals
struct
{
Brw_FileBrowser_t FileBrowser; // Type of the file browser
- long InsCod; // Code of the institution related to the file browser with the clipboard
- long CtrCod; // Code of the centre related to the file browser with the clipboard
- long DegCod; // Code of the degree related to the file browser with the clipboard
- long CrsCod; // Code of the course related to the file browser with the clipboard
- long GrpCod; // Code of the group related to the file browser with the clipboard
+ long Cod; // Code of the institution/centre/degree/course/group related to the file browser with the clipboard
long WorksUsrCod; // User code of the user related to the works file browser with the clipboard
char Path[PATH_MAX+1]; // Complete path in the file browser
char FileName[NAME_MAX+1]; // File name, last part of complete path in the file browser
diff --git a/swad_group.c b/swad_group.c
index 0573cb6ff..710679ded 100644
--- a/swad_group.c
+++ b/swad_group.c
@@ -2627,10 +2627,13 @@ void Grp_GetDataOfGroupByCod (struct GroupData *GrpDat)
unsigned long NumRows;
/***** Get data of a group from database *****/
- sprintf (Query,"SELECT crs_grp_types.GrpTypCod,crs_grp_types.GrpTypName,crs_grp_types.Multiple,"
- "crs_grp.GrpName,crs_grp.MaxStudents,crs_grp.Open,crs_grp.FileZones"
- " FROM crs_grp_types,crs_grp"
- " WHERE crs_grp_types.GrpTypCod=crs_grp.GrpTypCod AND crs_grp.GrpCod='%ld'",
+ sprintf (Query,"SELECT crs_grp_types.GrpTypCod,crs_grp_types.CrsCod,"
+ "crs_grp_types.GrpTypName,crs_grp_types.Multiple,"
+ "crs_grp.GrpName,crs_grp.MaxStudents,"
+ "crs_grp.Open,crs_grp.FileZones"
+ " FROM crs_grp,crs_grp_types"
+ " WHERE crs_grp.GrpCod='%ld'"
+ " AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod",
GrpDat->GrpCod);
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get data of a group");
@@ -2639,21 +2642,32 @@ void Grp_GetDataOfGroupByCod (struct GroupData *GrpDat)
/***** Get data of group *****/
row = mysql_fetch_row (mysql_res);
+
/* Get the code of the group type (row[0]) */
- if ((GrpDat->GrpTypCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
+ if ((GrpDat->GrpTypCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_ShowErrorAndExit ("Wrong code of type of group.");
- /* Get the name of the group type (row[1]) */
- strcpy (GrpDat->GrpTypName,row[1]);
- /* Get whether a student may be in one or multiple groups (row[2]) */
- GrpDat->MultipleEnrollment = (Str_ConvertToUpperLetter (row[2][0]) == 'Y');
- /* Get the name of the group (row[3]) */
- strcpy (GrpDat->GrpName,row[3]);
- /* Get maximum number of students (row[4]) */
- GrpDat->MaxStudents = Grp_ConvertToNumMaxStdsGrp (row[4]);
- /* Get whether group is open or closed (row[5]) */
- GrpDat->Open = (Str_ConvertToUpperLetter (row[5][0]) == 'Y');
- /* Get whether group has file zones (row[6]) */
- GrpDat->FileZones = (Str_ConvertToUpperLetter (row[6][0]) == 'Y');
+
+ /* Get the code of the course (row[1]) */
+ if ((GrpDat->CrsCod = Str_ConvertStrCodToLongCod (row[1])) <= 0)
+ Lay_ShowErrorAndExit ("Wrong code of course.");
+
+ /* Get the name of the group type (row[2]) */
+ strcpy (GrpDat->GrpTypName,row[2]);
+
+ /* Get whether a student may be in one or multiple groups (row[3]) */
+ GrpDat->MultipleEnrollment = (Str_ConvertToUpperLetter (row[3][0]) == 'Y');
+
+ /* Get the name of the group (row[4]) */
+ strcpy (GrpDat->GrpName,row[4]);
+
+ /* Get maximum number of students (row[5]) */
+ GrpDat->MaxStudents = Grp_ConvertToNumMaxStdsGrp (row[5]);
+
+ /* Get whether group is open or closed (row[6]) */
+ GrpDat->Open = (Str_ConvertToUpperLetter (row[6][0]) == 'Y');
+
+ /* Get whether group has file zones (row[7]) */
+ GrpDat->FileZones = (Str_ConvertToUpperLetter (row[7][0]) == 'Y');
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
diff --git a/swad_group.h b/swad_group.h
index fae07fbf0..f95ea3de1 100644
--- a/swad_group.h
+++ b/swad_group.h
@@ -54,6 +54,7 @@ struct GroupData
{
long GrpCod;
long GrpTypCod;
+ long CrsCod;
char GrpTypName[MAX_LENGTH_GROUP_TYPE_NAME+1];
char GrpName[MAX_LENGTH_GROUP_NAME+1];
unsigned MaxStudents;