117e6d639SJames Collins<?php 200ce90d5SJames Collins 317e6d639SJames Collins/** 417e6d639SJames Collins * Mikio Plugin 517e6d639SJames Collins * 63deaf3a5SJames Collins * @version 1.0 73deaf3a5SJames Collins * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 817e6d639SJames Collins * @author James Collins <james.collins@outlook.com.au> 917e6d639SJames Collins */ 1017e6d639SJames Collins 11b007ca42SJames Collinsif (!defined('DOKU_INC')) { die(); 12b007ca42SJames Collins} 1317e6d639SJames Collins 14b007ca42SJames Collinsrequire_once 'icons/icons.php'; 15b007ca42SJames Collinsrequire_once dirname(__FILE__) . '/inc/polyfill-array-key-first.php'; 167935713eSJames Collins 17dc121371SJames Collinsif (!function_exists('glob_recursive')) { 1800ce90d5SJames Collins function glob_recursive($pattern, $flags = 0) 1900ce90d5SJames Collins { 20dc121371SJames Collins $files = glob($pattern, $flags); 21dc121371SJames Collins foreach (glob(dirname($pattern) . '/*', GLOB_ONLYDIR | GLOB_NOSORT) as $dir) { 22*f51f4f12SJames Collins $subFiles = glob_recursive($dir . '/' . basename($pattern), $flags); 23*f51f4f12SJames Collins foreach ($subFiles as $file) { 24*f51f4f12SJames Collins $files[] = $file; 25*f51f4f12SJames Collins } 26dc121371SJames Collins } 27dc121371SJames Collins return $files; 28dc121371SJames Collins } 29dc121371SJames Collins} 30dc121371SJames Collins 3100ce90d5SJames Collinsclass action_plugin_mikioplugin extends DokuWiki_Action_Plugin 3200ce90d5SJames Collins{ 3300ce90d5SJames Collins public function register(Doku_Event_Handler $controller) 3400ce90d5SJames Collins { 3517e6d639SJames Collins $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, '_load'); 3617e6d639SJames Collins } 3717e6d639SJames Collins 3800ce90d5SJames Collins public function _load(Doku_Event $event, $param) 3900ce90d5SJames Collins { 4017e6d639SJames Collins global $conf; 417935713eSJames Collins global $MIKIO_ICONS; 423deaf3a5SJames Collins 4391d1557bSJames Collins $baseDir = str_replace('\\', '/', DOKU_BASE . 'lib/plugins' . str_replace(dirname(dirname(__FILE__)), '', dirname(__FILE__)) . '/'); 443deaf3a5SJames Collins $stylesheets = []; 45dc121371SJames Collins $less = []; 463deaf3a5SJames Collins $scripts = []; 473deaf3a5SJames Collins 487935713eSJames Collins if (is_array($MIKIO_ICONS)) { 4900ce90d5SJames Collins $icons = array(); 507935713eSJames Collins foreach ($MIKIO_ICONS as $icon) { 517935713eSJames Collins if (isset($icon['name']) && isset($icon['css']) && isset($icon['insert'])) { 527935713eSJames Collins $icons[] = $icon; 533deaf3a5SJames Collins 547935713eSJames Collins if ($icon['css'] != '') { 55b007ca42SJames Collins if (strpos($icon['css'], '//') === false) { 567935713eSJames Collins $stylesheets[] = $baseDir . 'icons/' . $icon['css']; 577935713eSJames Collins } else { 587935713eSJames Collins $stylesheets[] = $icon['css']; 5917e6d639SJames Collins } 6017e6d639SJames Collins } 617935713eSJames Collins } 627935713eSJames Collins } 637935713eSJames Collins $MIKIO_ICONS = $icons; 647935713eSJames Collins } else { 657935713eSJames Collins $MIKIO_ICONS = []; 667935713eSJames Collins } 6717e6d639SJames Collins 6891d1557bSJames Collins $stylesList = glob_recursive(str_replace('\\', '/', 'lib/plugins' . str_replace(dirname(dirname(__FILE__)), '', dirname(__FILE__)) . '/styles/*')); 69b007ca42SJames Collins if ($stylesList !== false) { 70dc121371SJames Collins foreach ($stylesList as $value) { 71dc121371SJames Collins $filename = strtolower($value); 7251890c1cSnomadjimbob if (substr($filename, -5) == '.less' || substr($filename, -4) == '.css') { 736c6465b5Snomadjimbob $stylesheets[] = DOKU_BASE . $filename; 74dc121371SJames Collins } 75dc121371SJames Collins } 76dc121371SJames Collins } 77dc121371SJames Collins 786a8ce132SJames Collins $stylesheets[] = $baseDir . 'assets/variables.css'; 796a8ce132SJames Collins 80dc121371SJames Collins $stylesheets = array_unique($stylesheets); 81dc121371SJames Collins 82d273c192Snomadjimbob $tpl_supported = false; 833a3eed7cSnomadjimbob if($conf['template'] === 'mikio' && file_exists(tpl_incdir() . 'template.info.txt')) { 84d273c192Snomadjimbob $tpl_info = []; 85d273c192Snomadjimbob $tpl_data = file_get_contents(tpl_incdir() . 'template.info.txt'); 86d273c192Snomadjimbob foreach(preg_split("/(\r\n|\n|\r)/", $tpl_data) as $line){ 87d273c192Snomadjimbob if(preg_match("/([a-z]*)\s+(.*)/", $line, $matches)) { 88d273c192Snomadjimbob $tpl_info[$matches[1]] = $matches[2]; 89d273c192Snomadjimbob } 90d273c192Snomadjimbob } 91d273c192Snomadjimbob 92d273c192Snomadjimbob if(array_key_exists('date', $tpl_info)) { 93d273c192Snomadjimbob $date = array_map('intval', explode('-', $tpl_info['date'])); 94d273c192Snomadjimbob if(count($date) === 3) { 95d273c192Snomadjimbob // Date of mikio template is > 2022-10-12 96d273c192Snomadjimbob if($date[0] > 2022 || ($date[0] == 2022 && ($date[1] > 10 || ($date[1] == 10 && $date[2] > 12)))) { 97d273c192Snomadjimbob $tpl_supported = true; 98d273c192Snomadjimbob } 99d273c192Snomadjimbob } 100d273c192Snomadjimbob } 101d273c192Snomadjimbob } 102d273c192Snomadjimbob 103f187f861Snomadjimbob if($tpl_supported == false) { 1046c6465b5Snomadjimbob array_unshift($stylesheets, $baseDir . 'assets/variables.css'); 1053a3eed7cSnomadjimbob } 1063a3eed7cSnomadjimbob 1079601f5f4Snomadjimbob array_unshift($stylesheets, $baseDir . 'assets/styles.less'); 108d273c192Snomadjimbob 109dc121371SJames Collins // css 1103deaf3a5SJames Collins foreach ($stylesheets as $style) { 111dc121371SJames Collins if (strtolower(substr($style, -5)) == '.less') { 112dc121371SJames Collins $less[] = $style; 113dc121371SJames Collins } else { 114b007ca42SJames Collins array_unshift( 115b007ca42SJames Collins $event->data['link'], array( 1163deaf3a5SJames Collins 'type' => 'text/css', 1173deaf3a5SJames Collins 'rel' => 'stylesheet', 1186c6465b5Snomadjimbob 'href' => $style 119b007ca42SJames Collins ) 120b007ca42SJames Collins ); 1213deaf3a5SJames Collins } 122dc121371SJames Collins } 12317e6d639SJames Collins 1249601f5f4Snomadjimbob $lessPath = implode(',', $less); 125dc121371SJames Collins 126fd0b763cSnomadjimbob if(strlen($lessPath) > 0) { 127b007ca42SJames Collins array_unshift( 128b007ca42SJames Collins $event->data['link'], array( 129dc121371SJames Collins 'type' => 'text/css', 130dc121371SJames Collins 'rel' => 'stylesheet', 131dc121371SJames Collins 'href' => $baseDir . 'css.php?css=' . str_replace($baseDir, '', $lessPath) 132b007ca42SJames Collins ) 133b007ca42SJames Collins ); 134fd0b763cSnomadjimbob } 135dc121371SJames Collins 136dc121371SJames Collins // js 1373deaf3a5SJames Collins foreach ($scripts as $script) { 1383deaf3a5SJames Collins $event->data['script'][] = array( 1393deaf3a5SJames Collins 'type' => 'text/javascript', 1403deaf3a5SJames Collins '_data' => '', 1413deaf3a5SJames Collins 'src' => $script 1423deaf3a5SJames Collins ); 1433deaf3a5SJames Collins } 1443deaf3a5SJames Collins } 1453deaf3a5SJames Collins} 146