<?php 

/**
 * User class.
 * 
 * @author Tamlyn Rhodes <tam at zenology dot co dot uk>
 * @license http://opensource.org/licenses/gpl-license.php GNU General Public License
 * @copyright (c)2003, 2004 Tamlyn Rhodes
 * @version $Id: user.class.php,v 1.5 2006/03/14 19:38:54 tamlyn Exp $
 */

/**
 * Class used to represent a user.
 * @package singapore
 * @author Tamlyn Rhodes <tam at zenology dot co dot uk>
 * @copyright (c)2003, 2004 Tamlyn Rhodes
 */
class sgUser
{
  /**
   * Username of user. Special cases are 'guest' and 'admin'.
   * @var string
   */
  var $username = "";

  /**
   * MD5 hash of password
   * @var string
   */
  var $userpass = "5f4dcc3b5aa765d61d8327deb882cf99";
  
  /**
   * Bit-field of permissions
   * @var int
   */
  var $permissions = 0;
  
  /**
   * Space-separated list of groups of which the user is a member
   * @var string
   */
  var $groups = "";
  
  /**
   * Email address of user
   * @var string
   */
  var $email = "";
  
  /**
   * The name or title of the user
   * @var string
   */
  var $fullname = "";
  
  /**
   *Description of user account
   * @var string
   */
  var $description = "";
  
  /**
   * Statistics (what's this? I don't know!)
   * @var string
   */
  var $stats = "";
  
  /**
   * Constructor ensures username and userpass have values
   */
  function sgUser($username, $userpass)
  {
    $this->username = $username;
    $this->userpass = $userpass;
  }
  
  /**
   * Checks if currently logged in user is an administrator.
   * 
   * @return bool true on success; false otherwise
   */
  function isAdmin()
  {
    return $this->permissions & SG_ADMIN;
  }
  
  /**
   * Checks if currently logged in user is a guest.
   * 
   * @return bool true on success; false otherwise
   */
  function isGuest()
  {
    return $this->username == "guest";
  }
  
  /**
   * Checks if this user is the owner of the specified item.
   * 
   * @param sgItem  the item to check
   * @return bool   true if this user is the owner; false otherwise
   */
  function isOwner($item)
  {
    return $item->owner == $this->username;
  }
  
  /**
   * Checks if this user is a member of the group(s) supplied
   * 
   * @return bool true on success; false otherwise
   */
  function isInGroup($groups)
  {
    return (bool) array_intersect(explode(" ",$groups),explode(" ",$this->groups));
  }
  
  
}

?>