]> git.wh0rd.org - tt-rss.git/blobdiff - include/db.php
Merge pull request #89 from alsvartr/auth_radius
[tt-rss.git] / include / db.php
index 020fd08a424c4b773af58b4131b1131854b2da11..a70a1d87889ad4528141e966e4aee5711c2431b0 100644 (file)
 <?php
 
 require_once "config.php";
-require_once "classloader.php";
 
-$db_class = 'db_'.lcfirst(DB_TYPE);
+function db_connect($host, $user, $pass, $db) {
+       if (DB_TYPE == "pgsql") {
 
-$db = $db_class::instance(); //  call_user_func(array($db_class, 'instance'));
+               $string = "dbname=$db user=$user";
 
-function db_connect($host, $user, $pass, $db_name) {
-    global $db;
-    return $db->connect($host, $user, $pass, $db_name);
+               if ($pass) {
+                       $string .= " password=$pass";
+               }
+
+               if ($host) {
+                       $string .= " host=$host";
+               }
+
+               if (defined('DB_PORT') && DB_PORT) {
+                       $string = "$string port=" . DB_PORT;
+               }
+
+               $link = pg_connect($string);
+
+               if (!$link) {
+                       die("Unable to connect to database (as $user to $host, database $db):" . pg_last_error());
+               }
+
+               return $link;
+
+       } else if (DB_TYPE == "mysql") {
+               $link = mysql_connect($host, $user, $pass);
+               if ($link) {
+                       $result = mysql_select_db($db, $link);
+                       if (!$result) {
+                               die("Can't select DB: " . mysql_error($link));
+                       }
+                       return $link;
+               } else {
+                       die("Unable to connect to database (as $user to $host, database $db): " . mysql_error());
+               }
+       }
 }
 
-function db_escape_string($s, $strip_tags = true) {
-    global $db;
-    return $db->escape_string($s, $strip_tags);
+function db_escape_string($link, $s, $strip_tags = true) {
+       if ($strip_tags) $s = strip_tags($s);
+
+       if (DB_TYPE == "pgsql") {
+               return pg_escape_string($link, $s);
+       } else {
+               return mysql_real_escape_string($s, $link);
+       }
 }
 
 function db_query($link, $query, $die_on_error = true) {
-    global $db;
-    return $db->query($query, $die_on_error);
+       if (DB_TYPE == "pgsql") {
+               $result = pg_query($link, $query);
+               if (!$result) {
+                       $query = htmlspecialchars($query); // just in case
+                       if ($die_on_error) {
+                               die("Query <i>$query</i> failed [$result]: " . ($link ? pg_last_error($link) : "No connection"));
+                       }
+               }
+               return $result;
+       } else if (DB_TYPE == "mysql") {
+               $result = mysql_query($query, $link);
+               if (!$result) {
+                       $query = htmlspecialchars($query);
+                       if ($die_on_error) {
+                               die("Query <i>$query</i> failed: " . ($link ? mysql_error($link) : "No connection"));
+                       }
+               }
+               return $result;
+       }
 }
 
 function db_fetch_assoc($result) {
-    global $db;
-    return $db->fetch_assoc($result);
+       if (DB_TYPE == "pgsql") {
+               return pg_fetch_assoc($result);
+       } else if (DB_TYPE == "mysql") {
+               return mysql_fetch_assoc($result);
+       }
 }
 
+
 function db_num_rows($result) {
-    global $db;
-    return $db->num_rows($result);
+       if (DB_TYPE == "pgsql") {
+               return pg_num_rows($result);
+       } else if (DB_TYPE == "mysql") {
+               return mysql_num_rows($result);
+       }
 }
 
 function db_fetch_result($result, $row, $param) {
-    global $db;
-    return $db->fetch_result($result, $row, $param);
+       if (DB_TYPE == "pgsql") {
+               return pg_fetch_result($result, $row, $param);
+       } else if (DB_TYPE == "mysql") {
+               // I hate incoherent naming of PHP functions
+               return mysql_result($result, $row, $param);
+       }
 }
 
 function db_unescape_string($str) {
-    global $db;
-    return $db->unescape_string($str);
+       $tmp = str_replace("\\\"", "\"", $str);
+       $tmp = str_replace("\\'", "'", $tmp);
+       return $tmp;
 }
 
 function db_close($link) {
-    global $db;
-    return $db->close();
+       if (DB_TYPE == "pgsql") {
+
+               return pg_close($link);
+
+       } else if (DB_TYPE == "mysql") {
+               return mysql_close($link);
+       }
 }
 
 function db_affected_rows($link, $result) {
-    global $db;
-    return $db->affected_rows($result);
+       if (DB_TYPE == "pgsql") {
+               return pg_affected_rows($result);
+       } else if (DB_TYPE == "mysql") {
+               return mysql_affected_rows($link);
+       }
 }
 
 function db_last_error($link) {
-    global $db;
-    return $db->last_error();
+       if (DB_TYPE == "pgsql") {
+               return pg_last_error($link);
+       } else if (DB_TYPE == "mysql") {
+               return mysql_error($link);
+       }
 }
 
 function db_quote($str){
-    global $db;
-    return $db->quote($str);
+       return("'$str'");
 }
 
 ?>