From aa799cee5dc4b01c430d49e4dc6502da6f18eab8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Tue, 19 Sep 2017 18:13:52 +0200 Subject: [PATCH] Version 17.3.9 --- sql/swad.sql | 1 - swad_changelog.h | 9 +++- swad_database.c | 4 +- swad_project.c | 110 ++++++++++++++++++++--------------------------- swad_project.h | 1 - 5 files changed, 54 insertions(+), 71 deletions(-) diff --git a/sql/swad.sql b/sql/swad.sql index 41e71e905..545f524a0 100644 --- a/sql/swad.sql +++ b/sql/swad.sql @@ -945,7 +945,6 @@ CREATE TABLE IF NOT EXISTS projects ( CrsCod INT NOT NULL DEFAULT -1, Hidden ENUM('N','Y') NOT NULL DEFAULT 'N', Preassigned ENUM('N','Y') NOT NULL DEFAULT 'N', - UsrCod INT NOT NULL, StartTime DATETIME NOT NULL, EndTime DATETIME NOT NULL, Title VARCHAR(2047) NOT NULL, diff --git a/swad_changelog.h b/swad_changelog.h index 2ffee3d4b..134ce10f9 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -252,14 +252,19 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 17.3.8 (2017-09-19)" +#define Log_PLATFORM_VERSION "SWAD 17.3.9 (2017-09-19)" #define CSS_FILE "swad17.0.css" #define JS_FILE "swad16.206.3.js" // 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 sql/swad*.sql | tail -1 /* - Version 17.3.8: Sep 19, 2017 Table for users in projects. (230000 lines) + Version 17.3.9: Sep 19, 2017 Tutor code moved from table projects to table prj_grp. (229987 lines) + 1 change necessary in database: +ALTER TABLE projects DROP COLUMN UsrCod; + + Version 17.3.8: Sep 19, 2017 Table for users in projects. (230001 lines) + 2 changes necessary in database: DROP TABLE IF EXISTS prj_grp; CREATE TABLE IF NOT EXISTS prj_usr (PrjCod INT NOT NULL,RoleInProject TINYINT NOT NULL DEFAULT 0,UsrCod INT NOT NULL,UNIQUE INDEX(PrjCod,RoleInProject,UsrCod)); diff --git a/swad_database.c b/swad_database.c index 976618cda..07c57120f 100644 --- a/swad_database.c +++ b/swad_database.c @@ -2013,7 +2013,6 @@ mysql> DESCRIBE projects; | CrsCod | int(11) | NO | MUL | -1 | | | Hidden | enum('N','Y') | NO | | N | | | Preassigned | enum('N','Y') | NO | | N | | -| UsrCod | int(11) | NO | | NULL | | | StartTime | datetime | NO | | NULL | | | EndTime | datetime | NO | | NULL | | | Title | varchar(2047) | NO | | NULL | | @@ -2022,14 +2021,13 @@ mysql> DESCRIBE projects; | Materials | text | NO | | NULL | | | URL | varchar(255) | NO | | NULL | | +-------------+---------------+------+-----+---------+----------------+ -12 rows in set (0,01 sec) +11 rows in set (0,00 sec) */ DB_CreateTable ("CREATE TABLE IF NOT EXISTS projects (" "PrjCod INT NOT NULL AUTO_INCREMENT," "CrsCod INT NOT NULL DEFAULT -1," "Hidden ENUM('N','Y') NOT NULL DEFAULT 'N'," "Preassigned ENUM('N','Y') NOT NULL DEFAULT 'N'," - "UsrCod INT NOT NULL," "StartTime DATETIME NOT NULL," "EndTime DATETIME NOT NULL," "Title VARCHAR(2047) NOT NULL," // Prj_MAX_BYTES_PROJECT_TITLE diff --git a/swad_project.c b/swad_project.c index fa978b074..cdd6a9e15 100644 --- a/swad_project.c +++ b/swad_project.c @@ -80,7 +80,6 @@ static void Prj_PutIconToCreateNewPrj (void); static void Prj_PutButtonToCreateNewPrj (void); static void Prj_ShowOneProject (struct Project *Prj,bool PrintView); static void Prj_WriteUsrs (long PrjCod,Prj_RoleInProject_t RoleInProject); -static void Prj_WritePrjAuthor (struct Project *Prj); static void Prj_GetParamPrjOrder (void); static void Prj_PutFormsToRemEditOnePrj (long PrjCod,bool Hidden); @@ -354,7 +353,7 @@ static void Prj_ShowOneProject (struct Project *Prj,bool PrintView) /***** Write first row of data of this project *****/ /* Forms to remove/edit this project */ fprintf (Gbl.F.Out,"" - ""); else @@ -434,17 +433,6 @@ static void Prj_ShowOneProject (struct Project *Prj,bool PrintView) Txt_No); /***** Write second row of data of this project *****/ - fprintf (Gbl.F.Out,"" - ""); - - /* Author of the project */ - Prj_WritePrjAuthor (Prj); - - fprintf (Gbl.F.Out,""); - /* Description of the project */ Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML, Prj->Description,Cns_MAX_BYTES_TEXT,false); // Convert from HTML to recpectful HTML @@ -655,15 +643,6 @@ static void Prj_WriteUsrs (long PrjCod,Prj_RoleInProject_t RoleInProject) DB_FreeMySQLResult (&mysql_res); } -/*****************************************************************************/ -/*********************** Write the author of a project ***********************/ -/*****************************************************************************/ - -static void Prj_WritePrjAuthor (struct Project *Prj) - { - Usr_WriteAuthor1Line (Prj->UsrCod,Prj->Hidden); - } - /*****************************************************************************/ /********* Get parameter with the type or order in list of projects **********/ /*****************************************************************************/ @@ -815,7 +794,7 @@ void Prj_GetDataOfProjectByCod (struct Project *Prj) if (Prj->PrjCod > 0) { /***** Build query *****/ - sprintf (Query,"SELECT PrjCod,Hidden,Preassigned,UsrCod," + sprintf (Query,"SELECT PrjCod,Hidden,Preassigned," "UNIX_TIMESTAMP(StartTime)," "UNIX_TIMESTAMP(EndTime)," "NOW() BETWEEN StartTime AND EndTime," @@ -827,15 +806,14 @@ void Prj_GetDataOfProjectByCod (struct Project *Prj) row[ 0]: PrjCod row[ 1]: Hidden row[ 2]: Preassigned - row[ 3]: UsrCod - row[ 4]: UNIX_TIMESTAMP(StartTime) - row[ 5]: UNIX_TIMESTAMP(EndTime) - row[ 6]: NOW() BETWEEN StartTime AND EndTime - row[ 7]: Title - row[ 8]: Description - row[ 9]: Knowledge - row[10]: Materials - row[11]: URL + row[ 3]: UNIX_TIMESTAMP(StartTime) + row[ 4]: UNIX_TIMESTAMP(EndTime) + row[ 5]: NOW() BETWEEN StartTime AND EndTime + row[ 6]: Title + row[ 7]: Description + row[ 8]: Knowledge + row[ 9]: Materials + row[10]: URL */ /***** Get data of project *****/ @@ -870,15 +848,14 @@ static void Prj_GetDataOfProject (struct Project *Prj,const char *Query) row[ 0]: PrjCod row[ 1]: Hidden row[ 2]: Preassigned - row[ 3]: UsrCod - row[ 4]: UNIX_TIMESTAMP(StartTime) - row[ 5]: UNIX_TIMESTAMP(EndTime) - row[ 6]: NOW() BETWEEN StartTime AND EndTime - row[ 7]: Title - row[ 8]: Description - row[ 9]: Knowledge - row[10]: Materials - row[11]: URL + row[ 3]: UNIX_TIMESTAMP(StartTime) + row[ 4]: UNIX_TIMESTAMP(EndTime) + row[ 5]: NOW() BETWEEN StartTime AND EndTime + row[ 6]: Title + row[ 7]: Description + row[ 8]: Knowledge + row[ 9]: Materials + row[10]: URL */ /* Get code of the project (row[0]) */ @@ -891,36 +868,33 @@ static void Prj_GetDataOfProject (struct Project *Prj,const char *Query) Prj->Preassigned = (row[2][0] == 'Y') ? Prj_PREASSIGNED : Prj_NOT_PREASSIGNED; - /* Get author of the project (row[3]) */ - Prj->UsrCod = Str_ConvertStrCodToLongCod (row[3]); + /* Get start date (row[3] holds the start UTC time) */ + Prj->TimeUTC[Dat_START_TIME] = Dat_GetUNIXTimeFromStr (row[3]); - /* Get start date (row[4] holds the start UTC time) */ - Prj->TimeUTC[Dat_START_TIME] = Dat_GetUNIXTimeFromStr (row[4]); + /* Get end date (row[4] holds the end UTC time) */ + Prj->TimeUTC[Dat_END_TIME ] = Dat_GetUNIXTimeFromStr (row[4]); - /* Get end date (row[5] holds the end UTC time) */ - Prj->TimeUTC[Dat_END_TIME ] = Dat_GetUNIXTimeFromStr (row[5]); + /* Get whether the project is open or closed (row[5]) */ + Prj->Open = (row[5][0] == '1'); - /* Get whether the project is open or closed (row(6)) */ - Prj->Open = (row[6][0] == '1'); - - /* Get the title of the project (row[7]) */ - Str_Copy (Prj->Title,row[7], + /* Get the title of the project (row[6]) */ + Str_Copy (Prj->Title,row[6], Prj_MAX_BYTES_PROJECT_TITLE); - /* Get the description of the project (row[8]) */ - Str_Copy (Prj->Description,row[8], + /* Get the description of the project (row[7]) */ + Str_Copy (Prj->Description,row[7], Cns_MAX_BYTES_TEXT); - /* Get the required knowledge for the project (row[9]) */ - Str_Copy (Prj->Knowledge,row[9], + /* Get the required knowledge for the project (row[8]) */ + Str_Copy (Prj->Knowledge,row[8], Cns_MAX_BYTES_TEXT); - /* Get the required materials for the project (row[10]) */ - Str_Copy (Prj->Materials,row[10], + /* Get the required materials for the project (row[9]) */ + Str_Copy (Prj->Materials,row[9], Cns_MAX_BYTES_TEXT); - /* Get the URL of the project (row[11]) */ - Str_Copy (Prj->URL,row[11], + /* Get the URL of the project (row[10]) */ + Str_Copy (Prj->URL,row[10], Cns_MAX_BYTES_WWW); } @@ -938,7 +912,6 @@ static void Prj_ResetProject (struct Project *Prj) Prj->PrjCod = -1L; Prj->Hidden = false; Prj->Preassigned = Prj_NOT_PREASSIGNED; - Prj->UsrCod = -1L; Prj->TimeUTC[Dat_START_TIME] = Prj->TimeUTC[Dat_END_TIME ] = (time_t) 0; Prj->Open = false; @@ -1478,17 +1451,16 @@ static void Prj_CreateProject (struct Project *Prj) /***** Create a new project *****/ sprintf (Query,"INSERT INTO projects" - " (CrsCod,Hidden,Preassigned,UsrCod,StartTime,EndTime," + " (CrsCod,Hidden,Preassigned,StartTime,EndTime," "Title,Description,Knowledge,Materials,URL)" " VALUES" - " (%ld,'%c','%c',%ld,FROM_UNIXTIME(%ld),FROM_UNIXTIME(%ld)," + " (%ld,'%c','%c',FROM_UNIXTIME(%ld),FROM_UNIXTIME(%ld)," "'%s','%s','%s','%s','%s')", Gbl.CurrentCrs.Crs.CrsCod, Prj->Hidden ? 'Y' : 'N', Prj->Preassigned == Prj_PREASSIGNED ? 'Y' : 'N', - Gbl.Usrs.Me.UsrDat.UsrCod, Prj->TimeUTC[Dat_START_TIME], Prj->TimeUTC[Dat_END_TIME ], Prj->Title, @@ -1497,6 +1469,16 @@ static void Prj_CreateProject (struct Project *Prj) Prj->Materials, Prj->URL); Prj->PrjCod = DB_QueryINSERTandReturnCode (Query,"can not create new project"); + + /***** Insert creator as first tutor *****/ + sprintf (Query,"INSERT INTO prj_usr" + " (PrjCod,RoleInProject,UsrCod)" + " VALUES" + " (%ld,%u,%ld)", + Prj->PrjCod, + (unsigned) Prj_ROLE_TUT, + Gbl.Usrs.Me.UsrDat.UsrCod); + DB_QueryINSERT (Query,"can not add tutor"); } /*****************************************************************************/ diff --git a/swad_project.h b/swad_project.h index cfcd54a88..be5215f48 100644 --- a/swad_project.h +++ b/swad_project.h @@ -51,7 +51,6 @@ struct Project long PrjCod; bool Hidden; Prj_Preassigned_t Preassigned; - long UsrCod; time_t TimeUTC[Dat_NUM_START_END_TIME]; bool Open; char Title[Prj_MAX_BYTES_PROJECT_TITLE + 1];