
/* MySQL / phpMyAdmin connection for SmartUni */
$servername = "localhost";
$dbusername = "root";
$dbpassword = "";
$dbname     = "socmed";

$conn = mysqli_connect($servername, $dbusername, $dbpassword, $dbname  ^X
if (!$conn) {
    die("Database connection failed: " . mysqli_connect_error());
}

mysqli_set_charset($conn, "utf8mb4");

/* Compatibility helpers for old sqlsrv-style code */

if (!defined('SQLSRV_FETCH_ASSOC')) {
    define('SQLSRV_FETCH_ASSOC', MYSQLI_ASSOC);
}

if (!isset($GLOBALS['SMARTUNI_LAST_MYSQL_ERROR'])) {
    $GLOBALS['SMARTUNI_LAST_MYSQL_ERROR'] = null;
}

if (!class_exists('SmartUniMySQLStmt')) {
    class SmartUniMySQLStmt {
        public $stmt;
        public $result;
        public $affected_rows;

        public function __construct($stmt = null, $result = null, $affected_rows = 0) {
            $this->stmt = $stmt;
            $this->result = $result;
            $this->affected_rows = $affected_rows;
        }
    }
}

if (!function_exists('smartuni_normalize_sql')) {
    function smartuni_normalize_sql($sql) {
        $sql = str_replace("GETDATE()", "NOW()", $sql);
        $sql = str_replace("getdate()", "NOW()", $sql);
        $sql = preg_replace('/ISNULL\s*\(/i', 'COALESCE(', $sql);
        $sql = str_replace('[', '', $sql);
        $sql = str_replace(']', '', $sql);
        return $sql;
    }
}

if (!function_exists('smartuni_bind_params')) {
    function smartuni_bind_params($stmt, $params) {
        if (empty($params)) return true;

        $types = '';
        $values = [];

        foreach ($params as $param) {
            if (is_int($param)) {
                $types .= 'i';
            } elseif (is_float($param) || is_double($param)) {
                $types .= 'd';
            } else {
                $types .= 's';
            }

            $values[] = $param;
        }

        return mysqli_stmt_bind_param($stmt, $types, ...$values);
    }
}

if (!function_exists('sqlsrv_query')) {
    function sqlsrv_query($conn, $sql, $params = []) {
        $GLOBALS['SMARTUNI_LAST_MYSQL_ERROR'] = null;
        $sql = smartuni_normalize_sql($sql);

        if (!empty($params)) {
            $sql = preg_replace('/\?/', '?', $sql);

            $stmt = mysqli_prepare($conn, $sql);

            if (!$stmt) {
                $GLOBALS['SMARTUNI_LAST_MYSQL_ERROR'] = mysqli_error($conn);
                return false;
            }

            smartuni_bind_params($stmt, $params);

            if (!mysqli_stmt_execute($stmt)) {
                $GLOBALS['SMARTUNI_LAST_MYSQL_ERROR'] = mysqli_stmt_error($stmt);
                return false;
            }

            $result = mysqli_stmt_get_result($stmt);
            $affected = mysqli_stmt_affected_rows($stmt);

            return new SmartUniMySQLStmt($stmt, $result, $affected);
        }

        $result = mysqli_query($conn, $sql);

        if (!$result) {
            $GLOBALS['SMARTUNI_LAST_MYSQL_ERROR'] = mysqli_error($conn);
            return false;
        }

        if ($result === true) {
            return new SmartUniMySQLStmt(null, null, mysqli_affected_rows($conn));
        }

        return new SmartUniMySQLStmt(null, $result, mysqli_affected_rows($conn));
    }
}

if (!function_exists('sqlsrv_fetch_array')) {
    function sqlsrv_fetch_array($stmt, $fetchType = MYSQLI_ASSOC) {
        if ($stmt instanceof SmartUniMySQLStmt) {
            if (!$stmt->result) return null;
            $row = mysqli_fetch_array($stmt->result, MYSQLI_ASSOC);
        } elseif ($stmt instanceof mysqli_result) {
            $row = mysqli_fetch_array($stmt, MYSQLI_ASSOC);
        } else {
            return null;
        }

        if (!$row) return null;

        foreach ($row as $key => $value) {
            if (
                $value !== null &&
                in_array($key, ['created_at', 'updated_at', 'last_active', 'archived_at', 'scheduled_date'])
            ) {
                try {
                    $row[$key] = new DateTime($value);
                } catch (Exception $e) {
                    // keep original value
                }
            }
        }

        return $row;
    }
}

if (!function_exists('sqlsrv_fetch_assoc')) {
    function sqlsrv_fetch_assoc($stmt) {
        return sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC);
    }
}

if (!function_exists('sqlsrv_has_rows')) {
    function sqlsrv_has_rows($stmt) {
        if ($stmt instanceof SmartUniMySQLStmt && $stmt->result) {
            return mysqli_num_rows($stmt->result) > 0;
        }

        if ($stmt instanceof mysqli_result) {
            return mysqli_num_rows($stmt) > 0;
        }

        return false;
    }
}

if (!function_exists('sqlsrv_rows_affected')) {
    function sqlsrv_rows_affected($stmt) {
        if ($stmt instanceof SmartUniMySQLStmt) {
            return $stmt->affected_rows;
        }

        return 0;
    }
}

if (!function_exists('sqlsrv_errors')) {
    function sqlsrv_errors() {
        $msg = $GLOBALS['SMARTUNI_LAST_MYSQL_ERROR'] ?? 'Unknown MySQL error';
        return [['message' => $msg]];
    }
}

if (!function_exists('sqlsrv_begin_transaction')) {
    function sqlsrv_begin_transaction($conn) {
        return mysqli_begin_transaction($conn);
    }
}

if (!function_exists('sqlsrv_commit')) {
    function sqlsrv_commit($conn) {
        return mysqli_commit($conn);
    }
}

if (!function_exists('sqlsrv_rollback')) {
    function sqlsrv_rollback($conn) {
        return mysqli_rollback($conn);
    }
}
?>
