This commit is contained in:
Jürgen Mummert
2025-12-27 22:36:49 +01:00
parent 2832da4736
commit c645e3caa8
+40 -14
View File
@@ -20,7 +20,11 @@ class IndexPageListener
* PDF: Reset genau 1× pro Crawl * PDF: Reset genau 1× pro Crawl
* ===================== * =====================
*/ */
$this->pdfIndexService->resetTableOnce(); try {
$this->pdfIndexService->resetTableOnce();
} catch (\Throwable $e) {
error_log('[ContaoMeilisearch] PDF reset failed: ' . $e->getMessage());
}
/* /*
* ===================== * =====================
@@ -28,7 +32,12 @@ class IndexPageListener
* ===================== * =====================
*/ */
if (str_contains($content, 'MEILISEARCH_JSON')) { if (str_contains($content, 'MEILISEARCH_JSON')) {
$parsed = $this->extractMeilisearchJson($content); try {
$parsed = $this->extractMeilisearchJson($content);
} catch (\Throwable $e) {
error_log('[ContaoMeilisearch] Failed to extract MEILISEARCH_JSON: ' . $e->getMessage());
$parsed = null;
}
if (is_array($parsed)) { if (is_array($parsed)) {
@@ -97,13 +106,17 @@ class IndexPageListener
* CHECKSUM-FIX * CHECKSUM-FIX
* ===================== * =====================
*/ */
$checksumSeed = (string) ($data['checksum'] ?? ''); try {
$checksumSeed .= '|' . ($set['keywords'] ?? ''); $checksumSeed = (string) ($data['checksum'] ?? '');
$checksumSeed .= '|' . ($set['priority'] ?? ''); $checksumSeed .= '|' . ($set['keywords'] ?? '');
$checksumSeed .= '|' . ($set['imagepath'] ?? ''); $checksumSeed .= '|' . ($set['priority'] ?? '');
$checksumSeed .= '|' . ($set['startDate'] ?? ''); $checksumSeed .= '|' . ($set['imagepath'] ?? '');
$checksumSeed .= '|' . ($set['startDate'] ?? '');
$set['checksum'] = md5($checksumSeed); $set['checksum'] = md5($checksumSeed);
} catch (\Throwable $e) {
error_log('[ContaoMeilisearch] Failed to generate checksum: ' . $e->getMessage());
}
} }
} }
@@ -116,9 +129,13 @@ class IndexPageListener
(bool) Config::get('meilisearch_index_pdfs') (bool) Config::get('meilisearch_index_pdfs')
&& (int) ($data['protected'] ?? 0) === 0 && (int) ($data['protected'] ?? 0) === 0
) { ) {
$pdfLinks = $this->findPdfLinks($content); try {
if ($pdfLinks !== []) { $pdfLinks = $this->findPdfLinks($content);
$this->pdfIndexService->handlePdfLinks($pdfLinks); if ($pdfLinks !== []) {
$this->pdfIndexService->handlePdfLinks($pdfLinks);
}
} catch (\Throwable $e) {
error_log('[ContaoMeilisearch] PDF indexing failed: ' . $e->getMessage());
} }
} }
@@ -131,9 +148,13 @@ class IndexPageListener
(bool) Config::get('meilisearch_index_office') (bool) Config::get('meilisearch_index_office')
&& (int) ($data['protected'] ?? 0) === 0 && (int) ($data['protected'] ?? 0) === 0
) { ) {
$officeLinks = $this->findOfficeLinks($content); try {
if ($officeLinks !== []) { $officeLinks = $this->findOfficeLinks($content);
$this->officeIndexService->handleOfficeLinks($officeLinks); if ($officeLinks !== []) {
$this->officeIndexService->handleOfficeLinks($officeLinks);
}
} catch (\Throwable $e) {
error_log('[ContaoMeilisearch] Office indexing failed: ' . $e->getMessage());
} }
} }
} }
@@ -150,6 +171,11 @@ class IndexPageListener
$json = preg_replace('/^\xEF\xBB\xBF/', '', trim($m[1])); $json = preg_replace('/^\xEF\xBB\xBF/', '', trim($m[1]));
$data = json_decode($json, true); $data = json_decode($json, true);
if (json_last_error() !== JSON_ERROR_NONE) {
error_log('[ContaoMeilisearch] Invalid MEILISEARCH_JSON: ' . json_last_error_msg());
return null;
}
return is_array($data) ? $data : null; return is_array($data) ? $data : null;
} }