Version 17.3.8

This commit is contained in:
Antonio Cañas Vargas 2017-09-19 16:45:42 +02:00
parent 51f95f5b41
commit 99890d6351
5 changed files with 52 additions and 34 deletions

View File

@ -930,12 +930,13 @@ CREATE TABLE IF NOT EXISTS plugins (
IP CHAR(15) NOT NULL,
UNIQUE INDEX(PlgCod));
--
-- Table Prj_grp: stores the groups associated to projects
-- Table prj_usr: stores the users inside projects
--
CREATE TABLE IF NOT EXISTS prj_grp (
CREATE TABLE IF NOT EXISTS prj_usr (
PrjCod INT NOT NULL,
GrpCod INT NOT NULL,
UNIQUE INDEX(PrjCod,GrpCod));
RoleInProject TINYINT NOT NULL DEFAULT 0,
UsrCod INT NOT NULL,
UNIQUE INDEX(PrjCod,RoleInProject,UsrCod));
--
-- Table projects: stores the projects proposed by the teachers to their students
--

View File

@ -252,13 +252,17 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 17.3.7 (2017-09-19)"
#define Log_PLATFORM_VERSION "SWAD 17.3.8 (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)
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));
Version 17.3.7: Sep 19, 2017 New row in listing of projects for tutors. Not finished. (229983 lines)
Version 17.3.6: Sep 19, 2017 Changes in listing of projects. (229849 lines)
Version 17.3.5: Sep 19, 2017 Removed groups in projects. (229858 lines)

View File

@ -1987,19 +1987,21 @@ mysql> DESCRIBE plugins;
/***** Table prj_grp *****/
/*
mysql> DESCRIBE prj_grp;
+--------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| PrjCod | int(11) | NO | PRI | NULL | |
| GrpCod | int(11) | NO | PRI | NULL | |
+--------+---------+------+-----+---------+-------+
2 rows in set (0,00 sec)
mysql> DESCRIBE prj_usr;
+---------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------+------+-----+---------+-------+
| PrjCod | int(11) | NO | PRI | NULL | |
| RoleInProject | tinyint(4) | NO | PRI | 0 | |
| UsrCod | int(11) | NO | PRI | NULL | |
+---------------+------------+------+-----+---------+-------+
3 rows in set (0,00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS prj_grp ("
DB_CreateTable ("CREATE TABLE IF NOT EXISTS prj_usr ("
"PrjCod INT NOT NULL,"
"GrpCod INT NOT NULL,"
"UNIQUE INDEX(PrjCod,GrpCod))");
"RoleInProject TINYINT NOT NULL DEFAULT 0,"
"UsrCod INT NOT NULL,"
"UNIQUE INDEX(PrjCod,RoleInProject,UsrCod))");
/***** Table projects *****/
/*

View File

@ -48,12 +48,21 @@
extern struct Globals Gbl;
/*****************************************************************************/
/***************************** Private constants *****************************/
/************************* Public constants and types ************************/
/*****************************************************************************/
// Related with user's roles in a project
/*
Don't change these numbers! They are used in database
*/
/*****************************************************************************/
/******************************* Private types *******************************/
/*****************************************************************************/
#define Prj_NUM_ROLES_IN_PROJECT 4
typedef enum
{
Prj_ROLE_UNK = 0, // Unknown
Prj_ROLE_STD = 1, // Student
Prj_ROLE_TUT = 2, // Tutor
Prj_ROLE_REV = 3, // Reviewer
} Prj_RoleInProject_t;
/*****************************************************************************/
/***************************** Private variables *****************************/
@ -70,7 +79,7 @@ static void Prj_PutIconsListProjects (void);
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);
static void Prj_WriteUsrs (long PrjCod,Prj_RoleInProject_t RoleInProject);
static void Prj_WritePrjAuthor (struct Project *Prj);
static void Prj_GetParamPrjOrder (void);
@ -514,7 +523,7 @@ static void Prj_ShowOneProject (struct Project *Prj,bool PrintView)
"DAT",
Prj->Materials);
/* Project tutors */
/* Project tutors */
fprintf (Gbl.F.Out,"<tr>"
"<td colspan=\"2\" class=\"RIGHT_TOP");
if (!PrintView)
@ -531,7 +540,7 @@ static void Prj_ShowOneProject (struct Project *Prj,bool PrintView)
fprintf (Gbl.F.Out," %s\">",
Prj->Hidden ? "DAT_LIGHT" :
"DAT");
Prj_WriteUsrs (Prj->PrjCod);
Prj_WriteUsrs (Prj->PrjCod,Prj_ROLE_TUT);
fprintf (Gbl.F.Out,"</td>"
"</tr>");
@ -539,10 +548,10 @@ static void Prj_ShowOneProject (struct Project *Prj,bool PrintView)
}
/*****************************************************************************/
/******************** Write list of recipients of a message ******************/
/*************** Write list of users with a role in a project ****************/
/*****************************************************************************/
static void Prj_WriteUsrs (long PrjCod)
static void Prj_WriteUsrs (long PrjCod,Prj_RoleInProject_t RoleInProject)
{
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
@ -559,22 +568,24 @@ static void Prj_WriteUsrs (long PrjCod)
bool ShowPhoto;
char PhotoURL[PATH_MAX + 1];
/***** Get number of users of a project from database *****/
sprintf (Query,"SELECT COUNT(*) FROM prj_usr WHERE PrjCod=%ld",
PrjCod);
NumUsrs = (unsigned) DB_QueryCOUNT (Query,"can not get number of recipients");
/***** Get number of users in project from database *****/
sprintf (Query,"SELECT COUNT(*) FROM prj_usr"
" WHERE PrjCod=%ld AND RoleInProject=%u",
PrjCod,(unsigned) RoleInProject);
NumUsrs = (unsigned) DB_QueryCOUNT (Query,"can not get users in project");
/***** Get users of a project from database *****/
/***** Get users in project from database *****/
sprintf (Query,"SELECT prj_usr.UsrCod,"
"usr_data.Surname1 AS S1,"
"usr_data.Surname2 AS S2,"
"usr_data.FirstName AS FN"
" FROM prj_usr,usr_data"
" WHERE prj_usr.PrjCod=%ld"
" WHERE prj_usr.PrjCod=%ld AND RoleInProject=%u"
" AND prj_usr.UsrCod=usr_data.UsrCod"
" ORDER BY S1,S2,FN",
PrjCod);
NumUsrsKnown = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get users of a project");
PrjCod,(unsigned) RoleInProject);
NumUsrsKnown = (unsigned) DB_QuerySELECT (Query,&mysql_res,
"can not get users in project");
/***** Check number of users *****/
if (NumUsrs)

View File

@ -28,7 +28,7 @@
/*****************************************************************************/
/*****************************************************************************/
/************************** Public constant and types ************************/
/************************* Public constants and types ************************/
/*****************************************************************************/
// Related with user's roles