1 <?php
2 
3 class MDB3Statement extends PDOStatement {
4 	public $dbh;
5     protected function __construct($dbh) {
6         $this->dbh = $dbh;
7     }
8 	function fetchRow() {
9 		return $this->fetch();
10 	}
11 	function numRows() {
12 		return $this->rowCount();
13 	}
14 }
15 
16 class MDB3 extends PDO {
17 	function __construct($dsn, $username="", $password="", $driver_options=array()) {
18         parent::__construct($dsn,$username,$password, $driver_options);
19         $this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('MDB3Statement', array($this)));
20         $this->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
21     }
22 	function query($sql, $mode = null, ...$params) {
23 		global $ALOCAL;
24 
25 		if ($ALOCAL['debug']) error_log($sql, 3, '/tmp/php.log');
26 		$stmt = parent::prepare($sql);
27 		$stmt->execute($params);
28 		return $stmt;
29 	}
30 	function getAll($query) {
31 		$stmt = $this->query($query);
32 		return $stmt->fetchAll();
33 	}
34 	function setOption($option,$val) {
35         if ('persistent' === $option)
36 			$this->setAttribute(PDO::ATTR_PERSISTENT, $val);
37 	}
38 	function autoCommit($autocommit) {
39 		if (! $autocommit && ! $this->inTransaction()) $this->beginTransaction();
40 	}
41 	function slaveOK()
42 	{
43 		$resultat = $this->query('show slave status');
44 		$etat = $resultat->fetch();
45 		if ($etat && $etat['Slave_IO_Running'] == 'Yes' && $etat['Slave_SQL_Running'] == 'Yes') return TRUE;
46 		return FALSE;
47 	}
48 }
49 
50 class PEAR
51 {
52 	static function isError($obj)
53 	{
54 		return FALSE;
55 	}
56 }
57 
58 class DB extends PEAR
59 {
60     static function &connect($dsn, $options = array())
61     {
62 		if (! is_array($dsn) && strpos($dsn,'//')) {
63 			$parts = explode('/', $dsn);
64 			list($dsna['phptype']) = explode(':', $parts[0]);
65 			list($creds , $dsna['hostspec']) = explode('@', $parts[2]);
66 			list($dsna['username'], $dsna['password']) = explode(':', $creds);
67 			$dsna['database'] = $parts[3];
68 			$dsn = $dsna;
69 		}
70 		if (is_array($dsn)) $obj = new MDB3($dsn['phptype'].':host='.$dsn['hostspec'].';dbname='.$dsn['database'], $dsn['username'], $dsn['password']);
71 		else $obj = new MDB3($dsn);
72 		$obj->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
73 		$obj->dsn = $dsn;
74         return $obj;
75     }
76 }
77 
78 if (! function_exists('mysql_connect')) {
79 
80 function mysql_connect($server, $login, $password) {
81 	global $DSN, $DB;
82 	if ($DB instanceof MDB3) return TRUE;
83 
84 	$DSN = array('phptype' => 'mysql',
85 			'username' => $login,
86 			'password' => $password,
87 			'hostspec' => $server);
88 	try {
89 		$DB = new PDO($DSN['phptype'].':host='.$DSN['hostspec'], $DSN['username'], $DSN['password']);
90 		$DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
91 	} catch (Exception $e) {
92 		return FALSE;
93 	}
94 	return true;
95 }
96 function mysql_select_db($db) {
97 	global $DSN, $DB;
98 	if ($DB instanceof MDB3) return TRUE;
99 
100 	$DSN['database'] = $db;
101 	try {
102 		$DB = new PDO($DSN['phptype'].':host='.$DSN['hostspec'].';dbname='.$DSN['database'], $DSN['username'], $DSN['password']);
103 		$DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
104 	} catch (Exception $e) {
105 		return FALSE;
106 	}
107 	return true;
108 }
109 function mysql_query($query) {
110 	global $DB;
111 
112 	return $DB->query($query);
113 }
114 function mysql_num_rows($statement) {
115 	return $statement->rowCount();
116 }
117 function mysql_fetch_array($statement, $params = NULL) {
118 	return $statement->fetch();
119 }
120 function mysql_fetch_assoc($statement, $params = NULL) {
121 	return $statement->fetch();
122 }
123 function mysql_error($statement = NULL) {
124 	return 'No Error Today';
125 }
126 
127 }
128