<?php
/**
 * Demo Oracle — calcul des statistiques (section « config/stats »).
 *
 * Portage de modules/oracle/_report_config_stats.php. Toute la lecture est la :
 * preferences globales DBMS_STATS, statistiques systeme AUX_STATS$, resume par
 * schema, statistiques du dictionnaire, tache automatique et son historique.
 *
 * Les trois commandes du module complet — modifier une preference globale,
 * planifier un calcul, activer ou desactiver la tache automatique — restent
 * VISIBLES dans la page, desactivees. Montrer un bouton eteint informe ;
 * l'effacer laisserait croire que la fonction n'existe pas. Aucun gestionnaire
 * ne leur repond : DemoOracleConfigStatsRepository et
 * DemoOracleDashStatsRepository n'exposent que des lectures.
 *
 * Inclus par report.php. Variables : $oraDb, $db, $currentUser, $settings.
 */

require_once __DIR__ . '/lib/DemoOracleOciConnect.php';
require_once __DIR__ . '/lib/DemoOracleDashStatsRepository.php';
require_once __DIR__ . '/lib/DemoOracleConfigStatsRepository.php';

/** @var array    $oraDb       */
/** @var Database $db          */
/** @var object   $settings    */
/** @var array    $currentUser */

$ociError   = null;
$fetchError = null;
$conn       = demo_oracle_oci_open($oraDb, $db, $ociError, '', 'config/stats');

$prefs         = [];
$sysStats      = [];
$schemaStats   = [];
$dictStats     = [];
$autoTask      = [];
$autoHistory   = [];

$prefNames = [
    'AUTOSTATS_TARGET','CASCADE','CONCURRENT','DEGREE',
    'ESTIMATE_PERCENT','METHOD_OPT','NO_INVALIDATE',
    'GRANULARITY','PUBLISH','INCREMENTAL',
    'INCREMENTAL_STALENESS','STALE_PERCENT','TABLE_CACHED_BLOCKS',
];

if (!$conn) {
    $fetchError = $ociError
        ? ('ORA-' . $ociError['code'] . ': ' . $ociError['message'])
        : t('demo_oracle.connect_error');
} else {
    $prefs       = DemoOracleDashStatsRepository::fetchGlobalPrefs($conn, $prefNames);
    $sysStats    = DemoOracleDashStatsRepository::fetchSystemStats($conn);
    $schemaStats = DemoOracleConfigStatsRepository::fetchSchemaStatsSummary($conn);
    $dictStats   = DemoOracleConfigStatsRepository::fetchDictionaryStats($conn);
    $autoTask    = DemoOracleConfigStatsRepository::fetchAutoTask($conn, 'auto optimizer stats collection');
    $autoHistory = DemoOracleConfigStatsRepository::fetchAutoTaskHistory($conn, 'auto optimizer stats collection', 15);
    oci_close($conn);
}

View::display(__DIR__ . '/views/report/config_stats.php', [
    'fetchError'  => $fetchError,
    'prefs'       => $prefs,
    'prefNames'   => $prefNames,
    'sysStats'    => $sysStats,
    'schemaStats' => $schemaStats,
    'dictStats'   => $dictStats,
    'autoTask'    => $autoTask,
    'autoHistory' => $autoHistory,
    'settings'    => $settings,
]);
