aboutsummaryrefslogtreecommitdiff
path: root/src/SemanticScuttle/Service/Template.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/SemanticScuttle/Service/Template.php')
-rw-r--r--src/SemanticScuttle/Service/Template.php119
1 files changed, 119 insertions, 0 deletions
diff --git a/src/SemanticScuttle/Service/Template.php b/src/SemanticScuttle/Service/Template.php
new file mode 100644
index 0000000..b5d4cfa
--- /dev/null
+++ b/src/SemanticScuttle/Service/Template.php
@@ -0,0 +1,119 @@
+<?php
+/**
+ * SemanticScuttle - your social bookmark manager.
+ *
+ * PHP version 5.
+ *
+ * @category Bookmarking
+ * @package SemanticScuttle
+ * @author Benjamin Huynh-Kim-Bang <mensonge@users.sourceforge.net>
+ * @author Christian Weiske <cweiske@cweiske.de>
+ * @author Eric Dane <ericdane@users.sourceforge.net>
+ * @license GPL http://www.gnu.org/licenses/gpl.html
+ * @link http://sourceforge.net/projects/semanticscuttle
+ */
+
+require_once 'SemanticScuttle/Model/Template.php';
+require_once 'SemanticScuttle/Model/Theme.php';
+
+/**
+ * SemanticScuttle template service.
+ *
+ * @category Bookmarking
+ * @package SemanticScuttle
+ * @author Benjamin Huynh-Kim-Bang <mensonge@users.sourceforge.net>
+ * @author Christian Weiske <cweiske@cweiske.de>
+ * @author Eric Dane <ericdane@users.sourceforge.net>
+ * @license GPL http://www.gnu.org/licenses/gpl.html
+ * @link http://sourceforge.net/projects/semanticscuttle
+ */
+class SemanticScuttle_Service_Template extends SemanticScuttle_Service
+{
+ /**
+ * Full path to template directory.
+ *
+ * Set in constructor to
+ * $GLOBALS['TEMPLATES_DIR']
+ *
+ * @var string
+ */
+ protected $basedir;
+
+ /**
+ * The template theme to use.
+ * Set in constructor based on $GLOBALS['theme']
+ *
+ * @var SemanticScuttle_Model_Theme
+ */
+ protected $theme;
+
+
+
+ /**
+ * Returns the single service instance
+ *
+ * @param DB $db Database object
+ *
+ * @return SemanticScuttle_Service
+ */
+ public static function getInstance($db)
+ {
+ static $instance;
+ if (!isset($instance)) {
+ $instance = new self($db);
+ }
+ return $instance;
+ }
+
+
+
+ /**
+ * Create a new instance
+ */
+ protected function __construct()
+ {
+ $this->basedir = $GLOBALS['TEMPLATES_DIR'];
+ $this->theme = new SemanticScuttle_Model_Theme($GLOBALS['theme']);
+ //FIXME: verify the theme exists
+ }
+
+
+
+ /**
+ * Loads and displays a template file.
+ *
+ * @param string $template Template filename relative
+ * to template dir
+ * @param array $vars Array of template variables.
+ * The current theme object will be added
+ * automatically with name "theme".
+ *
+ * @return SemanticScuttle_Model_Template Template object
+ */
+ public function loadTemplate($template, $vars = null)
+ {
+ if (substr($template, -4) != '.php') {
+ $template .= '.php';
+ }
+
+ $oldIncPath = get_include_path();
+ set_include_path(
+ $this->basedir . $this->theme->getName()
+ . PATH_SEPARATOR . $this->basedir . 'default'
+ //needed since services are instantiated in templates
+ . PATH_SEPARATOR . $oldIncPath
+ );
+
+ $vars['theme'] = $this->theme;
+ $tpl = new SemanticScuttle_Model_Template(
+ $template, $vars, $this
+ );
+ $tpl->parse();
+
+ set_include_path($oldIncPath);
+
+ return $tpl;
+ }
+}
+
+?> \ No newline at end of file