aboutsummaryrefslogtreecommitdiffstats
path: root/library/Smarty/libs/Autoloader.php
diff options
context:
space:
mode:
authorWave <wave72@users.noreply.github.com>2015-12-20 10:20:36 +0100
committerWave <wave72@users.noreply.github.com>2015-12-20 10:20:36 +0100
commit2aad4c2cf9c17a7532089aadfcc5feff6505ec74 (patch)
tree2082c8dc7ba090f610874b6e33b0f1092a2ff00c /library/Smarty/libs/Autoloader.php
parent474a1267d73c1dcf00678dd15ed4e0e37496473d (diff)
parente2692a4baaf031bd0d9c0893c3762637b1f6b201 (diff)
downloadvolse-hubzilla-2aad4c2cf9c17a7532089aadfcc5feff6505ec74.tar.gz
volse-hubzilla-2aad4c2cf9c17a7532089aadfcc5feff6505ec74.tar.bz2
volse-hubzilla-2aad4c2cf9c17a7532089aadfcc5feff6505ec74.zip
Merge pull request #4 from redmatrix/master
Merge master into dev branch
Diffstat (limited to 'library/Smarty/libs/Autoloader.php')
-rw-r--r--library/Smarty/libs/Autoloader.php124
1 files changed, 124 insertions, 0 deletions
diff --git a/library/Smarty/libs/Autoloader.php b/library/Smarty/libs/Autoloader.php
new file mode 100644
index 000000000..7d0c388a6
--- /dev/null
+++ b/library/Smarty/libs/Autoloader.php
@@ -0,0 +1,124 @@
+<?php
+/**
+ * Smarty Autoloader
+ *
+ * @package Smarty
+ */
+
+/**
+ * Smarty Autoloader
+ *
+ * @package Smarty
+ * @author Uwe Tews
+ * Usage:
+ * require_once '...path/Autoloader.php';
+ * Smarty_Autoloader::register();
+ * $smarty = new Smarty();
+ * Note: This autoloader is not needed if you use Composer.
+ * Composer will automatically add the classes of the Smarty package to it common autoloader.
+ */
+class Smarty_Autoloader
+{
+ /**
+ * Filepath to Smarty root
+ *
+ * @var string
+ */
+ public static $SMARTY_DIR = '';
+
+ /**
+ * Filepath to Smarty internal plugins
+ *
+ * @var string
+ */
+ public static $SMARTY_SYSPLUGINS_DIR = '';
+
+ /**
+ * Array with Smarty core classes and their filename
+ *
+ * @var array
+ */
+ public static $rootClasses = array('smarty' => 'Smarty.class.php', 'smartybc' => 'SmartyBC.class.php',);
+
+ /**
+ * Registers Smarty_Autoloader backward compatible to older installations.
+ *
+ * @param bool $prepend Whether to prepend the autoloader or not.
+ */
+ public static function registerBC($prepend = false)
+ {
+ /**
+ * register the class autoloader
+ */
+ if (!defined('SMARTY_SPL_AUTOLOAD')) {
+ define('SMARTY_SPL_AUTOLOAD', 0);
+ }
+ if (SMARTY_SPL_AUTOLOAD &&
+ set_include_path(get_include_path() . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !== false
+ ) {
+ $registeredAutoLoadFunctions = spl_autoload_functions();
+ if (!isset($registeredAutoLoadFunctions['spl_autoload'])) {
+ spl_autoload_register();
+ }
+ } else {
+ self::register($prepend);
+ }
+ }
+
+ /**
+ * Registers Smarty_Autoloader as an SPL autoloader.
+ *
+ * @param bool $prepend Whether to prepend the autoloader or not.
+ */
+ public static function register($prepend = false)
+ {
+ self::$SMARTY_DIR = defined('SMARTY_DIR') ? SMARTY_DIR : dirname(__FILE__) . DIRECTORY_SEPARATOR;
+ self::$SMARTY_SYSPLUGINS_DIR = defined('SMARTY_SYSPLUGINS_DIR') ? SMARTY_SYSPLUGINS_DIR :
+ self::$SMARTY_DIR . 'sysplugins' . DIRECTORY_SEPARATOR;
+ if (version_compare(phpversion(), '5.3.0', '>=')) {
+ spl_autoload_register(array(__CLASS__, 'autoload'), true, $prepend);
+ } else {
+ spl_autoload_register(array(__CLASS__, 'autoload'));
+ }
+ }
+
+ /**
+ * Handles auto loading of classes.
+ *
+ * @param string $class A class name.
+ */
+ public static function autoload($class)
+ {
+ $_class = strtolower($class);
+ $file = self::$SMARTY_SYSPLUGINS_DIR . $_class . '.php';
+ if (strpos($_class, 'smarty_internal_') === 0) {
+ if (strpos($_class, 'smarty_internal_compile_') === 0) {
+ if (is_file($file)) {
+ require $file;
+ }
+ return;
+ }
+ @include $file;
+ return;
+ }
+ if (preg_match('/^(smarty_(((template_(source|config|cache|compiled|resource_base))|((cached|compiled)?resource)|(variable|security)))|(smarty(bc)?)$)/',
+ $_class, $match)) {
+ if (!empty($match[3])) {
+ @include $file;
+ return;
+ } elseif (!empty($match[9]) && isset(self::$rootClasses[$_class])) {
+ $file = self::$rootClasses[$_class];
+ require $file;
+ return;
+ }
+ }
+ if (0 !== strpos($_class, 'smarty')) {
+ return;
+ }
+ if (is_file($file)) {
+ require $file;
+ return;
+ }
+ return;
+ }
+}