diff options
author | Roeland Jago Douma <rullzer@owncloud.com> | 2016-05-12 14:01:14 +0200 |
---|---|---|
committer | Roeland Jago Douma <rullzer@owncloud.com> | 2016-05-13 08:54:07 +0200 |
commit | 05cc0dd47881816ef9c91c8883dafc0716cd6d6c (patch) | |
tree | 28f05d7e7c09a3656911a9af4965f41b2d573d8f /lib/private/Template/Base.php | |
parent | eb79b8383107c71f8def60d195de09a1152af263 (diff) | |
download | nextcloud-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.php | 184 |
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; + } + +} |