xref: /plugin/mikioplugin/action.php (revision dc12137154c48b05a6e222f5f4a78597172be58f)
117e6d639SJames Collins<?php
217e6d639SJames Collins/**
317e6d639SJames Collins * Mikio Plugin
417e6d639SJames Collins *
53deaf3a5SJames Collins * @version    1.0
63deaf3a5SJames Collins * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
717e6d639SJames Collins * @author     James Collins <james.collins@outlook.com.au>
817e6d639SJames Collins */
917e6d639SJames Collins
1017e6d639SJames Collinsif(!defined('DOKU_INC')) die();
1117e6d639SJames Collins
127935713eSJames Collinsrequire_once('icons/icons.php');
137935713eSJames Collins
14*dc121371SJames Collinsif(!function_exists('glob_recursive')) {
15*dc121371SJames Collins  function glob_recursive($pattern, $flags = 0) {
16*dc121371SJames Collins    $files = glob($pattern, $flags);
17*dc121371SJames Collins    foreach(glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) {
18*dc121371SJames Collins      $files = array_merge($files, glob_recursive($dir.'/'.basename($pattern), $flags));
19*dc121371SJames Collins    }
20*dc121371SJames Collins    return $files;
21*dc121371SJames Collins  }
22*dc121371SJames Collins}
23*dc121371SJames Collins
2417e6d639SJames Collinsclass action_plugin_mikioplugin extends DokuWiki_Action_Plugin {
2517e6d639SJames Collins
2617e6d639SJames Collins	public function register(Doku_Event_Handler $controller) {
2717e6d639SJames Collins		$controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, '_load');
2817e6d639SJames Collins	}
2917e6d639SJames Collins
3017e6d639SJames Collins	public function _load(Doku_Event $event, $param) {
3117e6d639SJames Collins		global $conf;
327935713eSJames Collins    global $MIKIO_ICONS;
333deaf3a5SJames Collins
343deaf3a5SJames Collins    $baseDir = DOKU_BASE.'lib/plugins' . str_replace(dirname(dirname(__FILE__)), '', dirname(__FILE__)) . '/';
353deaf3a5SJames Collins    $stylesheets = [];
36*dc121371SJames Collins    $less = [];
373deaf3a5SJames Collins    $scripts = [];
383deaf3a5SJames Collins
397935713eSJames Collins    if(is_array($MIKIO_ICONS)) {
407935713eSJames Collins        $icons = Array();
417935713eSJames Collins        foreach($MIKIO_ICONS as $icon) {
427935713eSJames Collins            if(isset($icon['name']) && isset($icon['css']) && isset($icon['insert'])) {
437935713eSJames Collins                $icons[] = $icon;
443deaf3a5SJames Collins
457935713eSJames Collins                if($icon['css'] != '') {
467935713eSJames Collins                    if(strpos($icon['css'], '//') === FALSE) {
477935713eSJames Collins                        $stylesheets[] = $baseDir . 'icons/' . $icon['css'];
487935713eSJames Collins                    } else {
497935713eSJames Collins                        $stylesheets[] = $icon['css'];
5017e6d639SJames Collins                    }
5117e6d639SJames Collins                }
527935713eSJames Collins            }
537935713eSJames Collins        }
547935713eSJames Collins        $MIKIO_ICONS = $icons;
557935713eSJames Collins    } else {
567935713eSJames Collins        $MIKIO_ICONS = [];
577935713eSJames Collins    }
5817e6d639SJames Collins
59*dc121371SJames Collins    $stylesList = glob_recursive('lib/plugins' . str_replace(dirname(dirname(__FILE__)), '', dirname(__FILE__)) . '/styles/*');
60*dc121371SJames Collins    if($stylesList !== FALSE) {
61*dc121371SJames Collins      foreach($stylesList as $value) {
62*dc121371SJames Collins        $filename = strtolower($value);
63*dc121371SJames Collins        if(substr($filename, -5) == '.less' || substr($filename, -5) == '.css') {
64*dc121371SJames Collins          $stylesheets[] = '/' . $filename;
65*dc121371SJames Collins        }
66*dc121371SJames Collins      }
67*dc121371SJames Collins    }
68*dc121371SJames Collins
69*dc121371SJames Collins    $stylesheets = array_unique($stylesheets);
70*dc121371SJames Collins
71*dc121371SJames Collins    // css
723deaf3a5SJames Collins    foreach ($stylesheets as $style) {
73*dc121371SJames Collins      if(strtolower(substr($style, -5)) == '.less') {
74*dc121371SJames Collins        $less[] = $style;
75*dc121371SJames Collins      } else {
763deaf3a5SJames Collins        array_unshift($event->data['link'], array(
773deaf3a5SJames Collins            'type' => 'text/css',
783deaf3a5SJames Collins            'rel'  => 'stylesheet',
793deaf3a5SJames Collins            'href' => $style
803deaf3a5SJames Collins        ));
813deaf3a5SJames Collins      }
82*dc121371SJames Collins    }
8317e6d639SJames Collins
84*dc121371SJames Collins    // less
85*dc121371SJames Collins    array_unshift($less, '/assets/variables.less', '/assets/styles.less');
86*dc121371SJames Collins
87*dc121371SJames Collins    $lessSorted = [];
88*dc121371SJames Collins    foreach($less as $key=>$value) {
89*dc121371SJames Collins      if(substr(strtolower($value), -14) == 'variables.less') {
90*dc121371SJames Collins        $lessSorted[] = $value;
91*dc121371SJames Collins        unset($less[$key]);
92*dc121371SJames Collins      }
93*dc121371SJames Collins    }
94*dc121371SJames Collins
95*dc121371SJames Collins    $lessSorted = array_merge($lessSorted, $less);
96*dc121371SJames Collins    $lessPath = implode(',', $lessSorted);
97*dc121371SJames Collins
98*dc121371SJames Collins    array_unshift($event->data['link'], array(
99*dc121371SJames Collins      'type' => 'text/css',
100*dc121371SJames Collins      'rel'  => 'stylesheet',
101*dc121371SJames Collins      'href' => $baseDir . 'css.php?css=' . str_replace($baseDir, '', $lessPath)
102*dc121371SJames Collins    ));
103*dc121371SJames Collins
104*dc121371SJames Collins    // js
1053deaf3a5SJames Collins    foreach ($scripts as $script) {
1063deaf3a5SJames Collins      $event->data['script'][] = array(
1073deaf3a5SJames Collins        'type'  => 'text/javascript',
1083deaf3a5SJames Collins        '_data' => '',
1093deaf3a5SJames Collins        'src'   => $script
1103deaf3a5SJames Collins      );
1113deaf3a5SJames Collins    }
1123deaf3a5SJames Collins  }
1133deaf3a5SJames Collins}