?? user.php
字號:
{
jimport( 'joomla.application.helper' );
$path = JApplicationHelper::getPath( 'com_xml', 'com_users' );
}
$this->_params->loadSetupFile($path);
$this->_params->loadINI($data);
}
/**
* Method to get JUser error message
*
* @access public
* @return string The error message
* @since 1.5
*/
function getError() {
return $this->_errorMsg;
}
/**
* Method to bind an associative array of data to a user object
*
* @access public
* @param array $array The associative array to bind to the object
* @return boolean True on success
* @since 1.5
*/
function bind(& $array)
{
jimport('joomla.user.helper');
jimport( 'joomla.utilities.array' );
// Lets 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'] = JUserHelper::genRandomPassword();
$array['password2'] = $array['password'];
}
if ($array['password'] != $array['password2']) {
$this->_setError( JText::_( 'PASSWORD DO NOT MATCH.' ) );
return false;
}
$this->password_clear = JArrayHelper::getValue( $array, 'password', '', 'string' );
$salt = JUserHelper::genRandomPassword(32);
$crypt = JUserHelper::getCryptedPassword($array['password'], $salt);
$array['password'] = $crypt.':'.$salt;
// Set the registration timestamp
$this->set( 'registerDate', date( 'Y-m-d H:i:s' ) );
// Check that username is not greater than 25 characters
$username = $this->get( 'username' );
if ( strlen($username) > 150 )
{
$username = substr( $username, 0, 150 );
$this->set( 'username', $username );
}
// Check that password is not greater than 50 characters
$password = $this->get( 'password' );
if ( strlen($password) > 100 )
{
$password = substr( $password, 0, 100 );
$this->set( 'password', $password );
}
}
else
{
// Updating an existing user
if (!empty($array['password']))
{
if ( $array['password'] != $array['password2'] ) {
$this->_setError( JText::_( 'PASSWORD DO NOT MATCH.' ) );
return false;
}
$this->password_clear = JArrayHelper::getValue( $array, 'password', '', 'string' );
$salt = JUserHelper::genRandomPassword(32);
$crypt = JUserHelper::getCryptedPassword($array['password'], $salt);
$array['password'] = $crypt.':'.$salt;
}
else
{
$array['password'] = $this->password;
}
}
// TODO: this will be deprecated as of the ACL implementation
$db =& JFactory::getDBO(); $gid = array_key_exists('gid', $array ) ? $array['gid'] : $this->get('gid');
$query = 'SELECT name'
. ' FROM #__core_acl_aro_groups'
. ' WHERE id = ' . (int) $gid
;
$db->setQuery( $query );
$this->set( 'usertype', $db->loadResult());
if ( array_key_exists('params', $array) ) { $params = ''; $this->_params->bind($array['params']); if ( is_array($array['params']) ) { $params = $this->_params->toString(); } else { $params = $array['params']; } $this->params = $params; }
// Bind the array
if (!$this->_bind($array, 'aid guest')) {
$this->_setError("Unable to bind array to user object");
return false;
}
// Make sure its an integer
$this->id = (int) $this->id;
return true;
}
/**
* Method to save the JUser object to the database
*
* @access public
* @param boolean $updateOnly Save the object only if not a new user
* @return boolean True on success
* @since 1.5
*/
function save( $updateOnly = false )
{
jimport( 'joomla.utilities.array' );
// Create the user table object
$table =& JTable::getInstance( 'user');
$table->bind(JArrayHelper::fromObject($this, false));
// Check and store the object.
if (!$table->check()) {
$this->_setError($table->getError());
return false;
}
// If user is made a Super Admin group and user is NOT a Super Admin
$my =& JFactory::getUser();
if ( $this->get('gid') == 25 && $my->get('gid') != 25 )
{
// disallow creation of Super Admin by non Super Admin users
$this->_setError(JText::_( 'WARNSUPERADMINCREATE' ));
return false;
}
//are we creating a new user
$isnew = !$this->id;
// If we aren't allowed to create new users return
if ($isnew && $updateOnly) {
return true;
}
// Get the old user
$old = new JUser($this->id);
// Fire the onBeforeStoreUser event.
JPluginHelper::importPlugin( 'user' );
$dispatcher =& JEventDispatcher::getInstance();
$dispatcher->trigger( 'onBeforeStoreUser', array( $old->getPublicProperties(true), $isnew ) );
//Store the user data in the database
if (!$result = $table->store()) {
$this->_setError($table->getError());
}
// Set the id for the JUser object in case we created a new user.
if (empty($this->id)) {
$this->id = $table->get( 'id' );
}
// Fire the onAftereStoreUser event
$dispatcher->trigger( 'onAfterStoreUser', array( $this->getPublicProperties(true), $isnew, $result, $this->getError() ) );
return $result;
}
/**
* Method to delete the JUser object from the database
*
* @access public
* @param boolean $updateOnly Save the object only if not a new user
* @return boolean True on success
* @since 1.5
*/
function delete( )
{
JPluginHelper::importPlugin( 'user' );
//trigger the onBeforeDeleteUser event
$dispatcher =& JEventDispatcher::getInstance();
$dispatcher->trigger( 'onBeforeDeleteUser', array( $this->getPublicProperties(true) ) );
// Create the user table object
$table =& JTable::getInstance( 'user');
$result = false;
if (!$result = $table->delete($this->id)) {
$this->_setError($table->getError());
}
//trigger the onAfterDeleteUser event
$dispatcher->trigger( 'onAfterDeleteUser', array( $this->getPublicProperties(true), $result, $this->getError()) );
return $result;
}
/**
* Method to load a JUser object by user id number
*
* @access public
* @param mixed $identifier The user id of the user to load
* @param string $path Path to a parameters xml file
* @return boolean True on success
* @since 1.5
*/
function load($id)
{
// Create the user table object
$table =& JTable::getInstance( 'user');
// Load the JUserModel object based on the user id or throw a warning.
if(!$table->load($id)) {
JError::raiseWarning( 'SOME_ERROR_CODE', 'JUser::_load: Unable to load user with id: '.$id );
return false;
}
/*
* Set the user parameters using the default xml file. We might want to
* extend this in the future to allow for the ability to have custom
* user parameters, but for right now we'll leave it how it is.
*/
$this->_params->loadINI($table->params);
// Assuming all is well at this point lets bind the data
$this->_bind(JArrayHelper::fromObject($table, false));
return true;
}
/**
* Binds a named array/hash to this object
*
* @access protected
* @param $array mixed Either and associative array or another object
* @param $ignore string Space separated list of fields not to bind
* @return boolean
* @since 1.5
*/
function _bind( $from, $ignore='' )
{
if (!is_array( $from ) && !is_object( $from )) {
$this->_setError(strtolower(get_class( $this ))."::bind failed.");
return false;
}
$fromArray = is_array( $from );
$fromObject = is_object( $from );
if ($fromArray || $fromObject)
{
foreach (get_object_vars($this) as $k => $v)
{
// only bind to public variables
if( substr( $k, 0, 1 ) != '_' )
{
// internal attributes of an object are ignored
if (strpos( $ignore, $k) === false)
{
$ak = $k;
if ($fromArray && isset( $from[$ak] )) {
$this->$k = $from[$ak];
} else if ($fromObject && isset( $from->$ak )) {
$this->$k = $from->$ak;
}
}
}
}
}
else
{
return false;
}
return true;
}
/**
* Method to set an error message
*
* @access private
* @param string $msg The message to append to the error message
* @return void
* @since 1.5
*/
function _setError( $msg )
{
$this->_errorMsg .= $msg."\n";
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -