HEX
Server: Apache/2.4.6 (CentOS) mpm-itk/2.4.7-04 mod_fcgid/2.3.9 PHP/5.4.16
System: Linux dvm.vladweb.ru 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: region-gk.ru (1016)
PHP: 7.3.33
Disabled: NONE
Upload Files
File: //var/www/bk/efi/eficenter.ru/core/db_connect.php
<?php

function db_connect($host='localhost', $dbname, $user='root', $passwd='', $port='3306', $persist=false) {
	function_exists( 'mysql_connect' )
		or  die( 'FATAL ERROR: MySQL support not avaiable.  Please check your configuration.' );

	if ($persist) {
        $link = mysql_pconnect($host, $user, $passwd);
        if (!$link) die('FATAL ERROR: Connection to database server failed');
	} else {
        $link = mysql_connect($host, $user, $passwd);
		
        if (!$link) die( 'FATAL ERROR: Connection to database server failed' );
	}

	if ($dbname) {
		mysql_select_db( $dbname )
			or die( "FATAL ERROR: Database not found ($dbname)" );
	} else {
		die( "FATAL ERROR: Database name not supplied<br />(connection to database server succesful)" );
	}
}

function db_error() {
	return mysql_error();
}

function db_errno() {
	return mysql_errno();
}

function db_insert_id() {
	return mysql_insert_id();
}

function db_affected_rows() {
	return mysql_affected_rows();
}

function db_exec( $sql ) {
	$cur = mysql_query( $sql );
	if( !$cur ) {
		return false;
	}
	return $cur;
}

function db_free_result( $cur ) {
	if($cur) {
		mysql_free_result( $cur );
	}
}

function db_num_rows( $qid ) {
	return mysql_num_rows( $qid );
}

function db_num_fields( $qid ) {
	return mysql_num_fields( $qid );
}

function db_fetch_row( $cur ) {
	return mysql_fetch_row( $cur );
}

function db_fetch_assoc( $cur , $type = null) {
	if ($type) return mysql_fetch_assoc( $cur , $type);
	else return mysql_fetch_assoc( $cur );
}

function db_fetch_array( $cur  ) {
	return @mysql_fetch_array( $cur );
}

function db_fetch_object( $cur  ) {
	return mysql_fetch_object( $cur );
}

function db_escape( $str ) {
	return (!get_magic_quotes_gpc()) ? mysql_escape_string($str) : $str;
}

function db_version() {

	if( ($cur = mysql_query( "SELECT VERSION()" )) ) {
		$row =  mysql_fetch_row( $cur );
		mysql_free_result( $cur );
		return $row[0];
	} else {
		return 0;
	}
}

function db_unix2dateTime( $time ) {
	return $time > 0 ? date("Y-m-d H:i:s", $time) : null;
}

function db_dateTime2unix( $time ) {
	if ($time == '0000-00-00 00:00:00') {
		return -1;
	}
	if( ! preg_match( "/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})(.?)$/", $time, $a ) ) {
		return -1;
	} else {
		return mktime( $a[4], $a[5], $a[6], $a[2], $a[3], $a[1] );
	}
}

function db_tableNames() {
	global $CONFIG, $db1;
	$connect = db_connect($CONFIG['db_host'],
		   				  $CONFIG['db_database'],
		   				  $CONFIG['db_user'],
		   				  $CONFIG['db_password'],
		   				  $CONFIG['db_port'],
		   				  FALSE);
	$sql = "show tables";
	$i = 0;
	$res = @mysql_query($sql);
	while ($info = @mysql_fetch_row($res)) {
		$return[$i]["table_name"]      = $info[0];
		$return[$i]["tablespace_name"] = $this->Database;
		$return[$i]["database"]        = $this->Database;
		$i++;
	}
	@mysql_free_result($h);
	return $return;
}

function db_loadObject( $sql, &$object, $bindAll=false , $strip = true) {
 if ($object != null) {
  $hash = array();
  if( !db_loadHash( $sql, $hash ) ) {
   return false;
  }
  bindHashToObject( $hash, $object, null, $strip, $bindAll );
  return true;
 } else {
  $cur = db_exec( $sql );
  $cur or exit( db_error() );
  if ($object = db_fetch_object( $cur )) {
   db_free_result( $cur );
   return true;
  } else {
   $object = null;
   return false;
  }
 }
}

function db_loadHash( $sql, &$hash ) {
 $cur = db_exec( $sql );
 $cur or exit( db_error() );
 $hash = db_fetch_assoc( $cur );
 db_free_result( $cur );
 if ($hash == false) {
  return false;
 } else {
  return true;
 }
}

function bindHashToObject( $hash, &$obj, $prefix=NULL, $checkSlashes=true, $bindAll=false ) {
 is_array( $hash ) or die( "bindHashToObject : hash expected" );
 is_object( $obj ) or die( "bindHashToObject : object expected" );

 if ($bindAll) {
  foreach ($hash as $k => $v) {
   $obj->$k = ($checkSlashes && get_magic_quotes_gpc()) ? stripslashes( $hash[$k] ) : $hash[$k];
  }
 } else if ($prefix) {
  foreach (get_object_vars($obj) as $k => $v) {
   if (isset($hash[$prefix . $k ])) {
    $obj->$k = ($checkSlashes && get_magic_quotes_gpc()) ? stripslashes( $hash[$k] ) : $hash[$k];
   }
  }
 } else {
  foreach (get_object_vars($obj) as $k => $v) {
   if (isset($hash[$k])) {
    $obj->$k = ($checkSlashes && get_magic_quotes_gpc()) ? stripslashes( $hash[$k] ) : $hash[$k];
   }
  }
 }
}

function db_loadResult( $sql ) {
 $cur = db_exec( $sql );
 $cur or exit( db_error() );
 $ret = null;
 if ($row = db_fetch_row( $cur )) {
  $ret = $row[0];
 }
 db_free_result( $cur );
 return $ret;
}

function db_loadResult2($sql) {
	$cur = db_exec($sql);
	$ret = db_fetch_array($cur);
	db_free_result($cur);
	return $ret;
}

function db_loadHashList( $sql, $index='' ) {
 $cur = db_exec( $sql );
 $cur or exit( db_error() );
 $hashlist = array();
 while ($hash = db_fetch_array( $cur )) {
  $hashlist[$hash[$index ? $index : 0]] = $index ? $hash : $hash[1];
 }
 db_free_result( $cur );
 return $hashlist;
}

function db_loadList( $sql, $maxrows=NULL ) {
 if (!($cur = db_exec( $sql ))) {;
  echo db_error();
  return false;
 }
 $list = array();
 $cnt = 0;
 while ($hash = db_fetch_assoc( $cur )) {
  $list[] = $hash;
  if( $maxrows && $maxrows == $cnt++ ) {
   break;
  }
 }
 db_free_result( $cur );
 return $list;
}

function db_loadList2( $sql, $maxrows=NULL ) {
	if (!($cur = db_exec( $sql ))) {;
		echo db_error();
		return false;
	}
	$list = array();
	$cnt = 0;
	while ($hash = db_fetch_row( $cur )) {
		$list[] = $hash[0];
		if( $maxrows && $maxrows == $cnt++ ) {
			break;
		}
	}
	db_free_result( $cur );
	return $list;
}

function db_loadColumn( $sql, $maxrows=NULL ) {
 if (!($cur = db_exec( $sql ))) {;
  echo db_error();
  return false;
 }
 $list = array();
 $cnt = 0;
 while ($row = db_fetch_row( $cur )) {
  $list[] = $row[0];
  if( $maxrows && $maxrows == $cnt++ ) {
   break;
  }
 }
 db_free_result( $cur );
 return $list;
}

function db_loadObjectList( $sql, $object, $maxrows = NULL ) {
 $cur = db_exec( $sql );
 if (!$cur) {
  die( "db_loadObjectList : " . db_error() );
 }
 $list = array();
 $cnt = 0;
 while ($row = db_fetch_array( $cur )) {
  $object->load( $row[0] );
  $list[] = $object;
  if( $maxrows && $maxrows == $cnt++ ) {
   break;
  }
 }
 db_free_result( $cur );
 return $list;
}

function db_insertArray( $table, &$hash, $verbose=false ) {
 $fmtsql = "insert into $table ( %s ) values( %s ) ";
 foreach ($hash as $k => $v) {
  if (is_array($v) or is_object($v) or $v == NULL) {
   continue;
  }
  $fields[] = $k;
  $values[] = "'" . ( $v ) . "'";
 }
 $sql = sprintf( $fmtsql, implode( ",", $fields ) ,  implode( ",", $values ) );

 ($verbose) && print "$sql<br />\n";

 if (!db_exec( $sql )) {
  return false;
 }
 $id = db_insert_id();
 return true;
}

function db_updateArray( $table, &$hash, $keyName, $verbose=false ) {
 $fmtsql = "UPDATE $table SET %s WHERE %s";
 foreach ($hash as $k => $v) {
  if( is_array($v) or is_object($v) or $k[0] == '_' ) // internal or NA field
   continue;

  if( $k == $keyName ) { // PK not to be updated
   $where = "$keyName='" . ( $v ) . "'";
   continue;
  }
  if ($v == '') {
   $val = 'NULL';
  } else {
   $val = "'" . ( $v ) . "'";
  }
  $tmp[] = "$k=$val";
 }
 $sql = sprintf( $fmtsql, implode( ",", $tmp ) , $where );
 ($verbose) && print "$sql<br />\n";
 $ret = db_exec( $sql );
 return $ret;
}

function db_delete( $table, $keyName, $keyValue ) {
 $keyName = ( $keyName );
 $keyValue = ( $keyValue );
 $ret = db_exec( "DELETE FROM $table WHERE $keyName='$keyValue'" );
 return $ret;
}

function db_insertObject( $table, &$object, $keyName = NULL, $verbose=false ) {
 $fmtsql = "INSERT INTO $table ( %s ) VALUES ( %s ) ";
 foreach (get_object_vars( $object ) as $k => $v) {
  if (is_array($v) or is_object($v) or $v == NULL) {
   continue;
  }
  if ($k[0] == '_') { // internal field
   continue;
  }
  $fields[] = $k;
  $values[] = "'" . ( $v ) . "'";
 }
 $sql = sprintf( $fmtsql, implode( ",", $fields ) ,  implode( ",", $values ) );
 ($verbose) && print "$sql<br />\n";
 if (!db_exec( $sql )) {
  return false;
 }
 $id = db_insert_id();
 ($verbose) && print "id=[$id]<br />\n";
 if ($keyName && $id)
  $object->$keyName = $id;
 return true;
}

function db_updateObject( $table, &$object, $keyName, $updateNulls=true ) {
 $fmtsql = "UPDATE $table SET %s WHERE %s";
 foreach (get_object_vars( $object ) as $k => $v) {
  if( is_array($v) or is_object($v) or $k[0] == '_' ) { // internal or NA field
   continue;
  }
  if( $k == $keyName ) { // PK not to be updated
   $where = "$keyName='" . ( $v ) . "'";
   continue;
  }
  if ($v === NULL && !$updateNulls) {
   continue;
  }
  if( $v == '' ) {
   $val = "''";
  } else {
   $val = "'" . ( $v ) . "'";
  }
  $tmp[] = "$k=$val";
 }
 $sql = sprintf( $fmtsql, implode( ",", $tmp ) , $where );
 return db_exec( $sql );
}

function db_dateConvert( $src, &$dest, $srcFmt ) {
 $result = strtotime( $src );
 $dest = $result;
 return ( $result != 0 );
}

function db_datetime( $timestamp = NULL ) {
 if (!$timestamp) {
  return NULL;
 }
 if (is_object($timestamp)) {
  return $timestamp->toString( '%Y-%m-%d %H:%M:%S');
 } else {
  return strftime( '%Y-%m-%d %H:%M:%S', $timestamp );
 }
}



///////////////////////////////******************************************************
 class my_sql
  {
    var $Host = '';
    var $Database = '';
    var $User = '';
    var $Password = '';
    var $Auto_Free = 0;

    var $Halt_On_Error = 'yes';
    var $PConnect = 0;
    var $Seq_Table = 'db_sequence';
    var $Record = array ();
    var $Row = null;
    var $Errno = 0;
    var $Error = '';
    var $type = 'mysql';
    var $revision = '1.2';
    var $Link_ID = 0;
    var $Query_ID = 0;
    var $locked = false;
    
	function db_sql ($query = '')
    {
      $this->query ($query);
    }

    function escape ($query)
    {
      if (!get_magic_quotes_gpc ())
      {
        $query = mysql_escape_string (trim ($query));
      }

      return $query;
    }

    function link_id ()
    {
      return $this->Link_ID;
    }

    function query_id ()
    {
      return $this->Query_ID;
    }

    function connect ($database = '', $host = '', $user = '', $password = '')
    {
      if ('' == $database)
      {
        $database = $this->Database;
      }

      if ('' == $host)
      {
        $host = $this->Host;
      }

      if ('' == $user)
      {
        $user = $this->User;
      }

      if ('' == $password)
      {
        $password = $this->Password;
      }

      if (0 == $this->Link_ID)
      {
        if (!$this->PConnect)
        {
          $this->Link_ID = mysql_connect ($host, $user, $password);

			mysql_query("set names cp1251");
		  
        }
        else
        {
          $this->Link_ID = mysql_pconnect ($host, $user, $password);
        }

        if (!$this->Link_ID)
        {
          $this->halt ('connection to database failed!');
          return FALSE;
        }

        if (!@mysql_select_db ($database, $this->Link_ID))
        {
          $this->halt ('cannot use database!');
          return FALSE;
        }
      }

      return $this->Link_ID;
    }

    function free ()
    {
      @mysql_free_result ($this->Query_ID);
      $this->Query_ID = 0;
    }

    function query ($query_string) {
     
	 global $CONFIG, $queries; 
      if ('' == $query_string)
      {
        return FALSE;
      }

      if (!$this->connect ())
      {
        return FALSE;
      }

      if ($this->Query_ID)
      {
        $this->free ();
      }

  

  

      $this->Query_ID = @mysql_query ($query_string, $this->Link_ID);
      $this->Row = 0;
      $this->Errno = mysql_errno ();
      $this->Error = mysql_error ();
      if (!$this->Query_ID)
      {
        $this->halt ('Invalid SQL: ' . $query_string);
      }

      return $this->Query_ID;
    }

    function getarrayofresult ($query_string)
    {
      if ($this->query ($query_string))
      {
        while ($arr = mysql_fetch_assoc ($this->Query_ID))
        {
          $val[] = $arr;
        }

        if (is_array ($val))
        {
          return $val;
        }
      }

      return FALSE;
    }

    function next_record ()
    {
      if (!$this->Query_ID)
      {
        $this->halt ('next_record called with no query pending.');
        return FALSE;
      }

      $this->Record = @mysql_fetch_array ($this->Query_ID);
      $this->Row += 1;
      $this->Errno = mysql_errno ();
      $this->Error = mysql_error ();
      $stat = is_array ($this->Record);
      if ((!$stat AND $this->Auto_Free))
      {
        $this->free ();
      }

      return $stat;
    }

    function seek ($pos = 0)
    {
      $status = @mysql_data_seek ($this->Query_ID, $pos);
      if ($status)
      {
        $this->Row = $pos;
      }
      else
      {
        $this->halt ('seek(' . $pos . ') failed: result has ' . $this->num_rows () . ' rows.');
        @mysql_data_seek ($this->Query_ID, @$this->num_rows ());
        $this->Row = $this->num_rows ();
        return FALSE;
      }

      return TRUE;
    }

    function lock ($table, $mode = 'write')
    {
      $query = 'lock tables ';
      if (is_array ($table))
      {
        while (list ($key, $value) = each ($table))
        {
          if (is_int ($key))
          {
            $key = $mode;
          }

          if (strpos ($value, ','))
          {
            $query .= str_replace (',', '' . ' ' . $key . ', ', $value) . ('' . ' ' . $key . ', ');
            continue;
          }
          else
          {
            $query .= '' . $value . ' ' . $key . ', ';
            continue;
          }
        }

        $query = substr ($query, 0, -2);
      }
      else
      {
        if (strpos ($table, ','))
        {
          $query .= str_replace (',', ' ' . $mode . ', ', $table) . ' ' . $mode;
        }
        else
        {
          $query .= $table . ' ' . $mode;
        }
      }

      if (!$this->query ($query))
      {
        $this->halt ('lock() failed.');
        return FALSE;
      }

      $this->locked = TRUE;
      return TRUE;
    }

    function unlock ()
    {
      $this->locked = FALSE;
      if (!$this->query ('unlock tables'))
      {
        $this->halt ('unlock() failed.');
        return FALSE;
      }

      return TRUE;
    }

    function affected_rows ()
    {
      return @mysql_affected_rows ($this->Link_ID);
    }

    function num_rows ()
    {
      return @mysql_num_rows ($this->Query_ID);
    }

    function num_fields ()
    {
      return @mysql_num_fields ($this->Query_ID);
    }

    function nf ()
    {
      return $this->num_rows ();
    }

    function np ()
    {
      print $this->num_rows ();
    }

    function f ($name)
    {
      if (isset ($this->Record[$name]))
      {
        return $this->Record[$name];
      }

    }

    function p ($Name)
    {
      if (isset ($this->Record[$Name]))
      {
        print $this->Record[$Name];
      }

    }

    function nextid ($seq_name)
    {
      if (!$this->locked)
      {
        if ($this->lock ($this->Seq_Table))
        {
          $locked = TRUE;
        }
        else
        {
          $this->halt ('cannot lock ' . $this->Seq_Table . ' - has it been created?');
          return FALSE;
        }
      }

      $q = sprintf ('select nextid from %s where seq_name = \'%s\'', $this->Seq_Table, $seq_name);
      if (!$this->query ($q))
      {
        $this->halt ('query failed in nextid: ' . $q);
        return FALSE;
      }

      if (!$this->next_record ())
      {
        $currentid = 0;
        $q = sprintf ('insert into %s values(\'%s\', %s)', $this->Seq_Table, $seq_name, $currentid);
        if (!$this->query ($q))
        {
          $this->halt ('query failed in nextid: ' . $q);
          return FALSE;
        }
      }
      else
      {
        $currentid = $this->f ('nextid');
      }

      $nextid = $currentid + 1;
      $q = sprintf ('update %s set nextid = \'%s\' where seq_name = \'%s\'', $this->Seq_Table, $nextid, $seq_name);
      if (!$this->query ($q))
      {
        $this->halt ('query failed in nextid: ' . $q);
        return FALSE;
      }

      if ($locked)
      {
        $this->unlock ();
      }

      return $nextid;
    }

    function metadata ($table = '', $full = FALSE)
    {
      $count = 0;
      $id = 0;
      $res = array ();
      if ($table)
      {
        $this->connect ();
        $id = @mysql_list_fields ($this->Database, $table);
        if (!$id)
        {
          $this->halt ('Metadata query failed.');
          return FALSE;
        }
      }
      else
      {
        $id = $this->Query_ID;
        if (!$id)
        {
          $this->halt ('No query specified.');
          return FALSE;
        }
      }

      $count = @mysql_num_fields ($id);
      if (!$full)
      {
        for ($i = 0; $i < $count; ++$i)
        {
          $res[$i]['table'] = @mysql_field_table ($id, $i);
          $res[$i]['name'] = @mysql_field_name ($id, $i);
          $res[$i]['type'] = @mysql_field_type ($id, $i);
          $res[$i]['len'] = @mysql_field_len ($id, $i);
          $res[$i]['flags'] = @mysql_field_flags ($id, $i);
        }
      }
      else
      {
        $res['num_fields'] = $count;
        for ($i = 0; $i < $count; ++$i)
        {
          $res[$i]['table'] = @mysql_field_table ($id, $i);
          $res[$i]['name'] = @mysql_field_name ($id, $i);
          $res[$i]['type'] = @mysql_field_type ($id, $i);
          $res[$i]['len'] = @mysql_field_len ($id, $i);
          $res[$i]['flags'] = @mysql_field_flags ($id, $i);
          $res['meta'][$res[$i]['name']] = $i;
        }
      }

      if ($table)
      {
        @mysql_free_result ($id);
      }

      return $res;
    }

    function table_names ()
    {
      $this->connect ();
      $h = @mysql_query ('show tables', $this->Link_ID);
      $i = 0;
      while ($info = @mysql_fetch_row ($h))
      {
        $return[$i]['table_name'] = $info[0];
        $return[$i]['tablespace_name'] = $this->Database;
        $return[$i]['database'] = $this->Database;
        ++$i;
      }

      @mysql_free_result ($h);
      return $return;
    }

    function halt ($msg)
    {
      $this->Error = @mysql_error ($this->Link_ID);
      $this->Errno = @mysql_errno ($this->Link_ID);
      if ($this->locked)
      {
        $this->unlock ();
      }

      if ($this->Halt_On_Error == 'no')
      {
        return NULL;
      }

      $this->haltmsg ($msg);
      if ($this->Halt_On_Error != 'report')
      {
        exit ('Session halted.');
      }

    }

    function haltmsg ($msg)
    {
      printf ('</td></tr></table><b>Database error:</b> %s<br>
', $msg);
      printf ('<b>MySQL Error</b>: %s (%s)<br>
', $this->Errno, $this->Error);
    }

    function lid ()
    {
      return @mysql_insert_id ($this->Link_ID);
    }

    function get_arr ($tabname)
    {
      $head = $this->metadata ($tabname);
      for ($j = 0; $j < $this->num_fields (); ++$j)
      {
        $table[0][$j] = $head[$j]['name'];
      }

      for ($i = 1; $i <= $this->num_rows (); ++$i)
      {
        $this->next_record ();
        for ($j = 0; $j < $this->num_fields (); ++$j)
        {
          $h = $head[$j]['name'];
          $table[$i][$j] = $this->f ($h);
          $table[$i][$j] = trim ($table[$i][$j]);
        }
      }

      return $table;
    }
  }

?>