]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/xmloutputter.php
Merge remote-tracking branch 'upstream/master'
[quix0rs-gnu-social.git] / lib / xmloutputter.php
index 15b18e7d90738f8ac3a348dd1b41931396d6c339..463f91be305a8d542b24e42d188589170f585cfd 100644 (file)
@@ -63,12 +63,15 @@ class XMLOutputter
      *
      * Initializes the wrapped XMLWriter.
      *
-     * @param string  $output URL for outputting, defaults to stdout
+     * @param string  $output URL for outputting, if null it defaults to stdout ('php://output')
      * @param boolean $indent Whether to indent output, default true
      */
 
-    function __construct($output='php://output', $indent=null)
+    function __construct($output=null, $indent=null)
     {
+        if (is_null($output)) {
+            $output = 'php://output';
+        }
         $this->xw = new XMLWriter();
         $this->xw->openURI($output);
         if(is_null($indent)) {
@@ -142,6 +145,15 @@ class XMLOutputter
         $this->elementEnd($tag);
     }
 
+    function elementNS(array $ns, $tag, $attrs=null, $content=null)
+    {
+        $this->elementStartNS($ns, $tag, $attrs);
+        if (!is_null($content)) {
+            $this->xw->text($content);
+        }
+        $this->elementEnd($tag);
+    }
+
     /**
      * output a start tag for an element
      *
@@ -169,6 +181,20 @@ class XMLOutputter
         }
     }
 
+    function elementStartNS(array $ns, $tag, $attrs=null)
+    {
+        reset($ns); // array pointer to 0
+        $uri = key($ns);
+        $this->xw->startElementNS($ns[$uri], $tag, $uri);
+        if (is_array($attrs)) {
+            foreach ($attrs as $name => $value) {
+                $this->xw->writeAttribute($name, $value);
+            }
+        } else if (is_string($attrs)) {
+            $this->xw->writeAttribute('class', $attrs);
+        }
+    }
+
     /**
      * output an end tag for an element
      *
@@ -189,7 +215,7 @@ class XMLOutputter
     {
         static $empty_tag = array('base', 'meta', 'link', 'hr',
                                   'br', 'param', 'img', 'area',
-                                  'input', 'col');
+                                  'input', 'col', 'source');
         // XXX: check namespace
         if (in_array($tag, $empty_tag)) {
             $this->xw->endElement();
@@ -242,4 +268,15 @@ class XMLOutputter
     {
         $this->xw->writeComment($txt);
     }
+
+    /**
+     * Flush output buffers
+     *
+     * @return void
+     */
+
+    function flush()
+    {
+        $this->xw->flush();
+    }
 }