403Webshell
Server IP : 208.122.213.31  /  Your IP : 216.73.216.45
Web Server : Apache
System : Linux msd6191.mjhst.com 4.18.0-553.137.1.el8_10.x86_64 #1 SMP Wed Jun 24 11:40:24 UTC 2026 x86_64
User : WHMCS_MIA_382 ( 1001)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/httpd/html/sportyone.com/public_html/social/include/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/httpd/html/sportyone.com/public_html/social/include/class_database.php
<?php

/* $Id: class_database.php 162 2009-04-30 01:43:11Z john $ */

//
//  THIS CLASS CONTAINS DATABASE-RELATED METHODS
//  IT IS USED TO CONNECT TO THE DATABASE, RUN QUERIES, AND REPORT ERRORS
//  CURRENTLY MySQL IS THE DATABASE TYPE, EVENTUALLY ADD SUPPORT FOR OTHER DATABASE TYPES
//
//  METHODS IN THIS CLASS:
//
//    se_database()
//    database_connect()
//    database_select()
//    database_query()
//    database_fetch_array()
//    database_fetch_assoc()
//    database_num_rows()
//    database_affected_rows()
//    database_set_charset()
//    database_real_escape_string()
//    database_insert_id()
//    database_error()
//    database_close()
//


define('SE_DATABASE_LOG_SUCCESS',   1);
define('SE_DATABASE_LOG_FAIL',      2);
define('SE_DATABASE_LOG_SLOW',      4);
define('SE_DATABASE_LOG_FAST',      8);
define('SE_DATABASE_LOG_ALL',       15);

define('SE_DATABASE_LOGOPTS_QUERY',     1);
define('SE_DATABASE_LOGOPTS_TIME',      2);
define('SE_DATABASE_LOGOPTS_BACKTRACE', 4);
define('SE_DATABASE_LOGOPTS_RESULT',    8);
define('SE_DATABASE_LOGOPTS_COUNT',     16);
define('SE_DATABASE_LOGOPTS_ERROR',     32);
define('SE_DATABASE_LOGOPTS_ALL',       63);




class SEDatabase
{
	// INITIALIZE VARIABLES
	var $database_connection;		                // VARIABLE REPRESENTING DATABASE LINK IDENTIFIER
  
  var $_last_query;
  
  var $_last_resource;
  
  // DEBUG VARIABLES
	var $log_stats = NULL;				              // VARIABLE DETERMINING WHETHER QUERY INFO SHOULD BE LOGGED
  var $log_trigger = SE_DATABASE_LOG_ALL;
  var $log_options = SE_DATABASE_LOGOPTS_ALL;
  
	var $log_data = array();			              // ARRAY CONTAINING RELEVANT INFORMATION ABOUT QUERIES RUN
	var $log_data_totals = array(               // ARRAY CONTAINING RELEVANT INFORMATION ABOUT QUERIES RUN
    'total' => 0,
    'time' => 0,
    'success' => 0,
    'failed' => 0,
    'count' => 0
  );
  var $log_slow_threshold = '0.05';
  
  // 1 - Index by query hash, 2 - index by backtrace
  var $log_stats_index_mode = 2;
  
  var $root_folder;
  
  var $query_thresholds = array(
    '0.0001'  => '#00ff00',
    '0.001'   => '#55ff00',
    '0.005'   => '#aaff00',
    '0.05'    => '#ffff00',
    '0.5'     => '#ffaa00',
    '1'       => '#ff5500',
    '99999'   => '#ff0000'
  );





  
  //
	// THIS METHOD CONNECTS TO THE SERVER AND SELECTS THE DATABASE
  //
	// INPUT:
  //    $database_host REPRESENTING THE DATABASE HOST
	//	  $database_username REPRESENTING THE DATABASE USERNAME
	//	  $database_password REPRESENTING THE DATABASE PASSWORD
	//	  $database_name REPRESENTING THE DATABASE NAME
  //
	// OUTPUT:
  //    void
  //
  
	function SEDatabase($database_host, $database_username, $database_password, $database_name)
  {
    global $user, $global_plugins;
    
    // GET THE SOCIALENGINE ROOT
    $this->root_folder = dirname(dirname(realpath(__FILE__)));
    
    // FORCE TIME AND QUERY LOGGING (IF ENABLED)
    if( is_null($this->log_stats) ) $this->log_stats = ( defined('SE_DEBUG') ? SE_DEBUG : FALSE );
    $this->log_options = ( $this->log_options | SE_DATABASE_LOGOPTS_TIME | SE_DATABASE_LOGOPTS_QUERY );
    
	  $this->database_connection = $this->database_connect($database_host, $database_username, $database_password) or die($this->database_error());
	  $this->database_select($database_name) or die($this->database_error());
    
    // This will prevent some problems on MySQL5+ servers
    mysql_query("SET sql_mode='MYSQL40'", $this->database_connection);
	}
  
  // END se_database() METHOD





  
  //
	// THIS METHOD CONNECTS TO THE SERVER AND SELECTS THE DATABASE
  //
	// INPUT:
  //    void
  //
	// OUTPUT:
  //    instance of this class
  //
  
	function &getInstance()
  {
    global $database, $database_host, $database_username, $database_password, $database_name;
    static $db;
    
    if( !is_a($db, 'SEDatabase') )
    {
      // Backwards compatibility
      if( is_a($database, 'SEDatabase') )
      {
        $db =& $database;
      }
      
      // Instantiate
      else
      {
        $db = new SEDatabase($database_host, $database_username, $database_password, $database_name);
        $database =& $db;
      }
    }
    
    return $db;
  }
  
  // END getInstance() METHOD







  //
	// THIS METHOD CONNECTS TO A DATABASE SERVER
  //
	// INPUT:
  //    $database_host REPRESENTING THE DATABASE HOST
	//	  $database_username REPRESENTING THE DATABASE USERNAME
	//	  $database_password REPRESENTING THE DATABASE PASSWORD
  //
	// OUTPUT:
  //    RETURNS A DATABASE LINK IDENTIFIER
  //
  
	function database_connect($database_host, $database_username, $database_password)
  {
	  return mysql_connect($database_host, $database_username, $database_password, TRUE);
	}
  
  // END database_connect() METHOD








  //
	// THIS METHOD SELECTS A DATABASE
  //
	// INPUT:
  //    $database_name REPRESENTING THE DATABASE NAME
  //
	// OUTPUT:
  //    RETURNS OUTPUT FOR DATABASE SELECTION
  //
  
	function database_select($database_name)
  {
	  return mysql_select_db($database_name, $this->database_connection);
	} 
  
  // END database_select() METHOD








	// THIS METHOD QUERIES A DATABASE
	// INPUT: $database_query REPRESENTING THE DATABASE QUERY TO RUN
	// OUTPUT: RETURNS A DATABASE QUERY RESULT RESOURCE
	function database_query($database_query)
  {
    // EXECUTE QUERY
    $query_timer_start = getmicrotime();
    $query_result = mysql_query($database_query, $this->database_connection);
    $query_timer_end = getmicrotime();
    $query_timer_total = round($query_timer_end-$query_timer_start, 7);
    
    // LAST QUERY INFO
    $this->_last_query = $database_query;
    $this->_last_resource = $query_result;
	  
    // RETURN IF NOT LOGGING STATS
    switch( TRUE )
    {
      case (!$this->log_stats):
      case ( $query_result && (SE_DATABASE_LOG_SUCCESS & ~ $this->log_trigger)):
      case (!$query_result && (SE_DATABASE_LOG_FAIL    & ~ $this->log_trigger)):
      case ($query_timer_total< $this->log_slow_threshold && (SE_DATABASE_LOG_FAST    & ~ $this->log_trigger)):
      case ($query_timer_total>=$this->log_slow_threshold && (SE_DATABASE_LOG_SLOW    & ~ $this->log_trigger)):
        return $query_result;
      break;
    }
    
    
    // STATS
    $log_data = array('index' => count($this->log_data));
    $this->log_data_totals['total']++;
    
    // QUERY
    if( $this->log_options & SE_DATABASE_LOGOPTS_QUERY )
    {
      // When making hash, remove timestamps
      $log_data['query_hash']  = md5(preg_replace('/\d{10}/', '', $database_query));
      $log_data['query']  = $database_query;
    }
    
    // TIME
    if( $this->log_options & SE_DATABASE_LOGOPTS_TIME )
    {
      $log_data['time']   = $query_timer_total;
      $this->log_data_totals['time'] += $query_timer_total;
    }
    
    // BACKTRACE
    if( $this->log_options & SE_DATABASE_LOGOPTS_BACKTRACE )
    {
      $backtrace = debug_backtrace();
      foreach( $backtrace as $backtrace_index=>$single_backtrace )
        if( !empty($backtrace[$backtrace_index]['file']) )
          $backtrace[$backtrace_index]['file_short'] = str_replace($this->root_folder, '', $backtrace[$backtrace_index]['file']);
      
      $log_data['backtrace']   = &$backtrace;
    }
    
    // RESULT
    if( $this->log_options & SE_DATABASE_LOGOPTS_RESULT )
    {
      $log_data['result']   = ( $query_result ? TRUE : FALSE );
      
      if( $query_result )
        $this->log_data_totals['success']++;
      else
        $this->log_data_totals['failed']++;
    }
    
    // COUNT
    if( $this->log_options & SE_DATABASE_LOGOPTS_COUNT )
    {
      $result_count = 0;
      
      if( $query_result && !$result_count )
        $result_count = $this->database_affected_rows();
      
      if( $query_result && !$result_count )
        $result_count = $this->database_num_rows($query_result);
      
      $log_data['count']   = $result_count;
    }
    
    // GET ERROR
    if( $this->log_options & SE_DATABASE_LOGOPTS_ERROR )
    {
      $log_data['error'] = ( $query_result ? FALSE : $this->database_error() );
    }
    
    // GET THRESHOLD COLOR
    foreach( $this->query_thresholds as $threshold_time=>$threshold_color )
    {
      if( (float)$query_timer_total>(float)$threshold_time )
        continue;
      
      $log_data['color'] = $threshold_color;
      break;
    }
    
    // ADD TO LOG
    $this->log_data[] = $log_data;
    
    // RETURN
	  return $query_result;
	}
  
  // END database_query() METHOD







  
  //
	// THIS METHOD FETCHES A ROW AS A NUMERIC ARRAY
  //
	// INPUT:
  //    $database_result REPRESENTING A DATABASE QUERY RESULT RESOURCE
  //
	// OUTPUT:
  //    RETURNS A NUMERIC ARRAY FOR A DATABASE ROW
  //
  
	function database_fetch_array($database_result)
  {
    if( !is_resource($database_result) ) return FALSE;
	  return mysql_fetch_array($database_result, MYSQL_NUM);
	}
  
  // END database_fetch_array() METHOD








  //
	// THIS METHOD FETCHES A ROW AS AN ASSOCIATIVE ARRAY
  //
	// INPUT:
  //    $database_result REPRESENTING A DATABASE QUERY RESULT RESOURCE
  //
	// OUTPUT:
  //    RETURNS AN ASSOCIATIVE ARRAY FOR A DATABASE ROW
  //
  
	function database_fetch_assoc($database_result)
  {
    if( !is_resource($database_result) ) return FALSE;
	  return mysql_fetch_assoc($database_result);
	}
  
  // END database_fetch_assoc() METHOD








  //
	// THIS METHOD RETURNS THE NUMBER OF ROWS IN A RESULT
  //
	// INPUT:
  //    $database_result REPRESENTING A DATABASE QUERY RESULT RESOURCE
  //
	// OUTPUT:
  //    RETURNS THE NUMBER OF ROWS IN A RESULT
  //
  
	function database_num_rows($database_result)
  {
    if( !is_resource($database_result) ) return FALSE;
	  return mysql_num_rows($database_result);
	}
  
  // END database_num_rows() METHOD








  //
	// THIS METHOD RETURNS THE NUMBER OF ROWS IN A RESULT
  //
	// INPUT:
  //    $database_result REPRESENTING A DATABASE QUERY RESULT RESOURCE
  //
	// OUTPUT:
  //    RETURNS THE NUMBER OF ROWS IN A RESULT
  //
  
	function database_affected_rows()
  {
	  return mysql_affected_rows($this->database_connection);
	}
  
  // END database_affected_rows() METHOD 








  //
	// THIS METHOD FREES THE RESULT
  //
	// INPUT:
  //    $database_result REPRESENTING A DATABASE QUERY RESULT RESOURCE
  //
	// OUTPUT:
  //    TRUE on success, else FALSE
  //
  
	function database_free_result($database_result)
  {
	  return mysql_free_result($database_result);
	}
  
  // END database_free_result() METHOD 








  //
	// THIS METHOD SETS THE CLIENT CHARACTER SET FOR THE CURRENT CONNECTION
  //
	// INPUT:
  //    $charset REPRESENTING A VALID CHARACTER SET NAME
  //
	// OUTPUT:
  //    RESOURCE OR FALSE
  //
  
	function database_set_charset($charset)
  {
	  if( function_exists('mysql_set_charset') === TRUE )
    {
	    return mysql_set_charset($charset, $this->database_connection);
	  }
    else
    {
	    return $this->database_query('SET NAMES "'.$charset.'"');
	  }
	}
  
  // END database_set_charset() METHOD 








  //
	// THIS METHOD ESCAPES SPECIAL CHARACTERS IN A STRING FOR USE IN AN SQL STATEMENT
  //
	// INPUT:
  //    $unescaped_string REPRESENTING THE STRING TO ESCAPE
  //
	// OUTPUT: 
  //    Escaped string
  //
  
	function database_real_escape_string($unescaped_string)
  {
	  return mysql_real_escape_string($unescaped_string, $this->database_connection);
	}
  
  // END database_real_escape_string() METHOD 








  //
	// THIS METHOD RETURNS THE ID GENERATED FROM THE PREVIOUS INSERT OPERATION
  //
	// INPUT: 
  //    void
  //
	// OUTPUT:
  //    RETURNS THE ID GENERATED FROM THE PREVIOUS INSERT OPERATION
  //
  
	function database_insert_id()
  {
	  return mysql_insert_id($this->database_connection);
	}
  
  // END database_insert_id() METHOD








  //
	// THIS METHOD RETURNS THE DATABASE ERROR
  //
	// INPUT: 
  //    void
  //
	// OUTPUT: 
  //    The error message for the last failed query
  //
  
	function database_error()
  {
	  return mysql_error($this->database_connection);
	}
  
  // END database_error() METHOD








  //
	// THIS METHOD RETURNS ALL RETURNED DATA FOR THE LAST QUERY
  //
	// INPUT: 
  //    void
  //
	// OUTPUT: 
  //    An array of all returned data for the last query
  //
  
	function database_load_all()
  {
    if( !is_resource($this->_last_resource) )
    {
      return FALSE;
    }
    
    $resource = $this->_last_resource;
    $return_data = array();
    while( $data = $this->database_fetch_assoc($resource) )
    {
      $return_data[] = $data;
    }
    
    return $return_data;
	}
  
  // END database_load_all() METHOD








  //
	// THIS METHOD RETURNS ALL RETURNED DATA FOR THE LAST QUERY IN AN ASSOC
  // ARRAY USING THE COLUMN SPECIFIED AS THE KEY
  //
	// INPUT: 
  //    $key_column - to use as assoc index
  //
	// OUTPUT: 
  //    The error message for the last failed query
  //
  
	function database_load_all_assoc($key_column)
  {
    if( !is_resource($this->_last_resource) )
    {
      return FALSE;
    }
    
    $resource = $this->_last_resource;
    $return_data = array();
    while( $data = $this->database_fetch_assoc($resource) )
    {
      $return_data[$data[$key_column]] = $data;
    }
    
    return $return_data;
	}
  
  // END database_load_all_assoc() METHOD








  //
	// THIS METHOD CLOSES A CONNECTION TO THE DATABASE SERVER
  //
	// INPUT: 
  //  void
  //
	// OUTPUT:
  //    Connection closure result
  //
  
	function database_close()
  {
    // DO DATABASE QUERY LOGGING
    if( $this->log_stats ) $this->database_log_stats();
    if( $this->log_stats ) $this->database_log_stats_cleanup();
    
	  return mysql_close($this->database_connection);
	}
  
  // END database_close() METHOD








  //
	// THIS METHOD SORT THE BENCHMARKS BY TIME
  //
	// INPUT: 
  //    void
  //
	// OUTPUT: 
  //    void
  //
  
	function database_benchmark_sort()
  {
    if( !function_exists('dbtimecmp') )
    {
      function dbtimecmp($a, $b)
      {
        //return ( $a['time']==$b['time'] ? 0 : ($a['time']<$b['time'] ? -1 : 1) );
        return ( (float)$a['time']==(float)$b['time'] ? 0 : ((float)$a['time']>(float)$b['time'] ? -1 : 1) );
      }
    }
    
    usort($this->log_data, 'dbtimecmp');
    
    return '';
  }








  //
	// THIS METHOD GETS MYSQL CLIENT INFO
  //
	// INPUT:
  //    void
  //
	// OUTPUT:
  //    http://us2.php.net/manual/en/function.mysql-get-client-info.php
  //
  
	function database_get_client_info()
  {
	  return ( function_exists('mysql_get_client_info') ? mysql_get_client_info() : FALSE );
	}
  
  // END database_get_client_info() METHOD 








  //
	// THIS METHOD GETS MYSQL HOST INFO
  //
	// INPUT:
  //    void
  //
	// OUTPUT:
  //    http://us2.php.net/manual/en/function.mysql-get-host-info.php
  //
  
	function database_get_host_info()
  {
	  return ( function_exists('mysql_get_host_info') ? mysql_get_host_info($this->database_connection) : FALSE );
	}
  
  // END database_get_host_info() METHOD 








  //
	// THIS METHOD GETS MYSQL PROTOCOL INFO
  //
	// INPUT:
  //    void
  //
	// OUTPUT:
  //    http://us2.php.net/manual/en/function.mysql-get-proto-info.php
  //
  
	function database_get_proto_info()
  {
	  return ( function_exists('mysql_get_proto_info') ? mysql_get_proto_info($this->database_connection) : FALSE );
	}
  
  // END database_get_proto_info() METHOD 








  //
	// THIS METHOD GETS MYSQL SERVER INFO
  //
	// INPUT:
  //    void
  //
	// OUTPUT:
  //    http://us2.php.net/manual/en/function.mysql-get-server-info.php
  //
  
	function database_get_server_info()
  {
	  return ( function_exists('mysql_get_server_info') ? mysql_get_server_info($this->database_connection) : FALSE );
	}
  
  // END database_get_server_info() METHOD 








  //
	// THIS METHOD LOGS STUFF
  //
	// INPUT:
  //    void
  //
	// OUTPUT:
  //    void
  //
  
	function database_log_stats()
  {
    $query_timer_start = getmicrotime();
    
    // DO STUFF
    $time = time();
    $do_insert = FALSE;
    $insert_query = "
      INSERT INTO se_debug_querylog
      (
        debug_querylog_query,
        debug_querylog_queryhash,
        debug_querylog_querylocation,
        debug_querylog_benchmark,
        debug_querylog_backtrace,
        debug_querylog_result,
        debug_querylog_count,
        debug_querylog_error,
        debug_querylog_time
      )
      VALUES
    ";
    
    foreach( $this->log_data as $log_index=>$log_data )
    {
      // LOG SINGLE QUERY
      if( $do_insert ) $insert_query .= ", ";
      
      $query_location = substr($log_data['backtrace'][0]['file_short']." [".$log_data['backtrace'][0]['line']."]", 0, 254);
      
      $insert_query .= "(
        '".$this->database_real_escape_string($log_data['query'])."',
        '{$log_data['query_hash']}',
        '{$query_location}',
        '{$log_data['time']}',
        '', /* TODO */
        '".( $log_data['result'] ? '1' : '0' )."',
        '{$log_data['count']}',
        '".$this->database_real_escape_string($log_data['error'])."',
        '{$time}'
      )";
      
      $do_insert = TRUE;
      
      // LOG STATS
      $sql = "
        INSERT INTO se_debug_querystats
        (
          debug_querystats_query_hash,
          debug_querystats_query_location,
          debug_querystats_query,
          debug_querystats_count,
          debug_querystats_count_failed,
          debug_querystats_count_slow,
          debug_querystats_time_total,
          debug_querystats_time_avg
        )
        VALUES
        (
          '{$log_data['query_hash']}',
          '{$query_location}',
          '".$this->database_real_escape_string($log_data['query'])."',
          '1',
          '".( !$log_data['result'] ? '1' : '0' )."',
          '".( $log_data['time']>$this->log_slow_threshold ? '1' : '0' )."',
          '{$log_data['time']}',
          '{$log_data['time']}'
        )
        ON DUPLICATE KEY UPDATE
          debug_querystats_count=debug_querystats_count+1,
          debug_querystats_count_failed=debug_querystats_count_failed+".( !$log_data['result'] ? '1' : '0' ).",
          debug_querystats_count_slow=debug_querystats_count_slow+".( $log_data['time']>$this->log_slow_threshold ? '1' : '0' ).",
          debug_querystats_time_total=debug_querystats_time_total+".( $log_data['time'] ? $log_data['time'] : '0' ).",
          debug_querystats_time_avg=(debug_querystats_count*debug_querystats_time_avg+".( is_numeric($log_data['time']) ? $log_data['time'] : '0' ).")/(debug_querystats_count+1)
      ";
      
      mysql_query($sql, $this->database_connection) or die(mysql_error($this->database_connection)." ".$sql);
    }
    
    if( $do_insert ) mysql_query($insert_query, $this->database_connection) or die(mysql_error($this->database_connection)." ".$insert_query);
    
    $query_timer_end = getmicrotime();
    $query_timer_total = round($query_timer_end-$query_timer_start, 7);
	}
  
  // END database_log_stats() METHOD








  //
	// THIS METHOD CLEANS UP LOG STUFF
  //
	// INPUT:
  //    void
  //
	// OUTPUT:
  //    void
  //
  
	function database_log_stats_cleanup($not_slow=TRUE)
  {
    $age_limit = time() - 7200;
    //$age_limit = time() - 86400;
    
    $sql = "DELETE FROM se_debug_querylog WHERE debug_querylog_time<$age_limit";
    if( $not_slow ) $sql .= " && debug_querylog_benchmark<{$this->log_slow_threshold}";
    
    $resource = mysql_query($sql, $this->database_connection) or die(mysql_error($this->database_connection)." ".$sql);
  }
  
  // END database_log_stats_cleanup() METHOD
  
}




//BACKWARDS COMPATIBILITY
class se_database extends SEDatabase { }




?>

Youez - 2016 - github.com/yon3zu
LinuXploit