diff --git a/main/inc/lib/banner.lib.php b/main/inc/lib/banner.lib.php index e19fd5cc5c..c5180da046 100755 --- a/main/inc/lib/banner.lib.php +++ b/main/inc/lib/banner.lib.php @@ -364,6 +364,8 @@ function return_navigation_array() // Custom tabs $customTabs = getCustomTabs(); + + if (!empty($customTabs)) { foreach ($customTabs as $tab) { if (api_get_setting($tab['variable'], $tab['subkey']) == 'true' && @@ -380,7 +382,8 @@ function return_navigation_array() } } } - + + return array( 'menu_navigation' => $menu_navigation, 'navigation' => $navigation, @@ -388,11 +391,158 @@ function return_navigation_array() ); } -function return_menu() +function menuArray() +{ + $mainNavigation = return_navigation_array(); + unset($mainNavigation['navigation']); + unset($mainNavigation['menu_navigation']); + //$navigation = $navigation['navigation']; + // Get active language + $lang = api_get_setting('platformLanguage'); + if (!empty($_SESSION['user_language_choice'])) { + $lang = $_SESSION['user_language_choice']; + } elseif (!empty($_SESSION['_user']['language'])) { + $lang = $_SESSION['_user']['language']; + } + // Preparing home folder for multiple urls + if (api_get_multiple_access_url()) { + $access_url_id = api_get_current_access_url_id(); + if ($access_url_id != -1) { + // If not a dead URL + $urlInfo = api_get_access_url($access_url_id); + $url = api_remove_trailing_slash(preg_replace('/https?:\/\//i', '', $urlInfo['url'])); + $cleanUrl = api_replace_dangerous_char($url); + $cleanUrl = str_replace('/', '-', $cleanUrl); + $cleanUrl .= '/'; + $homepath = api_get_path(SYS_APP_PATH).'home/'.$cleanUrl; //homep for Home Path + //we create the new dir for the new sites + if (!is_dir($homepath)) { + mkdir($homepath, api_get_permissions_for_new_directories()); + } + } + } else { + $homepath = api_get_path(SYS_APP_PATH).'home/'; + } + $ext = '.html'; + $menuTabs = 'home_tabs'; + $menuTabsLoggedIn = 'home_tabs_logged_in'; + $pageContent = ''; + // Get the extra page content, containing the links to add to the tabs + if (is_file($homepath.$menuTabs.'_'.$lang.$ext) && is_readable($homepath.$menuTabs.'_'.$lang.$ext)) { + $pageContent = @(string) file_get_contents($homepath . $menuTabs . '_' . $lang . $ext); + } elseif (is_file($homepath.$menuTabs.$lang.$ext) && is_readable($homepath.$menuTabs.$lang.$ext)) { + $pageContent = @(string) file_get_contents($homepath . $menuTabs . $lang . $ext); + } else { + //$errorMsg = get_lang('HomePageFilesNotReadable'); + } + // Sanitize page content + $pageContent = api_to_system_encoding($pageContent, api_detect_encoding(strip_tags($pageContent))); + $open = str_replace('{rel_path}',api_get_path(REL_PATH), $pageContent); + $open = api_to_system_encoding($open, api_detect_encoding(strip_tags($open))); + // Get the extra page content, containing the links to add to the tabs + // that are only for users already logged in + $openMenuTabsLoggedIn = ''; + if (api_get_user_id() && !api_is_anonymous()) { + if (is_file($homepath . $menuTabsLoggedIn . '_' . $lang . $ext) && is_readable($homepath . $menuTabsLoggedIn . '_' . $lang . $ext)) { + $pageContent = @(string) file_get_contents($homepath . $menuTabsLoggedIn . '_' . $lang . $ext); + $pageContent = str_replace('::private', '', $pageContent); + } elseif (is_file($homepath . $menuTabsLoggedIn . $lang . $ext) && is_readable($homepath . $menuTabsLoggedIn . $lang . $ext)) { + $pageContent = @(string) file_get_contents($homepath . $menuTabsLoggedIn . $lang . $ext); + $pageContent = str_replace('::private', '', $pageContent); + } else { + //$errorMsg = get_lang('HomePageFilesNotReadable'); + } + + $pageContent = api_to_system_encoding($pageContent, api_detect_encoding(strip_tags($pageContent))); + $openMenuTabsLoggedIn = str_replace('{rel_path}',api_get_path(REL_PATH), $pageContent); + $openMenuTabsLoggedIn = api_to_system_encoding($openMenuTabsLoggedIn, api_detect_encoding(strip_tags($openMenuTabsLoggedIn))); + } + if (!empty($open) OR !empty($openMenuTabsLoggedIn)) { + if (strpos($open.$openMenuTabsLoggedIn, 'show_menu') === false) { + if (api_is_anonymous()) { + $mainNavigation['possible_tabs'][SECTION_CAMPUS] = null; + } + } else { + if (api_get_user_id() && !api_is_anonymous()) { + $list = split("\n", $openMenuTabsLoggedIn); + foreach ($list as $link) { + $matches = array(); + $match = preg_match('$href="([^"]*)" target="([^"]*)">([^<]*)$', $link, $matches); + if ($match) { + $mainNavigation['possible_tabs'][$matches[3]] = array( + 'url' => $matches[1], + 'target' => $matches[2], + 'title' => $matches[3], + 'key' => 'page-' . str_replace(' ', '-', strtolower($matches[3])) + ); + } + } + + } else { + + $list = split("\n", $open); + foreach ($list as $link) { + $matches = array(); + $match = preg_match('$href="([^"]*)" target="([^"]*)">([^<]*)$', $link, $matches); + if ($match) { + $mainNavigation['possible_tabs'][$matches[3]] = array( + 'url' => $matches[1], + 'target' => $matches[2], + 'title' => $matches[3], + 'key' => 'page-' . str_replace(' ', '-', strtolower($matches[3])) + ); + } + } + } + } + } + + if (count($mainNavigation['possible_tabs']) > 0) { + //$pre_lis = ''; + $activeSection = ''; + foreach ($mainNavigation['possible_tabs'] as $section => $navigation_info) { + + $key = (!empty($navigation_info['key'])?'tab-'.$navigation_info['key']:''); + + if (isset($GLOBALS['this_section'])) { + $tempSection = $section; + if ($section == 'social') { + $tempSection = 'social-network'; + } + if ($tempSection == $GLOBALS['this_section']) { + $activeSection = $section; + } + // If we're on the index page and a specific extra link has been + // loaded + if ($GLOBALS['this_section'] == SECTION_CAMPUS) { + if (!empty($_GET['include'])) { + $name = str_replace(' ', '-', strtolower($navigation_info['title'])) . '_' . $lang . $ext; + if ($_GET['include'] == $name) { + $activeSection = $section; + } + } + } + } else { + $current = ''; + } + $mainNavigation['possible_tabs'][$section]['current'] = ''; + } + if (!empty($activeSection)) { + $mainNavigation['possible_tabs'][$activeSection]['current'] = 'active'; + } + + } + unset($mainNavigation['possible_tabs']['myprofile']); + + return $mainNavigation['possible_tabs']; +} + + +/* function return_menu() { $navigation = return_navigation_array(); $navigation = $navigation['navigation']; - + // Displaying the tabs $lang = api_get_setting('platformLanguage'); @@ -473,9 +623,11 @@ function return_menu() } } } - + + if (count($navigation) > 0 || !empty($lis)) { $pre_lis = ''; + foreach ($navigation as $section => $navigation_info) { $key = (!empty($navigation_info['key'])?'tab-'.$navigation_info['key']:''); if (isset($GLOBALS['this_section'])) { @@ -487,6 +639,7 @@ function return_menu() $pre_lis .= '