function globalTemplate($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items = array(), $items = array(), $footer_items = array(), $stats = array())
 {
     $IPBHTML = "";
     $this->templateVars['forumActive'] = "";
     $this->__default__templateVars['forumActive'] = "";
     if (IPS_APP_COMPONENT == 'forums') {
         $this->templateVars['forumActive'] = "active";
     } else {
         $this->templateVars['forumActive'] = $this->__default__templateVars['forumActive'];
     }
     $this->templateVars['membersActive'] = "";
     $this->__default__templateVars['membersActive'] = "";
     if (IPS_APP_COMPONENT == 'members') {
         $this->templateVars['membersActive'] = "active";
     } else {
         $this->templateVars['membersActive'] = $this->__default__templateVars['membersActive'];
     }
     $this->templateVars['helpActive'] = "";
     $this->__default__templateVars['helpActive'] = "";
     if (IPS_APP_COMPONENT == 'core' and $this->request['module'] == 'help') {
         $this->templateVars['helpActive'] = "active";
     } else {
         $this->templateVars['helpActive'] = $this->__default__templateVars['helpActive'];
     }
     $this->did_first = 0;
     $IPBHTML .= "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\t<html xml:lang=\"en\" lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\"" . (IPSLib::fbc_enabled() === TRUE ? " xmlns:fb=\"http://www.facebook.com/2008/fbml\"" : "") . ">\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset={$this->settings['gb_char_set']}\" />\n\t\t<title>{$header_items['title']}" . ($header_items['page'] ? " {$this->lang->words['page_title_page']} {$header_items['page']}" : "") . "</title>\n\t\t<link rel=\"shortcut icon\" href='" . ($this->registry->output->isHTTPS ? "{$this->settings['board_url_https']}" : "{$this->settings['board_url']}") . "/favicon.ico' />\n\t\t<script type='text/javascript'>\n\t\t\tjsDebug = " . intval($this->settings['_jsDebug']) . "; /* Must come before JS includes */\n\t\t\tUSE_RTE = " . ($this->memberData['members_editor_choice'] == 'rte' && $this->memberData['_canUseRTE'] === TRUE ? "1" : "0") . ";\n\t\t\tinACP   = false;\n\t\t</script>\n\t\t" . $this->registry->getClass('output')->getTemplate('global')->includeCSS($css) . "\n\t\t<!--<meta http-equiv=\"X-UA-Compatible\" content=\"IE=7\" />-->\n\t\t" . $this->registry->getClass('output')->getTemplate('global')->includeMeta($metaTags) . "" . $this->registry->getClass('output')->getTemplate('global')->includeJS($jsModules) . "" . $this->registry->getClass('output')->getTemplate('global')->includeFeeds($documentHeadItems) . "" . $this->registry->getClass('output')->getTemplate('global')->includeRTL() . "\t\t\n\t\t" . $this->registry->getClass('output')->getTemplate('global')->includeVars() . "\n\t\t<script type='text/javascript'>\n\t\t\tLoader.boot();\n\t\t</script>\n\t</head>\n\t<body id='ipboard_body'>\n\t\t<div id='ipbwrapper'>\n\t\t\t<h1>{$this->settings['board_name']}: {$header_items['title']}</h1>\n\t\t\t<p id='content_jump'><a id='top'></a><a href='#j_content' title='{$this->lang->words['jump_to_content']}' accesskey='m'>{$this->lang->words['jump_to_content']}</a></p>\n\t\t\n\t\t\t" . (($this->memberData['g_is_supmod'] == 1 or isset($this->memberData['access_report_center']) and $this->memberData['access_report_center']) ? "<div id='admin_bar'>\n\t\t\t\t\t" . (($this->memberData['g_access_cp'] == 1 and $this->settings['security_remove_acp_link'] == 0) ? "\n\t\t\t\t\t<p class='right'>\n\t\t\t\t\t\t<a href=\"{$this->settings['_admin_link']}\" title='{$this->lang->words['admin_cp']}'>{$this->lang->words['login_to_acp']} &gt;</a>\n\t\t\t\t\t</p>\n\t\t\t\t\t" : "") . "\n\t\t\t\t\t<strong>{$this->lang->words['mod_tools']}</strong> \n\t\t\t\t\t<ul id='mod_tools'>\n\t\t\t\t\t\t" . ($this->memberData['g_is_supmod'] == 1 ? "\n\t\t\t\t\t\t\t<li><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&amp;module=usercp&amp;tab=members&amp;area=mod_ipaddress", 'public', ''), "", "") . "' title='{$this->lang->words['ip_lookup']}'>{$this->lang->words['ip_lookup']}</a></li>\n\t\t\t\t\t\t\t<li><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&amp;module=usercp&amp;tab=forums&amp;area=modAddAnnouncement&amp;do=add", 'public', ''), "", "") . "' title='{$this->lang->words['post_announcement']}'>{$this->lang->words['post_announcement']}</a></li>\n\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t" . ($this->memberData['access_report_center'] ? "<li " . ($this->memberData['_cache']['report_num'] > 0 ? "class='active'" : "") . "><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&amp;module=reports&amp;do=index", 'public', ''), "", "") . "\" title='{$this->lang->words['view_reports']}'>{$this->memberData['_cache']['report_num']} {$this->lang->words['report_member_bar']}</a></li>" : "") . "\n\t\t\t\t\t</ul>\n\t\t\t\t</div>" : "") . "\n\t\t\t<div id='header'>\n\t\t\t\t<div id='branding'>\n\t\t\t\t\t" . (method_exists($this->registry->output->getTemplate($this->registry->getCurrentApplication() . '_global'), 'overwriteHeader') ? "\n\t\t\t\t\t\t" . $this->registry->getClass('output')->getTemplate('' . $this->registry->getCurrentApplication() . '_global')->overwriteHeader() . "\n\t\t\t\t\t" : "\n\t\t\t\t\t\t" . $this->registry->getClass('output')->getTemplate('global')->defaultHeader() . "\n\t\t\t\t\t") . "\n\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t" . ($this->memberData['member_id'] ? "<div id='user_navigation' class='logged_in'>\n\t\t\t\t\t\t<img src='{$this->memberData['pp_thumb_photo']}' alt=\"{$this->memberData['members_display_name']}{$this->lang->words['users_photo']}\" width='{$this->memberData['pp_thumb_width']}' height='{$this->memberData['pp_thumb_height']}' class='photo' />\n\t\t\t\t\t\t<div id='user_info'>\n\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t<span class='hide'>{$this->lang->words['logged_in_as']} </span>\nLogged in as\n\t\t\t\t\t\t\t\t<a id='user_link' class='ipbmenu' href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("showuser={$this->memberData['member_id']}", 'public', ''), "{$this->memberData['members_seo_name']}", "showuser") . "\"  title='{$this->lang->words['your_profile']}'>{$this->memberData['members_display_name']} <img src='{$this->settings['img_url']}/opts_arrow.png' alt='&gt;' /></a>" . ($this->memberData['msg_count_new'] != 0 ? "<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=members&amp;module=messaging", 'public', ''), "", "") . "' id='new_msg_count' title='{$this->memberData['msg_count_new']} {$this->lang->words['msg_new']}'>{$this->memberData['msg_count_new']}<span class='hide'> {$this->lang->words['msg_new']}</span></a>" : "") . "\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<ul id='user_link_menucontent'>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<ul id='user_other'>\n\t\t\t\t\t\t\t\t<li><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&amp;module=global&amp;section=login&amp;do=logout&amp;k={$this->member->form_hash}", 'public', ''), "", "") . "\">{$this->lang->words['log_out']}</a></li>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t" . ($this->memberData['member_group_id'] == $this->settings['auth_group'] ? "\n\t\t\t\t\t\t\t\t\t<li><strong><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&amp;module=global&amp;section=register&amp;do=reval", 'public', ''), "", "") . "\" title='{$this->lang->words['resend_val']}'>{$this->lang->words['resend_val']}</a></strong></li>\n\t\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t<script type='text/javascript'>\n\t\t\t\t\t\t\t\tif( \$('user_link_menucontent') ){\n\t\t\t\t\t\t\t\t\t\$('user_link_menucontent').hide();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</script>\n\t\t\t\t\t\t\t" . $this->registry->getClass('output')->addJSModule("friends", "0") . "\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>" : "\n\t\t\t\t\t<div id='user_navigation' class='not_logged_in'>\n\t\t\t\t\t\t<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&amp;module=global&amp;section=login", 'public', ''), "", "") . "' title='{$this->lang->words['sign_in']}'>" . $this->registry->getClass('output')->getReplacement("signin_icon") . " {$this->lang->words['sign_in']}</a>\n\t\t\t\t\t\t<a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&amp;module=global&amp;section=register", 'public', ''), "", "") . "\" title='{$this->lang->words['register']}'>" . $this->registry->getClass('output')->getReplacement("register_icon") . " {$this->lang->words['register']}</a>\n\t\t\t\t\t\t<a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&amp;module=help", 'public', ''), "", "") . "\" title='{$this->lang->words['view_help']}' rel=\"help\" accesskey='6'>" . $this->registry->getClass('output')->getReplacement("help_icon") . " {$this->lang->words['sj_help']}</a>\n\t\t\t\t\t</div>\n\t\t\t\t\n\t\t\t\t") . "\n\t\t\t\n\t\t\t\t<div id='primary_nav'>\n\t\t\t\t\t<div id='search'>\n\t\t\t\t\t\t" . (!in_array($this->settings['search_method'], array('traditional', 'sphinx')) ? "\n\t\t\t\t\t\t<form action=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&amp;module=search&amp;do=quick_search&amp;search_filter_app[all]=1", 'public', ''), "", "") . "\" method=\"post\" id='search-box' >\n\t\t\t\t\t\t" : "<form action=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&amp;module=search&amp;do=quick_search&amp;search_filter_app[" . (!empty($this->request['search_app']) ? "{$this->request['search_app']}" : "" . (IPSSearchIndex::appIsSearchable($this->registry->getCurrentApplication()) ? "{$this->registry->getCurrentApplication()}" : "forums") . "") . "]=1", 'public', ''), "", "") . "\" method=\"post\" id='search-box' >") . "\n\t\t\t\t\t\t\t<fieldset>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t<label for='main_search' class='hide'>{$this->lang->words['sj_search']}</label>\n\t\t\t\t\t\t\t\t<input type='text' id='main_search' name='search_term' class='text_input' size='17' tabindex='6' />\n\t\t\t\t\t\t\t\t<input type='submit' class='submit_input' value='{$this->lang->words['sj_search']}' />\n\t\t\t\t\t\t\t\t<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&amp;module=search", 'public', ''), "", "") . "' title='{$this->lang->words['advanced_search']}' accesskey='4' rel=\"search\" id='adv_search'>{$this->lang->words['advanced']}</a>\n\t\t\t\t\t\t\t</fieldset>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</div>\n\t\t\t\t\t<ul>\n\t\t\t\t\t" . ($this->settings['home_url'] ? "\n\t\t\t\t\t\t\t<li id='nav_home' class='left'><a href='{$this->settings['home_url']}' title='{$this->lang->words['homepage_title']}' rel=\"home\">{$this->settings['home_name']}</a></li>\n\t\t\t\t\t\t" : "") . " \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t" . ((is_array($header_items['applications']) and count($header_items['applications'])) ? "\n\t\t\t\t\t\t\t" . $this->__f__f3ef81aefc61e1ddbb3a00ce02d56217($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . "\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t" . (is_array($items['pmData']) ? "<div id='pm_notification'>\n\t\t\t\t\t\t<div id='pm_wrap'>\n\t\t\t\t\t\t\t<img src='{$items['pmData']['authorData']['pp_thumb_photo']}' alt=\"{$items['pmData']['authorData']['members_display_name']}{$this->lang->words['users_photo']}\" width='{$items['pmData']['authorData']['pp_thumb_width']}' height='{$items['pmData']['authorData']['pp_thumb_height']}' class='photo' />\n\t\t\t\t\t\t\t<h2>{$items['pmData']['authorData']['members_display_name']} " . ($items['pmData']['_type'] == 'new' ? "{$this->lang->words['sent_new_convo']}" : "{$this->lang->words['replied_convo']}") . "</h2>\n\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t<strong>{$this->lang->words['pc_subject']}</strong> {$items['pmData']['mt_title']}<br />\n\t\t\t\t\t\t\t\t<strong>{$this->lang->words['pc_replies']}</strong> " . intval($items['pmData']['mt_replies']) . "<br />\n\t\t\t\t\t\t\t\t<strong>{$this->lang->words['pc_sent']}</strong> " . $this->registry->getClass('class_localization')->getDate($items['pmData']['msg_date'], "short", 0) . "\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<p class='excerpt'>\n\t\t\t\t\t\t\t\t" . IPSText::truncate($items['pmData']['msg_post'], 500) . "\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t<ul class='topic_buttons ok_thanks'>\n\t\t\t\t\t\t\t\t<li><a href='#j_content' id='close_pm_notification'><img src='{$this->settings['img_url']}/cross.png' alt='{$this->lang->words['icon']}' /> {$this->lang->words['ignore_conversation']}</a></li>\n\t\t\t\t\t\t\t\t<li><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=members&amp;module=messaging&amp;section=view&amp;do=findMessage&amp;topicID={$items['pmData']['mt_id']}&amp;msgID=__firstUnread__", 'public', ''), "", "") . "'><img src='{$this->settings['img_url']}/email.png' alt='{$this->lang->words['icon']}' /> {$this->lang->words['global_pm_read']}</a></li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<script type='text/javascript'>\n\t\t\t\t\t\t\$('pm_notification').hide();\n\t\t\t\t\t</script>" : "") . "\n\t\t\t\n\t\t\t<!-- NAVIGATION TOP LEFT\t<div id='secondary_nav'>\n\t\t\t\t\t<ul id='breadcrumb' class='left'>\n\t\t\t\t\t\t\t\t\t\t\t\t" . ((!$this->settings['remove_forums_nav'] or ipsRegistry::$current_application == 'forums') ? "<li class='first'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("act=idx", 'public', ''), "false", "") . "'>{$this->settings['board_name']}</a></li>\n\t\t\t\t\t\t\t" . (($this->did_first = 1) ? "" : "") . "" : "") . " \n\t\t\t\t\t\t" . $this->__f__ce9338f8ac36f63d75adce3df1cb47a3($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . "\t\t\t\t\t</ul>\n\t\t\t\t\t<ul id='section_links' class='right'>\n\t\t\t\t\t\t" . (($this->settings['gl_show'] and $this->settings['gl_title']) ? "<li><a href='" . ($this->settings['gl_link'] ? "{$this->settings['gl_link']}" : "" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=forums&amp;module=extras&amp;section=boardrules", 'public', ''), "", "") . "") . "'>" . ($this->settings['gl_title'] ? "{$this->settings['gl_title']}" : "{$this->lang->words['board_rules']}") . "</a></li>" : "") . "\n\t\t\t\t\t\t<li><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&amp;module=search&amp;do=new_posts&amp;search_filter_app[" . (($this->registry->getCurrentApplication() != 'core' and IPSSearchIndex::appIsSearchable($this->registry->getCurrentApplication())) ? "{$this->registry->getCurrentApplication()}" : "forums") . "]=1", 'public', ''), "", "") . "' accesskey='2'>{$this->lang->words['view_new_posts']}</a></li>\n\t\t\t\t\t\t<li><img src='{$this->settings['img_url']}/feed.png' alt='{$this->lang->words['rss_feed']}' id='rss_feed' class='clickable' /></li> \n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>  -->\n\t\t\t<div id='content' class='clear'>\n\t\t\t\t<a id='j_content'></a>\n\t\t\t\t" . ($html ? "{$html}" : "") . "\n\t\t\t\t<br class='clear' />\n\t\t\t</div>\n\t\t\t<div id='footer_utilities' class='clearfix clear rounded'>\n\t\t\t\t<h2 class='hide'>{$this->lang->words['skin_and_lang']}</h2>\n\t\t\t\t" . (($this->settings['allow_skins'] and $footer_items['skin_chooser']) ? "" . (($this->memberData['userAgentLocked'] and !$this->memberData['userAgentBypass']) ? "\n\t\t\t\t\t\t<p id='useragent_msg'>\n\t\t\t\t\t\t\t{$this->lang->words['skin_browser_set']} <a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("{$this->settings['query_string_formatted']}&amp;unlockUserAgent=1", 'public', ''), "", "") . "'>{$this->lang->words['override_browser_theme']}</a>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t" : "\n\t\t\t\t\t\t<form action=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("{$this->settings['query_string_formatted']}", 'public', ''), "", "") . "\" method=\"post\" class='left'>\n\t\t\t\t\t\t\t<fieldset>\n\t\t\t\t\t\t\t\t<input type='hidden' name='k' value='{$this->member->form_hash}' />\n\t\t\t\t\t\t\t\t<label for='newSkin' class='hide'>{$this->lang->words['theme_prefix']}</label>\n\t\t\t\t\t\t\t\t<select name=\"settingNewSkin\" id='newSkin'>\n\t\t\t\t\t\t\t\t\t{$footer_items['skin_chooser']}\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t\t<input type='submit' value='{$this->lang->words['jmp_go']}' class='input_submit alt' id='newSkinSubmit' />\n\t\t\t\t\t\t\t</fieldset>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t") . "" : "") . "\n\t\t\t\t<form action=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("{$this->settings['query_string_formatted']}", 'public', ''), "", "") . "\" method=\"post\" class='left'>\n\t\t\t\t\t<fieldset>\n\t\t\t\t\t\t<input type='hidden' name='k' value='{$this->member->form_hash}' />\n\t\t\t\t\t\t<input type='hidden' name='setlanguage' value='1' />\n\t\t\t\t\t\t<input type=\"hidden\" name=\"langurlbits\" value=\"{$this->settings['query_string_safe']}&amp;cal_id={$this->request['cal_id']}\" />\n\t\t\t\t\t\t<label for='newLang' class='hide'>{$this->lang->words['language_prefix']}</label>\n\t\t\t\t\t\t<select name=\"langid\" id='newLang'>\n\t\t\t\t\t\t\t\t{$footer_items['lang_chooser']}\n\t\t\t\t\t\t</select>\n\t\t\t\t\t\t<input type='submit' class='input_submit alt' value='{$this->lang->words['jmp_go']}' id='newLangSubmit' />\n\t\t\t\t\t</fieldset>\n\t\t\t\t</form>\n\t\t\t\t<h2 class='hide'>{$this->lang->words['exec_stats']}</h2>\n\t\t\t\t<ul class='right'>\n\t\t\t\t\t<li>{$this->lang->words['time_now']} {$footer_items['time']}\n\t\t\t\t\t\t" . (($this->memberData['member_id'] and $this->memberData['last_visit']) ? "<p>{$this->lang->words['you_last_visit']} " . $this->registry->getClass('class_localization')->getDate($this->memberData['last_visit'], "short", 0) . "</p>" : "") . "\n\t\t\t\t\t</li>\n\t\t\t\t\t" . (($this->memberData['member_id'] and $this->settings['debug_level']) ? "<li><img src='{$this->settings['img_url']}/stats_time.png' alt='{$this->lang->words['icon']}' /> {$stats['ex_time']} {$this->lang->words['stats_sec']}</li>\n\t\t\t\t\t\t<li><img src='{$this->settings['img_url']}/stats_server.png' alt='{$this->lang->words['icon']}' /> {$stats['server_load']}</li>\n\t\t\t\t\t\t<li><img src='{$this->settings['img_url']}/stats_database.png' alt='{$this->lang->words['icon']}' /> {$stats['queries']} " . (IPS_SQL_DEBUG_MODE ? "<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("{$this->settings['query_string_safe']}&amp;debug=1", 'public', ''), "", "") . "'>" : "") . "{$this->lang->words['stats_queries']}" . (IPS_SQL_DEBUG_MODE ? "</a>" : "") . "</li>\n\t\t\t\t\t\t<li><img src='{$this->settings['img_url']}/stats_compression.png' alt='{$this->lang->words['icon']}' /> {$stats['gzip_status']}</li>" : "") . "\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<!-- __FOOTER__ -->\n\t\t\t<!-- /__FOOTER__ -->\n\t\t\t<!--DEBUG_STATS-->\n\t\t\t<div id='board_footer'>\n\t\t\t\t<ul id='utility_links' class='left'>\n\t\t\t\t\t<li><a href='#top' title='{$this->lang->words['go_to_top']}'>{$this->lang->words['back_to_top']}</a></li>\n\t\t\t\t\t<li><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("", 'public', ''), "", "") . "' title='{$this->lang->words['sj_home']}'>Home</a></li>\n\t\t\t\t\t<li><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&amp;module=global&amp;section=login&amp;do=deleteCookies&amp;k={$this->member->form_hash}", 'public', ''), "", "") . "\" title='{$this->lang->words['delete_all_cookies_title']}'>{$this->lang->words['delete_my_cookies']}</a></li>\n\t\t\t\t</ul>\n\t\t\t\t{$footer_items['copyright']}\n\t\t\t</div>\n\t\t\t{$stats['task']}\n\t\t\t" . ($this->settings['do_include_lightbox_real'] ? "" . $this->registry->getClass('output')->getTemplate('global')->include_lightbox_real() . "" : "") . "\n\t\t</div>\n\t</body>\n</html>";
     return $IPBHTML;
 }
 /**
  * Does search
  *
  * @access	private
  * @param	string	$search_term
  * @param	array	$limit_clause	The erray should be array( begin, end )
  * @param	string	$sort_by		Either relevance or date
  * @param	string	[$group_by]		Field to group on
  * @param	bool	[$count_only]	Set to true for a count(*) query
  * @param	bool	[$content_title_only]	Only search titles
  * @return	array
  **/
 private function _searchQuery($search_term, $limit_clause, $sort_by, $group_by = '', $count_only = false, $content_title_only = false)
 {
     /* Do we only need to count results? */
     if (!$count_only) {
         if ($limit_clause[1]) {
             /* Limit Results */
             $this->sphinxClient->SetLimits(intval($limit_clause[0]), intval($limit_clause[1]));
         } else {
             if ($limit_clause[0]) {
                 $this->sphinxClient->SetLimits(0, intval($limit_clause[0]));
             }
         }
         /* Sort By */
         if (isset($sort_by) && in_array($sort_by, array('date', 'relevance'))) {
             if ($sort_by == 'date') {
                 if ($this->request['search_sort_order'] == 0) {
                     $this->sphinxClient->SetSortMode(SPH_SORT_ATTR_DESC, $this->appSearchPlugin->getDateField());
                 } else {
                     $this->sphinxClient->SetSortMode(SPH_SORT_ATTR_ASC, $this->appSearchPlugin->getDateField());
                 }
             } else {
                 $this->sphinxClient->SetSortMode(SPH_SORT_RELEVANCE);
             }
         } else {
             $this->sphinxClient->SetSortMode(SPH_SORT_RELEVANCE);
         }
     }
     /* Exclude Apps */
     if (count($this->exclude_apps)) {
         $app_id_exclude = array();
         foreach ($this->exclude_apps as $app_dir) {
             $app_id_exclude[] = ipsRegistry::$applications[$app_dir]['app_id'];
         }
         $this->sphinxClient->SetFilter('app', $app_id_exclude, TRUE);
     }
     /* Permissions */
     $perm_array = $this->member->perm_id_array;
     $perm_array[] = 0;
     /* Need to remove empty values... */
     $final_perms = array();
     foreach ($perm_array as $perm_id) {
         if (is_numeric($perm_id)) {
             $final_perms[] = $perm_id;
         }
     }
     $this->sphinxClient->SetFilter('perm_view', $final_perms);
     /* Exclude some items */
     if (!$this->memberData['g_is_supmod']) {
         /* Owner only */
         $this->sphinxClient->SetFilter('owner_only', array(0, $this->memberData['member_id']));
         /* Friend only */
         $this->DB->build(array('select' => 'friends_member_id', 'from' => 'profile_friends', 'where' => "friends_friend_id={$this->memberData['member_id']}"));
         $this->DB->execute();
         $friends_ids = array(0);
         while ($r = $this->DB->fetch()) {
             $friends_ids[] = $r['friends_member_id'];
         }
         $this->sphinxClient->SetFilter('friend_only', $friends_ids);
         /* Authorized users only */
         $this->sphinxClient->SetFilter('authorized_users', array(0, $this->memberData['member_id']));
     }
     /* Loop through all the search plugins and let them modify the search query */
     foreach (ipsRegistry::$applications as $app) {
         if (IPSSearchIndex::appisSearchable($app['app_directory'])) {
             if (!isset($this->display_plugins[$app['app_directory']]) || !$this->display_plugins[$app['app_directory']]) {
                 require_once IPSLib::getAppDir($app['app_directory']) . '/extensions/searchDisplay.php';
                 $_class = $app['app_directory'] . 'SearchDisplay';
                 $this->display_plugins[$app['app_directory']] = new $_class();
             }
             $this->display_plugins[$app['app_directory']]->search_plugin = $this->appSearchPlugin;
             if (method_exists($this->display_plugins[$app['app_directory']], 'modifySearchQuery')) {
                 /* Get the modified query */
                 $this->display_plugins[$app['app_directory']]->modifySearchQuery($this->sphinxClient, $count_only);
             }
         }
     }
     $groupby = $this->request['show_as_titles'] ? true : false;
     /* Perform the search */
     if (method_exists($this->display_plugins[$this->request['search_app']], 'runSearchQuery')) {
         $result = $this->display_plugins[$this->request['search_app']]->runSearchQuery($this->sphinxClient, $search_term, $groupby);
     } else {
         if ($groupby) {
             $this->sphinxClient->SetGroupBy('search_id', SPH_GROUPBY_ATTR, '@group DESC');
         }
         $result = $this->sphinxClient->Query($search_term, $this->request['search_app'] . '_search_main,' . $this->request['search_app'] . '_search_delta');
     }
     /* Return the total number of results */
     if ($count_only) {
         return $result['total'];
     } else {
         $search_ids = array();
         if (is_array($result['matches']) && count($result['matches'])) {
             foreach ($result['matches'] as $res) {
                 $search_ids[] = $res['attrs']['search_id'];
             }
         }
         return $search_ids;
     }
 }
 function __f__47beb649a03e6ac0faaad715cb98b843($results, $pagination, $total, $member)
 {
     $_ips___x_retval = '';
     foreach ($this->registry->getApplications() as $app) {
         $_ips___x_retval .= "\n\t\t" . (IPSSearchIndex::appIsSearchable($app['app_directory']) && !in_array($app['app_directory'], array('core', 'members')) ? "" . ($this->request['search_app'] == $app['app_directory'] ? "\n\t\t\t\t<li class='active'><strong>{$app['app_public_title']}</strong></li>\n\t\t\t" : "\t\t\t\t\n\t\t\t\t<li><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&amp;module=search&amp;do=user_posts&amp;mid={$this->request['mid']}&amp;search_filter_app[{$app['app_directory']}]=1&amp;view_by_title={$this->request['view_by_title']}", 'public', ''), "", "") . "'>{$app['app_public_title']}</a></li>\n\t\t\t") . "" : "") . "\n\t\n";
     }
     $_ips___x_retval .= '';
     return $_ips___x_retval;
 }
 /**
  * Parse a common search result
  *
  * @access	private
  * @param	array 	$r				Search result
  * @param	string	$search_term	Keywords searched for
  * @param	bool	$isVnc			Is from view new content
  * @return	array 	$search_result	Search result for template
  */
 private function _parseSearchResult($r, $search_term = '', $isVnc = false)
 {
     /* Forum stuff */
     $sub = false;
     $r['_topic_array'] = $this->_topicArray;
     /* If basic search, strip the content */
     IPSText::getTextClass('bbcode')->parse_wordwrap = 0;
     IPSText::getTextClass('bbcode')->parse_bbcode = 0;
     IPSText::getTextClass('bbcode')->strip_quotes = 1;
     IPSText::getTextClass('bbcode')->parsing_section = 'topics';
     IPSText::getTextClass('bbcode')->parsing_mgroup = $r['member_group_id'];
     IPSText::getTextClass('bbcode')->parsing_mgroup_others = $r['mgroup_others'];
     $r['content'] = strip_tags(IPSText::getTextClass('bbcode')->stripAllTags($r['content']));
     $r['content'] = str_replace(array('&lt;br&gt;', '&lt;br /&gt;'), '', $r['content']);
     $r['content'] = trim(str_replace(array("\n\n\n", "\n\n"), "\n", str_replace("\r", '', $r['content'])));
     /* Highlight */
     $r['content'] = IPSText::searchHighlight($this->_searchTruncate($r['content'], $search_term), $search_term);
     $r['content_title'] = (!$this->search_plugin->onlyPosts and $this->_getShowAsForum() === false) ? IPSText::searchHighlight($r['content_title'], $search_term) : $r['content_title'];
     /* Check to see if the display plugin is loaded */
     if (!isset($this->search_plugin->display_plugins[$r['app']])) {
         $this->search_plugin->display_plugins[$r['app']] = IPSSearchIndex::getSearchDisplayPlugin($r['app']);
         $this->search_plugin->display_plugins[$r['app']]->search_plugin = $this->search_plugin;
     }
     /* Return the formatted result */
     if (isset($this->search_plugin->display_plugins[$r['app']]) && is_object($this->search_plugin->display_plugins[$r['app']])) {
         $return = $this->search_plugin->display_plugins[$r['app']]->formatContent($r, $isVnc);
         if (is_array($return)) {
             $html = $return[0];
             $sub = $return[1];
         } else {
             $html = $return;
         }
     } else {
         $html = $this->registry->output->getTemplate('search')->searchRowGenericFormat($r);
     }
     return array('html' => $html, 'app' => $r['app'], 'type' => $r['type'], 'sub' => $sub);
 }
 /**
  * Builds an array that can be used in build
  *
  * @access	public
  * @param	string	$search_term
  * @param	array	$limit_clause			The erray should be array( begin, end )
  * @param	string	$sort_by				Either relevance or date
  * @param	string	[$group_by]				Field to group on
  * @param	bool	[$count_only]			Set to true for a count(*) query
  * @param	bool	[$content_title_only]	Set to true to only search titles
  * @return	array
  */
 private function _buildSearchQueryArray($search_term, $limit_clause, $sort_by, $group_by = '', $count_only = false, $content_title_only = false)
 {
     /* Do we only need to count results? */
     if ($count_only) {
         if ($group_by) {
             $group_by = 'i.' . $group_by;
         }
         $search_query_array = array('select' => 'COUNT(*) as total_results', 'from' => array('search_index' => 'i'), 'where' => $this->_buildWhereStatement($search_term, $content_title_only), 'group' => $group_by, 'add_join' => array(array('from' => array('permission_index' => 'p'), 'where' => 'p.perm_type_id=i.type_id AND p.perm_type=i.type', 'type' => 'left'), array('from' => array('profile_friends' => 'friend'), 'where' => 'friend.friends_member_id=i.member_id AND friend.friends_friend_id=' . $this->memberData['member_id'], 'type' => 'left')));
     } else {
         /* Sort By */
         if (isset($sort_by) && in_array($sort_by, array('date', 'relevance', 'ascdate'))) {
             $_ord = strstr($sort_by, 'asc') ? 'ASC' : 'DESC';
             $order = $sort_by == 'date' ? 'i.updated ' . $_ord : 'ranking' . $_ord;
         } else {
             $order = 'ranking DESC';
         }
         /* If there is no search term, we need to force search by updated */
         if (!$search_term) {
             $order = 'i.updated DESC';
         }
         if ($group_by) {
             $group_by = 'i.' . $group_by;
         }
         if ($content_title_only) {
             $ranking_select = $search_term ? ", MATCH( i.content_title ) AGAINST( '{$search_term}' IN BOOLEAN MODE ) as ranking" : '';
         } else {
             $ranking_select = $search_term ? ", MATCH( i.content, i.content_title ) AGAINST( '{$search_term}' IN BOOLEAN MODE ) as ranking" : '';
         }
         /* Build the search query array */
         $search_query_array = array('select' => "i.*{$ranking_select}", 'from' => array('search_index' => 'i'), 'where' => $this->_buildWhereStatement($search_term, $content_title_only), 'limit' => $limit_clause, 'group' => $group_by, 'order' => $order, 'add_join' => array(array('select' => 'p.perm_view', 'from' => array('permission_index' => 'p'), 'where' => 'p.perm_type_id=i.type_id AND p.perm_type=i.type', 'type' => 'left'), array('select' => 'm.members_display_name, m.member_group_id, m.mgroup_others', 'from' => array('members' => 'm'), 'where' => 'i.member_id=m.member_id', 'type' => 'left'), array('from' => array('profile_friends' => 'friend'), 'where' => 'friend.friends_member_id=i.member_id AND friend.friends_friend_id=' . $this->memberData['member_id'], 'type' => 'left')));
     }
     /* Loop through all the search plugins and let them modify the search query */
     foreach (ipsRegistry::$applications as $app) {
         if (IPSSearchIndex::appisSearchable($app['app_directory'])) {
             if (!isset($this->display_plugins[$app['app_directory']]) || !$this->display_plugins[$app['app_directory']]) {
                 require_once IPSLib::getAppDir($app['app_directory']) . '/extensions/searchDisplay.php';
                 $_class = $app['app_directory'] . 'SearchDisplay';
                 $this->display_plugins[$app['app_directory']] = new $_class();
             }
             if (method_exists($this->display_plugins[$app['app_directory']], 'modifySearchQuery')) {
                 /* Get the modified query */
                 $new_query = $this->display_plugins[$app['app_directory']]->modifySearchQuery($search_query_array, $count_only);
                 /* Simple check to prevent accidentaly breaking the query, clearly not fool proof :) */
                 $search_query_array = is_array($new_query) && count($new_query) ? $new_query : $search_query_array;
             }
         }
     }
     return $search_query_array;
 }