Files
mr-legend_wiki/lib/tpl/bootstrap3/compat/inc/functions.php
T
2024-07-08 03:32:47 +09:00

185 lines
5.6 KiB
PHP

<?php
/**
* DokuWiki Bootstrap3 Template: Compatibility functions
*
* @link http://dokuwiki.org/template:bootstrap3
* @author Giuseppe Di Terlizzi <giuseppe.diterlizzi@gmail.com>
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*/
global $updateVersion;
$dokuwiki_version = floatval($updateVersion);
define('DOKU_VERSION', $dokuwiki_version);
define('DOKU_VERSION_HOGFATHER', 51); // 2020-07-29
define('DOKU_VERSION_GREEBO', 50); // 2018-04-22 (PHP >= 5.6)
define('DOKU_VERSION_FRUSTERICK_MANNERS', 49); // 2017-02-19 (PHP >= 5.4 ???)
define('DOKU_VERSION_ELENOR_OF_TSORT', 48); // 2016-06-26
define('DOKU_VERSION_DETRITUS', 47); // 2015-08-10 (PHP >= 5.3.3)
// Load compatibility Menu classes for pre-Greebo releases
if (DOKU_VERSION > 0 && DOKU_VERSION < DOKU_VERSION_GREEBO) {
define('DOKU_INC_COMPAT', realpath(dirname(__FILE__) . '/../') . '/');
require DOKU_INC_COMPAT . "inc/Menu/MenuInterface.php";
require DOKU_INC_COMPAT . "inc/Menu/AbstractMenu.php";
require DOKU_INC_COMPAT . "inc/Menu/Item/AbstractItem.php";
require DOKU_INC_COMPAT . "inc/Menu/UserMenu.php";
require DOKU_INC_COMPAT . "inc/Menu/MobileMenu.php";
require DOKU_INC_COMPAT . "inc/Menu/PageMenu.php";
require DOKU_INC_COMPAT . "inc/Menu/SiteMenu.php";
require DOKU_INC_COMPAT . "inc/Menu/DetailMenu.php";
require DOKU_INC_COMPAT . "inc/Menu/Item/ImgBackto.php";
require DOKU_INC_COMPAT . "inc/Menu/Item/Top.php";
require DOKU_INC_COMPAT . "inc/Menu/Item/Edit.php";
require DOKU_INC_COMPAT . "inc/Menu/Item/Profile.php";
require DOKU_INC_COMPAT . "inc/Menu/Item/Revisions.php";
require DOKU_INC_COMPAT . "inc/Menu/Item/Backlink.php";
require DOKU_INC_COMPAT . "inc/Menu/Item/Back.php";
require DOKU_INC_COMPAT . "inc/Menu/Item/Login.php";
require DOKU_INC_COMPAT . "inc/Menu/Item/Index.php";
require DOKU_INC_COMPAT . "inc/Menu/Item/Register.php";
require DOKU_INC_COMPAT . "inc/Menu/Item/MediaManager.php";
require DOKU_INC_COMPAT . "inc/Menu/Item/Subscribe.php";
require DOKU_INC_COMPAT . "inc/Menu/Item/Recent.php";
require DOKU_INC_COMPAT . "inc/Menu/Item/Media.php";
require DOKU_INC_COMPAT . "inc/Menu/Item/Resendpwd.php";
require DOKU_INC_COMPAT . "inc/Menu/Item/Admin.php";
require DOKU_INC_COMPAT . "inc/Menu/Item/Revert.php";
}
// Load template class for previous "Frusterick Manners" (2017-02-19) releases
if (DOKU_VERSION < DOKU_VERSION_FRUSTERICK_MANNERS) {
$tpl_incdir = tpl_incdir();
require $tpl_incdir . 'Template.php';
require $tpl_incdir . 'SVG.php';
}
/**
* copied from core (available since Greebo)
*/
if (!function_exists('inlineSVG')) {
function inlineSVG($file, $maxsize = 2048)
{
$file = trim($file);
if ($file === '') {
return false;
}
if (!file_exists($file)) {
return false;
}
if (filesize($file) > $maxsize) {
return false;
}
if (!is_readable($file)) {
return false;
}
$content = file_get_contents($file);
$content = preg_replace('/<!--.*?(-->)/s', '', $content); // comments
$content = preg_replace('/<\?xml .*?\?>/i', '', $content); // xml header
$content = preg_replace('/<!DOCTYPE .*?>/i', '', $content); // doc type
$content = preg_replace('/>\s+</s', '><', $content); // newlines between tags
$content = trim($content);
if (substr($content, 0, 5) !== '<svg ') {
return false;
}
return $content;
}
}
/**
* copied from core (available since Detritus)
*/
if (!function_exists('tpl_toolsevent')) {
function tpl_toolsevent($toolsname, $items, $view = 'main')
{
$data = array(
'view' => $view,
'items' => $items,
);
$hook = 'TEMPLATE_' . strtoupper($toolsname) . '_DISPLAY';
$evt = new Doku_Event($hook, $data);
if ($evt->advise_before()) {
foreach ($evt->data['items'] as $k => $html) {
echo $html;
}
}
$evt->advise_after();
}
}
/**
* copied from core (available since Binky)
*/
if (!function_exists('tpl_classes')) {
function tpl_classes()
{
global $ACT, $conf, $ID, $INFO;
$classes = array(
'dokuwiki',
'mode_' . $ACT,
'tpl_' . $conf['template'],
!empty($_SERVER['REMOTE_USER']) ? 'loggedIn' : '',
$INFO['exists'] ? '' : 'notFound',
($ID == $conf['start']) ? 'home' : '',
);
return join(' ', $classes);
}
}
/**
* copied from core (available since Detritus)
*/
if (!function_exists('plugin_getRequestAdminPlugin')) {
function plugin_getRequestAdminPlugin()
{
static $admin_plugin = false;
global $ACT, $INPUT, $INFO;
if ($admin_plugin === false) {
if (($ACT == 'admin') && ($page = $INPUT->str('page', '', true)) != '') {
$pluginlist = plugin_list('admin');
if (in_array($page, $pluginlist)) {
// attempt to load the plugin
/** @var $admin_plugin DokuWiki_Admin_Plugin */
$admin_plugin = plugin_load('admin', $page);
// verify
if ($admin_plugin && $admin_plugin->forAdminOnly() && !$INFO['isadmin']) {
$admin_plugin = null;
$INPUT->remove('page');
msg('For admins only', -1);
}
}
}
}
return $admin_plugin;
}
}