Bläddra i källkod

Patched Zend_Feed_Reader to resolve a problem similar to Zend_Feed's as described by ZF-7305

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@16938 44c647ce-9c0f-0410-b52a-842ac1e357ba
padraic 16 år sedan
förälder
incheckning
4858a79ca6
1 ändrade filer med 11 tillägg och 10 borttagningar
  1. 11 10
      library/Zend/Feed/Reader.php

+ 11 - 10
library/Zend/Feed/Reader.php

@@ -312,21 +312,22 @@ class Zend_Feed_Reader
      */
     public static function importString($string)
     {
-        @ini_set('track_errors', 1);
+        $libxml_errflag = libxml_use_internal_errors(true);
         $dom = new DOMDocument;
-        $status = @$dom->loadXML($string);
-        @ini_restore('track_errors');
+        $status = $dom->loadXML($string);
+        libxml_use_internal_errors($libxml_errflag);
 
         if (!$status) {
-            if (!isset($php_errormsg)) {
-                if (function_exists('xdebug_is_enabled')) {
-                    $php_errormsg = '(error message not available, when XDebug is running)';
-                } else {
-                    $php_errormsg = '(error message not available)';
-                }
+            // Build error message
+            $error = libxml_get_last_error();
+            if ($error && $error->message) {
+            	$errormsg = "DOMDocument cannot parse XML: {$error->message}";
+            } else {
+            	$errormsg = "DOMDocument cannot parse XML: Please check the XML document's validity";
             }
+
             require_once 'Zend/Feed/Exception.php';
-            throw new Zend_Feed_Exception("DOMDocument cannot parse XML: $php_errormsg");
+            throw new Zend_Feed_Exception($errormsg);
         }
 
         $type = self::detectType($dom);