$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 {
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
$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