2007-12-12 17:29:16 +01:00
< ? php
class UserService {
2008-11-14 11:53:10 +01:00
var $db ;
2008-11-21 19:45:18 +01:00
var $fields = array (
'primary' => 'uId' ,
'username' => 'username' ,
'password' => 'password' );
var $profileurl ;
var $tablename ;
var $sessionkey ;
var $cookiekey ;
var $cookietime = 1209600 ; // 2 weeks
2007-12-12 17:29:16 +01:00
2008-11-14 11:53:10 +01:00
function & getInstance ( & $db ) {
static $instance ;
if ( ! isset ( $instance ))
$instance =& new UserService ( $db );
return $instance ;
}
2007-12-12 17:29:16 +01:00
2008-11-21 19:45:18 +01:00
function UserService ( & $db ) {
$this -> db =& $db ;
$this -> tablename = $GLOBALS [ 'tableprefix' ] . 'users' ;
$this -> sessionkey = INSTALLATION_ID . '-currentuserid' ;
$this -> cookiekey = INSTALLATION_ID . '-login' ;
$this -> profileurl = createURL ( 'profile' , '%2$s' );
2009-09-17 14:07:55 +02:00
$this -> updateSessionStability ();
2008-11-21 19:45:18 +01:00
}
function _checkdns ( $host ) {
if ( function_exists ( 'checkdnsrr' )) {
return checkdnsrr ( $host );
} else {
return $this -> _checkdnsrr ( $host );
}
}
function _checkdnsrr ( $host , $type = " MX " ) {
if ( ! empty ( $host )) {
@ exec ( " nslookup -type= $type $host " , $output );
while ( list ( $k , $line ) = each ( $output )) {
if ( eregi ( " ^ $host " , $line )) {
return true ;
}
}
return false ;
}
}
function _getuser ( $fieldname , $value ) {
$query = 'SELECT * FROM ' . $this -> getTableName () . ' WHERE ' . $fieldname . ' = "' . $this -> db -> sql_escape ( $value ) . '"' ;
if ( ! ( $dbresult =& $this -> db -> sql_query ( $query )) ) {
message_die ( GENERAL_ERROR , 'Could not get user' , '' , __LINE__ , __FILE__ , $query , $this -> db );
return false ;
}
2009-09-17 14:07:55 +02:00
$row =& $this -> db -> sql_fetchrow ( $dbresult );
$this -> db -> sql_freeresult ( $dbresult );
if ( $row ) {
return $row ;
} else {
return false ;
}
2008-11-21 19:45:18 +01:00
}
function & getUsers ( $nb = 0 ) {
$query = 'SELECT * FROM ' . $this -> getTableName () . ' ORDER BY `uId` DESC' ;
if ( $nb > 0 ) {
$query .= ' LIMIT 0, ' . $nb ;
}
if ( ! ( $dbresult =& $this -> db -> sql_query ( $query )) ) {
message_die ( GENERAL_ERROR , 'Could not get user' , '' , __LINE__ , __FILE__ , $query , $this -> db );
return false ;
}
while ( $row = & $this -> db -> sql_fetchrow ( $dbresult )) {
$users [] = $row ;
}
2009-02-03 16:32:23 +01:00
$this -> db -> sql_freeresult ( $dbresult );
2008-11-21 19:45:18 +01:00
return $users ;
}
2008-11-25 16:57:29 +01:00
function & getObjectUsers ( $nb = 0 ) {
$query = 'SELECT * FROM ' . $this -> getTableName () . ' ORDER BY `uId` DESC' ;
if ( $nb > 0 ) {
$query .= ' LIMIT 0, ' . $nb ;
}
if ( ! ( $dbresult =& $this -> db -> sql_query ( $query )) ) {
message_die ( GENERAL_ERROR , 'Could not get user' , '' , __LINE__ , __FILE__ , $query , $this -> db );
return false ;
}
while ( $row = & $this -> db -> sql_fetchrow ( $dbresult )) {
$users [] = new User ( $row [ $this -> getFieldName ( 'primary' )], $row [ $this -> getFieldName ( 'username' )]);
}
2009-02-03 16:32:23 +01:00
$this -> db -> sql_freeresult ( $dbresult );
2008-11-25 16:57:29 +01:00
return $users ;
}
2008-11-21 19:45:18 +01:00
function _randompassword () {
$seed = ( integer ) md5 ( microtime ());
mt_srand ( $seed );
$password = mt_rand ( 1 , 99999999 );
$password = substr ( md5 ( $password ), mt_rand ( 0 , 19 ), mt_rand ( 6 , 12 ));
return $password ;
}
function _updateuser ( $uId , $fieldname , $value ) {
$updates = array ( $fieldname => $value );
$sql = 'UPDATE ' . $this -> getTableName () . ' SET ' . $this -> db -> sql_build_array ( 'UPDATE' , $updates ) . ' WHERE ' . $this -> getFieldName ( 'primary' ) . '=' . intval ( $uId );
// Execute the statement.
$this -> db -> sql_transaction ( 'begin' );
if ( ! ( $dbresult = & $this -> db -> sql_query ( $sql ))) {
$this -> db -> sql_transaction ( 'rollback' );
message_die ( GENERAL_ERROR , 'Could not update user' , '' , __LINE__ , __FILE__ , $sql , $this -> db );
return false ;
}
$this -> db -> sql_transaction ( 'commit' );
// Everything worked out, so return true.
return true ;
}
function getProfileUrl ( $id , $username ) {
return sprintf ( $this -> profileurl , urlencode ( $id ), urlencode ( $username ));
}
function getUserByUsername ( $username ) {
return $this -> _getuser ( $this -> getFieldName ( 'username' ), $username );
}
2008-11-25 16:57:29 +01:00
function getObjectUserByUsername ( $username ) {
$user = $this -> _getuser ( $this -> getFieldName ( 'username' ), $username );
2009-01-15 19:05:08 +01:00
if ( $user != false ) {
return new User ( $user [ $this -> getFieldName ( 'primary' )], $username );
} else {
return NULL ;
}
}
/* Takes an numerical " id " or a string " username "
and returns the numerical " id " if the user exists else returns NULL */
function getIdFromUser ( $user ) {
if ( is_int ( $user )) {
return intval ( $user );
} else {
$objectUser = $this -> getObjectUserByUsername ( $user );
if ( $objectUser != NULL ) {
return $objectUser -> getId ();
}
}
return NULL ;
2008-11-25 16:57:29 +01:00
}
2008-11-21 19:45:18 +01:00
function getUser ( $id ) {
return $this -> _getuser ( $this -> getFieldName ( 'primary' ), $id );
}
2008-11-25 16:57:29 +01:00
2008-11-21 19:45:18 +01:00
// Momentary useful in order to go to object code
function getObjectUser ( $id ) {
$user = $this -> _getuser ( $this -> getFieldName ( 'primary' ), $id );
return new User ( $id , $user [ $this -> getFieldName ( 'username' )]);
}
function isLoggedOn () {
return ( $this -> getCurrentUserId () !== false );
}
function & getCurrentUser ( $refresh = FALSE , $newval = NULL ) {
static $currentuser ;
if ( ! is_null ( $newval )) { //internal use only: reset currentuser
$currentuser = $newval ;
} else if ( $refresh || ! isset ( $currentuser )) {
if ( $id = $this -> getCurrentUserId ()) {
$currentuser = $this -> getUser ( $id );
} else {
$currentuser = null ;
}
}
return $currentuser ;
}
2008-11-25 16:57:29 +01:00
2008-11-21 19:45:18 +01:00
// Momentary useful in order to go to object code
function getCurrentObjectUser ( $refresh = FALSE , $newval = NULL ) {
static $currentObjectUser ;
if ( ! is_null ( $newval )) { //internal use only: reset currentuser
$currentObjectUser = $newval ;
} else if ( $refresh || ! isset ( $currentObjectUser )) {
if ( $id = $this -> getCurrentUserId ()) {
$currentObjectUser = $this -> getObjectUser ( $id );
} else {
$currentObjectUser = null ;
}
}
return $currentObjectUser ;
}
2008-11-25 16:57:29 +01:00
function existsUserWithUsername ( $username ) {
if ( $this -> getUserByUsername ( $username ) != '' ) {
return true ;
} else {
return false ;
}
}
function existsUser ( $id ) {
if ( $this -> getUser ( $id ) != '' ) {
return true ;
} else {
return false ;
}
}
2009-09-22 08:12:25 +02:00
/**
* Checks if the given user is an administrator .
* Uses global admin_users property containing admin
* user names
*
* @ param integer | array $user User ID or user row from DB
*
* @ return boolean True if the user is admin
*/
function isAdmin ( $user )
{
if ( is_numeric ( $user )) {
$user = $this -> getUser ( $user );
}
if ( isset ( $GLOBALS [ 'admin_users' ])
&& in_array ( $user [ 'username' ], $GLOBALS [ 'admin_users' ])
) {
2008-11-21 19:45:18 +01:00
return true ;
} else {
return false ;
}
}
/* return current user id based on session or cookie */
function getCurrentUserId () {
if ( isset ( $_SESSION [ $this -> getSessionKey ()])) {
return $_SESSION [ $this -> getSessionKey ()];
} else if ( isset ( $_COOKIE [ $this -> getCookieKey ()])) {
$cook = split ( ':' , $_COOKIE [ $this -> getCookieKey ()]);
//cookie looks like this: 'id:md5(username+password)'
$query = 'SELECT * FROM ' . $this -> getTableName () .
2008-11-14 11:53:10 +01:00
' WHERE MD5(CONCAT(' . $this -> getFieldName ( 'username' ) .
', ' . $this -> getFieldName ( 'password' ) .
')) = \'' . $this -> db -> sql_escape ( $cook [ 1 ]) . '\' AND ' .
2008-11-21 19:45:18 +01:00
$this -> getFieldName ( 'primary' ) . ' = ' . $this -> db -> sql_escape ( $cook [ 0 ]);
if ( ! ( $dbresult =& $this -> db -> sql_query ( $query )) ) {
message_die ( GENERAL_ERROR , 'Could not get user' , '' , __LINE__ , __FILE__ , $query , $this -> db );
return false ;
}
if ( $row = $this -> db -> sql_fetchrow ( $dbresult )) {
$_SESSION [ $this -> getSessionKey ()] = $row [ $this -> getFieldName ( 'primary' )];
2009-02-03 16:32:23 +01:00
$this -> db -> sql_freeresult ( $dbresult );
2008-11-21 19:45:18 +01:00
return $_SESSION [ $this -> getSessionKey ()];
}
}
return false ;
}
function login ( $username , $password , $remember = FALSE ) {
$password = $this -> sanitisePassword ( $password );
$query = 'SELECT ' . $this -> getFieldName ( 'primary' ) . ' FROM ' . $this -> getTableName () . ' WHERE ' . $this -> getFieldName ( 'username' ) . ' = "' . $this -> db -> sql_escape ( $username ) . '" AND ' . $this -> getFieldName ( 'password' ) . ' = "' . $this -> db -> sql_escape ( $password ) . '"' ;
if ( ! ( $dbresult =& $this -> db -> sql_query ( $query )) ) {
message_die ( GENERAL_ERROR , 'Could not get user' , '' , __LINE__ , __FILE__ , $query , $this -> db );
return false ;
}
if ( $row =& $this -> db -> sql_fetchrow ( $dbresult )) {
$id = $_SESSION [ $this -> getSessionKey ()] = $row [ $this -> getFieldName ( 'primary' )];
if ( $remember ) {
$cookie = $id . ':' . md5 ( $username . $password );
setcookie ( $this -> cookiekey , $cookie , time () + $this -> cookietime , '/' );
}
2009-02-03 16:32:23 +01:00
$this -> db -> sql_freeresult ( $dbresult );
2008-11-21 19:45:18 +01:00
return true ;
} else {
return false ;
}
}
function logout () {
@ setcookie ( $this -> getCookiekey (), '' , time () - 1 , '/' );
unset ( $_COOKIE [ $this -> getCookiekey ()]);
session_unset ();
$this -> getCurrentUser ( TRUE , false );
}
function getWatchlist ( $uId ) {
// Gets the list of user IDs being watched by the given user.
$query = 'SELECT watched FROM ' . $GLOBALS [ 'tableprefix' ] . 'watched WHERE uId = ' . intval ( $uId );
if ( ! ( $dbresult =& $this -> db -> sql_query ( $query )) ) {
message_die ( GENERAL_ERROR , 'Could not get watchlist' , '' , __LINE__ , __FILE__ , $query , $this -> db );
return false ;
}
$arrWatch = array ();
2009-09-29 08:50:23 +02:00
if ( $this -> db -> sql_numrows ( $dbresult ) == 0 ) {
$this -> db -> sql_freeresult ( $dbresult );
return $arrWatch ;
}
while ( $row =& $this -> db -> sql_fetchrow ( $dbresult )) {
$arrWatch [] = $row [ 'watched' ];
}
$this -> db -> sql_freeresult ( $dbresult );
2008-11-21 19:45:18 +01:00
return $arrWatch ;
}
function getWatchNames ( $uId , $watchedby = false ) {
// Gets the list of user names being watched by the given user.
// - If $watchedby is false get the list of users that $uId watches
// - If $watchedby is true get the list of users that watch $uId
if ( $watchedby ) {
$table1 = 'b' ;
$table2 = 'a' ;
} else {
$table1 = 'a' ;
$table2 = 'b' ;
}
$query = 'SELECT ' . $table1 . '.' . $this -> getFieldName ( 'username' ) . ' FROM ' . $GLOBALS [ 'tableprefix' ] . 'watched AS W, ' . $this -> getTableName () . ' AS a, ' . $this -> getTableName () . ' AS b WHERE W.watched = a.' . $this -> getFieldName ( 'primary' ) . ' AND W.uId = b.' . $this -> getFieldName ( 'primary' ) . ' AND ' . $table2 . '.' . $this -> getFieldName ( 'primary' ) . ' = ' . intval ( $uId ) . ' ORDER BY ' . $table1 . '.' . $this -> getFieldName ( 'username' );
if ( ! ( $dbresult =& $this -> db -> sql_query ( $query ))) {
message_die ( GENERAL_ERROR , 'Could not get watchlist' , '' , __LINE__ , __FILE__ , $query , $this -> db );
return false ;
}
$arrWatch = array ();
if ( $this -> db -> sql_numrows ( $dbresult ) == 0 ) {
2009-09-17 14:07:55 +02:00
$this -> db -> sql_freeresult ( $dbresult );
2008-11-21 19:45:18 +01:00
return $arrWatch ;
}
while ( $row =& $this -> db -> sql_fetchrow ( $dbresult )) {
$arrWatch [] = $row [ $this -> getFieldName ( 'username' )];
}
2009-02-03 16:32:23 +01:00
$this -> db -> sql_freeresult ( $dbresult );
2008-11-21 19:45:18 +01:00
return $arrWatch ;
}
function getWatchStatus ( $watcheduser , $currentuser ) {
// Returns true if the current user is watching the given user, and false otherwise.
$query = 'SELECT watched FROM ' . $GLOBALS [ 'tableprefix' ] . 'watched AS W INNER JOIN ' . $this -> getTableName () . ' AS U ON U.' . $this -> getFieldName ( 'primary' ) . ' = W.watched WHERE U.' . $this -> getFieldName ( 'primary' ) . ' = ' . intval ( $watcheduser ) . ' AND W.uId = ' . intval ( $currentuser );
if ( ! ( $dbresult =& $this -> db -> sql_query ( $query )) ) {
message_die ( GENERAL_ERROR , 'Could not get watchstatus' , '' , __LINE__ , __FILE__ , $query , $this -> db );
return false ;
}
$arrWatch = array ();
if ( $this -> db -> sql_numrows ( $dbresult ) == 0 )
return false ;
else
return true ;
}
function setWatchStatus ( $subjectUserID ) {
if ( ! is_numeric ( $subjectUserID ))
return false ;
$currentUserID = $this -> getCurrentUserId ();
$watched = $this -> getWatchStatus ( $subjectUserID , $currentUserID );
if ( $watched ) {
$sql = 'DELETE FROM ' . $GLOBALS [ 'tableprefix' ] . 'watched WHERE uId = ' . intval ( $currentUserID ) . ' AND watched = ' . intval ( $subjectUserID );
if ( ! ( $dbresult =& $this -> db -> sql_query ( $sql ))) {
$this -> db -> sql_transaction ( 'rollback' );
message_die ( GENERAL_ERROR , 'Could not add user to watch list' , '' , __LINE__ , __FILE__ , $sql , $this -> db );
return false ;
}
} else {
$values = array (
2007-12-12 17:29:16 +01:00
'uId' => intval ( $currentUserID ),
'watched' => intval ( $subjectUserID )
2008-11-21 19:45:18 +01:00
);
$sql = 'INSERT INTO ' . $GLOBALS [ 'tableprefix' ] . 'watched ' . $this -> db -> sql_build_array ( 'INSERT' , $values );
if ( ! ( $dbresult =& $this -> db -> sql_query ( $sql ))) {
$this -> db -> sql_transaction ( 'rollback' );
message_die ( GENERAL_ERROR , 'Could not add user to watch list' , '' , __LINE__ , __FILE__ , $sql , $this -> db );
return false ;
}
}
$this -> db -> sql_transaction ( 'commit' );
return true ;
}
function addUser ( $username , $password , $email ) {
// Set up the SQL UPDATE statement.
$datetime = gmdate ( 'Y-m-d H:i:s' , time ());
$password = $this -> sanitisePassword ( $password );
$values = array ( 'username' => $username , 'password' => $password , 'email' => $email , 'uDatetime' => $datetime , 'uModified' => $datetime );
$sql = 'INSERT INTO ' . $this -> getTableName () . ' ' . $this -> db -> sql_build_array ( 'INSERT' , $values );
// Execute the statement.
$this -> db -> sql_transaction ( 'begin' );
if ( ! ( $dbresult = & $this -> db -> sql_query ( $sql ))) {
$this -> db -> sql_transaction ( 'rollback' );
message_die ( GENERAL_ERROR , 'Could not insert user' , '' , __LINE__ , __FILE__ , $sql , $this -> db );
return false ;
}
$this -> db -> sql_transaction ( 'commit' );
// Everything worked out, so return true.
return true ;
}
function updateUser ( $uId , $password , $name , $email , $homepage , $uContent ) {
if ( ! is_numeric ( $uId ))
return false ;
// Set up the SQL UPDATE statement.
$moddatetime = gmdate ( 'Y-m-d H:i:s' , time ());
if ( $password == '' )
$updates = array ( 'uModified' => $moddatetime , 'name' => $name , 'email' => $email , 'homepage' => $homepage , 'uContent' => $uContent );
else
$updates = array ( 'uModified' => $moddatetime , 'password' => $this -> sanitisePassword ( $password ), 'name' => $name , 'email' => $email , 'homepage' => $homepage , 'uContent' => $uContent );
$sql = 'UPDATE ' . $this -> getTableName () . ' SET ' . $this -> db -> sql_build_array ( 'UPDATE' , $updates ) . ' WHERE ' . $this -> getFieldName ( 'primary' ) . '=' . intval ( $uId );
// Execute the statement.
$this -> db -> sql_transaction ( 'begin' );
if ( ! ( $dbresult = & $this -> db -> sql_query ( $sql ))) {
$this -> db -> sql_transaction ( 'rollback' );
message_die ( GENERAL_ERROR , 'Could not update user' , '' , __LINE__ , __FILE__ , $sql , $this -> db );
return false ;
}
$this -> db -> sql_transaction ( 'commit' );
// Everything worked out, so return true.
return true ;
}
function getAllUsers ( ) {
$query = 'SELECT * FROM ' . $this -> getTableName ();
2008-09-11 18:51:00 +02:00
2008-11-21 19:45:18 +01:00
if ( ! ( $dbresult =& $this -> db -> sql_query ( $query )) ) {
message_die ( GENERAL_ERROR , 'Could not get users' , '' , __LINE__ , __FILE__ , $query , $this -> db );
return false ;
}
2008-09-11 18:51:00 +02:00
2008-11-21 19:45:18 +01:00
$rows = array ();
2008-09-11 18:51:00 +02:00
2008-11-21 19:45:18 +01:00
while ( $row = $this -> db -> sql_fetchrow ( $dbresult ) ) {
$rows [] = $row ;
}
2009-02-03 16:32:23 +01:00
$this -> db -> sql_freeresult ( $dbresult );
2008-11-21 19:45:18 +01:00
return $rows ;
2009-02-20 10:33:59 +01:00
}
// Returns an array with admin uIds
function getAdminIds () {
$admins = array ();
foreach ( $GLOBALS [ 'admin_users' ] as $adminName ) {
if ( $this -> getIdFromUser ( $adminName ) != NULL )
$admins [] = $this -> getIdFromUser ( $adminName );
}
return $admins ;
2008-11-21 19:45:18 +01:00
}
2008-09-11 18:51:00 +02:00
2008-11-21 19:45:18 +01:00
function deleteUser ( $uId ) {
$query = 'DELETE FROM ' . $this -> getTableName () . ' WHERE uId = ' . intval ( $uId );
2008-09-11 18:51:00 +02:00
2008-11-21 19:45:18 +01:00
if ( ! ( $dbresult = & $this -> db -> sql_query ( $query ))) {
message_die ( GENERAL_ERROR , 'Could not delete user' , '' , __LINE__ , __FILE__ , $query , $this -> db );
return false ;
}
2008-09-11 18:51:00 +02:00
2008-11-21 19:45:18 +01:00
return true ;
}
function sanitisePassword ( $password ) {
return sha1 ( trim ( $password ));
}
function generatePassword ( $uId ) {
if ( ! is_numeric ( $uId ))
return false ;
$password = $this -> _randompassword ();
if ( $this -> _updateuser ( $uId , $this -> getFieldName ( 'password' ), $this -> sanitisePassword ( $password )))
return $password ;
else
return false ;
}
function isReserved ( $username ) {
if ( in_array ( $username , $GLOBALS [ 'reservedusers' ])) {
return true ;
} else {
return false ;
}
}
function isValidUsername ( $username ) {
2009-01-15 18:19:45 +01:00
if ( strlen ( $username ) < 4 ) {
return false ;
} elseif ( strlen ( $username ) > 24 ) {
2008-11-21 19:45:18 +01:00
// too long usernames are cut by database and may cause bugs when compared
return false ;
} elseif ( preg_match ( '/(\W)/' , $username ) > 0 ) {
// forbidden non-alphanumeric characters
return false ;
}
return true ;
}
function isValidEmail ( $email ) {
if ( eregi ( " ^[_a-z0-9-]+( \ .[_a-z0-9-]+)*@[a-z0-9-]+( \ .[a-z0-9-]+)*( \ .[a-z] { 2,6}) $ " , $email )) {
list ( $emailUser , $emailDomain ) = split ( " @ " , $email );
// Check if the email domain has a DNS record
2008-11-27 08:27:36 +01:00
//if ($this->_checkdns($emailDomain)) {
2009-01-15 19:05:08 +01:00
return true ;
2008-11-27 08:27:36 +01:00
//}
2008-11-21 19:45:18 +01:00
}
return false ;
}
2009-09-17 14:07:55 +02:00
/**
* Sets a session variable .
* Updates it when it is already set .
* This is used to detect if cookies work .
*
* @ return void
*
* @ see isSessionStable ()
*/
function updateSessionStability () {
//find out if we have cookies enabled
2009-09-20 09:44:26 +02:00
if ( ! isset ( $_SESSION [ 'sessionStable' ])) {
2009-09-17 14:07:55 +02:00
$_SESSION [ 'sessionStable' ] = 0 ;
} else {
$_SESSION [ 'sessionStable' ] = 1 ;
}
}
/**
* Tells you if the session is fresh or old .
* If the session is fresh , it ' s the first page
* call with that session id . If the session is old ,
* we know that cookies ( or session persistance ) works
*
* @ return boolean True if the
*
* @ see updateSessionStability ()
*/
function isSessionStable () {
return $_SESSION [ 'sessionStable' ] == 1 ;
}
2008-11-21 19:45:18 +01:00
// Properties
function getTableName () { return $this -> tablename ; }
function setTableName ( $value ) { $this -> tablename = $value ; }
function getFieldName ( $field ) { return $this -> fields [ $field ]; }
function setFieldName ( $field , $value ) { $this -> fields [ $field ] = $value ; }
function getSessionKey () { return $this -> sessionkey ; }
function setSessionKey ( $value ) { $this -> sessionkey = $value ; }
function getCookieKey () { return $this -> cookiekey ; }
function setCookieKey ( $value ) { $this -> cookiekey = $value ; }
}
2008-11-25 16:57:29 +01:00
/* Defines a user. Rare fields are filled if required. */
2008-11-21 19:45:18 +01:00
class User {
var $id ;
var $username ;
2008-11-25 16:57:29 +01:00
var $name ;
var $email ;
var $homepage ;
var $content ;
var $datetime ;
2008-11-21 19:45:18 +01:00
var $isAdmin ;
function User ( $id , $username ) {
$this -> id = $id ;
$this -> username = $username ;
}
2008-11-25 16:57:29 +01:00
2008-11-21 19:45:18 +01:00
function getId () {
return $this -> id ;
}
2008-11-25 16:57:29 +01:00
2008-11-21 19:45:18 +01:00
function getUsername () {
return $this -> username ;
}
2008-11-25 16:57:29 +01:00
function getName () {
// Look for value only if not already set
if ( ! isset ( $this -> name )) {
$userservice =& ServiceFactory :: getServiceInstance ( 'UserService' );
$user = $userservice -> getUser ( $this -> id );
$this -> name = $user [ 'name' ];
}
return $this -> name ;
}
2009-01-15 19:05:08 +01:00
2008-11-25 16:57:29 +01:00
function getEmail () {
// Look for value only if not already set
if ( ! isset ( $this -> email )) {
$userservice =& ServiceFactory :: getServiceInstance ( 'UserService' );
$user = $userservice -> getUser ( $this -> id );
$this -> email = $user [ 'email' ];
}
return $this -> email ;
}
function getHomepage () {
// Look for value only if not already set
if ( ! isset ( $this -> homepage )) {
$userservice =& ServiceFactory :: getServiceInstance ( 'UserService' );
$user = $userservice -> getUser ( $this -> id );
$this -> homepage = $user [ 'homepage' ];
}
return $this -> homepage ;
}
2009-01-15 19:05:08 +01:00
2008-11-25 16:57:29 +01:00
function getContent () {
// Look for value only if not already set
if ( ! isset ( $this -> content )) {
$userservice =& ServiceFactory :: getServiceInstance ( 'UserService' );
$user = $userservice -> getUser ( $this -> id );
$this -> content = $user [ 'uContent' ];
}
return $this -> content ;
2009-01-15 19:05:08 +01:00
}
2008-11-25 16:57:29 +01:00
function getDatetime () {
// Look for value only if not already set
if ( ! isset ( $this -> content )) {
$userservice =& ServiceFactory :: getServiceInstance ( 'UserService' );
$user = $userservice -> getUser ( $this -> id );
$this -> datetime = $user [ 'uDatetime' ];
}
return $this -> datetime ;
}
2008-11-21 19:45:18 +01:00
function isAdmin () {
2008-11-25 16:57:29 +01:00
// Look for value only if not already set
2008-11-21 19:45:18 +01:00
if ( ! isset ( $this -> isAdmin )) {
$userservice =& ServiceFactory :: getServiceInstance ( 'UserService' );
$this -> isAdmin = $userservice -> isAdmin ( $this -> id );
}
return $this -> isAdmin ;
}
2009-02-11 13:39:44 +01:00
function getNbBookmarks ( $range = 'public' ) {
$bookmarkservice =& ServiceFactory :: getServiceInstance ( 'BookmarkService' );
return $bookmarkservice -> countBookmarks ( $this -> getId (), $range );
}
2007-12-12 17:29:16 +01:00
}
?>