#define Cfg_EXTERNAL_LOGIN_CLIENT_COMMAND "" // Client of the web service called by this CGI
#define Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME ""
#define Cfg_EXTERNAL_LOGIN_SERVICE_FULL_NAME ""
#define Cfg_EXTERNAL_LOGIN_URL ""
#define Cfg_NAME_PARAM_IMPORTED_USR_ID ""
#define Cfg_NAME_PARAM_IMPORTED_SESSION_ID ""
#define Cfg_MAX_LENGTH_IMPORTED_USR_ID 255 // The same size as that of column ImportedUsrId in table imported_sessions
#define Cfg_MAX_LENGTH_IMPORTED_SESSION_ID 255 // The same size as that of column ImportedSessionId in table imported_sessions
#define Cfg_TIME_TO_SEND_PENDING_NOTIF ((time_t)(30UL*60UL)) // After these seconds after first pending notification, all the pending notifications are sent by e-mail
#define Cfg_GOOGLE_ANALYTICS ""
#elif defined OPENSWAD_ORG // openswad.org ************************
#define Cfg_EXTERNAL_LOGIN_CLIENT_COMMAND "" // Client of the web service called by this CGI
#define Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME ""
#define Cfg_EXTERNAL_LOGIN_SERVICE_FULL_NAME ""
#define Cfg_EXTERNAL_LOGIN_URL ""
#define Cfg_NAME_PARAM_IMPORTED_USR_ID ""
#define Cfg_NAME_PARAM_IMPORTED_SESSION_ID ""
#define Cfg_MAX_LENGTH_IMPORTED_USR_ID 255 // The same size as that of column ImportedUsrId in table imported_sessions
#define Cfg_MAX_LENGTH_IMPORTED_SESSION_ID 255 // The same size as that of column ImportedSessionId in table imported_sessions
#define Cfg_TIME_TO_SEND_PENDING_NOTIF ((time_t)(30UL*60UL)) // After these seconds after first pending notification, all the pending notifications are sent by e-mail
#define Cfg_MAX_LENGTH_IMPORTED_USR_ID 255 // The same size as that of column ImportedUsrId in table imported_sessions
#define Cfg_MAX_LENGTH_IMPORTED_SESSION_ID 255 // The same size as that of column ImportedSessionId in table imported_sessions
#define Cfg_TIME_TO_SEND_PENDING_NOTIF ((time_t)(60UL*60UL)) // After these seconds after first pending notification, all the pending notifications are sent by e-mail
#define Cfg_EXTERNAL_LOGIN_CLIENT_COMMAND "" // Client of the web service called by this CGI
#define Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME ""
#define Cfg_EXTERNAL_LOGIN_SERVICE_FULL_NAME ""
#define Cfg_EXTERNAL_LOGIN_URL ""
#define Cfg_NAME_PARAM_IMPORTED_USR_ID ""
#define Cfg_NAME_PARAM_IMPORTED_SESSION_ID ""
#define Cfg_MAX_LENGTH_IMPORTED_USR_ID 255 // The same size as that of column ImportedUsrId in table imported_sessions
#define Cfg_MAX_LENGTH_IMPORTED_SESSION_ID 255 // The same size as that of column ImportedSessionId in table imported_sessions
#define Cfg_TIME_TO_SEND_PENDING_NOTIF ((time_t)(30UL*60UL)) // After these seconds after first pending notification, all the pending notifications are sent by e-mail
#define Cfg_GOOGLE_ANALYTICS ""
#endif
/* Database */
#define Cfg_DATABASE_DBNAME "swad" // Database name
#define Cfg_DATABASE_USER "swad" // Database user
/* Email */
#define Cfg_AUTOMATIC_EMAIL_PASSWORD DONT_PUBLISH_SMTP_PASSWORD // E-mail user's password for automatic e-mails
#define Cfg_MAX_USRS_IN_LIST 20000 // If the number of users in a list is greater than this, don't show the list
#define Cfg_MIN_NUM_USERS_TO_CONFIRM_SHOW_BIG_LIST 500 // If the number of users in a list is greater than this, ask me for confirmation before showing the list
#define Cfg_MIN_PHOTOS_TO_COMPUTE_AVERAGE 10 // If the number of students with photo in a degree is less than this, don't show average photo of the degree
#define Cfg_MAX_RECIPIENTS 250 // A student can not send a message to more than this number of recipients
#define Cfg_MAX_CONNECTED_SHOWN 15 // Show (in right column) only these connected users with more recent activity
/* Courses */
#define Cfg_MIN_NUM_COURSES_TO_CONFIRM_SHOW_BIG_LIST 500 // If the number of courses in a list is greater than this, ask me for confirmation before showing the list
#define Cfg_LOG_START_MONTH 01 // Month where the log started in the database
#define Cfg_LOG_START_DAY 01 // Day where the log started in the database
#define Cfg_MIN_TIME_BETWEEN_2_CLICKS_FROM_THE_SAME_IP 1 // In seconds (>= 1, recommended 1)
#define Cfg_DAYS_IN_RECENT_LOG 8 // Only accesses in these last days + 1 are stored in recent log.
// Important!!! Must be 1 <= Cfg_DAYS_IN_RECENT_LOG <= 29
#define Cfg_TIMES_PER_SECOND_REFRESH_CONNECTED 3 // Execute this CGI to refresh connected users about these times per second
#define Cfg_MIN_TIME_TO_REFRESH_CONNECTED ((time_t)( 30UL)) // Refresh period of connected users in seconds
#define Cfg_MAX_TIME_TO_REFRESH_CONNECTED ((time_t)( 15UL*60UL)) // Refresh period of connected users in seconds
#define Cfg_TIME_TO_CLOSE_SESSION_FROM_LAST_REFRESH ((time_t)(Cfg_MAX_TIME_TO_REFRESH_CONNECTED * 2)) // After these seconds without refresh of connected users, session is closed
#define Cfg_TIME_TO_CLOSE_SESSION_FROM_LAST_CLICK ((time_t)( 2*60UL*60UL)) // After these seconds without user's clicks, session is closed
#define Cfg_TIME_TO_REFRESH_LAST_CLICKS ((time_t)( 500UL)) // Refresh period of last clicks in miliseconds
#define Cfg_TIME_TO_CHANGE_BANNER ((time_t)( 5UL*60UL)) // After these seconds, change banner
#define Cfg_NUMBER_OF_BANNERS 1 // Number of banners to show simultaneously
#define Cfg_TIME_TO_DELETE_Svc_KEY ((time_t)( 7UL*24UL*60UL*60UL)) // After these seconds, a web service key is removed
#define Cfg_TIME_TO_DELETE_XHTML_OUTPUT ((time_t)( 30UL*60UL)) // Remove the XHTML output files older than these seconds
#define Cfg_TIME_TO_ABORT_FILE_UPLOAD ((time_t)( 55UL*60UL)) // After these seconds uploading data, abort upload.
#define Cfg_TIME_TO_DELETE_BROWSER_TMP_FILES ((time_t)( 2UL*60UL*60UL)) // Temporary files are deleted after these seconds
#define Cfg_TIME_TO_DELETE_BROWSER_EXPANDED_FOLDERS ((time_t)( 7UL*24UL*60UL*60UL)) // Past these seconds, remove expired expanded folders
#define Cfg_TIME_TO_DELETE_BROWSER_CLIPBOARD ((time_t)( 15UL*60UL)) // Paths older than these seconds are removed from clipboard
#define Cfg_TIME_TO_DELETE_BROWSER_ZIP_FILES ((time_t)( 2UL*60UL*60UL)) // Temporary zip files are deleted after these seconds
#define Cfg_TIME_TO_DELETE_MARKS_TMP_FILES ((time_t)( 2UL*60UL*60UL)) // Temporary files with students' marks are deleted after these seconds
#define Cfg_TIME_TO_DELETE_PARAMS_TO_COMMANDS ((time_t)( 15UL*60UL)) // Temporary files with params to commands are deleted after these seconds
#define Cfg_TIME_TO_DELETE_PHOTOS_TMP_FILES ((time_t)( 1UL*60UL*60UL)) // Temporary files related to photos after these seconds
#define Cfg_TIME_TO_DELETE_TEST_TMP_FILES ((time_t)( 1UL*60UL*60UL)) // Temporary files related to imported test questions after these seconds
#define Cfg_TIME_TO_DELETE_THREAD_CLIPBOARD ((time_t)( 15UL*60UL)) // Threads older than these seconds are removed from clipboard
#define Cfg_TIME_TO_DELETE_OLD_PENDING_PASSWORDS ((time_t)( 24UL*60UL*60UL)) // Past these seconds, remove expired pending passwords
#define Cfg_TIME_TO_DELETE_OLD_PENDING_EMAILS ((time_t)( 24UL*60UL*60UL)) // Past these seconds, remove expired pending emails
#define Cfg_TIME_TO_DELETE_IP_PREFS ((time_t)( 7UL*24UL*60UL*60UL)) // Past these seconds, remove expired IP preferences
#define Cfg_TIME_TO_DELETE_OLD_NOTIF ((time_t)( 30UL*24UL*60UL*60UL)) // Past these seconds, remove expired notifications
#define Cfg_MIN_TIME_TO_RECOMPUTE_AVG_PHOTO ((time_t)( 12UL*60UL*60UL)) // After these seconds, users can recompute the average photos of a degree