<?php
/**
 * @package     com_htprotect
 * @copyright   (C) 2026 Pascal Lohmann / website-bereinigung.de
 * @license     GNU General Public License version 2 or later
 *
 * Klassischer Komponenten-Einstieg (Joomla 2.5 / 3.x).
 * Joomla 4/5/6 booten stattdessen ueber services/provider.php.
 */

defined('_JEXEC') or die;

try {
    require_once __DIR__ . '/core/bootstrap.php';
} catch (Exception $htpBootError) {
    // bootstrap.php selbst leer/beschaedigt (abgebrochenes Update) -> Hinweis unten.
} catch (Throwable $htpBootError) {
    // PHP 7+: faengt auch einen ParseError einer halben bootstrap.php ab.
}

// HTP_ENGINE_OK definiert -> dessen Ergebnis. Undefiniert = es lief (z. B. per OPcache
// direkt nach dem Update) noch ein aelteres bootstrap.php ohne dieses Flag; dann genuegt,
// dass die Engine wirklich geladen ist -> kein Fehlalarm auf der Uebergangsversion.
$htpCanRun = defined('HTP_ENGINE_OK') ? HTP_ENGINE_OK : class_exists('HtpApp');

if ($htpCanRun) {
    HtpApp::run();
} else {
    // Engine unvollstaendig -> KEIN Fatal, sondern eine klare, ZWEISPRACHIGE
    // Wiederherstellungs-Hinweisseite. Haeufigste Ursache ist ein Server-Virenscanner
    // (z. B. Imunify360), der eine Moduldatei faelschlich entfernt; seltener ein
    // abgebrochenes Update. Sprache aus dem Joomla-Kern ableiten - die Engine und
    // damit htp_t() stehen hier bewusst NICHT zur Verfuegung.
    $htpTag = 'en-GB';
    try {
        if (class_exists('JFactory')) {
            $htpTag = (string) JFactory::getLanguage()->getTag();
        }
    } catch (Exception $htpLangErr) {
    } catch (Throwable $htpLangErr) {
    }
    $htpDe = (stripos($htpTag, 'de') === 0);
    echo '<div style="max-width:760px;margin:40px auto;padding:22px 26px;border:1px solid #e0b4b4;'
        . 'background:#fdf5f5;border-radius:8px;font-family:-apple-system,Segoe UI,sans-serif;'
        . 'color:#5c1f1f;line-height:1.55">'
        . '<h2 style="margin:0 0 10px;font-size:1.25em">'
        . ($htpDe ? 'HTProtect konnte nicht vollst&auml;ndig geladen werden'
                  : 'HTProtect could not be fully loaded') . '</h2>'
        . '<p style="margin:0 0 10px">'
        . ($htpDe
            ? 'Kein Grund zur Sorge &ndash; <strong>Ihre Website ist nicht infiziert und bleibt gesch&uuml;tzt.</strong> '
                . 'Meist hat der <strong>Virenscanner Ihres Servers</strong> (z.&nbsp;B. Imunify) eine Datei von HTProtect '
                . 'irrt&uuml;mlich f&uuml;r Schadcode gehalten und entfernt &ndash; ein bekannter Fehlalarm bei Sicherheits-'
                . 'Programmen; seltener wurde ein Update nicht ganz zu Ende installiert. Der Schutz &uuml;ber die '
                . '<code>.htaccess</code> l&auml;uft dabei ganz normal weiter.'
            : 'No reason to worry &ndash; <strong>your website is not infected and stays protected.</strong> '
                . 'Usually your <strong>server&rsquo;s virus scanner</strong> (e.g. Imunify) mistook a HTProtect file for '
                . 'malware and removed it &ndash; a known false alarm with security software; less often an update did not '
                . 'finish installing. The <code>.htaccess</code> protection keeps running normally.')
        . '</p>'
        . '<p style="margin:0 0 8px">'
        . ($htpDe
            ? '<strong>So beheben Sie es &ndash; einfach neu installieren:</strong> in Joomla auf '
                . '<strong>Erweiterungen &rarr; Installieren &rarr; Von URL installieren</strong> gehen und diese Adresse einf&uuml;gen:'
            : '<strong>How to fix it &ndash; just reinstall:</strong> in Joomla go to '
                . '<strong>Extensions &rarr; Install &rarr; Install from URL</strong> and paste this address:')
        . '</p>'
        . '<div style="display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:0 0 10px">'
        . '<input readonly value="https://website-bereinigung.de/downloads/htprotect-shield-joomla.zip" '
        . 'onfocus="this.select()" onclick="this.select()" '
        . 'style="flex:1;min-width:250px;padding:8px 10px;border:1px solid #d8b4b4;border-radius:5px;'
        . 'font-family:Menlo,Consolas,monospace;font-size:.82em;color:#333;background:#fff">'
        . '<button type="button" onclick="var i=this.previousElementSibling;i.select();'
        . 'try{navigator.clipboard.writeText(i.value)}catch(e){}this.textContent=\'' . ($htpDe ? 'Kopiert!' : 'Copied!') . '\';" '
        . 'style="padding:8px 16px;border:0;border-radius:5px;background:#b0413e;color:#fff;cursor:pointer;'
        . 'font-size:.85em;white-space:nowrap">' . ($htpDe ? 'Adresse kopieren' : 'Copy address') . '</button>'
        . '</div>'
        . '<p style="margin:0">'
        . ($htpDe
            ? '(Alternativ: <strong>Erweiterungen &rarr; Verwalten</strong> &rarr; HTProtect aktualisieren.) '
                . 'Kommt die Meldung wieder, bitten Sie Ihren <strong>Hoster</strong>, HTProtect beim Virenscanner auf die '
                . '<strong>Ausnahmeliste</strong> zu setzen &ndash; dann ist dauerhaft Ruhe. Ihre Einstellungen bleiben vollst&auml;ndig erhalten.'
            : '(Or: <strong>Extensions &rarr; Manage</strong> &rarr; update HTProtect.) '
                . 'If the message comes back, ask your <strong>hosting provider</strong> to add HTProtect to the virus '
                . 'scanner&rsquo;s <strong>exception list</strong> &ndash; that settles it for good. Your settings remain fully intact.')
        . '</p>'
        . '</div>';
}
