]> git.mxchange.org Git - friendica.git/blob - vendor/smarty/smarty/libs/Autoloader.php
Update composer.json
[friendica.git] / vendor / smarty / smarty / libs / Autoloader.php
1 <?php
2 /**
3  * Smarty Autoloader
4  *
5  * @package    Smarty
6  */
7
8 /**
9  * Smarty Autoloader
10  *
11  * @package    Smarty
12  * @author     Uwe Tews
13  *             Usage:
14  *                  require_once '...path/Autoloader.php';
15  *                  Smarty_Autoloader::register();
16  *             or
17  *                  include '...path/bootstarp.php';
18  *
19  *                  $smarty = new Smarty();
20  */
21 class Smarty_Autoloader
22 {
23     /**
24      * Filepath to Smarty root
25      *
26      * @var string
27      */
28     public static $SMARTY_DIR = null;
29
30     /**
31      * Filepath to Smarty internal plugins
32      *
33      * @var string
34      */
35     public static $SMARTY_SYSPLUGINS_DIR = null;
36
37     /**
38      * Array with Smarty core classes and their filename
39      *
40      * @var array
41      */
42     public static $rootClasses = array('smarty' => 'Smarty.class.php', 'smartybc' => 'SmartyBC.class.php',);
43
44     /**
45      * Registers Smarty_Autoloader backward compatible to older installations.
46      *
47      * @param bool $prepend Whether to prepend the autoloader or not.
48      */
49     public static function registerBC($prepend = false)
50     {
51         /**
52          * register the class autoloader
53          */
54         if (!defined('SMARTY_SPL_AUTOLOAD')) {
55             define('SMARTY_SPL_AUTOLOAD', 0);
56         }
57         if (SMARTY_SPL_AUTOLOAD &&
58             set_include_path(get_include_path() . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !== false
59         ) {
60             $registeredAutoLoadFunctions = spl_autoload_functions();
61             if (!isset($registeredAutoLoadFunctions[ 'spl_autoload' ])) {
62                 spl_autoload_register();
63             }
64         } else {
65             self::register($prepend);
66         }
67     }
68
69     /**
70      * Registers Smarty_Autoloader as an SPL autoloader.
71      *
72      * @param bool $prepend Whether to prepend the autoloader or not.
73      */
74     public static function register($prepend = false)
75     {
76         self::$SMARTY_DIR = defined('SMARTY_DIR') ? SMARTY_DIR : dirname(__FILE__) . DIRECTORY_SEPARATOR;
77         self::$SMARTY_SYSPLUGINS_DIR = defined('SMARTY_SYSPLUGINS_DIR') ? SMARTY_SYSPLUGINS_DIR :
78             self::$SMARTY_DIR . 'sysplugins' . DIRECTORY_SEPARATOR;
79         if (version_compare(phpversion(), '5.3.0', '>=')) {
80             spl_autoload_register(array(__CLASS__, 'autoload'), true, $prepend);
81         } else {
82             spl_autoload_register(array(__CLASS__, 'autoload'));
83         }
84     }
85
86     /**
87      * Handles auto loading of classes.
88      *
89      * @param string $class A class name.
90      */
91     public static function autoload($class)
92     {
93         if ($class[ 0 ] !== 'S' && strpos($class, 'Smarty') !== 0) {
94             return;
95         }
96         $_class = strtolower($class);
97         if (isset(self::$rootClasses[ $_class ])) {
98             $file = self::$SMARTY_DIR . self::$rootClasses[ $_class ];
99             if (is_file($file)) {
100                 include $file;
101             }
102         } else {
103             $file = self::$SMARTY_SYSPLUGINS_DIR . $_class . '.php';
104             if (is_file($file)) {
105                 include $file;
106             }
107         }
108         return;
109     }
110 }