From 81b4737710f7735c34f3c997a4ca94ba26a602ac Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Tue, 16 Feb 2021 17:38:47 +0200 Subject: [PATCH] throw an exception on XML errors in eTemplates for easier fixing --- api/src/Etemplate/Widget.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/api/src/Etemplate/Widget.php b/api/src/Etemplate/Widget.php index aded33c84f..5b009ff403 100644 --- a/api/src/Etemplate/Widget.php +++ b/api/src/Etemplate/Widget.php @@ -123,7 +123,7 @@ class Widget // read all attributes $this->set_attrs($reader); - while($reader->read() && $reader->depth > $depth) + while(($ok=$reader->read()) && $reader->depth > $depth) { if ($reader->nodeType == XMLReader::ELEMENT && $reader->depth > $depth) { @@ -135,6 +135,12 @@ class Widget $this->attrs[(string)$reader->name] = (string)$reader->value; } } + // give a clear indication where the template error is + if (!$ok && ($error = libxml_get_last_error())) + { + $file = str_replace([EGW_SERVER_ROOT.'/', '//default/etemplates/'], '', $error->file); + throw new \Exception("Error passing XML file '$file' line $error->line: $error->message"); + } // Reset content as we leave if($old_cont) { @@ -156,6 +162,7 @@ class Widget } else { + libxml_use_internal_errors(true); $reader = new XMLReader(); if (!$reader->XML($xml)) {