function loginUser($username) { global $database, $form, $lang; $userinfo = $database->getUserInfo($username); if (!$userinfo) { return false; } $active = $database->confirmLenderActive($userinfo['userid']); if ($userinfo['userlevel'] != BORROWER_LEVEL) { if (!$userinfo['emailVerified']) { $form->setError("username", $lang['error']['not_verified_email']); } } /* Don't allow inactive lenders to login */ if ($userinfo['userlevel'] == LENDER_LEVEL && !$active) { $form->setError("username", $lang['error']['inactive_account']); } if ($form->num_errors > 0) { return false; } /* Register session variables */ $this->userinfo = $userinfo; $this->username = $_SESSION['username'] = $this->userinfo['username']; $this->fullname = $this->userinfo['name']; $this->userid = $_SESSION['userid'] = $this->userinfo['userid']; $this->userlevel = $this->userinfo['userlevel']; $this->usersublevel = $_SESSION['sublevel'] = $this->userinfo['sublevel']; $language = $userinfo['lang']; if ($language != 'en') { $_SESSION['language'] = $language; } /* Insert userid into database and update active users table */ if ($this->usersublevel != READ_ONLY_LEVEL) { $database->setLoginTime($this->userid, $this->time); } /**** Integration with shift science on date 24-12-2013******/ $this->getLoginSiftData('login_event', $this->userid); if ($this->userlevel == LENDER_LEVEL && !$userinfo['mixpanel_aliased']) { $distinct_id = Mixpanel::getDistinctId(); $isUserId = $database->isUserId($distinct_id); if (!$isUserId) { Mixpanel::alias($this->userid); } $database->updateMixpanelAliased($this->userid); } Mixpanel::identify($this->userid, array('username' => $this->username, 'userlevel' => $this->userlevel_to_string($this->userlevel), 'name' => $userinfo['name'], 'email' => $userinfo['email'])); if ($this->userlevel == LENDER_LEVEL) { $created = $userinfo['regdate']; $last_login = $this->time; Mixpanel::peopleSet(array('$first_name' => $userinfo['firstname'], '$last_name' => $userinfo['lastname'], '$username' => $userinfo['username'], '$email' => $userinfo['email'], '$created' => date('D, d M Y H:i:s Z', $created), '$last_login' => date('D, d M Y H:i:s Z', $last_login), 'userlevel' => $this->userlevel_to_string($this->userlevel), 'user_id' => $this->userid)); } Mixpanel::track('Logged in'); return $userinfo; }