xml tags must not include undeclared namespaces like: <link-entry:infolog

Reinstating "throw an exception on XML errors in eTemplates for easier fixing"

This reverts commit 18b7d9311c.
This commit is contained in:
Ralf Becker 2021-02-16 21:52:02 +02:00
parent 4b6551c5a3
commit e54aebebca
2 changed files with 10 additions and 2 deletions

View File

@ -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))
{

View File

@ -45,7 +45,8 @@ class HistoryLog extends Etemplate\Widget
if(!is_array($type))
{
list($basetype) = explode('-',$type);
$widget = @self::factory($basetype, '<?xml version="1.0"?><'.$type.' type="'.$type.'"/>', $key);
list($tag) = explode(':', $type); // xml tags must not include undeclared namespaces like: <link-entry:infolog
$widget = @self::factory($basetype, '<?xml version="1.0"?><'.$tag.' type="'.$type.'"/>', $key);
$widget->id = $key;
$widget->attrs['type'] = $type;
$widget->type = $type;