// swad_agenda.h: user's agenda (personal organizer) #ifndef _SWAD_AGD #define _SWAD_AGD /* SWAD (Shared Workspace At a Distance in Spanish), is a web platform developed at the University of Granada (Spain), and used to support university teaching. This file is part of SWAD core. Copyright (C) 1999-2019 Antonio Caņas Vargas This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ /*****************************************************************************/ /********************************* Headers ***********************************/ /*****************************************************************************/ #include "swad_date.h" #include "swad_user.h" /*****************************************************************************/ /************************** Public types and constants ***********************/ /*****************************************************************************/ #define Agd_MAX_CHARS_EVENT (128 - 1) // 127 #define Agd_MAX_BYTES_EVENT ((Agd_MAX_CHARS_EVENT + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 #define Agd_MAX_CHARS_LOCATION (128 - 1) // 127 #define Agd_MAX_BYTES_LOCATION ((Agd_MAX_CHARS_LOCATION + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 #define Agd_NUM_DATES 2 typedef enum { Agd_START_TIME = 0, Agd_END_TIME = 1, } Agd_StartOrEndTime_t; struct AgendaEvent { long AgdCod; long UsrCod; bool Public; bool Hidden; time_t TimeUTC[Agd_NUM_DATES]; Dat_TimeStatus_t TimeStatus; char Event[Agd_MAX_BYTES_EVENT + 1]; char Location[Agd_MAX_BYTES_LOCATION + 1]; }; typedef enum { Agd_PAST___EVENTS = 0, // Events until yesterday (included) Agd_FUTURE_EVENTS = 1, // Events from today (included) onwards } Agd_Past__FutureEvents_t; #define Agd_DEFAULT_PAST___EVENTS (0 << Agd_PAST___EVENTS) // off #define Agd_DEFAULT_FUTURE_EVENTS (1 << Agd_FUTURE_EVENTS) // on typedef enum { Agd_PRIVAT_EVENTS = 0, Agd_PUBLIC_EVENTS = 1, } Agd_PrivatPublicEvents_t; #define Agd_DEFAULT_PRIVAT_EVENTS (1 << Agd_PRIVAT_EVENTS) // on #define Agd_DEFAULT_PUBLIC_EVENTS (1 << Agd_PUBLIC_EVENTS) // on typedef enum { Agd_HIDDEN_EVENTS = 0, Agd_VISIBL_EVENTS = 1, } Agd_HiddenVisiblEvents_t; #define Agd_DEFAULT_HIDDEN_EVENTS (0 << Agd_HIDDEN_EVENTS) // off #define Agd_DEFAULT_VISIBL_EVENTS (1 << Agd_VISIBL_EVENTS) // on #define Agd_NUM_ORDERS 2 typedef enum { Agd_ORDER_BY_START_DATE = 0, Agd_ORDER_BY_END_DATE = 1, } Agd_Order_t; #define Agd_ORDER_DEFAULT Agd_ORDER_BY_START_DATE /*****************************************************************************/ /***************************** Public prototypes *****************************/ /*****************************************************************************/ void Agd_PutFormLogInToShowUsrAgenda (void); void Agd_PutParamAgd (void); void Agd_ShowMyAgenda (void); void Agd_ShowUsrAgenda (void); void Agd_ShowOtherAgendaAfterLogIn (void); void Agd_RequestCreatOrEditEvent (void); void Agd_PutParamsMyAgenda (unsigned Past__FutureEvents, unsigned PrivatPublicEvents, unsigned HiddenVisiblEvents, unsigned NumPage, long AgdCodToEdit); void Agd_PutHiddenParamEventsOrder (void); void Agd_FreeListEvents (void); long Agd_GetParamAgdCod (void); void Agd_AskRemEvent (void); void Agd_RemoveEvent (void); void Agd_HideEvent (void); void Agd_UnhideEvent (void); void Agd_MakeEventPrivate (void); void Agd_MakeEventPublic (void); void Agd_RecFormEvent (void); void Agd_RemoveUsrEvents (long UsrCod); unsigned Agd_GetNumEventsFromUsr (long UsrCod); unsigned Agd_GetNumUsrsWithEvents (Hie_Level_t Scope); unsigned Agd_GetNumEvents (Hie_Level_t Scope); void Agd_PrintAgdQRCode (void); #endif