/** * Called before any other action method in this class. * * - If coming from the quick reply allows to route to the proper action * - if needed (for example external search engine or members search */ public function pre_dispatch() { global $modSettings, $scripturl; // Coming from quick search box and going to some custome place? if (isset($_REQUEST['search_selection']) && !empty($modSettings['additional_search_engines'])) { $engines = prepareSearchEngines(); if (isset($engines[$_REQUEST['search_selection']])) { $engine = $engines[$_REQUEST['search_selection']]; redirectexit($engine['url'] . urlencode(implode($engine['separator'], explode(' ', $_REQUEST['search'])))); } } // if comming from the quick search box, and we want to search on members, well we need to do that ;) if (isset($_REQUEST['search_selection']) && $_REQUEST['search_selection'] === 'members') { redirectexit($scripturl . '?action=memberlist;sa=search;fields=name,email;search=' . urlencode($_REQUEST['search'])); } // If load balancing is on and the load is high, no need to even show the form. if (!empty($modSettings['loadavg_search']) && $modSettings['current_load'] >= $modSettings['loadavg_search']) { fatal_lang_error('loadavg_search_disabled', false); } }
/** * Sets up the basic theme context stuff. * * @param bool $forceload = false */ function setupThemeContext($forceload = false) { global $modSettings, $user_info, $scripturl, $context, $settings, $options, $txt; global $user_settings; static $loaded = false; // Under SSI this function can be called more then once. That can cause some problems. // So only run the function once unless we are forced to run it again. if ($loaded && !$forceload) { return; } $loaded = true; $context['current_time'] = standardTime(time(), false); $context['current_action'] = isset($_GET['action']) ? $_GET['action'] : ''; $context['show_quick_login'] = !empty($modSettings['enableVBStyleLogin']) && $user_info['is_guest']; // Get some news... $context['news_lines'] = array_filter(explode("\n", str_replace("\r", '', trim(addslashes($modSettings['news']))))); for ($i = 0, $n = count($context['news_lines']); $i < $n; $i++) { if (trim($context['news_lines'][$i]) == '') { continue; } // Clean it up for presentation ;). $context['news_lines'][$i] = parse_bbc(stripslashes(trim($context['news_lines'][$i])), true, 'news' . $i); } if (!empty($context['news_lines'])) { $context['random_news_line'] = $context['news_lines'][mt_rand(0, count($context['news_lines']) - 1)]; $context['upper_content_callbacks'][] = 'news_fader'; } if (!$user_info['is_guest']) { $context['user']['messages'] =& $user_info['messages']; $context['user']['unread_messages'] =& $user_info['unread_messages']; $context['user']['mentions'] =& $user_info['mentions']; // Personal message popup... if ($user_info['unread_messages'] > (isset($_SESSION['unread_messages']) ? $_SESSION['unread_messages'] : 0)) { $context['user']['popup_messages'] = true; } else { $context['user']['popup_messages'] = false; } $_SESSION['unread_messages'] = $user_info['unread_messages']; $context['user']['avatar'] = array('href' => !empty($user_info['avatar']['href']) ? $user_info['avatar']['href'] : '', 'image' => !empty($user_info['avatar']['image']) ? $user_info['avatar']['image'] : ''); // @deprecated since 1.0.2 if (!empty($modSettings['avatar_max_width'])) { $context['user']['avatar']['width'] = $modSettings['avatar_max_width']; } // @deprecated since 1.0.2 if (!empty($modSettings['avatar_max_height'])) { $context['user']['avatar']['height'] = $modSettings['avatar_max_height']; } // Figure out how long they've been logged in. $context['user']['total_time_logged_in'] = array('days' => floor($user_info['total_time_logged_in'] / 86400), 'hours' => floor($user_info['total_time_logged_in'] % 86400 / 3600), 'minutes' => floor($user_info['total_time_logged_in'] % 3600 / 60)); } else { $context['user']['messages'] = 0; $context['user']['unread_messages'] = 0; $context['user']['mentions'] = 0; $context['user']['avatar'] = array(); $context['user']['total_time_logged_in'] = array('days' => 0, 'hours' => 0, 'minutes' => 0); $context['user']['popup_messages'] = false; if (!empty($modSettings['registration_method']) && $modSettings['registration_method'] == 1) { $txt['welcome_guest'] .= $txt['welcome_guest_activate']; } $txt['welcome_guest'] = replaceBasicActionUrl($txt['welcome_guest']); // If we've upgraded recently, go easy on the passwords. if (!empty($modSettings['enable_password_conversion'])) { $context['disable_login_hashing'] = true; } } // Setup the main menu items. setupMenuContext(); if (empty($settings['theme_version'])) { $context['show_vBlogin'] = $context['show_quick_login']; } // This is here because old index templates might still use it. $context['show_news'] = !empty($settings['enable_news']); $context['additional_dropdown_search'] = prepareSearchEngines(); // This is done to allow theme authors to customize it as they want. $context['show_pm_popup'] = $context['user']['popup_messages'] && !empty($options['popup_messages']) && (!isset($_REQUEST['action']) || $_REQUEST['action'] != 'pm'); // Add the PM popup here instead. Theme authors can still override it simply by editing/removing the 'fPmPopup' in the array. if ($context['show_pm_popup']) { addInlineJavascript(' $(document).ready(function(){ new smc_Popup({ heading: ' . JavaScriptEscape($txt['show_personal_messages_heading']) . ', content: ' . JavaScriptEscape(sprintf($txt['show_personal_messages'], $context['user']['unread_messages'], $scripturl . '?action=pm')) . ', icon: elk_images_url + \'/im_sm_newmsg.png\' }); });', true); } // This looks weird, but it's because BoardIndex.controller.php references the variable. $context['common_stats']['latest_member'] = array('id' => $modSettings['latestMember'], 'name' => $modSettings['latestRealName'], 'href' => $scripturl . '?action=profile;u=' . $modSettings['latestMember'], 'link' => '<a href="' . $scripturl . '?action=profile;u=' . $modSettings['latestMember'] . '">' . $modSettings['latestRealName'] . '</a>'); $context['common_stats'] = array('total_posts' => comma_format($modSettings['totalMessages']), 'total_topics' => comma_format($modSettings['totalTopics']), 'total_members' => comma_format($modSettings['totalMembers']), 'latest_member' => $context['common_stats']['latest_member']); $context['common_stats']['boardindex_total_posts'] = sprintf($txt['boardindex_total_posts'], $context['common_stats']['total_posts'], $context['common_stats']['total_topics'], $context['common_stats']['total_members']); if (empty($settings['theme_version'])) { addJavascriptVar(array('elk_scripturl' => '\'' . $scripturl . '\'')); } if (!isset($context['page_title'])) { $context['page_title'] = ''; } // Set some specific vars. $context['page_title_html_safe'] = Util::htmlspecialchars(un_htmlspecialchars($context['page_title'])) . (!empty($context['current_page']) ? ' - ' . $txt['page'] . ' ' . ($context['current_page'] + 1) : ''); $context['meta_keywords'] = !empty($modSettings['meta_keywords']) ? Util::htmlspecialchars($modSettings['meta_keywords']) : ''; // Load a custom CSS file? if (file_exists($settings['theme_dir'] . '/css/custom.css')) { loadCSSFile('custom.css'); } if (!empty($context['theme_variant']) && file_exists($settings['theme_dir'] . '/css/' . $context['theme_variant'] . '/custom' . $context['theme_variant'] . '.css')) { loadCSSFile($context['theme_variant'] . '/custom' . $context['theme_variant'] . '.css'); } }