diff options
| author | 2025-10-17 15:56:19 +0200 | |
|---|---|---|
| committer | 2025-10-17 15:56:19 +0200 | |
| commit | 5909cc57561661b0093a767ad54d018a415a1922 (patch) | |
| tree | 60c753c3d566a037ddbd7df15762f1c3fe5bc9b7 /app | |
| parent | 1ef354a63e7a9de98f90961acb7d45f1d9aa893e (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')
| -rw-r--r-- | app/Models/Entry.php | 6 |
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"; } } |
