Backend\Core\Engine\User::loadUserByEmail PHP Method

loadUserByEmail() public method

Load a user by his e-mail adress
public loadUserByEmail ( string $email )
$email string The email of the user to load.
    public function loadUserByEmail($email)
    {
        $email = (string) $email;
        $db = BackendModel::getContainer()->get('database');
        // get user-data
        $userData = (array) $db->getRecord('SELECT u.id, u.email, u.is_god, us.session_id, us.secret_key, UNIX_TIMESTAMP(us.date) AS date
             FROM users AS u
             LEFT OUTER JOIN users_sessions AS us ON u.id = us.user_id AND us.session_id = ?
             WHERE u.email = ?
             LIMIT 1', array(\SpoonSession::getSessionId(), $email));
        // if there is no data we have to destroy this object, I know this isn't a realistic situation
        if (empty($userData)) {
            throw new Exception('user (' . $email . ') can\'t be loaded.');
        }
        // set properties
        $this->setUserId($userData['id']);
        $this->setEmail($userData['email']);
        $this->setSessionId($userData['session_id']);
        $this->setSecretKey($userData['secret_key']);
        $this->setLastloggedInDate($userData['date']);
        $this->isAuthenticated = true;
        $this->isGod = $userData['is_god'] == 'Y';
        $this->loadGroups($userData['id']);
        // get settings
        $settings = (array) $db->getPairs('SELECT us.name, us.value
             FROM users_settings AS us
             INNER JOIN users AS u ON us.user_id = u.id
             WHERE u.email = ?', array($email));
        // loop settings and store them in the object
        foreach ($settings as $key => $value) {
            $this->settings[$key] = unserialize($value);
        }
        // nickname available?
        if (!isset($this->settings['nickname']) || $this->settings['nickname'] == '') {
            $this->setSetting('nickname', $this->settings['name'] . ' ' . $this->settings['surname']);
        }
    }