ShellBanner
System:Linux MiraNet 3.0.0-14-generic-pae #23-Ubuntu SMP Mon Nov 21 22:07:10 UTC 2011 i686
Software:Apache. PHP/5.3.6-13ubuntu3.10
ID:uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
Safe Mode:OFF
Open_Basedir:OFF
Freespace:25.33 GB of 70.42 GB (35.97%)
MySQL: ON MSSQL: OFF Oracle: OFF PostgreSQL: OFF Curl: OFF Sockets: ON Fetch: OFF Wget: ON Perl: ON
Disabled Functions: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,

/ http/ roundcubemail/ program/ include/ - drwxr-xr-x

Directory:
Viewing file:     rcube_user.inc (10.99 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/*
 +-----------------------------------------------------------------------+
 | program/include/rcube_user.inc                                        |
 |                                                                       |
 | This file is part of the RoundCube Webmail client                     |
 | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland                 |
 | Licensed under the GNU GPL                                            |
 |                                                                       |
 | PURPOSE:                                                              |
 |   This class represents a system user linked and provides access      |
 |   to the related database records.                                    |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+

 $Id: rcube_user.inc 933 2007-11-29 14:17:32Z thomasb $

*/


/**
 * Class representing a system user
 *
 * @package    core
 * @author     Thomas Bruederli <roundcube@gmail.com>
 */
class rcube_user
{
  var 
$ID null;
  var 
$data null;
  
  
  
/**
   * Object constructor
   *
   * @param object DB Database connection
   */
  
function __construct($id null$sql_arr null)
  {
    global 
$DB;
    
    if (
$id && !$sql_arr)
    {
      
$sql_result $DB->query("SELECT * FROM ".get_table_name('users')." WHERE  user_id=?"$id);
      
$sql_arr $DB->fetch_assoc($sql_result);
    }
    
    if (!empty(
$sql_arr))
    {
      
$this->ID $sql_arr['user_id'];
      
$this->data $sql_arr;
    }
  }

  
/**
   * PHP 4 object constructor
   *
   * @see  rcube_user::__construct
   */
  
function rcube_user($id null$sql_arr null)
  {
    
$this->__construct($id$sql_arr);
  }
  
  
  
/**
   * Build a user name string (as e-mail address)
   *
   * @return string Full user name
   */
  
function get_username()
  {
    return 
$this->data['username'] ? $this->data['username'] . (!strpos($this->data['username'], '@') ? '@'.$this->data['mail_host'] : '') : false;
  }
  
  
  
/**
   * Get the preferences saved for this user
   *
   * @return array Hash array with prefs
   */
  
function get_prefs()
  {
    if (
$this->ID && $this->data['preferences'])
      return 
unserialize($this->data['preferences']);
    else
      return array();
  }
  
  
  
/**
   * Write the given user prefs to the user's record
   *
   * @param mixed User prefs to save
   * @return boolean True on success, False on failure
   */
  
function save_prefs($a_user_prefs)
  {
    global 
$DB$CONFIG$sess_user_lang;
    
    if (!
$this->ID)
      return 
false;

    
// merge (partial) prefs array with existing settings
    
$a_user_prefs += (array)$this->get_prefs();

    
$DB->query(
      
"UPDATE ".get_table_name('users')."
       SET    preferences=?,
              language=?
       WHERE  user_id=?"
,
      
serialize($a_user_prefs),
      
$sess_user_lang,
      
$this->ID);

    if (
$DB->affected_rows())
    {
      
$CONFIG array_merge($CONFIG$a_user_prefs);
      return 
true;
    }

    return 
false;
  }
  
  
  
/**
   * Get default identity of this user
   *
   * @param int  Identity ID. If empty, the default identity is returned
   * @return array Hash array with all cols of the 
   */
  
function get_identity($id null)
  {
    global 
$DB;
    
    
$sql_result $this->list_identities($id sprintf('AND identity_id=%d'$id) : '');
    return 
$DB->fetch_assoc($sql_result);
  }
  
  
  
/**
   * Return a list of all identities linked with this user
   *
   * @return array List of identities
   */
  
function list_identities($sql_add '')
  {
    global 
$DB;
    
    
// get contacts from DB
    
$sql_result $DB->query(
      
"SELECT * FROM ".get_table_name('identities')."
       WHERE  del<>1
       AND    user_id=?
       
$sql_add
       ORDER BY "
.$DB->quoteIdentifier('standard')." DESC, name ASC",
      
$this->ID);
    
    return 
$sql_result;
  }
  
  
  
/**
   * Update a specific identity record
   *
   * @param int    Identity ID
   * @param array  Hash array with col->value pairs to save
   * @return boolean True if saved successfully, false if nothing changed
   */
  
function update_identity($iid$data)
  {
    global 
$DB;
    
    if (!
$this->ID)
      return 
false;
    
    
$write_sql = array();
    
    foreach ((array)
$data as $col => $value)
    {
      
$write_sql[] = sprintf("%s=%s",
        
$DB->quoteIdentifier($col),
        
$DB->quote($value));
    }
    
    
$DB->query(
      
"UPDATE ".get_table_name('identities')."
       SET "
.join(', '$write_sql)."
       WHERE  identity_id=?
       AND    user_id=?
       AND    del<>1"
,
      
$iid,
      
$this->ID);
    
    return 
$DB->affected_rows();
  }
  
  
  
/**
   * Create a new identity record linked with this user
   *
   * @param array  Hash array with col->value pairs to save
   * @return int  The inserted identity ID or false on error
   */
  
function insert_identity($data)
  {
    global 
$DB;
    
    if (!
$this->ID)
      return 
false;

    
$insert_cols $insert_values = array();
    foreach ((array)
$data as $col => $value)
    {
      
$insert_cols[] = $DB->quoteIdentifier($col);
      
$insert_values[] = $DB->quote($value);
    }

    
$DB->query(
      
"INSERT INTO ".get_table_name('identities')."
        (user_id, "
.join(', '$insert_cols).")
       VALUES (?, "
.join(', '$insert_values).")",
      
$this->ID);

    return 
$DB->insert_id(get_sequence_name('identities'));
  }
  
  
  
/**
   * Mark the given identity as deleted
   *
   * @param int  Identity ID
   * @return boolean True if deleted successfully, false if nothing changed
   */
  
function delete_identity($iid)
  {
    global 
$DB;
    
    if (!
$this->ID)
      return 
false;

    
$sql_result $DB->query("SELECT count(*) AS ident_count FROM " .
      
get_table_name('identities') .
      
" WHERE user_id = ? AND del != 1",
      
$this->ID);

    
$sql_arr $DB->fetch_assoc($sql_result);
    if (
$sql_arr['ident_count'] <= 1)
      return 
false;
    
    
$DB->query(
      
"UPDATE ".get_table_name('identities')."
       SET    del=1
       WHERE  user_id=?
       AND    identity_id=?"
,
      
$this->ID,
      
$iid);

    return 
$DB->affected_rows();
  }
  
  
  
/**
   * Make this identity the default one for this user
   *
   * @param int The identity ID
   */
  
function set_default($iid)
  {
    global 
$DB;
    
    if (
$this->ID && $iid)
    {
      
$DB->query(
        
"UPDATE ".get_table_name('identities')."
         SET "
.$DB->quoteIdentifier('standard')."='0'
         WHERE  user_id=?
         AND    identity_id<>?
         AND    del<>1"
,
        
$this->ID,
        
$iid);
    }
  }
  
  
  
/**
   * Update user's last_login timestamp
   */
  
function touch()
  {
    global 
$DB;
    
    if (
$this->ID)
    {
      
$DB->query(
        
"UPDATE ".get_table_name('users')."
         SET    last_login="
.$DB->now()."
         WHERE  user_id=?"
,
        
$this->ID);
    }
  }
  
  
  
/**
   * Clear the saved object state
   */
  
function reset()
  {
    
$this->ID null;
    
$this->data null;
  }
  
  
  
/**
   * Find a user record matching the given name and host
   *
   * @param string IMAP user name
   * @param string IMAP host name
   * @return object rcube_user New user instance
   * @static
   */
  
function query($user$host)
  {
    global 
$DB;
    
    
// query if user already registered
    
$sql_result $DB->query(
      
"SELECT * FROM ".get_table_name('users')."
       WHERE  mail_host=? AND (username=? OR alias=?)"
,
      
$host,
      
$user,
      
$user);
      
    
// user already registered -> overwrite username
    
if ($sql_arr $DB->fetch_assoc($sql_result))
      return new 
rcube_user($sql_arr['user_id'], $sql_arr);
    else
      return 
false;
  }
  
  
  
/**
   * Create a new user record and return a rcube_user instance
   *
   * @param string IMAP user name
   * @param string IMAP host
   * @return object rcube_user New user instance
   * @static
   */
  
function create($user$host)
  {
    global 
$DB$CONFIG;
    
    
$user_email '';

    
// try to resolve user in virtusertable
    
if (!empty($CONFIG['virtuser_file']) && !strpos($user'@'))
      
$user_email self::user2email($user);

    
$DB->query(
      
"INSERT INTO ".get_table_name('users')."
        (created, last_login, username, mail_host, alias, language)
       VALUES ("
.$DB->now().", ".$DB->now().", ?, ?, ?, ?)",
      
strip_newlines($user),
      
strip_newlines($host),
      
strip_newlines($user_email),
      
$_SESSION['user_lang']);

    if (
$user_id $DB->insert_id(get_sequence_name('users')))
    {
      
$mail_domain rcmail_mail_domain($host);

      if (
$user_email=='')
        
$user_email strpos($user'@') ? $user sprintf('%s@%s'$user$mail_domain);

      
$user_name $user != $user_email $user '';

      
// try to resolve the e-mail address from the virtuser table
      
if (!empty($CONFIG['virtuser_query']) &&
          (
$sql_result $DB->query(preg_replace('/%u/'$DB->escapeSimple($user), $CONFIG['virtuser_query']))) &&
          (
$DB->num_rows()>0))
      {
        while (
$sql_arr $DB->fetch_array($sql_result))
        {
          
$DB->query(
            
"INSERT INTO ".get_table_name('identities')."
              (user_id, del, standard, name, email)
             VALUES (?, 0, 1, ?, ?)"
,
            
$user_id,
            
strip_newlines($user_name),
            
preg_replace('/^@/'$user '@'$sql_arr[0]));
        }
      }
      else
      {
        
// also create new identity records
        
$DB->query(
          
"INSERT INTO ".get_table_name('identities')."
            (user_id, del, standard, name, email)
           VALUES (?, 0, 1, ?, ?)"
,
          
$user_id,
          
strip_newlines($user_name),
          
strip_newlines($user_email));
      }
    }
    else
    {
      
raise_error(array(
        
'code' => 500,
        
'type' => 'php',
        
'line' => __LINE__,
        
'file' => __FILE__,
        
'message' => "Failed to create new user"), truefalse);
    }
    
    return 
$user_id ? new rcube_user($user_id) : false;
  }
  
  
  
/**
   * Resolve username using a virtuser table
   *
   * @param string E-mail address to resolve
   * @return string Resolved IMAP username
   * @static
   */
  
function email2user($email)
  {
    
$user $email;
    
$r rcmail_findinvirtual("^$email");

    for (
$i=0$i<count($r); $i++)
    {
      
$data $r[$i];
      
$arr preg_split('/\s+/'$data);
      if (
count($arr) > 0)
      {
        
$user trim($arr[count($arr)-1]);
        break;
      }
    }

    return 
$user;
  }


  
/**
   * Resolve e-mail address from virtuser table
   *
   * @param string User name
   * @return string Resolved e-mail address
   * @static
   */
  
function user2email($user)
  {
    
$email "";
    
$r rcmail_findinvirtual("$user$");

    for (
$i=0$i<count($r); $i++)
    {
      
$data $r[$i];
      
$arr preg_split('/\s+/'$data);
      if (
count($arr) > 0)
      {
        
$email trim($arr[0]);
        break;
      }
    }

    return 
$email;
  }

}


?>
Command:
Quick Commands:
Upload:
[OK] Max size: 100MB
PHP Filesystem: <@ Ú
Search File:
regexp
Create File:
Overwrite [OK]
View File:
Mass Defacement:
[+] Main Directory: [+] Defacement Url:
LmfaoX Shell - Private Build [BETA] - v0.1 -; Generated: 0.1765 seconds