Version19.260

This commit is contained in:
acanas 2020-08-23 11:22:41 +02:00
parent 87d987d4a2
commit e316293f0c
4 changed files with 107 additions and 62 deletions

View File

@ -14,6 +14,21 @@ struct swad__createAccountOutput
char *wsKey; // key used in subsequent calls to other web services char *wsKey; // key used in subsequent calls to other web services
}; };
/* loginByUserPasswordKey */
struct swad__loginByUserPasswordKeyOutput
{
int userCode;
char *wsKey; // key used in subsequent calls to other web services
char *userNickname;
char *userID;
char *userSurname1;
char *userSurname2;
char *userFirstname;
char *userPhoto;
char *userBirthday;
int userRole; // 1 = guest, no courses; 2 = student in all courses; 3 = teacher in one course at least
};
/* loginBySessionKey */ /* loginBySessionKey */
struct swad__loginBySessionKeyOutput struct swad__loginBySessionKeyOutput
{ {
@ -35,19 +50,10 @@ struct swad__loginBySessionKeyOutput
char *courseName; char *courseName;
}; };
/* loginByUserPasswordKey */ /* getAvailableRoles */
struct swad__loginByUserPasswordKeyOutput struct swad__getAvailableRolesOutput
{ {
int userCode; int roles;
char *wsKey; // key used in subsequent calls to other web services
char *userNickname;
char *userID;
char *userSurname1;
char *userSurname2;
char *userFirstname;
char *userPhoto;
char *userBirthday;
int userRole; // 1 = guest, no courses; 2 = student in all courses; 3 = teacher in one course at least
}; };
/* getNewPassword */ /* getNewPassword */
@ -488,6 +494,8 @@ int swad__loginByUserPasswordKey (char *userID,char *userPassword,char *appKey,
struct swad__loginByUserPasswordKeyOutput *loginByUserPasswordKeyOut); struct swad__loginByUserPasswordKeyOutput *loginByUserPasswordKeyOut);
int swad__loginBySessionKey (char *sessionID,char *appKey, int swad__loginBySessionKey (char *sessionID,char *appKey,
struct swad__loginBySessionKeyOutput *loginBySessionKeyOut); struct swad__loginBySessionKeyOutput *loginBySessionKeyOut);
int swad__getAvailableRoles (char *wsKey,
struct swad__getAvailableRolesOutput *getAvailableRolesOut);
int swad__getNewPassword (char *userID,char *appKey, int swad__getNewPassword (char *userID,char *appKey,
struct swad__getNewPasswordOutput *getNewPasswordOut); struct swad__getNewPasswordOutput *getNewPasswordOut);

View File

@ -114,6 +114,7 @@ cp -f /home/acanas/swad/swad/swad /var/www/cgi-bin/
#include "swad_notice.h" #include "swad_notice.h"
#include "swad_notification.h" #include "swad_notification.h"
#include "swad_password.h" #include "swad_password.h"
#include "swad_role.h"
#include "swad_search.h" #include "swad_search.h"
#include "swad_test_config.h" #include "swad_test_config.h"
#include "swad_test_visibility.h" #include "swad_test_visibility.h"
@ -134,41 +135,42 @@ extern const char Str_BIN_TO_BASE64URL[64 + 1];
// Add new functions at the end // Add new functions at the end
static const char *API_Functions[1 + API_NUM_FUNCTIONS] = static const char *API_Functions[1 + API_NUM_FUNCTIONS] =
{ {
[API_unknown ] = "?", // 0 ==> unknown function [API_unknown ] = "?", // 0 ==> unknown function
[API_loginBySessionKey ] = "loginBySession", // 1 [API_loginBySessionKey ] = "loginBySession", // 1
[API_loginByUserPassword ] = "loginByUserPassword", // 2 (deprecated) [API_loginByUserPassword ] = "loginByUserPassword", // 2 (deprecated)
[API_loginByUserPasswordKey ] = "loginByUserPasswordKey", // 3 [API_loginByUserPasswordKey ] = "loginByUserPasswordKey", // 3
[API_getCourses ] = "getCourses", // 4 [API_getCourses ] = "getCourses", // 4
[API_getUsers ] = "getUsers", // 5 [API_getUsers ] = "getUsers", // 5
[API_getNotifications ] = "getNotifications", // 6 [API_getNotifications ] = "getNotifications", // 6
[API_getTestConfig ] = "getTestConfig", // 7 [API_getTestConfig ] = "getTestConfig", // 7
[API_getTests ] = "getTests", // 8 [API_getTests ] = "getTests", // 8
[API_sendMessage ] = "sendMessage", // 9 [API_sendMessage ] = "sendMessage", // 9
[API_sendNotice ] = "sendNotice", // 10 [API_sendNotice ] = "sendNotice", // 10
[API_getDirectoryTree ] = "getDirectoryTree", // 11 [API_getDirectoryTree ] = "getDirectoryTree", // 11
[API_getGroups ] = "getGroups", // 12 [API_getGroups ] = "getGroups", // 12
[API_getGroupTypes ] = "getGroupTypes", // 13 [API_getGroupTypes ] = "getGroupTypes", // 13
[API_sendMyGroups ] = "sendMyGroups", // 14 [API_sendMyGroups ] = "sendMyGroups", // 14
[API_getFile ] = "getFile", // 15 [API_getFile ] = "getFile", // 15
[API_markNotificationsAsRead] = "markNotificationsAsRead", // 16 [API_markNotificationsAsRead ] = "markNotificationsAsRead", // 16
[API_getNewPassword ] = "getNewPassword", // 17 [API_getNewPassword ] = "getNewPassword", // 17
[API_getCourseInfo ] = "getCourseInfo", // 18 [API_getCourseInfo ] = "getCourseInfo", // 18
[API_getAttendanceEvents ] = "getAttendanceEvents", // 19 [API_getAttendanceEvents ] = "getAttendanceEvents", // 19
[API_sendAttendanceEvent ] = "sendAttendanceEvent", // 20 [API_sendAttendanceEvent ] = "sendAttendanceEvent", // 20
[API_getAttendanceUsers ] = "getAttendanceUsers", // 21 [API_getAttendanceUsers ] = "getAttendanceUsers", // 21
[API_sendAttendanceUsers ] = "sendAttendanceUsers", // 22 [API_sendAttendanceUsers ] = "sendAttendanceUsers", // 22
[API_createAccount ] = "createAccount", // 23 [API_createAccount ] = "createAccount", // 23
[API_getMarks ] = "getMarks", // 24 [API_getMarks ] = "getMarks", // 24
[API_getTrivialQuestion ] = "getTrivialQuestion", // 25 [API_getTrivialQuestion ] = "getTrivialQuestion", // 25
[API_findUsers ] = "findUsers", // 26 [API_findUsers ] = "findUsers", // 26
[API_removeAttendanceEvent ] = "removeAttendanceEvent", // 27 [API_removeAttendanceEvent ] = "removeAttendanceEvent", // 27
[API_getGames ] = "getGames", // 28 [API_getGames ] = "getGames", // 28
[API_getMatches ] = "getMatches", // 29 [API_getMatches ] = "getMatches", // 29
[API_getMatchStatus ] = "getMatchStatus", // 30 [API_getMatchStatus ] = "getMatchStatus", // 30
[API_answerMatchQuestion ] = "answerMatchQuestion", // 31 [API_answerMatchQuestion ] = "answerMatchQuestion", // 31
[API_getLocation ] = "getLocation", // 32 [API_getLocation ] = "getLocation", // 32
[API_sendMyLocation ] = "sendMyLocation", // 33 [API_sendMyLocation ] = "sendMyLocation", // 33
[API_getLastLocation ] = "getLastLocation", // 34 [API_getLastLocation ] = "getLastLocation", // 34
[API_getAvailableRoles ] = "getAvailableRoles", // 35
}; };
/* Web service roles (they do not match internal swad-core roles) */ /* Web service roles (they do not match internal swad-core roles) */
@ -1177,6 +1179,49 @@ int swad__loginBySessionKey (struct soap *soap,
"Session identifier does not exist in database"); "Session identifier does not exist in database");
} }
/*****************************************************************************/
/***************** Get available roles in the current course *****************/
/*****************************************************************************/
/*
With this function, SWADroid is able to check if user can see the button to show the MAC address of the nearest WiFi access point
*/
int swad__getAvailableRoles (struct soap *soap,
char *wsKey, // input
struct swad__getAvailableRolesOutput *getAvailableRolesOut) // output
{
int ReturnCode;
/***** Initializations *****/
API_Set_gSOAP_RuntimeEnv (soap);
Gbl.WebService.Function = API_getAvailableRoles;
/***** Default value returned on error *****/
getAvailableRolesOut->roles = 0; // error
/***** Check web service key *****/
if ((ReturnCode = API_CheckWSKey (wsKey)) != SOAP_OK)
return ReturnCode;
if (Gbl.Usrs.Me.UsrDat.UsrCod < 0) // Web service key does not exist in database
return soap_receiver_fault (soap,
"Bad web service key",
"Web service key does not exist in database");
/***** Get some of my data *****/
if (!API_GetSomeUsrDataFromUsrCod (&Gbl.Usrs.Me.UsrDat,-1L))
return soap_receiver_fault (soap,
"Can not get user's data from database",
"User does not exist in database");
Gbl.Usrs.Me.Logged = true;
Gbl.Usrs.Me.Role.Logged = Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs.Role;
/***** Return available roles *****/
Rol_SetMyRoles ();
getAvailableRolesOut->roles = Gbl.Usrs.Me.Role.Available;
return SOAP_OK;
}
/*****************************************************************************/ /*****************************************************************************/
/*********************** Send a new password by email ************************/ /*********************** Send a new password by email ************************/
/*****************************************************************************/ /*****************************************************************************/
@ -1196,7 +1241,7 @@ int swad__getNewPassword (struct soap *soap,
API_Set_gSOAP_RuntimeEnv (soap); API_Set_gSOAP_RuntimeEnv (soap);
Gbl.WebService.Function = API_getNewPassword; Gbl.WebService.Function = API_getNewPassword;
/***** Default values returned on error *****/ /***** Default value returned on error *****/
getNewPasswordOut->success = 0; // error getNewPasswordOut->success = 0; // error
/***** Get plugin code *****/ /***** Get plugin code *****/

View File

@ -31,7 +31,7 @@
/***************************** Public constants ******************************/ /***************************** Public constants ******************************/
/*****************************************************************************/ /*****************************************************************************/
#define API_NUM_FUNCTIONS 34 #define API_NUM_FUNCTIONS 35
/*****************************************************************************/ /*****************************************************************************/
/******************************* Public types ********************************/ /******************************* Public types ********************************/
@ -75,6 +75,7 @@ typedef enum
API_getLocation = 32, API_getLocation = 32,
API_sendMyLocation = 33, API_sendMyLocation = 33,
API_getLastLocation = 34, API_getLastLocation = 34,
API_getAvailableRoles = 35,
} API_Function_t; } API_Function_t;
/*****************************************************************************/ /*****************************************************************************/

View File

@ -497,9 +497,7 @@ Har
Poblar base de datos: Poblar base de datos:
En Usuarios > Ubicación aparecería un botón pequeño de "Añadir ubicación". En Usuarios > Ubicación aparecería un botón pequeño de "Añadir ubicación".
Se preguntaría a SWAD a través de una función de la API Se preguntaría a SWAD a través de una función de la API getAvailableRoles si el usuario tiene permiso para añadir ubicaciones.
si el usuario tiene permiso para añadir ubicaciones.
Función API checkPermissionToAdminCenter
Si es así, se llamaría a la función: Si es así, se llamaría a la función:
Función API newLocation... Función API newLocation...
@ -519,14 +517,6 @@ dentro siempre de lo que haya guardado en la tabla de ubicaciones limitada a 12/
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Función API
getAvailableRoles
Devuelve el campo Gbl.Usr.Role.Available.
Con esta función SWADroid sabe si al usuario se le puede mostrar un botón para ver la MAC más cercana
*/ */
// TODO: Sugerencia de Jesús García Miranda. En las preguntas de tipo test de elección única (o un nuevo tipo con un nuevo nombre), // TODO: Sugerencia de Jesús García Miranda. En las preguntas de tipo test de elección única (o un nuevo tipo con un nuevo nombre),
@ -569,6 +559,8 @@ ps2pdf source.ps destination.pdf
#define CSS_FILE "swad19.253.css" #define CSS_FILE "swad19.253.css"
#define JS_FILE "swad19.254.js" #define JS_FILE "swad19.254.js"
/* /*
TODO: Juan Miguel Boyero Corral: Este verano ha habido varias personas que han solicitado incluir la funcionalidad del apartado de Actividades en SWADroid. Si lo ves viable podríamos estudiarlo.
TODO: José Martínez Aroza: Si estoy viendo la lista de trabajos de un grupo de estudiantes y pulso F5 (reenviando datos) entonces sale el listado duplicado, y la siguiente vez triplicado, etc. TODO: José Martínez Aroza: Si estoy viendo la lista de trabajos de un grupo de estudiantes y pulso F5 (reenviando datos) entonces sale el listado duplicado, y la siguiente vez triplicado, etc.
TODO: Raymon Moreno Colina: ¿sera posible colocarle a las preguntas distinta ponderación (puntuación)?; porque como docente a veces uno formula en un examen cuestiones que tienen mayor profundidad que otras y considero que no debería ser la misma puntuación para toda las preguntas. TODO: Raymon Moreno Colina: ¿sera posible colocarle a las preguntas distinta ponderación (puntuación)?; porque como docente a veces uno formula en un examen cuestiones que tienen mayor profundidad que otras y considero que no debería ser la misma puntuación para toda las preguntas.
@ -581,8 +573,7 @@ TODO: Que al generar un examen s
TODO: Create module swad_test_result TODO: Create module swad_test_result
"sudo apt install webp" en Ubuntu, y "yum install libwebp libwebp-tools" en CentOS, para decodificar imágenes Web/ug reportado por Javier Fernández Baldomero. "sudo apt install webp" en Ubuntu, y "yum install libwebp libwebp-tools" en CentOS, para decodificar imágenes Web/ug reportado por Javier Fernández Baldomero.
TODO: Escribir la función getAvailableRoles Version 19.260: Aug 23, 2020 New API function getAvailableRoles. (304009 lines)
Version 19.259: Aug 22, 2020 Changes in API function answerMatchQuestion. (303969 lines) Version 19.259: Aug 22, 2020 Changes in API function answerMatchQuestion. (303969 lines)
Version 19.258: Aug 11, 2020 Changes in API functions related to games and matches. (303951 lines) Version 19.258: Aug 11, 2020 Changes in API functions related to games and matches. (303951 lines)
Version 19.257: Jun 24, 2020 New module swad_match_print. (303887 lines) Version 19.257: Jun 24, 2020 New module swad_match_print. (303887 lines)