2121record_learnr <- function (tutorial_id , tutorial_version , user_id , event , data ) {
2222 # Arguments are imposed by learnr. Further arguments passed through options
2323 # or environment variables
24-
25-
26- if (! missing(user_id ))
27- message(" User ID is:" , user_id )
28- # if (!missing(data))
29- # print(data)
30- # Does not work !message("User is:", session$user)
31-
3224 url <- Sys.getenv(" MONGO_URL" )
3325 url.server <- Sys.getenv(" MONGO_URL_SERVER" )
3426 db <- Sys.getenv(" MONGO_BASE" )
@@ -40,10 +32,10 @@ record_learnr <- function(tutorial_id, tutorial_version, user_id, event, data) {
4032 bds_file <- file.path(bds_dir , " learnr_events" )
4133 debug <- (Sys.getenv(" LEARNITDOWN_DEBUG" , 0 ) != 0 )
4234
43- user_info <- getOption( " learnitdown_learnr_user " )
44- if ( ! missing( user_id ) && user_id != ' rstudio-connect ' &&
45- (is.null(user_info ) || is.null( user_info $ login ) ))
46- user_info <- list ( login = user_id )
35+ if ( ! missing( user_id ) )
36+ user_info <- getOption( " learnitdown_all_learnr_users " , list ())[ user_id ]
37+ if (is.null(user_info ))
38+ user_info <- getOption( " learnitdown_learnr_user " )
4739 if (is.null(user_info ) || is.null(user_info $ login )) # No login => no records!
4840 return ()
4941
@@ -576,24 +568,10 @@ learnitdownLearnrServer <- function(input, output, session,
576568 }
577569 # No because it change it for all users!
578570 # options(learnitdown_learnr_user = user_info)
579- if (is.environment(session $ request )) {
580- tuto_user_id <- session $ request $ tutorial.user_id
581- if (is.null(tuto_user_id )) {
582- message(" Session user_id is not defined" )
583- } else {
584- message(" Session user_id: " , tuto_user_id )
585- }
586-
587- do.call(" unlockBinding" , list (" request" , session ))
588- session $ request [[" tutorial.user_id" ]] <- user_info $ login
589- do.call(" lockBinding" , list (" request" , session ))
590- # session$request$tutorial.user_id <- user_info$login
591- message(" Session user_id changed to: " , user_info $ login )
592-
593- # TODO: a mechanism to store more user data in an option list
594- } else {# Set used data globally for this process
595- options(learnitdown_learnr_user = user_info )
596- }
571+ # We use another option that stores a list with all connected users data
572+ all_users <- getOption(" learnitdown_all_learnr_users" , list ())
573+ all_users [user_info $ login ] <- user_info
574+ options(learnitdown_all_learnr_users = all_users )
597575 } else {# User data already available from sign_in
598576 user_info <- getOption(" learnitdown_learnr_user" )
599577 }
@@ -602,7 +580,6 @@ learnitdownLearnrServer <- function(input, output, session,
602580 } else {
603581 message(" Recording enabled for " , user_info $ login )
604582 }
605- # output$login <- renderText(getOption("learnitdown_learnr_user")$login)
606583 output $ login <- renderText(user_info $ login )
607584 output $ error <- renderText(as.character(record_learnr(data = NULL )))
608585 }))
0 commit comments