Back to User class

Method bind

public bool
bind
(mixed &$array)
Method to bind an associative array of data to a user object
Parameters
  • array & $array The associative array to bind to the object
Returns
  • bool True on success
Since
  • 1.7.0
Class: User
Project: Joomla

Method bind - Source code

/**
 * Method to bind an associative array of data to a user object
 *
 * @param   array  &$array  The associative array to bind to the object
 *
 * @return  boolean  True on success
 *
 * @since   1.7.0
 */
public function bind(&$array)
{
    // Let's check to see if the user is new or not
    if (empty($this->id)) {
        // Check the password and create the crypted password
        if (empty($array['password'])) {
            $array['password'] = UserHelper::genRandomPassword(32);
            $array['password2'] = $array['password'];
        }
        // Not all controllers check the password, although they should.
        // Hence this code is required:
        if (isset($array['password2']) && $array['password'] != $array['password2']) {
            Factory::getApplication()->enqueueMessage(Text::_('JLIB_USER_ERROR_PASSWORD_NOT_MATCH'), 'error');
            return false;
        }
        $this->password_clear = ArrayHelper::getValue($array, 'password', '', 'string');
        $array['password'] = UserHelper::hashPassword($array['password']);
        // Set the registration timestamp
        $this->set('registerDate', Factory::getDate()->toSql());
    } else {
        // Updating an existing user
        if (!empty($array['password'])) {
            if ($array['password'] != $array['password2']) {
                $this->setError(Text::_('JLIB_USER_ERROR_PASSWORD_NOT_MATCH'));
                return false;
            }
            $this->password_clear = ArrayHelper::getValue($array, 'password', '', 'string');
            // Check if the user is reusing the current password if required to reset their password
            if ($this->requireReset == 1 && UserHelper::verifyPassword($this->password_clear, $this->password)) {
                $this->setError(Text::_('JLIB_USER_ERROR_CANNOT_REUSE_PASSWORD'));
                return false;
            }
            $array['password'] = UserHelper::hashPassword($array['password']);
            // Reset the change password flag
            $array['requireReset'] = 0;
        } else {
            $array['password'] = $this->password;
        }
        // Prevent updating internal fields
        unset($array['registerDate']);
        unset($array['lastvisitDate']);
        unset($array['lastResetTime']);
        unset($array['resetCount']);
    }
    if (\array_key_exists('params', $array)) {
        $this->_params->loadArray($array['params']);
        if (\is_array($array['params'])) {
            $params = (string) $this->_params;
        } else {
            $params = $array['params'];
        }
        $this->params = $params;
    }
    // Bind the array
    if (!$this->setProperties($array)) {
        $this->setError(Text::_('JLIB_USER_ERROR_BIND_ARRAY'));
        return false;
    }
    // Make sure its an integer
    $this->id = (int) $this->id;
    return true;
}