Now catching invalid XML errors.
authorphilipp <philipp@7aebc617-e5e2-0310-91dc-80fb5f6d2477>
Wed, 15 Jan 2014 20:24:44 +0000 (20:24 +0000)
committerphilipp <philipp@7aebc617-e5e2-0310-91dc-80fb5f6d2477>
Wed, 15 Jan 2014 20:24:44 +0000 (20:24 +0000)
git-svn-id: http://www.winterrodeln.org/svn/servermediawiki/mediawiki_extensions/wrreport/trunk@1880 7aebc617-e5e2-0310-91dc-80fb5f6d2477

wrreport.body.php
wrreport.i18n.php

index 5d407a7bd85ce30a0304abdf1963bcc7d6e4aa89..92cb79aa6b2f228f5efd7493c7d1e2f9e74565f1 100644 (file)
@@ -888,7 +888,12 @@ class WrReport {
                $dbr = wfGetDB(DB_SLAVE);
                try {
                        libxml_use_internal_errors(true); // without that, we get PHP Warnings if the $input is not well-formed
-                       $xml = new SimpleXMLElement('<rodelbahntabelle>' . $input . '</rodelbahntabelle>'); // input
+                       try {
+                               $xml_input = '<rodelbahntabelle>' . $input . '</rodelbahntabelle>';
+                               $xml = new SimpleXMLElement($xml_input); // input
+                       } catch (Exception $e) {
+                               throw new WrReportException(wfMessage('wrreport-rodelbahntabelle-invalid-xml', $xml_input)->text());
+                       }
                        $whitespace = (string) $xml; // everything between <rodelbahntabelle> and </rodelbahntabelle> that's not a sub-element
                        if (strlen($whitespace) > 0 && !ctype_space($whitespace)) // there must not be anythin except sub-elements or whitespace
                                throw new WrReportException(wfMessage('wrreport-rodelbahntabelle-textbetweenelements', trim($xml))->text());
index bac96fb9a8629ab52bcf53fb13789f5c7fc62c3d..6c1b40fc0b84a95d16f4e23f193e9ef6848523bc 100644 (file)
@@ -88,6 +88,7 @@ $messages['qqq'] = array(
        'wrreport-bahnenregiontabelle-error' => 'Text. Text describing that an error in paring/using the <bahnenregiontabelle> tag occurred. $1 gives details.',
        'wrreport-rodelbahntabelle-error' => 'Text.  Text describing that an error in paring/using the <rodelbahntabelle> tag occurred. $1 gives details.',
        'wrreport-rodelbahntabelle-textbetweenelements' => 'Text. Error message describing that invalid text is found between elements. $1 gives the complete XML.',
+       'wrreport-rodelbahntabelle-invalid-xml' => 'Text. Error message describing that the XML could not be parsed. $1 gives the complete invalid XML.',
        'wrreport-rodelbahntabelle-invalid-element' => 'Text. Error message describing that the element given as $1 is not known.',
        'wrreport-rodelbahntabelle-invalid-attribute-name' => 'Text. Error message describing that the attribute given as $2 of the elment given as $1 is not known.',
        'wrreport-rodelbahntabelle-invalid-attribute-value' => 'Text. Error message describing that the value $3 of the attribut given as $2 of the element given as $1 is not known.',
@@ -189,6 +190,7 @@ $messages['en'] = array(
        'wrreport-bahnenregiontabelle-invalidargument' => 'The argument $1 is not allowed.',
        'wrreport-bahnenregiontabelle-error' => 'The following error occurred at the <bahnenregiontabelle> tag: $1',
        'wrreport-rodelbahntabelle-error' => 'The following error occurred while parsing <rodelbahntabelle>: $1',
+       'wrreport-rodelbahntabelle-invalid-xml' => 'XML could not be parsed: $1',
        'wrreport-rodelbahntabelle-textbetweenelements' => 'Unknown text was found between the subelements: $1',
        'wrreport-rodelbahntabelle-invalid-element' => 'The element $1 is not known.',
        'wrreport-rodelbahntabelle-invalid-attribute-name' => 'The attribute $2 of element $1 is not known.',