<?php
/**
 * Demo Oracle — parametres de la base (section « config »).
 *
 * Portage de modules/oracle/_report_config.php. Identique en lecture : identite
 * de la base, instances, GV$PARAMETER, parametres NLS, avec la meme barre de
 * filtres et le meme tri de colonnes.
 *
 * Ce qui manque, et pourquoi : le module complet permet au profil DBA de
 * modifier une valeur en ligne (ALTER SYSTEM SET) et de la remettre par defaut
 * (ALTER SYSTEM RESET). Ces deux gestionnaires vivaient dans le report.php du
 * module complet ; ils ne sont pas ici, et DemoOracleConfigRepository n'expose
 * aucune methode d'ecriture. La colonne d'actions et la fenetre d'edition
 * disparaissent donc de la vue, faute d'avoir quoi que ce soit a appeler.
 *
 * Inclus par report.php. Variables disponibles : $oraDb, $db, $currentUser,
 * $settings, $csrfToken.
 */
require_once __DIR__ . '/lib/DemoOracleOciConnect.php';
require_once __DIR__ . '/lib/DemoOracleConfigRepository.php';

$ociError   = null;
$fetchError = null;
$rows       = [];
$nlsRows    = [];
$dbInfo     = null;
$instances  = [];

$conn = demo_oracle_oci_open($oraDb, $db, $ociError, '', 'config/params');
if (!$conn) {
    $fetchError = $ociError
        ? ('ORA-' . $ociError['code'] . ': ' . $ociError['message'])
        : t('demo_oracle.connect_error');
} else {
    $dbInfo    = DemoOracleConfigRepository::getDbInfo($conn) ?: null;
    $instances = DemoOracleConfigRepository::getInstances($conn);
    $rows      = DemoOracleConfigRepository::getParameters($conn);
    $nlsRows   = DemoOracleConfigRepository::getNlsParameters($conn);

    if (empty($rows)) {
        $err        = oci_error($conn);
        $fetchError = $err ? ('ORA-' . $err['code'] . ': ' . $err['message']) : null;
    }

    oci_close($conn);
}

// Libelles des types de gv$parameter.type
$typeLabels = [
    1 => t('demo_oracle.param_type_1'),
    2 => t('demo_oracle.param_type_2'),
    3 => t('demo_oracle.param_type_3'),
    4 => t('demo_oracle.param_type_4'),
    5 => t('demo_oracle.param_type_5'),
    6 => t('demo_oracle.param_type_6'),
];

View::display(__DIR__ . '/views/report/config.php', [
    'fetchError' => $fetchError,
    'rows'       => $rows,
    'nlsRows'    => $nlsRows,
    'dbInfo'     => $dbInfo,
    'instances'  => $instances,
    'typeLabels' => $typeLabels,
]);
