<?php
/*
 *
 * PostgreSQL / MySQL class
 * By Maikel Gommans
 * http://www.maikelg.eu
 * maikel@maikelg.eu
 *
 */
 
 
class sql {

    
// Variabelen
    
static private $querycount 0;
    static private 
$dbserver;
    static private 
$errorset;
    static private 
$errorarray = array();
    static private 
$connected false;
    static private 
$connecterrorgiven false;
    static private 
$query;
    static private 
$debug false;
    static private 
$debugarray = array();
    
    
// Set dbserver
    
    
public static function setSoftware($i) {
    
        if(
$i == 1) {
        
            
// MySQL
            
self::$dbserver 1;
            
            if(
self::debug())
                
self::addDebug("Database server changed to MySQL (setSoftware)");
            
        }
        elseif(
$i == 2) {
        
            
// PostgreSQL
            
self::$dbserver 2;
            
            if(
self::debug())
                
self::addDebug("Database server changed to PostgreSQL (setSoftware)");
            
        }
        else {
        
            
// Ongeldige server
            
self::addError(0,"Invalid SQL server");
            
        }
        
    }
    
    
// Errorhandler
    
        // Error aan log toevoegen
        
        
private static function addError($d 0,$i,$c 0) {
        
            if(
trim($i) !== "") {
                if(
$c == 1) {
                
                    if(
self::$connecterrorgiven == false) {
                    
                        if(
$d == 1) {
                        
                            
$i "<strong>MySQL response:</strong> ".$i;
                            
                        }
                        elseif(
$d == 2) {
                        
                            
$i "<strong>PostgreSQL response:</strong> ".$i;
                            
                        }
                        
self::$errorset 1;
                        
self::$errorarray[] = $i;
                        
self::$connecterrorgiven true;
                        
                    }
                    
                }
                else {
                    if(
$d == 1) {
                        
                        
$i "<strong>MySQL response:</strong> ".$i;
                            
                    }
                    elseif(
$d == 2) {
                        
                        
$i "<strong>PostgreSQL response:</strong> ".$i;
                            
                    }
                    
self::$errorset 1;
                    
self::$errorarray[] = $i;
                }
            }
            
        }
        
        
// Error log ophalen
        
        
public static function getErrors() {
        
            if(
self::debug())
                
self::addDebug("Error log requested (getErrors)");
                
            return 
self::$errorarray;
            
        }
         
        
// Error checker
        
        
public static function ifErrors() {
        
            if(
self::$errorset == 1) {
                
                if(
self::debug())
                    
self::addDebug("Error check, true (ifErrors)");
                    
                return 
true;
                
            }
            else {
            
                if(
self::debug())
                    
self::addDebug("Error check, false (ifErrors)");
                    
                return 
false;
                
            }
            
        }
    
    
// Connection checker
    
    
private static function connected() {
    
        if(
self::$connected) {
            
            return 
true;
            
        }
        else {
            
            
self::addError(0,"Not connected!",1);
            return 
false;
            
        }
        
    }
    
    
// Query
    
    
public static function query($i) {
    
        if(
self::connected()) {
        
            if(
self::$dbserver == 1) {
                
                
$q = @mysql_query($i) or $err 1;
                
self::countquery();
                
self::SETquery($q);
                
                if(
$err == 1) {
                
                    if(
self::debug())
                        
self::addDebug("Query failed (MySQL)(query): ".$i);
                    
                    
self::addError(1,mysql_error());
                    return 
false;                
                }
                else {
                    
                    if(
self::debug())
                        
self::addDebug("Query executed (MySQL)(query): ".$i);
                
                    return 
$q;
                    
                }
                
            }
            elseif(
self::$dbserver == 2) {
            
                
$q = @pg_query($i) or $err 1;
                
self::countquery();
                
self::SETquery($q);
                
                if(
$err == 1) {
                    
                    if(
self::debug())
                        
self::addDebug("Query failed (PostgreSQL)(query): ".$i);
                
                    
self::addError(2,pg_last_error());
                    return 
false;                
                }
                else {
                
                    if(
self::debug())
                        
self::addDebug("Query executed (PostgreSQL)(query): ".$i);
                        
                    return 
$q;
                    
                }
                
            }
            else {
            
                
self::addError(0,"Unexpected error! (query)");
                
            }
            
        }
        
        
    }
    
    
// Fetch assoc
    
    
public static function fetch_assoc($i NULL) {
    
        if(
$i == NULL) {
        
            
$i self::$query;
            
        }

        if(
self::connected()) {
        
            if(
self::$dbserver == 1) {
            
                
$q = @mysql_fetch_assoc($i) or $err 1;
                
                if(
$err == 1) {
                
                    
self::addError(1,mysql_error());
                    
                }
                
                                
                return 
$q;
                
            }
            elseif(
self::$dbserver == 2) {
            
                
$q = @pg_fetch_assoc($i) or $err 1;
                
                if(
$err == 1) {
                
                    
self::addError(2,pg_last_error());
                    
                }
                
                                
                return 
$q;
                
            }
            else {
            
                
self::addError(0,"Unexpected error! (fetch_assoc)");
                
            }
            
        }
        
        
    }
    
    
// Fetch row
    
    
public static function fetch_row($i NULL) {
    
        if(
$i == NULL) {
        
            
$i self::$query;
            
        }
        
        if(
self::connected()) {
        
            if(
self::$dbserver == 1) {
            
                
$q = @mysql_fetch_row($i) or $err 1;
                
                if(
$err == 1) {
                
                    
self::addError(1,mysql_error());
                    
                }
                
                return 
$q;
                
            }
            elseif(
self::$dbserver == 2) {
            
                
$q = @pg_fetch_row($i) or $err 1;
                
                if(
$err == 1) {
                
                    
self::addError(2,pg_last_error());
                    
                }
                
                return 
$q;
                
            }
            else {
            
                
self::addError(0,"Unexpected error! (fetch_row)");
                
            }
            
        }
        
        
    }
    
    
// Num rows
    
    
public static function num_rows($i NULL) {
    
        if(
$i == NULL) {
        
            
$i self::$query;
            
        }
        
        if(
self::connected()) {
        
            if(
self::$dbserver == 1) {
            
                
$q = @mysql_num_rows($i) or $err 1;
                
                if(
$err == 1) {
                
                    
self::addError(1,mysql_error());
                    
                }
                
                if(
self::debug())
                        
self::addDebug("Num rows (MySQL)");
                
                return 
$q;
                
            }
            elseif(
self::$dbserver == 2) {
            
                
$q = @pg_num_rows($i) or $err 1;
                    
                if(
$err == 1) {
                
                    
self::addError(2,pg_last_error());
                    
                }
                
                if(
self::debug())
                        
self::addDebug("Num rows (PostgreSQL)");
                
                return 
$q;
                
            }
            else {
            
                
self::addError(0,"Unexpected error! (num_rows)");
                
            }
            
        }
        
        
    }
    
    
// Connect
    
    
public static function connect($login) {
    
        if(
self::$dbserver == 1) {
        
            if((isset(
$login['host'])) AND (isset($login['user'])) AND (isset($login['pass'])) AND (isset($login['db']))) {
            
                if (@
mysql_connect($login['host'],$login['user'],$login['pass']))
                {
                    if (@
mysql_select_db($login['db']))
                    {
                        if(
self::debug())
                            
self::addDebug("Succesfully connected to MySQL!");
                        
                        
self::SETconnected(true);
                    }
                    else {
                    
                        
self::addError(0,"MySQL database doesn't exist!");
                        
                    }
                }
                else {
                
                    
self::addError(0,"MySQL connect failed!");
                    
                }
                
                
            
            }
            else {
            
                
self::addError(0,"Connect array incomplete!");
                
            }
            
        }
        elseif(
self::$dbserver == 2) {
        
            if((isset(
$login['host'])) AND (isset($login['user'])) AND (isset($login['pass'])) AND (isset($login['db']))) {
            
                if (@
pg_connect("host=".$login['host']." port=5432 dbname=".$login['db']." user=".$login['user']." password=".$login['pass']))
                {
                        if(
self::debug())
                            
self::addDebug("Succesfully connected to PostgreSQL!");
                            
                        
self::SETconnected(true);
                }
                else {
                
                    
self::addError(0,"PostgreSQL connect failed!");
                    
                }
                
                
            
            }
            else {
            
                
self::addError(0,"Connect array incomplete!");
                
            }
            
        }
        else {
        
            
self::addError(0,"No database software chosen!");
            
        }
        
        
    }
    
    
// Count query
    
private static function countquery() {
    
        
self::$querycount++;
        
    }
    
    
// Get querycount
    
public static function totalquerys() {
    
        if(
self::debug())
            
self::addDebug("Total querys requested! (totalquerys)");
            
        return 
self::$querycount;
        
    }
    
    
// Clear query
    
    
public static function clearquery() {
    
        if(
self::debug())
            
self::addDebug("Query cleared! (clearquery)");
            
        
self::$query NULL;
        
    }

    
// Close connection
    
    
public static function end() {
    
        if(
self::connected()) {
        
            if(
self::$dbserver == 1) {
            
                
mysql_close();
                
                if(
self::debug())
                    
self::addDebug("Connection closed! (MySQL)(end)");
                    
                return 
true;
                
            }
            elseif(
self::$dbserver == 2) {
            
                
pg_close();
                
                if(
self::debug())
                    
self::addDebug("Connection closed! (PostgreSQL)(end)");
                    
                return 
true;
                
            }
            else {
            
                
self::addError(0,"Unexpected error! (end)");
                
            }
            
        }
        
    }
    
    
// Debug
    
        // Add
        
        
private static function addDebug($i) {
        
            
self::$debugarray[] = $i;
            
        }
        
        
// Get log
                
        
public static function getDebugInfo() {
        
            return 
self::$debugarray;
            
        }
        
        
// Debug checker
        
        
private static function debug() {
        
            if(
self::$debug === true) {
            
                return 
true;
                
            }
            else {
            
                return 
false;
                
            }
            
        }
    
    
// SETTERS
    
        // Connected
        
        
private static function SETconnected($i) {
        
            
self::$connected $i;
            
        }
        
        
// Query
        
        
private static function SETquery($i) {
        
            
self::$query $i;
            
        }
        
        
// Debug mode
        
        
public static function DebugMode($i) {
        
            if(
$i === true) {
                
self::$debug $i;
                
self::addDebug("Debug logging started! (DebugMode)");
            }
            elseif(
$i === false) {
            
                
self::$debug $i;
                
self::addDebug("Debug logging stopped! (DebugMode)");
                
            }
            else {
            
                
self::addError(0,"Invalid debug mode!");
                
            }
        }
     
     
 }
 
?>