Esempio n. 1
0
 /**
  * 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 . '&amp;' . $strQuery . '">' . $this->user->lang('manage_articles') . '</a>';
                     break;
                 case 'admin/manage_styles':
                     $strOut = '<a href="' . $this->root_path . 'admin/manage_styles.php' . $this->SID . '&amp;' . $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;
 }
Esempio n. 2
0
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;
}