die() expanded with __METHOD__
[core.git] / inc / classes / main / parser / xml / class_XmlParser.php
index d026f6daddd641ac1db5b5e72937ed3acbbc7475..dab9f3af6c74e6fef126d902d4b8ff13bd733898 100644 (file)
@@ -4,7 +4,7 @@
  *
  * @author             Roland Haeder <webmaster@ship-simu.org>
  * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 Core Developer Team
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Core Developer Team
  * @license            GNU GPL 3.0 or any newer version
  * @link               http://www.ship-simu.org
  *
@@ -43,7 +43,7 @@ class XmlParser extends BaseParser implements Parseable {
         * @param       $templateInstance       A CompileableTemplate instance
         * @return      $parserInstance         An instance of this parser
         */
-       public final static function createXmlParser (CompileableTemplate $templateInstance) {
+       public static final function createXmlParser (CompileableTemplate $templateInstance) {
                // Get a new instance
                $parserInstance = new XmlParser();
 
@@ -63,12 +63,21 @@ class XmlParser extends BaseParser implements Parseable {
         */
        public function parseXmlContent ($content) {
                // Convert all to UTF8
-               if (function_exists('recode')) {
+               if (empty($content)) {
+                       // No empty content!
+                       $this->debugOuput('Empty content! Backtrace: <pre>');
+                       debug_print_backtrace();
+                       $this->debugOuput('</pre>');
+                       die();
+               } elseif (function_exists('recode')) {
                        // Recode found, so use it
                        $content = recode('html..utf8', $content);
+               } elseif (function_exists('mb_convert_encoding')) {
+                       // Use mb_convert_encoding()
+                       $content = mb_convert_encoding($content, 'UTF-8', 'auto');
                } else {
                        // @TODO We need to find a fallback solution here
-                       $this->partialStub('Cannot find recode extension!');
+                       $this->partialStub('Cannot find recode/mbstring extension!');
                } // END - if
 
                // Get an XML parser
@@ -80,8 +89,11 @@ class XmlParser extends BaseParser implements Parseable {
                // Set UTF-8
                xml_parser_set_option($xmlParser, XML_OPTION_TARGET_ENCODING, 'UTF-8');
 
+               // Get instance (we need this :( )
+               $templateInstance = $this->getTemplateInstance();
+
                // Set object
-               xml_set_object($xmlParser, $this->getTemplateInstance());
+               xml_set_object($xmlParser, $templateInstance);
 
                // Set handler call-backs
                xml_set_element_handler($xmlParser, 'startElement', 'endElement');
@@ -90,7 +102,7 @@ class XmlParser extends BaseParser implements Parseable {
                // Now parse the XML tree
                if (!xml_parse($xmlParser, $content)) {
                        // Error found in XML!
-                       //* DEBUG: */ die('<pre>'.htmlentities($content).'</pre>');
+                       //* DEBUG: */ die(__METHOD__ . ':<pre>'.htmlentities($content).'</pre>');
                        throw new XmlParserException(array($this, $xmlParser), self::EXCEPTION_XML_PARSER_ERROR);
                } // END - if