/** * Resolve the EQDKP Page the user is surfing on.. * * @param string $member * @return string */ function resolve_eqdkp_page($strPage) { $matches = explode('&', $strPage); $strPath = $matches[0]; if (strlen($strPath)) { $strQuery = isset($matches[1]) ? $matches[1] : ""; $arrQuery = array(); parse_str($strQuery, $arrQuery); $arrFolder = explode('/', $strPath); $strOut = ""; //Prefixes for Admin, Plugins, Maintenance switch ($arrFolder[0]) { case 'admin': $strPrefix = registry::fetch('user')->lang('menu_admin_panel') . ': '; break; case 'plugins': $strPrefix = registry::fetch('user')->lang('pi_title') . ': '; $strOut = registry::fetch('user')->lang($arrFolder[1]) ? registry::fetch('user')->lang($arrFolder[1]) : ucfirst($arrFolder[1]); break; case 'maintenance': $strPrefix = registry::fetch('user')->lang('maintenance'); $strOut = " "; break; case 'portal': $strPrefix = registry::fetch('user')->lang('portal') . ': '; $strOut = registry::fetch('user')->lang($arrFolder[1]) ? registry::fetch('user')->lang($arrFolder[1]) : ucfirst($arrFolder[1]); break; default: $strPrefix = ''; } //Resolve Admin Pages if ($arrFolder[0] == "admin") { //First, some admin pages without menu entry switch ($strPath) { case 'admin/info_php': $strOut = '<a href="' . $this->root_path . 'admin/info_php.php' . $this->SID . '">PHP-Info</a>'; break; case 'admin/manage_articles': $strOut = '<a href="' . $this->root_path . 'admin/manage_articles.php' . $this->SID . '&' . $strQuery . '">' . $this->user->lang('manage_articles') . '</a>'; break; case 'admin/manage_styles': $strOut = '<a href="' . $this->root_path . 'admin/manage_styles.php' . $this->SID . '&' . $strQuery . '">' . $this->user->lang('styles_title') . '</a>'; break; case 'admin': case 'admin/index': $strOut = registry::fetch('user')->lang('menu_admin_panel'); $strPrefix = ""; break; } //Now check if there is an menu entry if ($strOut == "") { $admin_menu = $this->adminmenu(false); $result = search_in_array($strPath . ".php" . $this->SID, $admin_menu); if ($result) { $arrMenuEntry = arraykey_for_array($result, $admin_menu); if ($arrMenuEntry) { $strOut = '<a href="' . $this->root_path . $arrMenuEntry['link'] . '">' . $arrMenuEntry['text'] . '</a>'; } } } } //Resolve Frontend Page if ($strOut == "" && $strPrefix == "") { $intArticleID = $intCategoryID = 0; $arrPath = array_reverse($arrFolder); //Suche Alias in Artikeln $intArticleID = $this->pdh->get('articles', 'resolve_alias', array(str_replace(".html", "", utf8_strtolower($arrPath[0])))); if (!$intArticleID) { //Suche Alias in Kategorien $intCategoryID = $this->pdh->get('article_categories', 'resolve_alias', array(str_replace(".html", "", utf8_strtolower($arrPath[0])))); //Suche in Artikeln mit nächstem Index, denn könnte ein dynamischer Systemartikel sein if (!$intCategoryID && isset($arrPath[1])) { $intArticleID = $this->pdh->get('articles', 'resolve_alias', array(str_replace(".html", "", utf8_strtolower($arrPath[1])))); } } if ($intArticleID) { $strOut = $this->user->lang('article') . ': <a href="' . $this->controller_path . $this->pdh->get('articles', 'path', array($intArticleID)) . '">' . $this->pdh->get('articles', 'title', array($intArticleID)) . '</a>'; } elseif ($intCategoryID) { $strOut = $this->user->lang('category') . ': <a href="' . $this->server_path . $this->pdh->get('article_categories', 'path', array($intCategoryID)) . '">' . $this->pdh->get('article_categories', 'name', array($intCategoryID)) . '</a>'; } elseif (register('routing')->staticRoute($arrPath[0]) || register('routing')->staticRoute($arrPath[1])) { $strPageObject = register('routing')->staticRoute($arrPath[0]); if (!$strPageObject) { $strPageObject = register('routing')->staticRoute($arrPath[1]); } if ($strPageObject) { $strID = str_replace("-", "", strrchr(str_replace(".html", "", $arrPath[0]), "-")); $arrMatches = array(); $myVar = false; preg_match_all('/[a-z]+|[0-9]+/', $strID, $arrMatches, PREG_PATTERN_ORDER); if (isset($arrMatches[0]) && count($arrMatches[0])) { if (count($arrMatches[0]) == 2) { $myVar = $arrMatches[0][1]; } } if (strlen($strID) && count($arrMatches[0]) != 2) { $myVar = $strID; } switch ($strPageObject) { case 'settings': $strOut = registry::fetch('user')->lang('settings_title'); break; case 'login': $strOut = registry::fetch('user')->lang('login_title'); break; case 'mycharacters': $strOut = registry::fetch('user')->lang('manage_members_titl'); break; case 'search': $strOut = registry::fetch('user')->lang('search'); break; case 'register': $strOut = registry::fetch('user')->lang('register_title'); break; //TODO Add Title //TODO Add Title case 'addcharacter': $strOut = ''; break; case 'editarticle': $strOut = $this->user->lang('manage_articles'); if (isset($arrQuery['aid']) && $arrQuery['aid']) { $strOut .= ': <a href="' . $this->controller_path . $this->pdh->get('articles', 'path', array($arrQuery['aid'])) . '">' . $this->pdh->get('articles', 'title', array($arrQuery['aid'])) . '</a>'; } break; case 'user': $strOut = $this->user->lang('user'); if ($myVar) { $strOut .= ': <a href="' . $this->server_path . sanitize($strPage) . '">' . $this->pdh->get('user', 'name', array($myVar)) . '</a>'; } break; case 'usergroup': $strOut = $this->user->lang('usergroup'); if ($myVar) { $strOut .= ': <a href="' . $this->server_path . sanitize($strPage) . '">' . $this->pdh->get('user_groups', 'name', array((int) $myVar)) . '</a>'; } break; case 'rss': $strOut = "RSS"; break; case 'wrapper': if ($arrFolder[1] == "board" || $arrFolder[1] == "boardregister" || $arrFolder[1] == "lostpassword") { $strOut = '<a href="' . $this->routing->build('External', 'Board') . '">' . $this->user->lang('forum') . '</a>'; } elseif ($myVar) { $strOut = $this->user->lang('viewing_wrapper') . ': <a href="' . $this->routing->build('External', $this->pdh->get('links', 'name', array(intval($myVar))), intval($myVar)) . '">' . $this->pdh->get('links', 'name', array(intval($myVar))) . '</a>'; } else { $strOut = $this->user->lang('viewing_wrapper'); } break; case 'tag': $strOut .= $this->user->lang('tag') . ': <a href="' . $this->routing->build('tag', sanitize($arrFolder[1])) . '">' . sanitize($arrFolder[1]) . '</a>'; break; } } } else { //Some special frontend pages switch ($strPath) { case "api": case "exchange": $strOut = registry::fetch('user')->lang('viewing_exchange'); break; } } } } if ($strOut == '') { $strOut = '<span style="font-style:italic;">' . $this->user->lang('unknown') . '</span>'; } return $strPrefix . $strOut; }
function arraykey_for_array($keyArray, $haystack) { foreach ($keyArray as $k => $v) { $result = $haystack[$k]; if (is_array($v)) { $result = arraykey_for_array($v, $result); return $result; } else { return $haystack; } } return false; }