<?php

/* For licensing terms, see /license.txt */

/**
 * Chamilo installation
 * AJAX requests for the installation.
 */
ini_set('display_errors', '1');
ini_set('log_errors', '1');
error_reporting(-1);

require_once __DIR__.'/../../vendor/autoload.php';

define('SYSTEM_INSTALLATION', 1);
define('INSTALL_TYPE_UPDATE', 'update');
define('FORM_FIELD_DISPLAY_LENGTH', 40);
define('DATABASE_FORM_FIELD_DISPLAY_LENGTH', 25);
define('MAX_FORM_FIELD_LENGTH', 80);

// Including necessary libraries.
require_once '../inc/lib/api.lib.php';

session_start();

require_once api_get_path(LIBRARY_PATH).'database.constants.inc.php';
require_once 'install.lib.php';

$action = isset($_POST['a']) ? $_POST['a'] : null;

$dbHost = isset($_POST['db_host']) ? $_POST['db_host'] : 'localhost';
$dbUsername = isset($_POST['db_username']) ? $_POST['db_username'] : 'root';
$dbPass = isset($_POST['db_pass']) ? $_POST['db_pass'] : '';
$dbName = isset($_POST['db_name']) ? $_POST['db_name'] : 'chamilo';
$installType = isset($_POST['install_type']) ? $_POST['install_type'] : 'new';

if ('new' === $installType) {
    $dbName = null;
}

$dbPort = isset($_POST['db_port']) ? $_POST['db_port'] : 3306;

connectToDatabase($dbHost, $dbUsername, $dbPass, $dbName, $dbPort);
$manager = Database::getManager();

$db_prefix = api_get_configuration_value('db_prefix') ? api_get_configuration_value('db_prefix') : 'chamilo_';
$db_c_prefix = api_get_configuration_value('table_prefix') ? api_get_configuration_value('table_prefix') : 'crs_';

switch ($action) {
    case 'check_crs_tables':
        if (empty($dbName)) {
            echo 0;

            break;
        }

        $countOfTables = $manager
            ->getConnection()
            ->executeQuery("SHOW TABLES LIKE '$db_c_prefix$db_prefix%'")
            ->rowCount();

        echo $countOfTables;
        break;
    case 'remove_crs_tables':
        $statement = $manager
            ->getConnection()
            ->executeQuery("SHOW TABLES LIKE '$db_c_prefix$db_prefix%'");

        while ($table = $statement->fetch(PDO::FETCH_NUM)) {
            $manager->getConnection()->executeQuery("DROP TABLE {$table[0]}");
        }

        break;
    default:
        break;
}
