aboutsummaryrefslogtreecommitdiff
path: root/app/Models
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2025-10-17 15:56:19 +0200
committerGravatar GitHub <noreply@github.com> 2025-10-17 15:56:19 +0200
commit5909cc57561661b0093a767ad54d018a415a1922 (patch)
tree60c753c3d566a037ddbd7df15762f1c3fe5bc9b7 /app/Models
parent1ef354a63e7a9de98f90961acb7d45f1d9aa893e (diff)
Fix DOM error while filtering retrieved full content (#8132)
``` PHP Fatal error: Uncaught Error: Couldn't fetch DOMElement in app/Models/Entry.php:998 ```
Diffstat (limited to 'app/Models')
-rw-r--r--app/Models/Entry.php6
1 files changed, 6 insertions, 0 deletions
diff --git a/app/Models/Entry.php b/app/Models/Entry.php
index d4f5016f0..13fcae4cf 100644
--- a/app/Models/Entry.php
+++ b/app/Models/Entry.php
@@ -961,6 +961,9 @@ HTML;
if ($nodes != false) {
$filter_xpath = $path_entries_filter === '' ? '' : (new Gt\CssXPath\Translator($path_entries_filter, 'descendant-or-self::'))->asXPath();
foreach ($nodes as $node) {
+ if (!($node instanceof DOMElement)) {
+ continue;
+ }
if ($filter_xpath !== '' && ($filterednodes = $xpath->query($filter_xpath, $node)) !== false) {
// Remove unwanted elements once before sanitizing, for CSS selectors to also match original content
foreach ($filterednodes as $filterednode) {
@@ -973,6 +976,9 @@ HTML;
$filterednode->parentNode->removeChild($filterednode);
}
}
+ if ($node->parentNode === null) {
+ continue;
+ }
$html .= $doc->saveHTML($node) . "\n";
}
}