1 |
|
<?php
|
2 |
|
|
3 |
|
/**
|
4 |
|
* DokuWiki Bootstrap3 Template: Compatibility functions
|
5 |
|
*
|
6 |
|
* @link http://dokuwiki.org/template:bootstrap3
|
7 |
|
* @author Giuseppe Di Terlizzi <giuseppe.diterlizzi@gmail.com>
|
8 |
|
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
9 |
|
*/
|
10 |
|
|
11 |
|
global $updateVersion;
|
12 |
|
$dokuwiki_version = floatval($updateVersion);
|
13 |
|
|
14 |
|
define('DOKU_VERSION', $dokuwiki_version);
|
15 |
|
define('DOKU_VERSION_HOGFATHER', 51); // 2020-07-29
|
16 |
|
define('DOKU_VERSION_GREEBO', 50); // 2018-04-22 (PHP >= 5.6)
|
17 |
|
define('DOKU_VERSION_FRUSTERICK_MANNERS', 49); // 2017-02-19 (PHP >= 5.4 ???)
|
18 |
|
define('DOKU_VERSION_ELENOR_OF_TSORT', 48); // 2016-06-26␣
|
19 |
|
define('DOKU_VERSION_DETRITUS', 47); // 2015-08-10 (PHP >= 5.3.3)
|
20 |
|
|
21 |
|
|
22 |
|
// Load compatibility Menu classes for pre-Greebo releases
|
23 |
|
if (DOKU_VERSION < DOKU_VERSION_GREEBO) {
|
24 |
|
|
25 |
|
define('DOKU_INC_COMPAT', realpath(dirname(__FILE__) . '/../') . '/');
|
26 |
|
|
27 |
|
require DOKU_INC_COMPAT . "inc/Menu/MenuInterface.php";
|
28 |
|
require DOKU_INC_COMPAT . "inc/Menu/AbstractMenu.php";
|
29 |
|
require DOKU_INC_COMPAT . "inc/Menu/Item/AbstractItem.php";
|
30 |
|
|
31 |
|
require DOKU_INC_COMPAT . "inc/Menu/UserMenu.php";
|
32 |
|
require DOKU_INC_COMPAT . "inc/Menu/MobileMenu.php";
|
33 |
|
require DOKU_INC_COMPAT . "inc/Menu/PageMenu.php";
|
34 |
|
require DOKU_INC_COMPAT . "inc/Menu/SiteMenu.php";
|
35 |
|
require DOKU_INC_COMPAT . "inc/Menu/DetailMenu.php";
|
36 |
|
|
37 |
|
require DOKU_INC_COMPAT . "inc/Menu/Item/ImgBackto.php";
|
38 |
|
require DOKU_INC_COMPAT . "inc/Menu/Item/Top.php";
|
39 |
|
require DOKU_INC_COMPAT . "inc/Menu/Item/Edit.php";
|
40 |
|
require DOKU_INC_COMPAT . "inc/Menu/Item/Profile.php";
|
41 |
|
require DOKU_INC_COMPAT . "inc/Menu/Item/Revisions.php";
|
42 |
|
require DOKU_INC_COMPAT . "inc/Menu/Item/Backlink.php";
|
43 |
|
require DOKU_INC_COMPAT . "inc/Menu/Item/Back.php";
|
44 |
|
require DOKU_INC_COMPAT . "inc/Menu/Item/Login.php";
|
45 |
|
require DOKU_INC_COMPAT . "inc/Menu/Item/Index.php";
|
46 |
|
require DOKU_INC_COMPAT . "inc/Menu/Item/Register.php";
|
47 |
|
require DOKU_INC_COMPAT . "inc/Menu/Item/MediaManager.php";
|
48 |
|
require DOKU_INC_COMPAT . "inc/Menu/Item/Subscribe.php";
|
49 |
|
require DOKU_INC_COMPAT . "inc/Menu/Item/Recent.php";
|
50 |
|
require DOKU_INC_COMPAT . "inc/Menu/Item/Media.php";
|
51 |
|
require DOKU_INC_COMPAT . "inc/Menu/Item/Resendpwd.php";
|
52 |
|
require DOKU_INC_COMPAT . "inc/Menu/Item/Admin.php";
|
53 |
|
require DOKU_INC_COMPAT . "inc/Menu/Item/Revert.php";
|
54 |
|
|
55 |
|
}
|
56 |
|
|
57 |
|
// Load template class for previous "Frusterick Manners" (2017-02-19) releases
|
58 |
|
if (DOKU_VERSION < DOKU_VERSION_FRUSTERICK_MANNERS) {
|
59 |
|
|
60 |
|
$tpl_incdir = tpl_incdir();
|
61 |
|
|
62 |
|
require $tpl_incdir . 'Template.php';
|
63 |
|
require $tpl_incdir . 'SVG.php';
|
64 |
|
|
65 |
|
}
|
66 |
|
|
67 |
|
/**
|
68 |
|
* copied from core (available since Greebo)
|
69 |
|
*/
|
70 |
|
if (!function_exists('inlineSVG')) {
|
71 |
|
|
72 |
|
function inlineSVG($file, $maxsize = 2048)
|
73 |
|
{
|
74 |
|
$file = trim($file);
|
75 |
|
if ($file === '') {
|
76 |
|
return false;
|
77 |
|
}
|
78 |
|
|
79 |
|
if (!file_exists($file)) {
|
80 |
|
return false;
|
81 |
|
}
|
82 |
|
|
83 |
|
if (filesize($file) > $maxsize) {
|
84 |
|
return false;
|
85 |
|
}
|
86 |
|
|
87 |
|
if (!is_readable($file)) {
|
88 |
|
return false;
|
89 |
|
}
|
90 |
|
|
91 |
|
$content = file_get_contents($file);
|
92 |
|
$content = preg_replace('/<!--.*?(-->)/s', '', $content); // comments
|
93 |
|
$content = preg_replace('/<\?xml .*?\?>/i', '', $content); // xml header
|
94 |
|
$content = preg_replace('/<!DOCTYPE .*?>/i', '', $content); // doc type
|
95 |
|
$content = preg_replace('/>\s+</s', '><', $content); // newlines between tags
|
96 |
|
$content = trim($content);
|
97 |
|
if (substr($content, 0, 5) !== '<svg ') {
|
98 |
|
return false;
|
99 |
|
}
|
100 |
|
|
101 |
|
return $content;
|
102 |
|
}
|
103 |
|
|
104 |
|
}
|
105 |
|
|
106 |
|
/**
|
107 |
|
* copied from core (available since Detritus)
|
108 |
|
*/
|
109 |
|
if (!function_exists('tpl_toolsevent')) {
|
110 |
|
|
111 |
|
function tpl_toolsevent($toolsname, $items, $view = 'main')
|
112 |
|
{
|
113 |
|
$data = array(
|
114 |
|
'view' => $view,
|
115 |
|
'items' => $items,
|
116 |
|
);
|
117 |
|
|
118 |
|
$hook = 'TEMPLATE_' . strtoupper($toolsname) . '_DISPLAY';
|
119 |
|
$evt = new Doku_Event($hook, $data);
|
120 |
|
|
121 |
|
if ($evt->advise_before()) {
|
122 |
1
|
foreach ($evt->data['items'] as $k => $html) {
|
123 |
|
echo $html;
|
124 |
|
}
|
125 |
|
}
|
126 |
|
$evt->advise_after();
|
127 |
|
}
|
128 |
|
|
129 |
|
}
|
130 |
|
|
131 |
|
/**
|
132 |
|
* copied from core (available since Binky)
|
133 |
|
*/
|
134 |
|
if (!function_exists('tpl_classes')) {
|
135 |
|
|
136 |
7
|
function tpl_classes()
|
|
137 |
|
{
|
138 |
1
|
global $ACT, $conf, $ID, $INFO;
|
139 |
|
|
140 |
|
$classes = array(
|
141 |
|
'dokuwiki',
|
142 |
|
'mode_' . $ACT,
|
143 |
|
'tpl_' . $conf['template'],
|
144 |
|
!empty($_SERVER['REMOTE_USER']) ? 'loggedIn' : '',
|
145 |
|
$INFO['exists'] ? '' : 'notFound',
|
146 |
|
($ID == $conf['start']) ? 'home' : '',
|
147 |
|
);
|
148 |
|
|
149 |
|
return join(' ', $classes);
|
150 |
|
}
|
151 |
|
|
152 |
|
}
|
153 |
|
|
154 |
|
/**
|
155 |
|
* copied from core (available since Detritus)
|
156 |
|
*/
|
157 |
|
if (!function_exists('plugin_getRequestAdminPlugin')) {
|
158 |
|
|
159 |
5
|
function plugin_getRequestAdminPlugin()
|
160 |
|
{
|
161 |
|
static $admin_plugin = false;
|
162 |
|
global $ACT, $INPUT, $INFO;
|
163 |
|
|
164 |
|
if ($admin_plugin === false) {
|
165 |
|
if (($ACT == 'admin') && ($page = $INPUT->str('page', '', true)) != '') {
|
166 |
|
$pluginlist = plugin_list('admin');
|
167 |
|
if (in_array($page, $pluginlist)) {
|
168 |
|
// attempt to load the plugin
|
169 |
|
/** @var $admin_plugin DokuWiki_Admin_Plugin */
|
170 |
|
$admin_plugin = plugin_load('admin', $page);
|
171 |
|
// verify
|
172 |
|
if ($admin_plugin && $admin_plugin->forAdminOnly() && !$INFO['isadmin']) {
|
173 |
|
$admin_plugin = null;
|
174 |
|
$INPUT->remove('page');
|
175 |
|
msg('For admins only', -1);
|
176 |
|
}
|
177 |
|
}
|
178 |
|
}
|
179 |
|
}
|
180 |
|
|
181 |
|
return $admin_plugin;
|
182 |
|
}
|
183 |
|
|
184 |
|
}
|