<?php
/*
 * We only get here after setup, or if there's an error in the configuration.
 *
 * Display a table to the user showing the necessary dependencies
 * (both PHP and binary) and the status of any application services,
 * along with steps to fix them if they're not found or misconfigured.
 */

global $extensions;

$phpDependencies = checkPhpDependencies();
$externalServices = checkExternalServices();
$postgres = $phpDependencies['postgres'];

$database = $externalServices['database'];
$rabbitmq = $externalServices['rabbitmq'];
$systemd = with_systemd();

if ($systemd) {
    $pypo = $externalServices['pypo'];
    $liquidsoap = $externalServices['liquidsoap'];
    $analyzer = $externalServices['analyzer'];
    $celery = $externalServices['celery'];
    $api = $externalServices['api'];
}

$r1 = array_reduce($phpDependencies, 'booleanReduce', true);
$r2 = array_reduce($externalServices, 'booleanReduce', true);
$result = $r1 && $r2;
?>
<html>

<head>
    <link rel="stylesheet" type="text/css" href="css/bootstrap-3.3.1.min.css">
    <link rel="stylesheet" type="text/css" href="css/setup/config-check.css">
</head>
<style>
    /*
    This is here because we're using the config-check css for
    both this page and the system status page
    */

    html {
        background-color: #f5f5f5;
    }

    body {
        padding: 2em;
        min-width: 600px;
        text-align: center;
        margin: 3em;
        border: 1px solid lightgray;
        border-radius: 5px;
    }
</style>

<body>
    <h2>
        <img class="logo" src="css/images/airtime_logo_jp.png" /><br />
        <strong>Configuration Checklist</strong>
    </h2>

    <?php if (!$result) { ?>
        <br />
        <h3 class="error">Looks like something went wrong!</h3>
        <p>
            Take a look at the checklist below for possible solutions. If you're tried the suggestions and are
            still experiencing issues, read the
            <a href="https://github.com/libretime/libretime/releases">release notes</a>,
            come <a href="https://discourse.libretime.org/">visit our discourse</a>
            or, check <a href="https://www.libretime.org/">the website and main docs</a>.
        </p>
    <?php } else { ?>
        <p>
            Your Airtime station is up and running! Get started by logging in with the default username and password: admin/admin
        </p>
        <button onclick="location = location.pathname;">Log in to Airtime!</button>
    <?php } ?>


    <table class="table">
        <thead>
            <tr>
                <th class="component">
                    Component
                </th>
                <th class="description">
                    <strong>Description</strong>
                </th>
                <th class="solution">
                    <strong>Status or Solution</strong>
                </th>
            </tr>
        </thead>
    </table>

    <div class="checklist">
        <table class="table table-striped">
            <caption class="caption">
                PHP Dependencies
            </caption>
            <tbody>
                <tr class="<?php echo $postgres ? 'success' : 'danger'; ?>">
                    <td class="component">
                        Postgres
                    </td>
                    <td class="description">
                        PDO and PostgreSQL libraries
                    </td>
                    <?php if ($postgres) { ?>
                        <td class="solution check"></td>
                    <?php } else { ?>
                        <td class="solution">Try running <code>sudo apt-get install php5-pgsql</code></td>
                    <?php } ?>
                </tr>
            </tbody>
        </table>

        <table class="table table-striped">
            <caption class="caption">
                External Services
            </caption>
            <tbody>
                <tr class="<?php echo $database ? 'success' : 'danger'; ?>">
                    <td class="component">
                        Database
                    </td>
                    <td class="description">
                        Database configuration for Airtime
                    </td>
                    <?php if ($database) { ?>
                        <td class="solution check"></td>
                    <?php } else { ?>
                        <td class="solution">
                            Make sure you aren't missing any of the Postgres dependencies in the table above.
                            If your dependencies check out, make sure your database configuration settings in
                            <code><?php echo LIBRETIME_CONFIG_FILEPATH; ?></code> are correct and the Airtime database was installed correctly.
                        </td>
                    <?php } ?>
                </tr>
                <tr class="<?php echo $rabbitmq ? 'success' : 'danger'; ?>">
                    <td class="component">
                        RabbitMQ
                    </td>
                    <td class="description">
                        RabbitMQ configuration for Airtime
                    </td>

                    <?php if ($rabbitmq) { ?>
                        <td class="solution check"></td>
                    <?php } else { ?>
                        <td class="solution">
                            Make sure RabbitMQ is installed correctly, and that your settings in <?php echo LIBRETIME_CONFIG_FILEPATH; ?>
                            are correct. Try using <code>sudo rabbitmqctl list_users</code> and <code>sudo rabbitmqctl list_vhosts</code>
                            to see if the airtime user (or your custom RabbitMQ user) exists, then checking that
                            <code>sudo rabbitmqctl list_exchanges</code> contains entries for airtime-pypo and airtime-uploads.
                        </td>
                    <?php } ?>
                </tr>
                <?php if ($systemd) { ?>
                    <tr class="<?php echo $analyzer ? 'success' : 'danger'; ?>">
                        <td class="component">
                            Media Analyzer
                        </td>
                        <td class="description">
                            <?php echo _('LibreTime media analyzer service'); ?>
                        </td>

                        <?php if ($analyzer) { ?>
                            <td class="solution check"></td>
                        <?php } else { ?>
                            <td class="solution">
                                <?php echo _('Check that the libretime-analyzer service is installed correctly in '); ?><code>/etc/systemd/system/</code>,
                                <?php echo _(" and ensure that it's running with "); ?>
                                <br /><code>systemctl status libretime-analyzer</code><br />
                                <?php echo _('If not, try '); ?><br /><code>sudo systemctl restart libretime-analyzer</code>
                            </td>
                        <?php } ?>
                    </tr>

                    <tr class="<?php echo $pypo ? 'success' : 'danger'; ?>">
                        <td class="component">
                            Pypo
                        </td>
                        <td class="description">
                            <?php echo _('LibreTime playout service'); ?>
                        </td>
                        <?php if ($pypo) { ?>
                            <td class="solution check"></td>
                        <?php } else { ?>
                            <td class="solution">
                                <?php echo _('Check that the libretime-playout service is installed correctly in '); ?><code>/etc/systemd/system/</code>,
                                <?php echo _(" and ensure that it's running with "); ?>
                                <br /><code>systemctl status libretime-playout</code><br />
                                <?php echo _('If not, try '); ?><br /><code>sudo systemctl restart libretime-playout</code>
                            </td>
                        <?php } ?>
                    </tr>
                    <tr class="<?php echo $liquidsoap ? 'success' : 'danger'; ?>">
                        <td class="component">
                            Liquidsoap
                        </td>
                        <td class="description">
                            <?php echo _('LibreTime liquidsoap service'); ?>
                        </td>

                        <?php if ($liquidsoap) { ?>
                            <td class="solution check"></td>
                        <?php } else { ?>
                            <td class="solution">
                                <?php echo _('Check that the libretime-liquidsoap service is installed correctly in '); ?><code>/etc/systemd/system/</code>,
                                <?php echo _(" and ensure that it's running with "); ?>
                                <br /><code>systemctl status libretime-liquidsoap</code><br />
                                <?php echo _('If not, try '); ?><br /><code>sudo systemctl restart libretime-liquidsoap</code>
                            </td>
                        <?php } ?>
                    </tr>
                    <tr class="<?php echo $celery ? 'success' : 'danger'; ?>">
                        <td class="component">
                            Celery
                        </td>
                        <td class="description">
                            <?php echo _('LibreTime Celery Task service'); ?>
                        </td>

                        <?php if ($celery) { ?>
                            <td class="solution check"></td>
                        <?php } else { ?>
                            <td class="solution">
                                <?php echo _('Check that the libretime-worker service is installed correctly in '); ?><code>/etc/systemd/system/</code>,
                                <?php echo _(" and ensure that it's running with "); ?>
                                <br /><code>systemctl status libretime-worker</code><br />
                                <?php echo _('If not, try '); ?><br /><code>sudo systemctl restart libretime-worker</code>
                            </td>
                        <?php } ?>
                    </tr>
                    <tr class="<?php echo $api ? 'success' : 'danger'; ?>">
                        <td class="component">
                            API
                        </td>
                        <td class="description">
                            <?php echo _('LibreTime API service'); ?>
                        </td>

                        <?php if ($api) { ?>
                            <td class="solution check"></td>
                        <?php } else { ?>
                            <td class="solution">
                                <?php echo _('Check that the libretime-api service is installed correctly in '); ?><code>/etc/init.d/</code>,
                                <?php echo _(" and ensure that it's running with "); ?>
                                <br /><code>systemctl status libretime-api</code><br />
                                <?php echo _('If not, try '); ?><br /><code>sudo systemctl restart libretime-api</code>
                            </td>
                        <?php } ?>
                    </tr>
                <?php } ?>
            </tbody>
        </table>
    </div>
    <div class="footer">
        <h3>
            PHP Extension List
        </h3>
        <p>
            <?php echo implode('|', $extensions); ?>
        </p>
    </div>