⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 user.php

📁 Joomla15 - 最新开源CMS
💻 PHP
📖 第 1 页 / 共 2 页
字号:
		{
			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 + -