From 9b4d3d51ae5e3a13b7460fb1ec0189929c5fd1d7 Mon Sep 17 00:00:00 2001
From: garvinhicking <garvinhicking>
Date: Tue, 20 Jun 2006 07:44:43 +0000
Subject: [PATCH] Add experimental XML engine support

---
 docs/NEWS                              |   3 +
 include/plugin_internal.inc.php        |   3 +
 include/template_api.inc.php           |  84 +++++++++++++++++++++++++
 templates/default-xml/index.tpl        |   1 +
 templates/default-xml/info.txt         |   4 ++
 templates/default-xml/preview.png      | Bin 0 -> 13606 bytes
 templates/default-xml/template.inc.php |   7 +++
 7 files changed, 102 insertions(+)
 create mode 100644 templates/default-xml/index.tpl
 create mode 100644 templates/default-xml/info.txt
 create mode 100644 templates/default-xml/preview.png
 create mode 100644 templates/default-xml/template.inc.php

diff --git a/docs/NEWS b/docs/NEWS
index 5182ff6..8d23c07 100644
--- a/docs/NEWS
+++ b/docs/NEWS
@@ -3,6 +3,9 @@
 Version 1.1-alpha7()
 ------------------------------------------------------------------------
 
+    * Added experimental XML-engine, for XSLT templating support
+      (garvinhicking)
+
     * Added experimental PHP-engine templating support, bypassing
       Smarty. Work in progress, mostly proof-of-concept. Might
       be changed completely. Read instructions in the 
diff --git a/include/plugin_internal.inc.php b/include/plugin_internal.inc.php
index 79fbf19..aaa2b5e 100644
--- a/include/plugin_internal.inc.php
+++ b/include/plugin_internal.inc.php
@@ -1410,6 +1410,9 @@ class serendipity_categories_plugin extends serendipity_plugin {
         $is_form = serendipity_db_bool($this->get_config('allow_select'));
         if ($which_category === "login") {
             $which_category = (int)$serendipity['authorid'];
+            if ($which_category === 0) {
+                $which_category = -1; // Set to -1 for anonymous authors to get a proper match.
+            }
         }
 
         $categories = serendipity_fetchCategories(empty($which_category) ? 'all' : $which_category, '', $sort);
diff --git a/include/template_api.inc.php b/include/template_api.inc.php
index 50ab843..f9983b5 100644
--- a/include/template_api.inc.php
+++ b/include/template_api.inc.php
@@ -175,3 +175,87 @@ class serendipity_smarty_emulator {
     }
 }
 
+/*
+ *@author Garvin Hicking
+ *@state EXPERIMENTAL
+ *
+ * XML Engine
+ */
+
+class serendipity_smarty_emulator_xml extends serendipity_smarty_emulator {
+    /**
+     * Parses a template file into another.
+     *
+     * @access public
+     * @return null
+     */
+    function fetch() {
+        return true;
+    }
+
+    /**
+     * Outputs a smarty template.
+     *
+     * @access public
+     * @return null
+     */
+    function display() {
+        echo "</serendipity>\n";
+        return true;
+    }
+
+    function __construct() {
+        header('Content-Type: text/xml; charset=' . LANG_CHARSET);
+        echo '<?xml version="1.0" encoding="' . LANG_CHARSET . '" ?>' . "\n";
+        /*
+        echo '<?xml-stylesheet href="' . serendipity_getTemplateFile('xml.css') . '" type="text/css" ?>' . "\n";
+        */
+        echo "<serendipity>\n";
+        ob_end_flush(); // This ends the started ob from index.php!
+    }
+    
+    function serendipity_smarty_emulator_xml() {
+        $this->__construct();
+    }
+
+    /**
+     * Assign one or multiple template variable
+     * @TODO: Why can't this function accept references. This sucks.
+     *
+     * @param   mixed       Either a variable name, or an array of variables
+     * @param   mixed       Either null or the variable content.
+     * @access public
+     * @return null
+     */
+    function assign($tpl_var, $value = null, $level = 0) {
+        if (is_array($tpl_var)) {
+            foreach ($tpl_var as $key => $val) {
+                if ($key != '') {
+                    $this->createXML($level, $key, $val);
+                }
+            }
+        } else {
+            $this->createXML($level, $tpl_var, $value);
+        }
+
+        return true;
+    }
+    
+    function createXML(&$level, &$key, &$val) {
+        if (is_numeric($key)) {
+            $openkey  = 'item index="' . $key . '"';
+            $closekey = 'item';
+        } else {
+            $openkey = $closekey = $key;
+        }
+
+        if (is_array($val)) {
+            echo str_repeat("\t", $level) . "<$openkey>\n";
+            $this->assign($val, null, $level + 1);
+            echo str_repeat("\t", $level) . "</$closekey>\n";
+        } else {
+            echo str_repeat("\t", $level) . "<$openkey>" . htmlspecialchars($val) . "</$closekey>\n";
+        }
+    }
+}
+
diff --git a/templates/default-xml/index.tpl b/templates/default-xml/index.tpl
new file mode 100644
index 0000000..2922023
--- /dev/null
+++ b/templates/default-xml/index.tpl
@@ -0,0 +1 @@
+<!-- RAW XML OUTPUT! -->
diff --git a/templates/default-xml/info.txt b/templates/default-xml/info.txt
new file mode 100644
index 0000000..21b03d8
--- /dev/null
+++ b/templates/default-xml/info.txt
@@ -0,0 +1,4 @@
+Name: XML Engine. EXPERIMENTAL. (Developers only)
+Author: Garvin Hicking
+Date: 06.06.2006
+Require Serendipity: 1.1
diff --git a/templates/default-xml/preview.png b/templates/default-xml/preview.png
new file mode 100644
index 0000000000000000000000000000000000000000..4bad5ac86e9463c290d74ba058ef86798ebcccbd
GIT binary patch
literal 13606
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

literal 0
HcmV?d00001

diff --git a/templates/default-xml/template.inc.php b/templates/default-xml/template.inc.php
new file mode 100644
index 0000000..264cf99
--- /dev/null
+++ b/templates/default-xml/template.inc.php
@@ -0,0 +1,7 @@
+<?php 
+// THIS FILE IS WORK-IN-PROGRESS. Mostly proof-of-code.
+// Proceed at your own risk. Read the "template_api.inc.php
+// instructions.
+include_once S9Y_INCLUDE_PATH . 'include/template_api.inc.php'; 
+$GLOBALS['template'] = new serendipity_smarty_emulator_xml(); 
+$GLOBALS['serendipity']['smarty'] =& $GLOBALS['template'];
-- 
2.39.5