sMenuFilename = $opt['rootpath'] . 'cache2/menu-' . $opt['template']['locale'] . '.inc.php'; if (!file_exists($this->sMenuFilename)) $this->CreateCacheFile(); require_once($this->sMenuFilename); } function CreateCacheFile() { global $opt, $translate; $f = fopen($this->sMenuFilename, 'w'); fwrite($f, "t($r['title'], '', basename(__FILE__), __LINE__); $aMenu[$r['id']]['menustring'] = $translate->t($r['menustring'], '', basename(__FILE__), __LINE__); $aMenu[$r['id']]['authlevel'] = ($r['access']==0) ? AUTH_LEVEL_ALL : AUTH_LEVEL_ADMIN; if (substr($r['href'],0,1) == '!') { $aMenu[$r['id']]['href'] = substr($r['href'],1); $aMenu[$r['id']]['target'] = 'target="_blank"'; } else { $aMenu[$r['id']]['href'] = $r['href']; $aMenu[$r['id']]['target'] = ''; } $aMenu[$r['id']]['visible'] = ($r['visible'] == 1) ? true : false; $aMenu[$r['id']]['sublevel'] = $this->pGetMenuSublevel($r['id']); if ($r['parentid'] != 0) $aMenu[$r['id']]['parent'] = $r['parentid']; if ($r['color'] != null) $aMenu[$r['id']]['color'] = $r['color']; $nPos = 0; $rsSubmenu = sqlf("SELECT `id` FROM `sys_menu` WHERE `parent`='&1' ORDER BY `parent` ASC, `position` ASC", $r['id']); while ($rSubmenu = sql_fetch_assoc($rsSubmenu)) { $aMenu[$r['id']]['subitems'][$nPos] = $rSubmenu['id']; $nPos++; } sql_free_result($rsSubmenu); } sql_free_result($rs); fwrite($f, '$menuitem = unserialize("' . str_replace('"', '\\"', serialize($aMenu)) . '");' . "\n"); fwrite($f, "?>"); fclose($f); } function clearCache() { global $opt; $dir = $opt['rootpath'] . 'cache/'; if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if (filetype($dir . $file) == 'file') { if (preg_match('/^menu-[a-z]{2,2}.inc.php/', $file)) unlink($dir . $file); } } closedir($dh); } } function pGetMenuSublevel($id) { $parent = sqlf_value("SELECT `parent` FROM `sys_menu` WHERE `id`='&1'", 0, $id); if ($parent != 0) return $this->pGetMenuSublevel($parent) + 1; return 0; } function SetSelectItem($item) { $this->nSelectedItem = $item; } function GetSelectItem($item) { return $this->nSelectedItem; } function GetBreadcrumb() { global $menuitem; $retval = array(); $retval[] = $menuitem[$this->nSelectedItem]; $nCurItem = $this->nSelectedItem; while ($nCurItem != MNU_ROOT) { if (isset($menuitem[$nCurItem]['parent'])) { $nCurItem = $menuitem[$nCurItem]['parent']; $retval[] = $menuitem[$nCurItem]; } else $nCurItem = MNU_ROOT; } return array_reverse($retval); } function GetTopMenu() { global $menuitem, $login; $ids = $this->GetSelectedMenuIds(); $retval = array(); foreach ($menuitem[MNU_ROOT]['subitems'] AS $item) { if (($menuitem[$item]['authlevel'] != AUTH_LEVEL_ADMIN || $login->admin != 0) && $menuitem[$item]['visible'] == true) { $thisitem = $menuitem[$item]; $thisitem['selected'] = isset($ids[$item]); $retval[] = $thisitem; } } return $retval; } function GetSubMenu() { global $menuitem, $login; $ids = $this->GetSelectedMenuIds(); $topmenu = array_pop($ids); if (isset($menuitem[$topmenu]['parent']) && $menuitem[$topmenu]['parent'] != MNU_ROOT) die('internal error Menu::GetSelectedMenuIds'); $ids[$topmenu] = $topmenu; $retval = array(); if ($topmenu != MNU_ROOT) { $this->pAppendSubMenu($topmenu, $ids, $retval); } return $retval; } function pAppendSubMenu($menuid, $ids, &$items) { global $menuitem, $login; if (isset($menuitem[$menuid]['subitems'])) { foreach ($menuitem[$menuid]['subitems'] AS $item) { if (($menuitem[$item]['authlevel'] != AUTH_LEVEL_ADMIN || $login->admin != 0) && $menuitem[$item]['visible'] == true) { $thisitem = $menuitem[$item]; $thisitem['selected'] = isset($ids[$item]); $items[] = $thisitem; $this->pAppendSubMenu($item, $ids, $items); } } } } function GetSelectedMenuIds() { global $menuitem; $retval = array(); $retval[$this->nSelectedItem] = $this->nSelectedItem; $nCurItem = $this->nSelectedItem; while ($nCurItem != MNU_ROOT) { if (isset($menuitem[$nCurItem]['parent'])) { $nCurItem = $menuitem[$nCurItem]['parent']; $retval[$nCurItem] = $nCurItem; } else $nCurItem = MNU_ROOT; } return $retval; } function getMenuColor() { global $menuitem; $nCurItem = $this->nSelectedItem; while (!isset($menuitem[$nCurItem]['color']) && $nCurItem != MNU_ROOT) { if (isset($menuitem[$nCurItem]['parent'])) { $nCurItem = $menuitem[$nCurItem]['parent']; } else $nCurItem = MNU_ROOT; } if (isset($menuitem[$nCurItem]['color'])) return $menuitem[$nCurItem]['color']; else return ''; } function GetMenuTitle() { global $menuitem; if (isset($menuitem[$this->nSelectedItem])) { return isset($menuitem[$this->nSelectedItem]['title']) ? $menuitem[$this->nSelectedItem]['title'] : ''; } else return ''; } } ?>