?
Path : /home/admin/domains/happytokorea.com/public_html_bk/test3/libraries/joomla/database/table/ |
Current File : /home/admin/domains/happytokorea.com/public_html_bk/test3/libraries/joomla/database/table/user.php |
<?php /** * @version $Id: user.php 14401 2010-01-26 14:10:00Z louis $ * @package Joomla.Framework * @subpackage Table * @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved. * @license GNU/GPL, see LICENSE.php * Joomla! is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See COPYRIGHT.php for copyright notices and details. */ // Check to ensure this file is within the rest of the framework defined('JPATH_BASE') or die(); /** * Users table * * @package Joomla.Framework * @subpackage Table * @since 1.0 */ class JTableUser extends JTable { /** * Unique id * * @var int */ var $id = null; /** * The users real name (or nickname) * * @var string */ var $name = null; /** * The login name * * @var string */ var $username = null; /** * The email * * @var string */ var $email = null; /** * MD5 encrypted password * * @var string */ var $password = null; /** * Description * * @var string */ var $usertype = null; /** * Description * * @var int */ var $block = null; /** * Description * * @var int */ var $sendEmail = null; /** * The group id number * * @var int */ var $gid = null; /** * Description * * @var datetime */ var $registerDate = null; /** * Description * * @var datetime */ var $lastvisitDate = null; /** * Description * * @var string activation hash */ var $activation = null; /** * Description * * @var string */ var $params = null; /** * @param database A database connector object */ function __construct( &$db ) { parent::__construct( '#__users', 'id', $db ); //initialise $this->id = 0; $this->gid = 0; $this->sendEmail = 0; } /** * Validation and filtering * * @return boolean True is satisfactory */ function check() { jimport('joomla.mail.helper'); // Validate user information if (trim( $this->name ) == '') { $this->setError( JText::_( 'Please enter your name.' ) ); return false; } if (trim( $this->username ) == '') { $this->setError( JText::_( 'Please enter a user name.') ); return false; } if (preg_match( "#[<>\"'%;()&]#i", $this->username) || strlen(utf8_decode($this->username )) < 2) { $this->setError( JText::sprintf( 'VALID_AZ09', JText::_( 'Username' ), 2 ) ); return false; } if ((trim($this->email) == "") || ! JMailHelper::isEmailAddress($this->email) ) { $this->setError( JText::_( 'WARNREG_MAIL' ) ); return false; } if ($this->registerDate == null) { // Set the registration timestamp $now =& JFactory::getDate(); $this->registerDate = $now->toMySQL(); } // check for existing username $query = 'SELECT id' . ' FROM #__users ' . ' WHERE username = ' . $this->_db->Quote($this->username) . ' AND id != '. (int) $this->id; ; $this->_db->setQuery( $query ); $xid = intval( $this->_db->loadResult() ); if ($xid && $xid != intval( $this->id )) { $this->setError( JText::_('WARNREG_INUSE')); return false; } // check for existing email $query = 'SELECT id' . ' FROM #__users ' . ' WHERE email = '. $this->_db->Quote($this->email) . ' AND id != '. (int) $this->id ; $this->_db->setQuery( $query ); $xid = intval( $this->_db->loadResult() ); if ($xid && $xid != intval( $this->id )) { $this->setError( JText::_( 'WARNREG_EMAIL_INUSE' ) ); return false; } return true; } function store( $updateNulls=false ) { $acl =& JFactory::getACL(); $section_value = 'users'; $k = $this->_tbl_key; $key = $this->$k; if ($key) { // existing record $ret = $this->_db->updateObject( $this->_tbl, $this, $this->_tbl_key, $updateNulls ); // syncronise ACL // single group handled at the moment // trivial to expand to multiple groups $object_id = $acl->get_object_id( $section_value, $this->$k, 'ARO' ); $groups = $acl->get_object_groups( $object_id, 'ARO' ); $acl->del_group_object( $groups[0], $section_value, $this->$k, 'ARO' ); $acl->add_group_object( $this->gid, $section_value, $this->$k, 'ARO' ); $acl->edit_object( $object_id, $section_value, $this->_db->getEscaped( $this->name ), $this->$k, 0, 0, 'ARO' ); } else { // new record $ret = $this->_db->insertObject( $this->_tbl, $this, $this->_tbl_key ); // syncronise ACL $acl->add_object( $section_value, $this->name, $this->$k, null, null, 'ARO' ); $acl->add_group_object( $this->gid, $section_value, $this->$k, 'ARO' ); } if( !$ret ) { $this->setError( strtolower(get_class( $this ))."::". JText::_( 'store failed' ) ."<br />" . $this->_db->getErrorMsg() ); return false; } else { return true; } } function delete( $oid=null ) { $acl =& JFactory::getACL(); $k = $this->_tbl_key; if ($oid) { $this->$k = intval( $oid ); } $aro_id = $acl->get_object_id( 'users', $this->$k, 'ARO' ); $acl->del_object( $aro_id, 'ARO', true ); $query = 'DELETE FROM '. $this->_tbl . ' WHERE '. $this->_tbl_key .' = '. (int) $this->$k ; $this->_db->setQuery( $query ); if ($this->_db->query()) { // cleanup related data // private messaging $query = 'DELETE FROM #__messages_cfg' . ' WHERE user_id = '. (int) $this->$k ; $this->_db->setQuery( $query ); if (!$this->_db->query()) { $this->setError( $this->_db->getErrorMsg() ); return false; } $query = 'DELETE FROM #__messages' . ' WHERE user_id_to = '. (int) $this->$k ; $this->_db->setQuery( $query ); if (!$this->_db->query()) { $this->setError( $this->_db->getErrorMsg() ); return false; } return true; } else { $this->setError( $this->_db->getErrorMsg() ); return false; } } /** * Updates last visit time of user * * @param int The timestamp, defaults to 'now' * @return boolean False if an error occurs */ function setLastVisit( $timeStamp=null, $id=null ) { // check for User ID if (is_null( $id )) { if (isset( $this )) { $id = $this->id; } else { // do not translate jexit( 'WARNMOSUSER' ); } } // if no timestamp value is passed to functon, than current time is used $date =& JFactory::getDate($timeStamp); // updates user lastvistdate field with date and time $query = 'UPDATE '. $this->_tbl . ' SET lastvisitDate = '.$this->_db->Quote($date->toMySQL()) . ' WHERE id = '. (int) $id ; $this->_db->setQuery( $query ); if (!$this->_db->query()) { $this->setError( $this->_db->getErrorMsg() ); return false; } return true; } /** * Overloaded bind function * * @access public * @param array $hash named array * @return null|string null is operation was satisfactory, otherwise returns an error * @see JTable:bind * @since 1.5 */ function bind($array, $ignore = '') { if (key_exists( 'params', $array ) && is_array( $array['params'] )) { $registry = new JRegistry(); $registry->loadArray($array['params']); $array['params'] = $registry->toString(); } return parent::bind($array, $ignore); } }