mirror of https://github.com/acanas/swad-core.git
Version 17.3.9
This commit is contained in:
parent
99890d6351
commit
aa799cee5d
|
@ -945,7 +945,6 @@ CREATE TABLE IF NOT EXISTS projects (
|
||||||
CrsCod INT NOT NULL DEFAULT -1,
|
CrsCod INT NOT NULL DEFAULT -1,
|
||||||
Hidden ENUM('N','Y') NOT NULL DEFAULT 'N',
|
Hidden ENUM('N','Y') NOT NULL DEFAULT 'N',
|
||||||
Preassigned ENUM('N','Y') NOT NULL DEFAULT 'N',
|
Preassigned ENUM('N','Y') NOT NULL DEFAULT 'N',
|
||||||
UsrCod INT NOT NULL,
|
|
||||||
StartTime DATETIME NOT NULL,
|
StartTime DATETIME NOT NULL,
|
||||||
EndTime DATETIME NOT NULL,
|
EndTime DATETIME NOT NULL,
|
||||||
Title VARCHAR(2047) NOT NULL,
|
Title VARCHAR(2047) NOT NULL,
|
||||||
|
|
|
@ -252,14 +252,19 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** 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 CSS_FILE "swad17.0.css"
|
||||||
#define JS_FILE "swad16.206.3.js"
|
#define JS_FILE "swad16.206.3.js"
|
||||||
|
|
||||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
||||||
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
|
// 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;
|
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));
|
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));
|
||||||
|
|
||||||
|
|
|
@ -2013,7 +2013,6 @@ mysql> DESCRIBE projects;
|
||||||
| CrsCod | int(11) | NO | MUL | -1 | |
|
| CrsCod | int(11) | NO | MUL | -1 | |
|
||||||
| Hidden | enum('N','Y') | NO | | N | |
|
| Hidden | enum('N','Y') | NO | | N | |
|
||||||
| Preassigned | enum('N','Y') | NO | | N | |
|
| Preassigned | enum('N','Y') | NO | | N | |
|
||||||
| UsrCod | int(11) | NO | | NULL | |
|
|
||||||
| StartTime | datetime | NO | | NULL | |
|
| StartTime | datetime | NO | | NULL | |
|
||||||
| EndTime | datetime | NO | | NULL | |
|
| EndTime | datetime | NO | | NULL | |
|
||||||
| Title | varchar(2047) | NO | | NULL | |
|
| Title | varchar(2047) | NO | | NULL | |
|
||||||
|
@ -2022,14 +2021,13 @@ mysql> DESCRIBE projects;
|
||||||
| Materials | text | NO | | NULL | |
|
| Materials | text | NO | | NULL | |
|
||||||
| URL | varchar(255) | 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 ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS projects ("
|
||||||
"PrjCod INT NOT NULL AUTO_INCREMENT,"
|
"PrjCod INT NOT NULL AUTO_INCREMENT,"
|
||||||
"CrsCod INT NOT NULL DEFAULT -1,"
|
"CrsCod INT NOT NULL DEFAULT -1,"
|
||||||
"Hidden ENUM('N','Y') NOT NULL DEFAULT 'N',"
|
"Hidden ENUM('N','Y') NOT NULL DEFAULT 'N',"
|
||||||
"Preassigned ENUM('N','Y') NOT NULL DEFAULT 'N',"
|
"Preassigned ENUM('N','Y') NOT NULL DEFAULT 'N',"
|
||||||
"UsrCod INT NOT NULL,"
|
|
||||||
"StartTime DATETIME NOT NULL,"
|
"StartTime DATETIME NOT NULL,"
|
||||||
"EndTime DATETIME NOT NULL,"
|
"EndTime DATETIME NOT NULL,"
|
||||||
"Title VARCHAR(2047) NOT NULL," // Prj_MAX_BYTES_PROJECT_TITLE
|
"Title VARCHAR(2047) NOT NULL," // Prj_MAX_BYTES_PROJECT_TITLE
|
||||||
|
|
110
swad_project.c
110
swad_project.c
|
@ -80,7 +80,6 @@ static void Prj_PutIconToCreateNewPrj (void);
|
||||||
static void Prj_PutButtonToCreateNewPrj (void);
|
static void Prj_PutButtonToCreateNewPrj (void);
|
||||||
static void Prj_ShowOneProject (struct Project *Prj,bool PrintView);
|
static void Prj_ShowOneProject (struct Project *Prj,bool PrintView);
|
||||||
static void Prj_WriteUsrs (long PrjCod,Prj_RoleInProject_t RoleInProject);
|
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_GetParamPrjOrder (void);
|
||||||
|
|
||||||
static void Prj_PutFormsToRemEditOnePrj (long PrjCod,bool Hidden);
|
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 *****/
|
/***** Write first row of data of this project *****/
|
||||||
/* Forms to remove/edit this project */
|
/* Forms to remove/edit this project */
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td rowspan=\"6\" class=\"CONTEXT_COL");
|
"<td rowspan=\"5\" class=\"CONTEXT_COL");
|
||||||
if (PrintView)
|
if (PrintView)
|
||||||
fprintf (Gbl.F.Out,"\">");
|
fprintf (Gbl.F.Out,"\">");
|
||||||
else
|
else
|
||||||
|
@ -434,17 +433,6 @@ static void Prj_ShowOneProject (struct Project *Prj,bool PrintView)
|
||||||
Txt_No);
|
Txt_No);
|
||||||
|
|
||||||
/***** Write second row of data of this project *****/
|
/***** Write second row of data of this project *****/
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
|
||||||
"<td colspan=\"2\" class=\"LEFT_TOP");
|
|
||||||
if (!PrintView)
|
|
||||||
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
|
|
||||||
fprintf (Gbl.F.Out,"\">");
|
|
||||||
|
|
||||||
/* Author of the project */
|
|
||||||
Prj_WritePrjAuthor (Prj);
|
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"</td>");
|
|
||||||
|
|
||||||
/* Description of the project */
|
/* Description of the project */
|
||||||
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
|
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
|
||||||
Prj->Description,Cns_MAX_BYTES_TEXT,false); // Convert from HTML to recpectful 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);
|
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 **********/
|
/********* 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)
|
if (Prj->PrjCod > 0)
|
||||||
{
|
{
|
||||||
/***** Build query *****/
|
/***** Build query *****/
|
||||||
sprintf (Query,"SELECT PrjCod,Hidden,Preassigned,UsrCod,"
|
sprintf (Query,"SELECT PrjCod,Hidden,Preassigned,"
|
||||||
"UNIX_TIMESTAMP(StartTime),"
|
"UNIX_TIMESTAMP(StartTime),"
|
||||||
"UNIX_TIMESTAMP(EndTime),"
|
"UNIX_TIMESTAMP(EndTime),"
|
||||||
"NOW() BETWEEN StartTime AND EndTime,"
|
"NOW() BETWEEN StartTime AND EndTime,"
|
||||||
|
@ -827,15 +806,14 @@ void Prj_GetDataOfProjectByCod (struct Project *Prj)
|
||||||
row[ 0]: PrjCod
|
row[ 0]: PrjCod
|
||||||
row[ 1]: Hidden
|
row[ 1]: Hidden
|
||||||
row[ 2]: Preassigned
|
row[ 2]: Preassigned
|
||||||
row[ 3]: UsrCod
|
row[ 3]: UNIX_TIMESTAMP(StartTime)
|
||||||
row[ 4]: UNIX_TIMESTAMP(StartTime)
|
row[ 4]: UNIX_TIMESTAMP(EndTime)
|
||||||
row[ 5]: UNIX_TIMESTAMP(EndTime)
|
row[ 5]: NOW() BETWEEN StartTime AND EndTime
|
||||||
row[ 6]: NOW() BETWEEN StartTime AND EndTime
|
row[ 6]: Title
|
||||||
row[ 7]: Title
|
row[ 7]: Description
|
||||||
row[ 8]: Description
|
row[ 8]: Knowledge
|
||||||
row[ 9]: Knowledge
|
row[ 9]: Materials
|
||||||
row[10]: Materials
|
row[10]: URL
|
||||||
row[11]: URL
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/***** Get data of project *****/
|
/***** Get data of project *****/
|
||||||
|
@ -870,15 +848,14 @@ static void Prj_GetDataOfProject (struct Project *Prj,const char *Query)
|
||||||
row[ 0]: PrjCod
|
row[ 0]: PrjCod
|
||||||
row[ 1]: Hidden
|
row[ 1]: Hidden
|
||||||
row[ 2]: Preassigned
|
row[ 2]: Preassigned
|
||||||
row[ 3]: UsrCod
|
row[ 3]: UNIX_TIMESTAMP(StartTime)
|
||||||
row[ 4]: UNIX_TIMESTAMP(StartTime)
|
row[ 4]: UNIX_TIMESTAMP(EndTime)
|
||||||
row[ 5]: UNIX_TIMESTAMP(EndTime)
|
row[ 5]: NOW() BETWEEN StartTime AND EndTime
|
||||||
row[ 6]: NOW() BETWEEN StartTime AND EndTime
|
row[ 6]: Title
|
||||||
row[ 7]: Title
|
row[ 7]: Description
|
||||||
row[ 8]: Description
|
row[ 8]: Knowledge
|
||||||
row[ 9]: Knowledge
|
row[ 9]: Materials
|
||||||
row[10]: Materials
|
row[10]: URL
|
||||||
row[11]: URL
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Get code of the project (row[0]) */
|
/* 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->Preassigned = (row[2][0] == 'Y') ? Prj_PREASSIGNED :
|
||||||
Prj_NOT_PREASSIGNED;
|
Prj_NOT_PREASSIGNED;
|
||||||
|
|
||||||
/* Get author of the project (row[3]) */
|
/* Get start date (row[3] holds the start UTC time) */
|
||||||
Prj->UsrCod = Str_ConvertStrCodToLongCod (row[3]);
|
Prj->TimeUTC[Dat_START_TIME] = Dat_GetUNIXTimeFromStr (row[3]);
|
||||||
|
|
||||||
/* Get start date (row[4] holds the start UTC time) */
|
/* Get end date (row[4] holds the end UTC time) */
|
||||||
Prj->TimeUTC[Dat_START_TIME] = Dat_GetUNIXTimeFromStr (row[4]);
|
Prj->TimeUTC[Dat_END_TIME ] = Dat_GetUNIXTimeFromStr (row[4]);
|
||||||
|
|
||||||
/* Get end date (row[5] holds the end UTC time) */
|
/* Get whether the project is open or closed (row[5]) */
|
||||||
Prj->TimeUTC[Dat_END_TIME ] = Dat_GetUNIXTimeFromStr (row[5]);
|
Prj->Open = (row[5][0] == '1');
|
||||||
|
|
||||||
/* Get whether the project is open or closed (row(6)) */
|
/* Get the title of the project (row[6]) */
|
||||||
Prj->Open = (row[6][0] == '1');
|
Str_Copy (Prj->Title,row[6],
|
||||||
|
|
||||||
/* Get the title of the project (row[7]) */
|
|
||||||
Str_Copy (Prj->Title,row[7],
|
|
||||||
Prj_MAX_BYTES_PROJECT_TITLE);
|
Prj_MAX_BYTES_PROJECT_TITLE);
|
||||||
|
|
||||||
/* Get the description of the project (row[8]) */
|
/* Get the description of the project (row[7]) */
|
||||||
Str_Copy (Prj->Description,row[8],
|
Str_Copy (Prj->Description,row[7],
|
||||||
Cns_MAX_BYTES_TEXT);
|
Cns_MAX_BYTES_TEXT);
|
||||||
|
|
||||||
/* Get the required knowledge for the project (row[9]) */
|
/* Get the required knowledge for the project (row[8]) */
|
||||||
Str_Copy (Prj->Knowledge,row[9],
|
Str_Copy (Prj->Knowledge,row[8],
|
||||||
Cns_MAX_BYTES_TEXT);
|
Cns_MAX_BYTES_TEXT);
|
||||||
|
|
||||||
/* Get the required materials for the project (row[10]) */
|
/* Get the required materials for the project (row[9]) */
|
||||||
Str_Copy (Prj->Materials,row[10],
|
Str_Copy (Prj->Materials,row[9],
|
||||||
Cns_MAX_BYTES_TEXT);
|
Cns_MAX_BYTES_TEXT);
|
||||||
|
|
||||||
/* Get the URL of the project (row[11]) */
|
/* Get the URL of the project (row[10]) */
|
||||||
Str_Copy (Prj->URL,row[11],
|
Str_Copy (Prj->URL,row[10],
|
||||||
Cns_MAX_BYTES_WWW);
|
Cns_MAX_BYTES_WWW);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -938,7 +912,6 @@ static void Prj_ResetProject (struct Project *Prj)
|
||||||
Prj->PrjCod = -1L;
|
Prj->PrjCod = -1L;
|
||||||
Prj->Hidden = false;
|
Prj->Hidden = false;
|
||||||
Prj->Preassigned = Prj_NOT_PREASSIGNED;
|
Prj->Preassigned = Prj_NOT_PREASSIGNED;
|
||||||
Prj->UsrCod = -1L;
|
|
||||||
Prj->TimeUTC[Dat_START_TIME] =
|
Prj->TimeUTC[Dat_START_TIME] =
|
||||||
Prj->TimeUTC[Dat_END_TIME ] = (time_t) 0;
|
Prj->TimeUTC[Dat_END_TIME ] = (time_t) 0;
|
||||||
Prj->Open = false;
|
Prj->Open = false;
|
||||||
|
@ -1478,17 +1451,16 @@ static void Prj_CreateProject (struct Project *Prj)
|
||||||
|
|
||||||
/***** Create a new project *****/
|
/***** Create a new project *****/
|
||||||
sprintf (Query,"INSERT INTO projects"
|
sprintf (Query,"INSERT INTO projects"
|
||||||
" (CrsCod,Hidden,Preassigned,UsrCod,StartTime,EndTime,"
|
" (CrsCod,Hidden,Preassigned,StartTime,EndTime,"
|
||||||
"Title,Description,Knowledge,Materials,URL)"
|
"Title,Description,Knowledge,Materials,URL)"
|
||||||
" VALUES"
|
" 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')",
|
"'%s','%s','%s','%s','%s')",
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,
|
Gbl.CurrentCrs.Crs.CrsCod,
|
||||||
Prj->Hidden ? 'Y' :
|
Prj->Hidden ? 'Y' :
|
||||||
'N',
|
'N',
|
||||||
Prj->Preassigned == Prj_PREASSIGNED ? 'Y' :
|
Prj->Preassigned == Prj_PREASSIGNED ? 'Y' :
|
||||||
'N',
|
'N',
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
|
||||||
Prj->TimeUTC[Dat_START_TIME],
|
Prj->TimeUTC[Dat_START_TIME],
|
||||||
Prj->TimeUTC[Dat_END_TIME ],
|
Prj->TimeUTC[Dat_END_TIME ],
|
||||||
Prj->Title,
|
Prj->Title,
|
||||||
|
@ -1497,6 +1469,16 @@ static void Prj_CreateProject (struct Project *Prj)
|
||||||
Prj->Materials,
|
Prj->Materials,
|
||||||
Prj->URL);
|
Prj->URL);
|
||||||
Prj->PrjCod = DB_QueryINSERTandReturnCode (Query,"can not create new project");
|
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");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -51,7 +51,6 @@ struct Project
|
||||||
long PrjCod;
|
long PrjCod;
|
||||||
bool Hidden;
|
bool Hidden;
|
||||||
Prj_Preassigned_t Preassigned;
|
Prj_Preassigned_t Preassigned;
|
||||||
long UsrCod;
|
|
||||||
time_t TimeUTC[Dat_NUM_START_END_TIME];
|
time_t TimeUTC[Dat_NUM_START_END_TIME];
|
||||||
bool Open;
|
bool Open;
|
||||||
char Title[Prj_MAX_BYTES_PROJECT_TITLE + 1];
|
char Title[Prj_MAX_BYTES_PROJECT_TITLE + 1];
|
||||||
|
|
Loading…
Reference in New Issue