Diagnose: HTML-Kommentar-Debugausgabe (v1.0.1)
This commit is contained in:
@@ -37,9 +37,7 @@ class TemplateHandler
|
|||||||
try {
|
try {
|
||||||
$this->doTemplateIntegration($args);
|
$this->doTemplateIntegration($args);
|
||||||
} catch (\Throwable $e) {
|
} catch (\Throwable $e) {
|
||||||
if ($this->altchaService->isDebug()) {
|
$this->logDebug($args, 'Fehler bei Template-Integration: ' . $e->getMessage());
|
||||||
error_log('[fp_altcha_spamschutz] Fehler bei Template-Integration: ' . $e->getMessage());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,29 +49,69 @@ class TemplateHandler
|
|||||||
/** @var phpQueryObject $document */
|
/** @var phpQueryObject $document */
|
||||||
$document = $args['document'];
|
$document = $args['document'];
|
||||||
|
|
||||||
|
$registerEnabled = $this->altchaService->isEnabledForRegistration();
|
||||||
|
$newsletterEnabled = $this->altchaService->isEnabledForNewsletter();
|
||||||
|
|
||||||
$injected = false;
|
$injected = false;
|
||||||
|
|
||||||
if ($this->altchaService->isEnabledForRegistration()) {
|
$registerFormCount = 0;
|
||||||
|
if ($registerEnabled) {
|
||||||
$registerForm = $document->find('form.register-form');
|
$registerForm = $document->find('form.register-form');
|
||||||
if (\count($registerForm) > 0) {
|
$registerFormCount = \count($registerForm);
|
||||||
|
if ($registerFormCount > 0) {
|
||||||
$this->injectWidget($document, $registerForm);
|
$this->injectWidget($document, $registerForm);
|
||||||
$injected = true;
|
$injected = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->altchaService->isEnabledForNewsletter()) {
|
$newsletterFormCount = 0;
|
||||||
|
if ($newsletterEnabled) {
|
||||||
$newsletterForm = $document->find('input[name="abonnieren"]')->closest('form');
|
$newsletterForm = $document->find('input[name="abonnieren"]')->closest('form');
|
||||||
if (\count($newsletterForm) > 0) {
|
$newsletterFormCount = \count($newsletterForm);
|
||||||
|
if ($newsletterFormCount > 0) {
|
||||||
$this->injectWidget($document, $newsletterForm);
|
$this->injectWidget($document, $newsletterForm);
|
||||||
$injected = true;
|
$injected = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->logDebug($args, \sprintf(
|
||||||
|
'Hook ausgefuehrt: register_enabled=%d register_forms_gefunden=%d '
|
||||||
|
. 'newsletter_enabled=%d newsletter_forms_gefunden=%d widget_eingefuegt=%d',
|
||||||
|
$registerEnabled ? 1 : 0,
|
||||||
|
$registerFormCount,
|
||||||
|
$newsletterEnabled ? 1 : 0,
|
||||||
|
$newsletterFormCount,
|
||||||
|
$injected ? 1 : 0
|
||||||
|
));
|
||||||
|
|
||||||
if ($injected) {
|
if ($injected) {
|
||||||
$this->includeScript($document);
|
$this->includeScript($document);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Schreibt eine Diagnosemeldung, sofern in den Plugin-Einstellungen "Debug-Logging aktivieren"
|
||||||
|
* eingeschaltet ist. Die Meldung geht sowohl in das PHP-Errorlog des Servers als auch -- damit
|
||||||
|
* sie auch ohne Serverzugriff einsehbar ist -- als HTML-Kommentar in die ausgelieferte Seite
|
||||||
|
* (fuer Besucher unsichtbar, im Seitenquelltext aber direkt sichtbar).
|
||||||
|
*
|
||||||
|
* @param array<string, mixed> $args
|
||||||
|
*/
|
||||||
|
private function logDebug(array $args, string $message): void
|
||||||
|
{
|
||||||
|
if (!$this->altchaService->isDebug()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
error_log('[fp_altcha_spamschutz] ' . $message);
|
||||||
|
|
||||||
|
$document = $args['document'] ?? null;
|
||||||
|
if ($document instanceof phpQueryObject) {
|
||||||
|
$safeMessage = htmlspecialchars($message, \ENT_QUOTES, 'UTF-8');
|
||||||
|
$document->find('body')->append('<!-- fp_altcha_debug: ' . $safeMessage . ' -->');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private function injectWidget(phpQueryObject $document, phpQueryObject $form): void
|
private function injectWidget(phpQueryObject $document, phpQueryObject $form): void
|
||||||
{
|
{
|
||||||
// Nicht doppelt einfuegen (z. B. wenn die Seite mehrfach gefiltert wird).
|
// Nicht doppelt einfuegen (z. B. wenn die Seite mehrfach gefiltert wird).
|
||||||
|
|||||||
Reference in New Issue
Block a user