<?php
/**
 * Database Migrations Helper
 * Automatski provjerava i kreira potrebne tablice
 * 
 * Poziva se iz bootstrap.php
 * Podržava više baza: malo, ugo (detektira iz URL-a)
 */

/**
 * Detektira naziv baze iz URL-a
 * /malo/... => 'malo'
 * /ugo/... => 'ugo'
 */
function get_database_name() {
    // Prvo provjeri globalnu varijablu iz database.php
    global $g_baza;
    if (!empty($g_baza)) {
        return $g_baza;
    }
    
    // Inače detektiraj iz URL-a
    $uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
    
    if (preg_match('#^/(malo|ugo)/#i', $uri, $matches)) {
        return strtolower($matches[1]);
    }
    
    // Default
    return 'malo';
}

/**
 * Provjerava postoji li tablica u bazi
 */
function table_exists($tableName, $db = null) {
    if (!$db) {
        $dbName = get_database_name();
        $db = @mysql_connect('localhost', 'root', '');
        if ($db) {
            mysql_select_db($dbName, $db);
        }
    }
    
    $result = @mysql_query("SHOW TABLES LIKE '{$tableName}'", $db);
    return ($result && mysql_num_rows($result) > 0);
}

/**
 * Provjerava postoji li kolona u tablici
 */
function column_exists($tableName, $columnName, $db = null) {
    if (!$db) {
        $dbName = get_database_name();
        $db = @mysql_connect('localhost', 'root', '');
        if ($db) {
            mysql_select_db($dbName, $db);
        }
    }
    
    $result = @mysql_query("SHOW COLUMNS FROM `{$tableName}` LIKE '{$columnName}'", $db);
    return ($result && mysql_num_rows($result) > 0);
}

/**
 * Izvršava SQL datoteku
 */
function execute_sql_file($filepath, $db) {
    if (!file_exists($filepath)) {
        return false;
    }
    
    $sql = file_get_contents($filepath);
    
    // Ukloni komentare
    $sql = preg_replace('/--.*$/m', '', $sql);
    
    // Podijeli na pojedinačne upite
    $queries = array_filter(array_map('trim', explode(';', $sql)));
    
    foreach ($queries as $query) {
        if (!empty($query)) {
            @mysql_query($query, $db);
        }
    }
    
    return true;
}

/**
 * Glavna funkcija za pokretanje migracija
 * Poziva se jednom prilikom bootstrap-a
 * Automatski detektira bazu iz URL-a (malo/ugo)
 */
function run_migrations() {
    // Detektiraj bazu iz URL-a
    $dbName = get_database_name();
    
    // Spoji se na bazu
    $db = @mysql_connect('localhost', 'root', '');
    if (!$db) {
        return false;
    }
    mysql_select_db($dbName, $db);
    
    // Provjeri postoji li tablica radni_nalog
    if (!table_exists('radni_nalog', $db)) {
        // Izvrši schema SQL
        $schemaFile = dirname(__FILE__) . '/schema/radni_nalog_schema.sql';
        execute_sql_file($schemaFile, $db);
    }
    
    // ALTER TABLE za offer_items - dodaj kolone ako ne postoje
    if (table_exists('offer_items', $db)) {
        if (!column_exists('offer_items', 'tip_stavke', $db)) {
            @mysql_query("ALTER TABLE `offer_items` ADD COLUMN `tip_stavke` ENUM('artikl','automobil','uredjaj') NOT NULL DEFAULT 'artikl' AFTER `offer_id`", $db);
        }
        if (!column_exists('offer_items', 'automobil_id', $db)) {
            @mysql_query("ALTER TABLE `offer_items` ADD COLUMN `automobil_id` INT(11) DEFAULT NULL", $db);
        }
        if (!column_exists('offer_items', 'uredjaj_id', $db)) {
            @mysql_query("ALTER TABLE `offer_items` ADD COLUMN `uredjaj_id` INT(11) DEFAULT NULL", $db);
        }
        // Postavi article_id da može biti NULL
        @mysql_query("ALTER TABLE `offer_items` MODIFY COLUMN `article_id` INT(11) DEFAULT NULL", $db);
    }
    
    // ALTER TABLE za offers - dodaj radni_nalog_id ako ne postoji
    if (table_exists('offers', $db)) {
        if (!column_exists('offers', 'radni_nalog_id', $db)) {
            @mysql_query("ALTER TABLE `offers` ADD COLUMN `radni_nalog_id` INT(11) DEFAULT NULL", $db);
        }
    }
    
    mysql_close($db);
    return true;
}

// Pokreni migracije automatski
run_migrations();
