user.php
来自「国外免费开源的内容管理系统」· PHP 代码 · 共 615 行 · 第 1/2 页
PHP
615 行
if($loadsetupfile)
{
$type = str_replace(' ', '_', strtolower($this->usertype));
$file = $parampath.DS.$type.'.xml';
if(!file_exists($file)) {
$file = $parampath.DS.'user.xml';
}
$this->_params->loadSetupFile($file);
}
return $this->_params;
}
/**
* Method to get the user parameters
*
* @access public
* @param object The user parameters object
* @since 1.5
*/
function setParameters($params )
{
$this->_params = $params;
}
/**
* Method to get the user table object
*
* This function uses a static variable to store the table name of the user table to
* it instantiates. You can call this function statically to set the table name if
* needed.
*
* @access public
* @param string The user table name to be used
* @param string The user table prefix to be used
* @return object The user table object
* @since 1.5
*/
function &getTable( $type = null, $prefix = 'JTable' )
{
static $tabletype;
//Set the default tabletype;
if(!isset($tabletype)) {
$tabletype['name'] = 'user';
$tabletype['prefix'] = 'JTable';
}
//Set a custom table type is defined
if(isset($type)) {
$tabletype['name'] = $type;
$tabletype['prefix'] = $prefix;
}
// Create the user table object
$table =& JTable::getInstance( $tabletype['name'], $tabletype['prefix'] );
return $table;
}
/**
* 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');
// 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
$now =& JFactory::getDate();
$this->set( 'registerDate', $now->toMySQL() );
// 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->setProperties($array)) {
$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 )
{
// Create the user table object
$table =& $this->getTable();
$this->params = $this->_params->toString();
$table->bind($this->getProperties());
// 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;
}
// If user is made an Admin group and user is NOT a Super Admin
if ($this->get('gid') == 24 && !($my->get('gid') == 25 || ($this->get('id') == $my->id && $my->get('gid') == 24)))
{
// disallow creation of 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 =& JDispatcher::getInstance();
$dispatcher->trigger( 'onBeforeStoreUser', array( $old->getProperties(), $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->getProperties(), $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 =& JDispatcher::getInstance();
$dispatcher->trigger( 'onBeforeDeleteUser', array( $this->getProperties() ) );
// Create the user table object
$table =& $this->getTable();
$result = false;
if (!$result = $table->delete($this->id)) {
$this->setError($table->getError());
}
//trigger the onAfterDeleteUser event
$dispatcher->trigger( 'onAfterDeleteUser', array( $this->getProperties(), $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 =& $this->getTable();
// 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->setProperties($table->getProperties());
return true;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?