. */ if (! defined('BASEPATH')) exit('No direct script access allowed'); require_once(APPPATH . 'libraries/MenuBuilderLib.php'); require_once(APPPATH . 'traits/menu/StgTrait.php'); require_once(APPPATH . 'traits/menu/InoutTrait.php'); use \ReflectionMethod as ReflectionMethod; /** * StudVw Menu library */ class StvMenuLib extends MenuBuilderLib { use StgTrait, InoutTrait; protected $children = [ 'stg', 'inout' ]; public function build($url_segments = []) { $result = $this->buildSubmenu($url_segments); if ($result === null) show_404(); return $result; } public function buildAll() { return $this->buildMenu(); } protected function getLinkTemplate($path, $vars) { $result = ''; $children = $this->children; while (count($path)) { $segment = array_shift($path); $key = array_search($segment, $children); $config = $this->getNodeConfig($key, $segment); if (isset($config['identifiers'])) { if (is_array($config['identifiers'])) { $count = count($config['identifiers']); } else { $reflection = new ReflectionMethod($this, $config['identifiers']); $count = $reflection->getNumberOfParameters(); } while ($count--) { if (count($path)) $result .= array_shift($path) . '/'; } } else { $result .= $segment . '/'; } if (isset($config['children'])) $children = $config['children']; else return []; } if (!strpos($result, '/prestudent') && !isset($vars['no_sem_reload'])) $result = 'CURRENT_SEMESTER/' . $result; return $result . '%s'; } }