<script>
    var lang_cache_clean_confirm = "<?= __("Are you sure you want to clear the cache?"); ?>";
    var lang_cache_clear_failure = "<?= __("Failed to clear cache!"); ?>";
    var lang_git_last_version_check = "<?= __("Last version check: %s"); ?>";
    var lang_git_is_uptodate = "<?= __("Wavelog is up to date!"); ?>";
    var lang_git_new_update_available = "<?= __("There is a newer version available: %s"); ?>";
    var lang_git_remote_doesnt_know_branch = "<?= __("The Remote Repository doesn't know your branch."); ?>";
</script>

<div class="container debug_main mb-4">
    <br>
    <?php if ($this->session->flashdata('success')) { ?>
        <!-- Display Message -->
        <div class="alert alert-success">
            <p><?php echo $this->session->flashdata('success'); ?></p>
        </div>
    <?php } ?>

    <?php if ($this->session->flashdata('error')) { ?>
        <!-- Display Message -->
        <div class="alert alert-danger">
            <p><?php echo $this->session->flashdata('error'); ?></p>
        </div>
    <?php } ?>

    <h2><?php echo $page_title; ?></h2>

    <div class="row">
        <div class="col">

            <div class="card">
                <div class="card-header"><?= __("Wavelog Information"); ?></div>
                <div class="card-body">
                    <table width="100%">
                        <tr>
                            <td><?= __("Version"); ?></td>
                            <td><?php echo $running_version; ?>
                                <?php if ($running_version == $latest_release) { ?>
                                    <span class="badge text-bg-success"> <?= __("Latest Version"); ?></span>
                                <?php } ?>
                            </td>
                        </tr>
                        <?php if ($newer_version_available) { ?>
                        <tr>
                            <td><?= __("Latest Release"); ?></td>
                            <td><a href="https://github.com/wavelog/wavelog/releases/tag/<?php echo $latest_release; ?>" target="_blank"><?php echo $latest_release."\n"; ?></a></td>
                        </tr>
                        <?php } ?>
                        <tr>
                            <td><?= __("ADIF Version"); ?></td>
                            <td><?php echo $this->optionslib->get_option('adif_version'); ?>
                            </td>
                        </tr>
                        <tr>
                            <td><?= __("Language"); ?></td>
                            <td><?= __(ucfirst($this->config->item('language'))) . "\n"; ?></td>
                        </tr>
                        <tr>
                            <td><?= __("Base URL"); ?></td>
                            <td><span id="baseUrl"><a href="<?php echo site_url(); ?>" target="_blank"><?php echo site_url(); ?></a></span> <span data-bs-toggle="tooltip" title="<?= __("Copy to clipboard"); ?>" onclick='copyURL("<?php echo site_url(); ?>")'><i class="copy-icon fas fa-copy"></span></td>
                        </tr>
                        <tr>
                            <td><?= __("Migration"); ?></td>
                            <td><?php echo (isset($migration_version) ? $migration_version : "<span class='badge text-bg-danger'>". __("There is something wrong with your Migration in Database!") . "</span>"); ?></td>
                        </tr>
                        <?php if (!$migration_is_uptodate) { ?>
                        </table>
                            <div class="alert alert-danger mt-3 mb-3">
                                <h5><?= __("Migration is outdated and locked!"); ?></h5>
                                <p><?= sprintf(__("The current migration is not the version it is supposed to be. Reload this page after %s seconds. If this warning persists, your migration is likely locked due to a previously failed process. Delete the file %s to force the migration to run again."), $miglock_lifetime, $migration_lockfile); ?></p>
                                <p><?= sprintf(__("Check this wiki article %shere%s for more information."), '<u><a href="https://docs.wavelog.org/troubleshooting/migration-locked/" target="_blank">', '</a></u>'); ?></p>
                                <p><?= sprintf(__("Current migration is %s"), $migration_version); ?><br>
                                    <?= sprintf(__("Migration should be %s"), $migration_config); ?></p>
                            </div>
                        <table>
                        <?php } ?>
                        <tr>
                            <td><?= __("Environment"); ?></td>
                            <td><?php echo ENVIRONMENT; ?></td>
                        </tr>
                        <tr>
                            <td><?= __("System Time"); ?></td>
                            <td><?php echo $system_time; ?></td>
                        </tr>
                        <tr class="blank-row">
                            <td> </td>
                            <td> </td>
                        </tr>
                        <tr>
                            <td><?= __("Total QSO on this instance"); ?></td>
                            <td><?php echo number_format($qso_total, 0, '.', ',') . ' QSOs'; ?></td>
                        </tr>
                        <tr>
                            <td><?= __("Total User"); ?></td>
                            <td><?php echo number_format($users_total, 0, '.', ',') . ' ' . _ngettext("User", "Users", intval($users_total)); ?></td>
                        </tr>
                    </table>
                </div>
            </div>

            <div class="card">
                <div class="card-header"><?= __("Server Information"); ?></div>
                <div class="card-body">
                    <table width="100%">
                        <tr>
                            <td><?= __("Server Software"); ?></td>
                            <td><?php echo $_SERVER['SERVER_SOFTWARE']; ?></td>
                        </tr>

                        <tr>
                            <td><?= __("PHP Version"); ?></td>
                            <td>
                              <?php
                                 if (version_compare(PHP_VERSION, '8.0.0') >= 0) {
                                    echo phpversion()." <span class=\"badge text-bg-success\">OK</span>";
                                 } else {
                                    echo phpversion()." <span data-bs-toggle=\"tooltip\" title=\"Please update!\" class=\"badge text-bg-warning\">".__("Deprecated")."</span>";
                                 }
                              ?>
                           </td>
                        </tr>

                        <tr>
                            <td><?= __("MySQL Version"); ?></td>
                            <td><?php echo $this->db->version(); ?></td>
                        </tr>

                        <tr>
                            <td><?= __("OpenSSL Version"); ?></td>
                            <td><?php echo OPENSSL_VERSION_TEXT ?? __("not found"); ?></td>
                        </tr>
                        <tr>
                            <td><?= __("Codeigniter Version"); ?></td>
                            <td><?php echo CI_VERSION; ?></td>
                        </tr>
                    </table>
                </div>
            </div>

            <div class="card">
                <div class="card-header"><?= __("Wavelog Worker Backend"); ?></div>
                <div class="card-body">
                    <div id="worker-status-container">
                        <span class="text-muted"><?= __("Loading..."); ?></span>
                    </div>
                </div>
            </div>

            <div class="card">
                <div class="card-header"><?= __("Folder Permissions"); ?></div>
                <div class="card-body">
                    <p><?= __("This verifies that the folders used by Wavelog have read and write permissions by PHP."); ?></p>
                    <table width="100%">
                        <tr>
                            <td>backup</td>
                            <td>
                                <?php if ($backup_folder == true) { ?>
                                    <span class="badge text-bg-success"><?= __("Success"); ?></span>
                                <?php } else { ?>
                                    <span class="badge text-bg-danger"><?= __("Failed"); ?></span>
                                <?php } ?>
                            </td>
                        </tr>

                        <tr>
                            <td>application/cache</td>
                            <td>
                                <?php if ($cache_folder == true) { ?>
                                    <span class="badge text-bg-success"><?= __("Success"); ?></span>
                                <?php } else { ?>
                                    <span class="badge text-bg-danger"><?= __("Failed"); ?></span>
                                <?php } ?>
                            </td>
                        </tr>

                        <tr>
                            <td>updates</td>
                            <td>
                                <?php if ($updates_folder == true) { ?>
                                    <span class="badge text-bg-success"><?= __("Success"); ?></span>
                                <?php } else { ?>
                                    <span class="badge text-bg-danger"><?= __("Failed"); ?></span>
                                <?php } ?>
                            </td>
                        </tr>

                        <tr>
                            <td>uploads</td>
                            <td>
                                <?php if ($uploads_folder == true) { ?>
                                    <span class="badge text-bg-success"><?= __("Success"); ?></span>
                                <?php } else { ?>
                                    <span class="badge text-bg-danger"><?= __("Failed"); ?></span>
                                <?php } ?>
                            </td>
                        </tr>

                        <?php if (isset($userdata_enabled)) { ?>
                            <tr>
                                <td>userdata</td>
                                <td>
                                    <?php if ($userdata_folder == true) { ?>
                                        <span class="badge text-bg-success"><?= __("Success"); ?></span>
                                    <?php } else { ?>
                                        <span class="badge text-bg-danger"><?= __("Failed"); ?></span>
                                    <?php } ?>
                                </td>
                            </tr>
                        <?php } ?>
                    </table>
                </div>
            </div>
            <div class="card">
                <div class="card-header">
                    <?= __("Config Maintenance"); ?>
                </div>
                <div class="card-body">
                    <?php if ($this->config->item('auth_mode') != '3') { ?>
                        <div class="alert alert-primary">
                            <div class="alert alert-danger" role="alert">
                                <span class="badge rounded-pill text-bg-warning">auth_mode: <?= __("Warning"); ?></span> <?= __("Your authentication mode is outdated and possibly unsafe"); ?>
                            </div>
                            <p><?= sprintf(__("Please edit your %s File:"),"<code>application/config/config.php</code>"); ?></br>
                                <?= __("Go to your application/config Folder and compare config.sample.php with your config.php"); ?></br></br>
                                <?= sprintf(__("Change %s to the value %s (Strongly recommended)"),"<span class=\"badge rounded-pill text-bg-secondary\">\$config['auth_mode']</span>","<span class=\"badge rounded-pill text-bg-secondary\">3</span>"); ?>
                            </p>
                        </div>
                    <?php
                    } else { ?>
                        <div class="mb-2">
                            <span class="badge rounded-pill text-bg-success">auth_mode: <?= __("Ok"); ?></span> <?= __("Authentication Mode is set correctly"); ?>
                        </div>
                    <?php } ?>

                    <?php if ($this->config->item('encryption_key') == 'flossie1234555541') { ?>
                        <div class="alert alert-primary">
                            <div class="alert alert-danger" role="alert">
                                <span class="badge rounded-pill text-bg-warning">encryption_key: <?= __("Warning"); ?></span> <?= __("You use the default encryption key. You should change it!"); ?>
                            </div>
                            <p><?= sprintf(__("Please edit your %s File:"),"<code>application/config/config.php</code>"); ?></br>
                                <?= __("This will also enable the 'Keep me logged in' feature.");?></br>
                                <?= sprintf(__("Change the value of %s to a new encryption key other then 'flossie1234555541'. Choose a safe and long password. (Strongly recommended)"),"<span class=\"badge rounded-pill text-bg-secondary\">\$config['encryption_key']</span>"); ?>
                            </p>
                        </div>
                    <?php
                    } else { ?>
                        <div class="mb-2">
                            <span class="badge rounded-pill text-bg-success">encryption_key: <?= __("Ok"); ?></span> <?= __("You do not use the default encryption key"); ?>
                        </div>
                    <?php } ?>
                </div>
            </div>
            <?php if (isset($userdata_enabled)) { ?>
                <div class="card">
                    <div class="card-header"><?= __("Migrate Userdata"); ?></div>
                    <div class="card-body">
                        <p><?= __("Here you can migrate existing QSL cards and eQSL cards to the new userdata folder."); ?></p>
                        <a href="<?php echo site_url('debug/migrate_userdata'); ?>" class="btn btn-primary <?php echo $userdata_status['btn_class']; ?>"><?php echo $userdata_status['btn_text']; ?></a>
                    </div>
                </div>
            <?php } ?>
        </div>

        <div class="col">
            <div class="card">
                <div class="card-header">PHP</div>
                <div class="card-body">
                    <div class="row">
                        <div class="col border-end">
                            <p><u><?= __("Modules"); ?></u></p>
                            <table width="100%">
                                <tr>
                                    <td>php-curl</td>
                                    <td>
                                        <?php if (in_array('curl', get_loaded_extensions())) { ?>
                                            <span class="badge text-bg-success"><?= __("Installed"); ?></span>
                                        <?php } else { ?>
                                            <span class="badge text-bg-danger"><?= __("Not Installed"); ?></span>
                                        <?php } ?>
                                    </td>
                                </tr>

                                <tr>
                                    <td>php-mysql</td>
                                    <td>
                                        <?php if (in_array('mysqli', get_loaded_extensions())) { ?>
                                            <span class="badge text-bg-success"><?= __("Installed"); ?></span>
                                        <?php } else { ?>
                                            <span class="badge text-bg-danger"><?= __("Not Installed"); ?></span>
                                        <?php } ?>
                                    </td>
                                </tr>

                                <tr>
                                    <td>php-mbstring</td>
                                    <td>
                                        <?php if (in_array('mbstring', get_loaded_extensions())) { ?>
                                            <span class="badge text-bg-success"><?= __("Installed"); ?></span>
                                        <?php } else { ?>
                                            <span class="badge text-bg-danger"><?= __("Not Installed"); ?></span>
                                        <?php } ?>
                                    </td>
                                </tr>

                                <tr>
                                    <td>php-xml</td>
                                    <td>
                                        <?php if (in_array('xml', get_loaded_extensions())) { ?>
                                            <span class="badge text-bg-success"><?= __("Installed"); ?></span>
                                        <?php } else { ?>
                                            <span class="badge text-bg-danger"><?= __("Not Installed"); ?></span>
                                        <?php } ?>
                                    </td>
                                </tr>

                                <tr>
                                    <td>php-zip</td>
                                    <td>
                                        <?php if (in_array('zip', get_loaded_extensions())) { ?>
                                            <span class="badge text-bg-success"><?= __("Installed"); ?></span>
                                        <?php } else { ?>
                                            <span class="badge text-bg-danger"><?= __("Not Installed"); ?></span>
                                        <?php } ?>
                                    </td>
                                </tr>

                                <tr>
                                    <td>php-gd</td>
                                    <td>
                                        <?php if (in_array('gd', get_loaded_extensions())) { ?>
                                            <span class="badge text-bg-success"><?= __("Installed"); ?></span>
                                        <?php } else { ?>
                                            <span class="badge text-bg-danger"><?= __("Not Installed"); ?></span>
                                        <?php } ?>
                                    </td>
                                </tr>

                                <?php if ($cache_adapter == 'apcu' || $cache_backup == 'apcu') { ?>
                                <tr>
                                    <td>php-apcu</td>
                                    <td>
                                        <?php if (in_array('apcu', get_loaded_extensions())) { ?>
                                            <span class="badge text-bg-success"><?= __("Installed"); ?></span>
                                        <?php } else { ?>
                                            <span class="badge text-bg-danger"><?= __("Not Installed"); ?></span>
                                        <?php } ?>
                                    </td>
                                </tr>
                                <?php } ?>

                                <?php if ($cache_adapter == 'redis' || $cache_backup == 'redis') { ?>
                                <tr>
                                    <td>php-redis</td>
                                    <td>
                                        <?php if (in_array('redis', get_loaded_extensions())) { ?>
                                            <span class="badge text-bg-success"><?= __("Installed"); ?></span>
                                        <?php } else { ?>
                                            <span class="badge text-bg-danger"><?= __("Not Installed"); ?></span>
                                        <?php } ?>
                                    </td>
                                </tr>
                                <?php } ?>

                                <?php if ($cache_adapter == 'memcached' || $cache_backup == 'memcached') { ?>
                                <tr>
                                    <td>php-memcached</td>
                                    <td>
                                        <?php if (in_array('memcached', get_loaded_extensions())) { ?>
                                            <span class="badge text-bg-success"><?= __("Installed"); ?></span>
                                        <?php } else { ?>
                                            <span class="badge text-bg-danger"><?= __("Not Installed"); ?></span>
                                        <?php } ?>
                                    </td>
                                </tr>
                                <?php } ?>
                            </table>
                        </div>
                        <div class="col">
                            <p><u><?= __("Settings"); ?></u></p>
                            <?php
                            $max_execution_time = 600;        // Seconds
                            $upload_max_filesize = 8;      // Megabyte
                            $post_max_size = 8;                // Megabyte
                            $memory_limit = 256;            // Megabyte
                            $req_allow_url_fopen = '1';        // 1 = on
                            ?>
                            <table width="100%">
                                <tr>
                                    <td>max_execution_time</td>
                                    <td><?php echo '> ' . $max_execution_time . ' s'; ?></td>
                                    <td>
                                        <?php
                                        $maxExecutionTime = ini_get('max_execution_time');
                                        if ($maxExecutionTime >= $max_execution_time) { ?>
                                            <span class="badge text-bg-success"><?php echo $maxExecutionTime . ' s'; ?></span>
                                        <?php } else { ?>
                                            <span class="badge text-bg-warning"><?php echo $maxExecutionTime; ?></span>
                                        <?php } ?>
                                    </td>
                                </tr>

                                <tr>
                                    <td>upload_max_filesize</td>
                                    <td><?php echo '> ' . $upload_max_filesize . 'M'; ?></td>
                                    <td>
                                        <?php
                                        $maxUploadFileSize = ini_get('upload_max_filesize');
                                        $maxUploadFileSizeBytes = (int)($maxUploadFileSize) * (1024 * 1024); // convert to bytes
                                        if ($maxUploadFileSizeBytes >= ($upload_max_filesize * 1024 * 1024)) { // compare with given value in bytes
                                        ?>
                                            <span class="badge text-bg-success"><?php echo $maxUploadFileSize; ?></span>
                                        <?php } else { ?>
                                            <span class="badge text-bg-warning"><?php echo $maxUploadFileSize; ?></span>
                                        <?php } ?>
                                    </td>
                                </tr>

                                <tr>
                                    <td>post_max_size</td>
                                    <td><?php echo '> ' . $post_max_size . 'M'; ?></td>
                                    <td>
                                        <?php
                                        $postMaxSize = ini_get('post_max_size');
                                        $postMaxSizeBytes = (int)($postMaxSize) * (1024 * 1024); // convert to bytes
                                        if ($postMaxSizeBytes >= ($post_max_size * 1024 * 1024)) { // compare with given value in bytes
                                        ?>
                                            <span class="badge text-bg-success"><?php echo $postMaxSize; ?></span>
                                        <?php } else { ?>
                                            <span class="badge text-bg-warning"><?php echo $postMaxSize; ?></span>
                                        <?php } ?>
                                    </td>
                                </tr>

                                <tr>
                                    <td>memory_limit</td>
                                    <td><?php echo '> ' . $memory_limit . 'M'; ?></td>
                                    <td>
                                        <?php
                                        $memoryLimit = ini_get('memory_limit');
                                        $memoryLimitBytes = (int)($memoryLimit) * (1024 * 1024); // convert to bytes
                                        if ($memoryLimitBytes >= ($memory_limit * 1024 * 1024)) { // compare with given value in bytes
                                        ?>
                                            <span class="badge text-bg-success"><?php echo $memoryLimit; ?></span>
                                        <?php } else { ?>
                                            <span class="badge text-bg-warning"><?php echo $memoryLimit; ?></span>
                                        <?php } ?>
                                    </td>
                                </tr>

                                <tr>
                                    <td>allow_url_fopen</td>
                                    <td>On</td>
                                    <td>
                                        <?php
                                        $get_allow_url_fopen = ini_get('allow_url_fopen');
                                        if ($get_allow_url_fopen == $req_allow_url_fopen) {
                                        ?>
                                            <span class="badge text-bg-success">On</span>
                                        <?php } else { ?>
                                            <span class="badge text-bg-danger">Off</span>
                                        <?php } ?>
                                    </td>
                                </tr>
                            </table>
                        </div>
                    </div>
                </div>
            </div>
            <!-- Cache Information Card -->
            <div class="card">
                <div class="card-header"><?= __("Cache Information"); ?></div>
                <div class="card-body">
                    <div class="row">
                        <div class="col-md-6">
                            <p><u><?= __("Current Configuration"); ?></u></p>
                            <table width="100%">
                                <tr>
                                    <td><?= _pgettext("Cache Adapter","Primary adapter"); ?></td>
                                    <td>
                                        <span class="badge text-bg-primary"><?php echo $cache_adapter; ?></span>
                                        <?php if ($cache_adapter == $active_adapter) { ?>
                                            <span class="badge text-bg-success"><?= __("Active"); ?></span>
                                        <?php } else { ?>
                                            <span class="badge text-bg-danger"><?= __("Failed"); ?></span>
                                        <?php } ?>
                                    </td>
                                </tr>
                                <tr>
                                    <td><?= _pgettext("Cache Backup Adapter (Fallback)","Backup adapter"); ?></td>
                                    <td>
                                        <span class="badge text-bg-primary"><?php echo $cache_backup; ?></span>
                                        <?php if ($cache_backup == $active_adapter) { ?>
                                            <span class="badge text-bg-success"><?= __("Active"); ?></span>
                                        <?php } else if ($active_adapter == 'dummy') { ?>
                                            <span class="badge text-bg-danger"><?= __("Failed"); ?></span>
                                        <?php } ?>
                                    </td>
                                </tr>
                                <tr>
                                    <td><?= sprintf(_pgettext("Cache Path","Path for %s adapter"), "'file'"); ?></td>
                                    <td><code><?php echo $cache_path; ?></code></td>
                                </tr>
                                <tr>
                                    <td><?= _pgettext("Cache Key Prefix","Key Prefix"); ?></td>
                                    <td><code><?php echo $cache_key_prefix; ?></code></td>
                                </tr>
                            </table>
                        </div>
                        <div class="col-md-6">
                            <p><u><?= __("Cache Details"); ?></u></p>
                            <table width="100%">
                                <tr>
                                    <td><?= _pgettext("Cache Details","Total Size"); ?></td>
                                    <td>
                                        <span class="badge text-bg-primary"><?php echo $details_cache_size; ?></span>
                                    </td>
                                </tr>
                                <tr>
                                    <td><?= _pgettext("Cache Key","Number of Keys"); ?></td>
                                    <td>
                                        <span class="badge text-bg-primary"><?php echo $details_cache_keys_count; ?></span>
                                    </td>
                                </tr>
                            </table>
                        </div>
                        <div class="ms-2 me-2">
                            <?php if (!$using_backup) { ?>
                                <div class="alert alert-success mt-2 mb-0" role="alert">
                                    <?= __("Cache is working properly. Everything okay!"); ?>
                                </div>
                            <?php } else if ($active_adapter !== 'dummy') { ?>
                                <div class="alert alert-danger mt-2 mb-0" role="alert">
                                    <?= __("Cache is currently using the backup adapter because the primary is unavailable. Check your file permissions, PHP extensions, and/or your network connection to the services (if using redis/memcached)."); ?>
                                </div>
                            <?php } else { ?>
                                <div class="alert alert-danger mt-2 mb-0" role="alert">
                                    <?= __("Cache does not work! Currently the system is using a %s adapter. Check your file permissions, PHP extensions and/or your network connection to the services (if using redis/memcached). You can continue using Wavelog, but no values will be cached (which is bad).", "'dummy'"); ?>
                                </div>
                            <?php } ?>
                        </div>
                    </div>
                    <div class="border-top pt-3 mt-3">
                        <div class="row">
                            <div class="col">
                                <p><u><?= __("Available Adapters"); ?></u></p>
                                <div>
                                    <?php foreach ($cache_available_adapters as $adapter => $supported) { ?>
                                        <?php // Special case: Files adapter requires writable cache folder
                                         if ($adapter == 'file' && $cache_path == 'application/cache' && $cache_folder == false) {
                                            $supported = false;
                                        } ?>
                                        <?php if ($supported) { ?>
                                            <span class="badge text-bg-success"><?php echo ucfirst($adapter); ?></span>
                                        <?php } else { ?>
                                            <span class="badge text-bg-secondary" style="opacity: 0.5;"><?php echo ucfirst($adapter); ?></span>
                                        <?php } ?>
                                    <?php } ?>
                                </div>
                            </div>
                            <div class="col-auto d-flex align-items-center">
                                <button type="button" id="clear_cache_button" class="btn btn-sm btn-secondary">
                                    <?= __("Clear Cache"); ?>
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <!-- HIER -->
            <?php if (file_exists(realpath(APPPATH . '../') . '/.git') && function_usable('exec')) { ?>
                <?php
                //Below is a failsafe where git commands fail
                try {
                    $commitHash = trim(exec('git log --pretty="%H" -n1 HEAD'));    // Get last LOCAL commit of HEAD
                    $branch = '';
                    $remote = '';
                    $owner = '';
                    // only proceed here if git can actually be executed
                    if ($commitHash != "") {
                        $commitDate = trim(exec('git log --pretty="%ci" -n1 HEAD'));
                        $line = trim(exec('git log -n 1 --pretty=%D HEAD'));
                        $pieces = explode(', ', $line);
                        $lastFetch = trim(exec('stat -c %Y ' . realpath(APPPATH . '../') . '/.git/FETCH_HEAD'));
                        //Below is a failsafe for systems without the stat command
                        try {
                            $dt = new DateTime("@$lastFetch");
                        } catch (Exception $e) {
                            $dt = new DateTime(date("Y-m-d H:i:s"));
                        }
                        if (isset($pieces[1])) {
                            $remote = substr($pieces[1], 0, strpos($pieces[1], '/'));
                            $branch = trim(exec('git rev-parse --abbrev-ref HEAD')); // Get ONLY Name of the Branch we're on
                            $url = trim(exec('git remote get-url ' . $remote));
                            if (strpos($url, 'https://github.com') !== false) {
                                $owner = preg_replace('/https:\/\/github\.com\/(\w+)\/[w|W]avelog\.git/', '$1', $url);
                            } else if (strpos($url, 'git@github.com') !== false) {
                                $owner = preg_replace('/git@github\.com:(\w+)\/[w|W]avelog\.git/', '$1', $url);
                            }
                        }
                        $tag = trim(exec('git describe --tags ' . $commitHash));
                    }
                } catch (\Throwable $th) {
                    $commitHash = "";
                }
                ?>

                <?php if ($commitHash != "") { ?>
                    <div class="card">
                        <div class="card-header"><?= __("Git Information"); ?></div>
                        <div class="card-body">
                            <table width="100%">
                                <tr>
                                    <td><?= __("Branch"); ?></td>
                                    <td>
                                        <?php if ($branch != "") { ?>
                                            <?php if ($owner != "") { ?>
                                                <a target="_blank" href="https://github.com/<?php echo $owner; ?>/Wavelog/tree/<?php echo $branch ?>">
                                                <?php } ?>
                                                <span class="badge text-bg-success"><?php echo $branch; ?></span>
                                                <?php if ($owner != "") { ?>
                                                </a>
                                            <?php } ?>
                                        <?php } else { ?>
                                            <span class="badge text-bg-danger"><?= __("n/a"); ?></span>
                                        <?php } ?>
                                    </td>
                                </tr>
                                <tr>
                                <tr>
                                    <td><?= __("Commit"); ?></td>
                                    <td>
                                        <?php if ($commitHash != "") { ?>
                                            <a target="_blank" href="https://github.com/<?php echo $owner; ?>/Wavelog/commit/<?php echo $commitHash ?>"><span class="badge text-bg-success"><?php echo substr($commitHash, 0, 8); ?></span></a>
                                        <?php } else { ?>
                                            <span class="badge text-bg-danger"><?= __("n/a"); ?></span>
                                        <?php } ?>
                                    </td>
                                </tr>
                                <tr>
                                    <td><?= __("Tag"); ?></td>
                                    <td>
                                        <?php if ($commitHash != "") { ?>
                                            <a target="_blank" href="https://github.com/wavelog/wavelog/releases/tag/<?php echo strpos($tag, '-') ? substr($tag, 0, strpos($tag, '-')) : $tag; ?>"><span class="badge text-bg-success"><?php echo $tag; ?></span></a>
                                        <?php } else { ?>
                                            <span class="badge text-bg-danger"><?= __("n/a"); ?></span>
                                        <?php } ?>
                                    </td>
                                </tr>
                                <tr>
                                    <td><?= __("Last Fetch"); ?></td>
                                    <td>
                                        <?php echo ($dt == null ? '' : $dt->format(\DateTime::RFC850)); ?>
                                    </td>
                                </tr>
                            </table>
                            <div class="border-top pt-2 pb-2 mt-2 mb-2" id="version_check">
                                <p id="version_check_result"></p>
                                <small id="last_version_check"></small>
                            </div>
                            <div class="row">
                                <div class="col">
                                    <button class="btn btn-primary me-3 ld-ext-right" onClick="update_version_check('<?php echo $branch; ?>');" id="version_check_button"><?= __("Check for new version"); ?><div class="ld ld-ring ld-spin"></div></button>
                                    <a class="btn btn-primary" style="display: none;" id="version_update_button" href="debug/selfupdate" onClick='this.classList.add("disabled");'><?= __("Update now"); ?></a>
                                </div>
                            </div>
                        </div>
                    </div>
            <?php }
            }

            // Get Date format
            if ($this->session->userdata('user_date_format')) {
                // If Logged in and session exists
                $custom_date_format = $this->session->userdata('user_date_format');
            } else {
                // Get Default date format from /config/wavelog.php
                $custom_date_format = $this->config->item('qso_date_format');
            }
            ?>
            <div class="card">
                <div class="card-header"><?= __("File download date"); ?></div>
                <div class="card-body">
                    <table width="100%" class="table-sm table table-hover table-striped">
                        <thead>
                            <th><?= __("File"); ?></th>
                            <th><?= __("Last update"); ?></th>
                            <th></th>
                        </thead>
                        <tr>
                            <td><?= __("DXCC update from Club Log"); ?></td>
                            <?php $timestamp = strtotime($dxcc_update->last_run ?? ''); ?>
                            <td><?php echo $dxcc_update->last_run ? date($custom_date_format, $timestamp).' '.date('H:i:s', $timestamp) : __("never"); ?></td>
                            <td><a class="btn btn-sm btn-primary" href="<?php echo site_url('update'); ?>"><?= __("Update"); ?></a></td>

                        </tr>
                        <tr>
                            <td><?= __("DOK file download"); ?></td>
                            <?php $timestamp = strtotime($dok_update->last_run ?? ''); ?>
                            <td><?php echo $dok_update->last_run ? date($custom_date_format, $timestamp).' '.date('H:i:s', $timestamp) : __("never"); ?></td>
                            <td><a class="btn btn-sm btn-primary" href="<?php echo site_url('update/update_dok'); ?>"><?= __("Update"); ?></a></td>
                        </tr>
                        <tr>
                            <td><?= __("LoTW users download"); ?></td>
                            <?php $timestamp = strtotime($lotw_user_update->last_run ?? ''); ?>
                            <td><?php echo $lotw_user_update->last_run ? date($custom_date_format, $timestamp).' '.date('H:i:s', $timestamp) : __("never"); ?></td>
                            <td><a class="btn btn-sm btn-primary" href="<?php echo site_url('update/lotw_users'); ?>"><?= __("Update"); ?></a></td>
                        </tr>
                        <tr>
                            <td><?= __("POTA file download"); ?></td>
                            <?php $timestamp = strtotime($pota_update->last_run ?? ''); ?>
                            <td><?php echo $pota_update->last_run ? date($custom_date_format, $timestamp).' '.date('H:i:s', $timestamp) : __("never"); ?></td>
                            <td><a class="btn btn-sm btn-primary" href="<?php echo site_url('update/update_pota'); ?>"><?= __("Update"); ?></a></td>
                        </tr>
                        <tr>
                            <td><?= __("SCP file download"); ?></td>
                            <?php $timestamp = strtotime($scp_update->last_run ?? ''); ?>
                            <td><?php echo $scp_update->last_run ? date($custom_date_format, $timestamp).' '.date('H:i:s', $timestamp) : __("never"); ?></td>
                            <td><a class="btn btn-sm btn-primary" href="<?php echo site_url('update/update_clublog_scp'); ?>"><?= __("Update"); ?></a></td>
                        </tr>
                        <tr>
                            <td><?= __("SOTA file download"); ?></td>
                            <?php $timestamp = strtotime($sota_update->last_run ?? ''); ?>
                            <td><?php echo $sota_update->last_run ? date($custom_date_format, $timestamp).' '.date('H:i:s', $timestamp) : __("never"); ?></td>
                            <td><a class="btn btn-sm btn-primary" href="<?php echo site_url('update/update_sota'); ?>"><?= __("Update"); ?></a></td>
                        </tr>
                        <tr>
                            <td><?= __("WWFF file download"); ?></td>
                            <?php $timestamp = strtotime($wwff_update->last_run ?? ''); ?>
                            <td><?php echo $wwff_update->last_run ? date($custom_date_format, $timestamp).' '.date('H:i:s', $timestamp) : __("never"); ?></td>
                            <td><a class="btn btn-sm btn-primary" href="<?php echo site_url('update/update_wwff'); ?>"><?= __("Update"); ?></a></td>
                        </tr>
                        <tr>
                            <td><?= __("TLE update"); ?></td>
                            <?php $timestamp = strtotime($tle_update->last_run ?? ''); ?>
                            <td><?php echo $tle_update->last_run ? date($custom_date_format, $timestamp).' '.date('H:i:s', $timestamp) : __("never"); ?></td>
                            <td><a class="btn btn-sm btn-primary" href="<?php echo site_url('update/update_tle'); ?>"><?= __("Update"); ?></a></td>
                        </tr>
                        <tr>
                            <td><?= __("Hams Of Note update"); ?></td>
                            <?php $timestamp = strtotime($hon_update->last_run ?? ''); ?>
                            <td><?php echo $hon_update->last_run ? date($custom_date_format, $timestamp).' '.date('H:i:s', $timestamp) : __("never"); ?></td>
                            <td><a class="btn btn-sm btn-primary" href="<?php echo site_url('update/update_hamsofnote'); ?>"><?= __("Update"); ?></a></td>
                        </tr>
                        <tr>
                            <td><?= __("HAMqsl"); ?></td>
                            <?php $timestamp = strtotime($hamqsl_update->last_run ?? ''); ?>
                            <td><?php echo $hamqsl_update->last_run ? date($custom_date_format, $timestamp).' '.date('H:i:s', $timestamp) : __("never"); ?></td>
                            <td><a class="btn btn-sm btn-primary" href="<?php echo site_url('update/update_hamqsl'); ?>"><?= __("Update"); ?></a></td>
                        </tr>
                        <tr>
                            <td><?= __("VUCC Grids"); ?></td>
                            <?php $timestamp = strtotime($vucc_grids_update->last_run ?? ''); ?>
                            <td><?php echo $vucc_grids_update->last_run ? date($custom_date_format, $timestamp).' '.date('H:i:s', $timestamp) : __("never"); ?></td>
                            <td><a class="btn btn-sm btn-primary" href="<?php echo site_url('update/update_vucc_grids'); ?>"><?= __("Update"); ?></a></td>
                        </tr>
                    </table>
                </div>
            </div>
            <div class="card" style="margin-bottom: 15px;">
                <div class="card-header">
                    <?= __("QSO-DB Maintenance"); ?>
                </div>
                <?php if (!empty($qsos_with_no_station_id)) { ?>
                    <div class="alert alert-danger" role="alert" style="margin-bottom: 0px !important;">
                        <span class="badge rounded-pill text-bg-warning"><?= __("Warning"); ?></span> <?= sprintf(_ngettext("The Database contains %d QSO without a station-profile (location)", "The Database contains %d QSOs without a station-profile (location)", intval(count($qsos_with_no_station_id))), intval(count($qsos_with_no_station_id))); ?><br />
                    </div>
                    <div class="card-body">
                        <div class="table-responsive">
                            <table id="unasigned_qsos_table" class="table table-sm table-striped">
                                <thead>
                                    <tr>
                                        <th scope="col"><input type="checkbox" onClick="toggleAll(this)"></th>
                                        <th scope="col"><?= __("Date"); ?></th>
                                        <th scope="col"><?= __("Time"); ?></th>
                                        <th scope="col"><?= __("Call"); ?></th>
                                        <th scope="col"><?= __("Mode"); ?></th>
                                        <th scope="col"><?= __("Band"); ?></th>
                                        <th scope="col"><?= __("Station Callsign"); ?></th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php if ($this->session->userdata('user_date_format')) {
                                        $custom_date_format = $this->session->userdata('user_date_format');
                                    } else {
                                        $custom_date_format = 'd.m.Y';
                                    }
                                    foreach ($qsos_with_no_station_id as $qso) {
                                        echo '<tr>';
                                        echo '<td><input type="checkbox" id="' . $qso->COL_PRIMARY_KEY . '" name="cBox[]" value="' . $qso->COL_PRIMARY_KEY . '"></td>';
                                        $timestamp = strtotime($qso->COL_TIME_ON);
                                        echo '<td>' . date($custom_date_format, $timestamp) . '</td>';
                                        $timestamp = strtotime($qso->COL_TIME_ON);
                                        echo '<td>' . date('H:i', $timestamp) . '</td>';
                                        echo '<td>' . $qso->COL_CALL . '</td>';
                                        echo '<td>' . $qso->COL_MODE . '</td>';
                                        echo '<td>' . $qso->COL_BAND . '</td>';
                                        echo '<td>' . $qso->COL_STATION_CALLSIGN . '</td>';
                                        echo '</tr>';
                                    } ?>
                                </tbody>
                            </table>
                        </div>
                        <p class="card-text"><?= __("Please mark QSOs and reassign them to an existing station location:"); ?></p>


                        <div class="table-responsive">
                            <table id="station_locations_table" class="table table-sm table-striped">
                                <thead>
                                    <tr>
                                        <th scope="col"><?= __("Call"); ?></th>
                                        <th scope="col"><?= _pgettext("Stationlocation", "Target Location"); ?></th>
                                        <th scope="col"><?= __("Reassign"); ?></th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php
                                    foreach ($calls_wo_sid as $call) {
                                        echo '<tr><td><div id="station_call">' . $call['COL_STATION_CALLSIGN'] . '</div></td><td><select name="station_profile" id="station_profile" onChange="updateCallsign(this)">';
                                        $options = '';
                                        foreach ($stations->result() as $station) {
                                            $options .= '<option value=' . $station->station_id . '>' . $station->station_profile_name . ' (' . $station->station_callsign . ')</option>';
                                        }
                                        echo $options . '</select></td><td><button class="btn btn-warning" onClick="reassign(\'' . $call['COL_STATION_CALLSIGN'] . '\',$(\'#station_profile option:selected\').val());"><i class="fas fa-sync"></i> ' . __("Reassign") . '</a></button></td></tr>';
                                    } ?>
                                </tbody>
                            </table>
                        </div>
                    </div>
                <?php
                } else { ?>
                    <div class="alert alert-secondary" role="alert" style="margin-bottom: 0px !important;">
                        <span class="badge rounded-pill text-bg-success"><?= __("Everything ok"); ?></span> <?= __("Every QSO in your Database is assigned to a station-profile (location)"); ?>
                    </div>
                <?php } ?>
            </div>
        </div>
    </div>

</div>

<script>
    <?php if (file_exists(realpath(APPPATH . '../') . '/.git')) { ?>
        var local_branch = '<?php echo $branch; ?>';
    <?php } else { ?>
        var local_branch = 'n/a';
    <?php } ?>

    (function () {
        fetch('<?= site_url('debug/worker_status'); ?>')
            .then(r => r.json())
            .then(function (data) {
                var container = document.getElementById('worker-status-container');
                if (!data.success) { return; }
                if (data.disabled) {
                    container.innerHTML = '<span class="badge rounded-pill text-bg-secondary"><?= __("Disabled"); ?></span> <?= __("Worker backend is not configured."); ?>';
                    return;
                }
                if (!data.workers || data.workers.length === 0) {
                    container.innerHTML = '<span class="badge rounded-pill text-bg-warning"><?= __("Unreachable"); ?></span> <?= __("Worker is configured but did not respond."); ?>';
                    return;
                }

                var html = '';

                if (data.vip) {
                    var vipBadge = data.vip.alive
                        ? '<span class="badge rounded-pill text-bg-success"><?= __("Available"); ?></span>'
                        : '<span class="badge rounded-pill text-bg-danger"><?= __("Offline"); ?></span>';
                    html += '<div class="mb-2">'
                        + '<strong>VIP</strong>&nbsp;&nbsp;' + vipBadge + '&nbsp;&nbsp;<code>' + data.vip.url + '</code>'
                        + '</div>';
                }

                var rows = data.workers.map(function (w) {
                    var badge = w.alive
                        ? '<span class="badge rounded-pill text-bg-success"><?= __("Online"); ?></span>'
                        : '<span class="badge rounded-pill text-bg-danger"><?= __("Offline"); ?></span>';
                    return '<tr>'
                        + '<td>' + badge + '&nbsp;&nbsp;' + w.public_url + '</td>'
                        + '<td>' + (w.active_topics     !== null ? w.active_topics     : '—') + '</td>'
                        + '<td>' + (w.connected_clients !== null ? w.connected_clients : '—') + '</td>'
                        + '<td>' + (w.version           !== null ? w.version           : '—') + '</td>'
                        + '<td>' + (w.worker_uptime     !== null ? w.worker_uptime     : '—') + '</td>'
                        + '</tr>';
                });
                var thead = '<thead><tr>'
                    + '<th><?= __("Worker"); ?></th>'
                    + '<th><?= __("Topics"); ?></th>'
                    + '<th><?= __("Clients"); ?></th>'
                    + '<th><?= __("Version"); ?></th>'
                    + '<th><?= __("Uptime"); ?></th>'
                    + '</tr></thead>';
                html += '<table class="table table-sm mb-0">' + thead + '<tbody>' + rows.join('') + '</tbody></table>';
                container.innerHTML = html;
            })
            .catch(function () {
                document.getElementById('worker-status-container').innerHTML =
                    '<span class="badge rounded-pill text-bg-warning"><?= __("Error"); ?></span> <?= __("Could not fetch worker status."); ?>';
            });
    })();
</script>

<?php
/**
 * Hidden field to be able to translate the language names
 * Add english Language Name here if you add new languages to application/config/gettext.php
 * This helps the po scanner to make them translatable
 */
?>
<div style="display: none">
    <?= __("Albanian"); ?>
    <?= __("Armenian"); ?>
    <?= __("Bosnian"); ?>
    <?= __("Bulgarian"); ?>
    <?= __("Chinese (Simplified)"); ?>
    <?= __("Croatian"); ?>
    <?= __("Czech"); ?>
    <?= __("Dutch"); ?>
    <?= __("English"); ?>
    <?= __("Estonian"); ?>
    <?= __("Finnish"); ?>
    <?= __("French"); ?>
    <?= __("German"); ?>
    <?= __("Greek"); ?>
    <?= __("Hungarian"); ?>
    <?= __("Italian"); ?>
    <?= __("Japanese"); ?>
    <?= __("Latvian"); ?>
    <?= __("Lithuanian"); ?>
    <?= __("Montenegrin"); ?>
    <?= __("Polish"); ?>
    <?= __("Portuguese"); ?>
    <?= __("Romanian"); ?>
    <?= __("Russian"); ?>
    <?= __("Serbian"); ?>
    <?= __("Slovak"); ?>
    <?= __("Slovenian"); ?>
    <?= __("Spanish"); ?>
    <?= __("Swedish"); ?>
    <?= __("Turkish"); ?>
    <?= __("Ukrainian"); ?>
</div>
