summaryrefslogtreecommitdiffstats
path: root/lib/private/Template/Base.php
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@owncloud.com>2016-05-12 14:01:14 +0200
committerRoeland Jago Douma <rullzer@owncloud.com>2016-05-13 08:54:07 +0200
commit05cc0dd47881816ef9c91c8883dafc0716cd6d6c (patch)
tree28f05d7e7c09a3656911a9af4965f41b2d573d8f /lib/private/Template/Base.php
parenteb79b8383107c71f8def60d195de09a1152af263 (diff)
downloadnextcloud-server-05cc0dd47881816ef9c91c8883dafc0716cd6d6c.tar.gz
nextcloud-server-05cc0dd47881816ef9c91c8883dafc0716cd6d6c.zip
Move \OC\Template to PSR-4
Diffstat (limited to 'lib/private/Template/Base.php')
-rw-r--r--lib/private/Template/Base.php184
1 files changed, 184 insertions, 0 deletions
diff --git a/lib/private/Template/Base.php b/lib/private/Template/Base.php
new file mode 100644
index 00000000000..cfe629b5fbf
--- /dev/null
+++ b/lib/private/Template/Base.php
@@ -0,0 +1,184 @@
+<?php
+/**
+ * @author Bart Visscher <bartv@thisnet.nl>
+ * @author Björn Schießle <schiessle@owncloud.com>
+ * @author Christopher Schäpers <kondou@ts.unde.re>
+ * @author Jörn Friedrich Dreyer <jfd@butonic.de>
+ * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Template;
+
+class Base {
+ private $template; // The template
+ private $vars; // Vars
+
+ /** @var \OCP\IL10N */
+ private $l10n;
+
+ /** @var \OC_Defaults */
+ private $theme;
+
+ /**
+ * @param string $template
+ * @param string $requestToken
+ * @param \OCP\IL10N $l10n
+ * @param \OC_Defaults $theme
+ */
+ public function __construct($template, $requestToken, $l10n, $theme ) {
+ $this->vars = array();
+ $this->vars['requesttoken'] = $requestToken;
+ $this->l10n = $l10n;
+ $this->template = $template;
+ $this->theme = $theme;
+ }
+
+ /**
+ * @param string $serverRoot
+ * @param string|false $app_dir
+ * @param string $theme
+ * @param string $app
+ * @return string[]
+ */
+ protected function getAppTemplateDirs($theme, $app, $serverRoot, $app_dir) {
+ // Check if the app is in the app folder or in the root
+ if( file_exists($app_dir.'/templates/' )) {
+ return [
+ $serverRoot.'/themes/'.$theme.'/apps/'.$app.'/templates/',
+ $app_dir.'/templates/',
+ ];
+ }
+ return [
+ $serverRoot.'/themes/'.$theme.'/'.$app.'/templates/',
+ $serverRoot.'/'.$app.'/templates/',
+ ];
+ }
+
+ /**
+ * @param string $serverRoot
+ * @param string $theme
+ * @return string[]
+ */
+ protected function getCoreTemplateDirs($theme, $serverRoot) {
+ return [
+ $serverRoot.'/themes/'.$theme.'/core/templates/',
+ $serverRoot.'/core/templates/',
+ ];
+ }
+
+ /**
+ * Assign variables
+ * @param string $key key
+ * @param array|bool|integer|string $value value
+ * @return bool
+ *
+ * This function assigns a variable. It can be accessed via $_[$key] in
+ * the template.
+ *
+ * If the key existed before, it will be overwritten
+ */
+ public function assign( $key, $value) {
+ $this->vars[$key] = $value;
+ return true;
+ }
+
+ /**
+ * Appends a variable
+ * @param string $key key
+ * @param mixed $value value
+ * @return boolean|null
+ *
+ * This function assigns a variable in an array context. If the key already
+ * exists, the value will be appended. It can be accessed via
+ * $_[$key][$position] in the template.
+ */
+ public function append( $key, $value ) {
+ if( array_key_exists( $key, $this->vars )) {
+ $this->vars[$key][] = $value;
+ }
+ else{
+ $this->vars[$key] = array( $value );
+ }
+ }
+
+ /**
+ * Prints the proceeded template
+ * @return bool
+ *
+ * This function proceeds the template and prints its output.
+ */
+ public function printPage() {
+ $data = $this->fetchPage();
+ if( $data === false ) {
+ return false;
+ }
+ else{
+ print $data;
+ return true;
+ }
+ }
+
+ /**
+ * Process the template
+ *
+ * @param array|null $additionalParams
+ * @return string This function processes the template.
+ *
+ * This function processes the template.
+ */
+ public function fetchPage($additionalParams = null) {
+ return $this->load($this->template, $additionalParams);
+ }
+
+ /**
+ * doing the actual work
+ *
+ * @param string $file
+ * @param array|null $additionalParams
+ * @return string content
+ *
+ * Includes the template file, fetches its output
+ */
+ protected function load($file, $additionalParams = null) {
+ // Register the variables
+ $_ = $this->vars;
+ $l = $this->l10n;
+ $theme = $this->theme;
+
+ if( !is_null($additionalParams)) {
+ $_ = array_merge( $additionalParams, $this->vars );
+ }
+
+ // Include
+ ob_start();
+ try {
+ include $file;
+ $data = ob_get_contents();
+ } catch (\Exception $e) {
+ @ob_end_clean();
+ throw $e;
+ }
+ @ob_end_clean();
+
+ // Return data
+ return $data;
+ }
+
+}