예제 #1
0
 $invalid = null;
 $success = null;
 //get parameters
 $paramUsername = param('username');
 $paramActivate = param('activation');
 $paramResendActivate = param('resendActivation');
 //try to get user
 $user = Auth::loadUser($paramUsername);
 //if user is found
 if ($user) {
     //if URI activation hash is correct and has not expired
     if ($user->activation() == $paramActivate && time() - $user->epoch() < c::get('links.time.expiration')) {
         //get session folder (session name is stored in user's data)
         $testSessionFolder = $pages->find(implode(DS, array(c::get('sessions.folder'), $user->session())));
         //istantiate new testSession object
         $testSession = new testSession($testSessionFolder, $user->username());
         //*******************************************************************************************************************
         //create user's results file in results folder and store user's data in it, stripping off private infos
         $createResultsFile = $testSession->userSubscribetoSession($user, array('password', 'activation', 'epoch', 'reset'));
         //********************************************************************************************************************
         //if user's results file was correctly created
         if ($createResultsFile) {
             //update user's account activation hash to empty string
             $userUpdatedData = $user->update(array('activation' => ''));
             //get new user's account activation hash
             $updatedActivate = $userUpdatedData->activation();
             //if activation was successful (i.e., user's activation field is empty)
             if (empty($updatedActivate)) {
                 //set success message
                 $success['Account'] = l('activation.success.activate');
             } else {
예제 #2
0
return function ($site, $pages, $page) {
    //set variables
    $url = null;
    $data = null;
    $status = null;
    //if page is accessed thorugh ajax
    if (r::ajax()) {
        //store sanitized $_POST variables
        $currentTestData = r::postData(array('test', 'user', 'data'));
        //get logged user (if any)
        if ($user = Auth::loggedUser()) {
            //get user's session page
            $userSession = site()->find(implode(DS, array(c::get('sessions.folder'), $user->session())));
            //istantiate testSession object
            $tSession = new testSession($userSession, $user->username());
            //get user's current session status
            $userSessionStatus = $user->status();
            //if ajaxed $currentTestData equals user's current session status
            if (str::lower($currentTestData['test']) == str::lower($userSessionStatus)) {
                //if it was possitble to update user's results file (by appending $currentTestData)
                if (f::append($tSession->getUserResultsFile(), PHP_EOL . a::json($currentTestData))) {
                    //set updated user's session status to next avalibale test
                    $updatedStatus = $tSession->getNextTest($currentTestData['test']);
                    //if there aren't tests available, set user's session statuts to completed session
                    if (!$updatedStatus) {
                        $updatedStatus = c::get('session.status.completed');
                    }
                    //update user's session status to next avalibale test
                    $user->update(array('status' => $updatedStatus));
                    //return to tests page
예제 #3
0
 $paramEmail = $data['email'];
 //default user's group membership upon registration
 $paramRole = c::get('participant.role.default');
 //activation hash feature can be switched on/off
 $paramActivate = c::get('account.activation') ? Auth::generateSha1Hash($paramEmail) : '';
 //reset hash
 $paramReset = Auth::generateSha1Hash($paramUsername);
 //initial session user is subscribed to
 $paramSession = $data['session'];
 //*******************************************************************************************
 //get session that user has indicated
 $testSessionFolder = $pages->find(implode(DS, array(c::get('sessions.folder'), $paramSession)));
 //if session exists
 if ($testSessionFolder) {
     //istantiate new session_object
     $testSession = new testSession($testSessionFolder, $paramUsername);
     //if session is open (i.e., user may subscribe to it)
     //if session's results folder exists or may be succesfully created
     //if max number of participants allowed in session has not been reached
     //if user didn't subscribe to this session before
     if ($testSession->isSessionOpen() && $testSession->hasSessionResultsFolder() && $testSession->isSessionNotFull() && !$testSession->isUserAlreadyInSession()) {
         //get first test of the current session
         $paramFirstTest = $testSession->getFirstTest();
         //store $user's data into $userData array
         $userData = array('username' => $paramUsername, 'password' => $paramPassword, 'email' => $paramEmail, 'role' => $paramRole, 'activation' => $paramActivate, 'reset' => $paramReset, 'epoch' => time(), 'session' => $paramSession, 'status' => $paramFirstTest, 'language' => site()->language()->code());
         //-------------------------------------------------------------------------------------
         //create user
         //-------------------------------------------------------------------------------------
         //if user doens't exist in the system
         if (!Auth::checkUser($userData['username'])) {
             //try to create user