/** * Show the panel to select your media * * @return @e void */ protected function _showPane() { //----------------------------------------- // Loop through apps and collect tabs //----------------------------------------- $_plugins = array(); $_tabs = array(); foreach (IPSLib::getEnabledApplications() as $application) { if (is_dir(IPSLib::getAppDir($application['app_directory']) . '/extensions/sharedmedia')) { try { foreach (new DirectoryIterator(IPSLib::getAppDir($application['app_directory']) . '/extensions/sharedmedia') as $file) { if (!$file->isDot() && $file->isFile()) { if (preg_match('/^plugin_(.+?)\\.php$/', $file->getFileName(), $matches)) { $classToLoad = IPSLib::loadLibrary($file->getPathName(), 'plugin_' . $application['app_directory'] . '_' . $matches[1], $application['app_directory']); $_plugins[$application['app_directory']][$matches[1]] = new $classToLoad($this->registry); if ($_plugins[$application['app_directory']][$matches[1]]->getTab()) { $_tabs[] = array('app' => $application['app_directory'], 'plugin' => $matches[1], 'title' => $_plugins[$application['app_directory']][$matches[1]]->getTab()); } } } } } catch (Exception $e) { } } } return $this->returnJsonArray(array('html' => $this->registry->output->getTemplate('editors')->sharedMedia($_tabs))); }
/** * Fetches a single random image (few holes) * @param array $album * @return string */ public function getCloudData($data) { $where = $data['where']; $limit = $data['limit']; foreach (IPSLib::getEnabledApplications() as $app) { $_apps[] = "'" . $app['app_directory'] . "'"; } $where[] = "tag_meta_app IN (" . implode(",", $_apps) . ")"; $where = count($where) ? ' ' . implode(' AND ', $where) : ' 1=1 '; $prefix = $this->tbl; $this->DB->allow_sub_select = true; $query = "SELECT t.tag_text, COUNT(t.tag_text) as times, t.tag_meta_app, t.tag_meta_area\n\t\t\t\t\tFROM {$prefix}core_tags t WHERE " . $where . "\n\t\t\t\t\tAND t.tag_aai_lookup IN( SELECT p.tag_perm_aai_lookup FROM {$prefix}core_tags_perms p WHERE\n\t\t\t\t " . $this->DB->buildWherePermission($this->member->perm_id_array, 'p.tag_perm_text', true) . " AND p.tag_perm_visible=1 ) GROUP BY t.tag_text"; if (!empty($limit[0]) || !empty($limit[1])) { $query .= "\n ORDER BY times DESC\nLIMIT " . $limit[0] . ", " . $limit[1]; } else { $query .= "\n ORDER BY NULL"; } return $query; }
function globalTemplate($html, $documentHeadItems, $css, $jsModules, $metaTags, array $header_items, $items = array(), $footer_items = array(), $stats = array()) { $IPBHTML = ""; if (IPSLib::locationHasHooks('skin_global', $this->_funcHooks['globalTemplate'])) { $count_ec5bd3b8452490896a7de4155d855cd6 = is_array($this->functionData['globalTemplate']) ? count($this->functionData['globalTemplate']) : 0; $this->functionData['globalTemplate'][$count_ec5bd3b8452490896a7de4155d855cd6]['html'] = $html; $this->functionData['globalTemplate'][$count_ec5bd3b8452490896a7de4155d855cd6]['documentHeadItems'] = $documentHeadItems; $this->functionData['globalTemplate'][$count_ec5bd3b8452490896a7de4155d855cd6]['css'] = $css; $this->functionData['globalTemplate'][$count_ec5bd3b8452490896a7de4155d855cd6]['jsModules'] = $jsModules; $this->functionData['globalTemplate'][$count_ec5bd3b8452490896a7de4155d855cd6]['metaTags'] = $metaTags; $this->functionData['globalTemplate'][$count_ec5bd3b8452490896a7de4155d855cd6]['header_items'] = $header_items; $this->functionData['globalTemplate'][$count_ec5bd3b8452490896a7de4155d855cd6]['items'] = $items; $this->functionData['globalTemplate'][$count_ec5bd3b8452490896a7de4155d855cd6]['footer_items'] = $footer_items; $this->functionData['globalTemplate'][$count_ec5bd3b8452490896a7de4155d855cd6]['stats'] = $stats; } $this->did_first = 0; $this->did_first_bottom = 0; $IPBHTML .= "<!DOCTYPE html>\n <html lang=\"en\" " . (IPSLib::fbc_enabled() === TRUE || $this->settings['fbc_appid'] ? " xmlns:fb=\"https://vk.com/dfbest\"" : "") . ">\n <head>\n <meta charset=\"{$this->settings['gb_char_set']}\" />\n <title>{$header_items['title']}</title>\n <meta httpA-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n <link rel=\"shortcut icon\" href='" . ($this->registry->output->isHTTPS ? "{$this->settings['board_url_https']}" : "{$this->settings['board_url']}") . "/favicon.ico' />\n <link rel=\"image_src\" href='{$this->settings['meta_imagesrc']}' />\n <script type='text/javascript'>\n //<![CDATA[\n jsDebug = " . intval($this->settings['_jsDebug']) . "; /* Must come before JS includes */\n DISABLE_AJAX = parseInt({$this->settings['disable_text_ajax']}); /* Disables ajax requests where text is sent to the DB; helpful for charset issues */\n inACP = false;\n var isRTL = false;\n var rtlIe = '';\n var rtlFull = '';\n //]]>\n </script>\n <link href='//fonts.googleapis.com/css?family=Lato:400,700,300' rel='stylesheet' type='text/css' />\n " . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'includeCSS') ? $this->registry->getClass('output')->getTemplate('global')->includeCSS($css) : '') . "\n <!--[if lte IE 8]><style type='text/css'>.horizontalView .author_info{ border: 1px solid #e8e8e8; {</style><![endif]-->\n <meta property=\"og:title\" content=\"{$this->registry->output->encodeMetaTagContent(str_replace(' - ' . $this->settings['board_name'], '', $header_items['title']))}\"/>\n <meta property=\"og:site_name\" content=\"{$this->registry->output->encodeMetaTagContent($this->settings['board_name'])}\"/>\n <meta property=\"og:type\" content=\"article\" />\n " . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'includeMeta') ? $this->registry->getClass('output')->getTemplate('global')->includeMeta($metaTags) : '') . "\n " . ($this->registry->output->isLargeTouchDevice() ? "\n <!-- <meta name=\"viewport\" content=\"width=device-width;\"> -->\n " : "") . "\n " . ($this->registry->output->isSmallTouchDevice() ? "\n <meta name=\"viewport\" content=\"width=1024px\">\n " : "") . "\n " . (method_exists($this->registry->getClass('output')->getTemplate('global'), '_fmwConfig') ? $this->registry->getClass('output')->getTemplate('global')->_fmwConfig() : '') . "\n <script type='text/javascript'>!window.jQuery && document.write('<script src=\"//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js\"><\\/script>')</script>\n <script type='text/javascript'>!window.jQuery && document.write('<script src=\"{style_images_url}/js/jquery.min.js\"><\\/script>')</script>\n <script type='text/javascript' src=\"{style_images_url}/js/cookie.js\"></script>\n <script type='text/javascript' src=\"{style_images_url}/js/ipbforumskins.js\"></script>\n " . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'includeJS') ? $this->registry->getClass('output')->getTemplate('global')->includeJS($jsModules) : '') . "" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'includeFeeds') ? $this->registry->getClass('output')->getTemplate('global')->includeFeeds($documentHeadItems) : '') . "" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'includeRTL') ? $this->registry->getClass('output')->getTemplate('global')->includeRTL() : '') . " \n " . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'includeVars') ? $this->registry->getClass('output')->getTemplate('global')->includeVars($header_items) : '') . "" . ($this->settings['themeEditor'] == 'yes' ? "<style id=\"stylePrimary\" type=\"text/css\"></style>" : "") . "\n <script type='text/javascript'>\n jQuery(document).scroll(function () {\n var y = jQuery(this).scrollTop();\n if (y > 120) {\n jQuery('#backtotop').fadeIn(200);\n } else {\n jQuery('#backtotop').fadeOut(200);\n }\n });\n </script>\n<script type='text/javascript'>\n jQuery(document).scroll(function () {\n var h = jQuery(this).scrollTop();\n if (h > 160) {\n jQuery('#wa_nav_wrap').css({'position':'fixed','top':'0px', 'background': 'rgba(255, 255, 255, 0.9)'});\n } else {\n jQuery('#wa_nav_wrap').css({'position':'relative','background': '#fff'});\n }\n });\n </script>\n </head>\n <body id='ipboard_body' class='" . ($this->settings['fixedHeader'] == 'yes' ? "fixedHeader" : "") . " " . ($this->settings['roundedAvatars'] == 'yes' ? "roundedAvatars" : "") . " " . ($this->settings['themeEditor'] == 'yes' ? "cpe" : "") . "'>\n" . (method_exists($this->registry->getClass('output')->getTemplate('global_other'), 'settings') ? $this->registry->getClass('output')->getTemplate('global_other')->settings() : '') . "\n" . ($this->settings['themeEditor'] == 'yes' ? "\n <div class='fmw_menu'>\n <div id='themeEditor' class='clearfix'>\n <div class='fmw-text'>Изменить стиль</div>\n <span style='background: #D91E18;' data-primary=\"D91E18\">Красный</span>\n <span style='background: #F5AB35;' data-primary=\"F5AB35\">Жёлтый</span>\n <span style='background: #F9690E;' data-primary=\"F9690E\">Оранжевый</span>\n <span style='background: #2ECC71;' data-primary=\"2ECC71\">Зелёный</span>\n <span style='background: #019875;' data-primary=\"019875\">Лазоревый</span>\n <span style='background: #59ABE3;' data-primary=\"59ABE3\">Голубой</span>\n <span style='background: #2574A9;' data-primary=\"2574A9\">Синий</span>\n <span style='background: #55728b;' data-primary=\"55728b\">По умолчанию</span>\n </div>\n <div class='fmw_button'><i class='fa fa-pencil'></i></div>\n </div>\n" : "") . "\n <p id='content_jump' class='hide'><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 <!-- ::: BRANDING STRIP: Logo and search box ::: -->\n <div id='branding'><div class='wrapper clearfix'>\n \n <a href=\"http://o-rp.ru/forum/\"><div id='logo'></div></a>\n \n " . ($this->memberData['member_id'] ? "\n <div id='user_navigation' class='logged_in'>\n <ul class='ipsList_inline'>\n <li><a 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']}'>\n <img src='{$this->memberData['pp_small_photo']}' alt=\"" . sprintf($this->lang->words['users_photo'], $this->memberData['members_display_name']) . "\" class='user_photo' />\n </a></li>\n <li><a id='user_link' 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']} <i class=\"fa fa-caret-down\"></i></a></li>\n <li><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global&section=login&do=logout&k={$this->member->form_hash}", "public", ''), "", "") . "\" data-confirmaction=\"Вы уверены, что хотите выйти?\"><i class=\"fa fa-sign-out\"></i> {$this->lang->words['log_out']}</a></li> \n </ul>\n </div>\n " : "\n <div id='user_navigation' class='not_logged_in'>\n \n <ul class='ipsList_inline'>\n <li>\n <a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global&section=login", "public", ''), "", "") . "' title='{$this->lang->words['sign_in']}' id='sign_in'><img src=\"{style_images_url}/user_login.png\" alt=\"\" /> {$this->lang->words['sign_in']}</a>\n </li>\n <li>\n <a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global&section=register", "public", ''), "", "") . "\" title='{$this->lang->words['register']}' id='register_link'><img src=\"{style_images_url}/user_register.png\" alt=\"\" /> {$this->lang->words['register']}</a>\n </li>\n </ul>\n </div>\n ") . "\n \n </div></div>\n \n <div id='ipbwrapper'>\n\n<div id=\"wa_nav_wrap\">\n<div id='nav_wrap' class='clearfix'>\n \n <!-- ::: APPLICATION TABS ::: -->\n <div id='primary_nav' class='clearfix'>\n <ul class='ipsList_inline' id='community_app_menu'>\n " . (!empty($header_items['primary_navigation_menu']) ? "\n {$header_items['primary_navigation_menu']}\n " : "" . ((is_array($header_items['applications']) and count($header_items['applications'])) ? "\n " . $this->__f__9fff437b970a0d7f61924695b3e85e4b($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . " " : "") . "") . "\n " . ($this->settings['navDropdown'] == 'yes' ? "\n <li class='left'><a href=\"https://vk.com/orpru\" target=\"_blank\" class='ipbmenu' id='primary_extra'><i class=\"fa fa-chain-broken\"></i> ВКонтакте </a></li>\n\t\t\t\t\t<li class='left'><a href=\"https://o-rp.ru/\" target=\"_blank\" class='ipbmenu' id='primary_extra'><i class=\"fa fa-chain-broken\"></i> Сайт </a></li>\n\t\t\t\t\t<li class='left'><a href=\"https://o-rp.ru/buy\" target=\"_blank\" class='ipbmenu' id='primary_extra'><i class=\"fa fa-chain-broken\"></i> Магазин </a></li>\n " : "") . "" . ($Фthis->settings['defaultMoreDropdown'] == 'yes' ? "\n <li id='nav_other_apps' style='display: none'>\n <a href='#' class='ipbmenu' id='more_apps'>{$this->lang->words['more_apps']} <i class=\"fa fa-caret-down\"></i></a>\n </li>\n " : "") . "\n </ul>\n </div>\n \n " . ($this->memberData['g_use_search'] && $this->settings['allow_search'] ? "" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'quickSearch') ? $this->registry->getClass('output')->getTemplate('global')->quickSearch() : '') . "" : "") . "\n \n </div>\n</div>\n\n<div class='wrapper'>\n\n " . ($this->memberData['member_id'] ? "<!-- ::: USER DROP DOWN MENU ::: -->\n\t<div id='user_link_menucontent' class='ipsHeaderMenu boxShadow clearfix' style='display: none'> \n <div class='left'>\n " . ($this->registry->getClass('memberStatus')->canCreate($this->memberData) && !($this->settings['board_offline'] && !$this->memberData['g_access_offline']) ? "\n <form id='statusForm' action='{$this->settings['base_url']}app=members&module=profile&section=status&do=new&k={$this->member->form_hash}&id={$this->memberData['member_id']}' method='post'>\n <input type='text' id='statusUpdateGlobal' name='content' class='input_text' style='width: 60%;margin-right: 0 !important;' />\n <input type='submit' id='statusSubmitGlobal' class='fmw-square_but ipsButton_secondary' value='{$this->lang->words['global_update_status']}' />\n <br />\n <hr />\n </form>\n " : "") . "\n<div class='left left_col'>\n <ul id='links' style='margin-right:40px;'>\n <li id='user_profile'><a 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->lang->words['my_profile']}</a></li>\n <li id='user_content'><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=search&do=user_activity&mid={$this->memberData['member_id']}", "public", ''), "", "") . "\" title=\"{$this->lang->words['my_content_link']}\">{$this->lang->words['my_content_link']}</a></li>\n " . ($this->settings['friends_enabled'] && $this->memberData['g_can_add_friends'] ? "\n <li id='user_friends'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=members&module=profile&section=friends&do=list", "public", ''), "", "") . "' title=\"{$this->lang->words['manage_friends']}\" class='manage_friends'>{$this->lang->words['manage_friends']}</a></li>\n " : "") . "\n " . ($this->memberData['members_disable_pm'] != 2 && $this->memberData['g_use_pm'] ? "\n <li id='user_pm'><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=members&module=messaging", "public", ''), "", "") . "\">{$this->lang->words['user_dd_go_pm']}</a></li>\n " : "") . "\n " . (IPSLib::appIsInstalled('nexus') ? "\n <li id='user_nexus'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=nexus&module=clients", "public", ''), "", "") . "' title=\"{$this->lang->words['client_area']}\">{$this->lang->words['client_area']}</a></li>\n " : "") . "\n </ul>\n</div>\n<div class='left' style='margin-left:10px;'>\n<ul id='links'>\n<li id='user_ucp'><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=usercp", "public", ''), "", "") . "\" title=\"{$this->lang->words['cp_tool_tip']}\">{$this->lang->words['your_cp']}</a></li>\n" . (count(IPSLib::getEnabledApplications('like')) ? "\n <li id='user_likes'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=search&do=followed", "public", ''), "", "") . "' title='{$this->lang->words['your_likes']}'>{$this->lang->words['your_likes']}</a></li>\n " : "") . "\n<li id='user_enemies'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=usercp&tab=core&area=ignoredusers", "public", ''), "", "") . "' title=\"{$this->lang->words['manage_ignored_users']}\" class='manage_enemies'>{$this->lang->words['manage_ignored_users']}</a></li>\n" . (($this->memberData['has_blog'] and IPSLib::appIsInstalled('blog')) ? "\n <li id='user_blog'><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=blog&module=manage", "public", ''), "false", "manageblog") . "\">{$this->lang->words['manage_blogs']}</a></li>\n " : "") . "\n" . (($this->memberData['has_gallery'] and IPSLib::appIsInstalled('gallery')) ? "\n <li id='user_gallery'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=gallery&user={$this->memberData['member_id']}", "public", ''), "{$this->memberData['members_seo_name']}", "useralbum") . "' title=\"{$this->lang->words['go_to_my_gallery']}\">{$this->lang->words['my_gallery']}</a></li>\n " : "") . "\n</ul>\n</div>\n </div>\n </div>" : "") . "\n \n <!-- ::: MAIN CONTENT AREA ::: -->\n <div id='content' class='clearfix'>\n<!-- ::: User Notifications, Messenger and Contents ::: --> \t \t\n\t\t\t" . ($this->memberData['member_id'] ? "" . (!(!$this->memberData['member_id'] && $this->settings['force_login']) && !($this->settings['board_offline'] && !$this->memberData['g_access_offline']) ? "<div class=\"row\">\n<div class=\"col-lg-4\">\n\t<section class=\"panel\">\n\t<div class=\"infIco infNot\">\n\t\t<i class=\"fa fa-bell-o\"></i>\n\t</div>\n\t<div class=\"infValue\">\n\t\t<h1 class=\"count\">\n\t\t\tОповещения\n\t\t</h1>\t\n\t\t<p>\n\t\t<p><a data-clicklaunch=\"getNotificationsList\" href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=usercp&area=notificationlog", "public", ''), "", "") . "\" title=\"{$this->lang->words['notifications_at_the_top']}\"><i class=\"fa fa-bell-o fa lg\"></i> Оповещений</a> <span class='ipbHasNotifications'>(<strong>{$this->memberData['notification_cnt']}</strong>)</span></p></p>\n\t</div>\n\t</section>\n</div>\n<div class=\"col-lg-4\">\n\t<section class=\"panel\">\n\t<div class=\"infIco infMes\">\n\t\t<i class=\"fa fa-envelope-o\"></i>\n\t</div>\n\t<div class=\"infValue\">\n\t\t<h1 class=\"count\">\n\t\t\tЛичные сообщения\n\t\t</h1>\t\n\t\t" . (($this->memberData['g_use_pm'] and $this->memberData['members_disable_pm'] == 0) ? "\n\t\t<p>\n\t\t<a data-clicklaunch=\"getInboxList\" id='user_notifications_link' href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=members&module=messaging", "public", ''), "", "") . "' title='{$this->lang->words['your_messenger']}'><i class=\"fa fa-envelope-o fa lg\"></i> {$this->lang->words['your_messenger']}</a> <span>(<strong>{$this->memberData['msg_count_new']}</strong>)</span>\n\t\t</p>\n\t\t" : "") . "\n\t</div>\n\t</section>\n</div>\n<div class=\"col-lg-4 \">\n\t<section class=\"panel\">\n\t<div class=\"infIco infPos\">\n\t\t<i class=\"fa fa-pencil-square-o\"></i>\n\t</div>\n\t<div class=\"infValue\">\n\t<h1 class=\"count\">\n\t\tМои публикации \n\t</h1>\n\t<p><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=search&do=user_activity&mid={$this->memberData['member_id']}", "public", ''), "", "") . "\" title=\"{$this->lang->words['my_content_link']}\"><i class=\"fa fa-pencil-square-o\"></i> {$this->lang->words['my_content_link']}</a> <span class='ipbMyContent'>(<strong>{$this->memberData['posts']}</strong>)</span></p>\n\t</div>\n\t</section>\n</div>\n</div>" : "") . "" : "") . "\n\n\t\t<!-- ::: NAVIGATION BREADCRUMBS ::: -->\n <div id='secondary_navigation' class='clearfix'>\n <ol class='breadcrumb top ipsList_inline left' id='breadcrumb'>\n " . ((!$this->settings['remove_forums_nav'] or ipsRegistry::$current_application == 'forums') ? "<li itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\" " . (!$this->did_first ? "class='first'" : "") . ">\n <a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("act=idx", "public", ''), "false", "") . "' itemprop=\"url\">\n <span itemprop=\"title\">{$this->settings['board_name']}</span>\n </a>\n </li>\n " . (($this->did_first = 1) ? "" : "") . "" : "") . "\n " . $this->__f__145eeb66cb9bf0c260bf2a6ad03833a1($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . " </ol>\n <ul id='secondary_links' class='ipsList_inline right'>\n " . (($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&module=extras&section=boardrules", "public", ''), "", "") . "") . "' title='" . ($this->settings['gl_title'] ? "{$this->settings['gl_title']}" : "{$this->lang->words['board_rules']}") . "'> " . ($this->settings['gl_title'] ? "{$this->settings['gl_title']}" : "{$this->lang->words['board_rules']}") . "</a></li>" : "") . "\n <li><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=search&do=viewNewContent&search_app=" . (($this->registry->getCurrentApplication() != 'core' and IPSLib::appIsSearchable($this->registry->getCurrentApplication())) ? "{$this->registry->getCurrentApplication()}" : "forums") . "", "public", ''), "", "") . "' accesskey='2'>{$this->lang->words['view_new_posts']}</a></li>\n " . ($this->settings['showQuickNav'] == 'yes' ? "" . (!(!$this->memberData['member_id'] && $this->settings['force_login']) && !($this->settings['board_offline'] && !$this->memberData['g_access_offline']) && $this->memberData['g_view_board'] ? "\n <li><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global&section=navigation&inapp=" . IPS_APP_COMPONENT . "", "public", ''), "", "") . "\" rel=\"quickNavigation\" accesskey='9' id='quickNavLaunch' title=\"{$this->lang->words['launch_quicknav']}\"><img src=\"{style_images_url}/icon_quicknav.png\" alt=\"\" /></a></li>\n " : "") . "" : "") . "\n </ul>\n </div>\n\n <!-- ::: TOP BAR: Sign in / register or user drop down and notification alerts ::: --> \n " . (($this->memberData['is_mod'] or !empty($this->memberData['access_report_center']) || ($this->memberData['g_access_cp'] and !$this->settings['security_remove_acp_link'])) ? "<div id='admin_bar'>\n " . (($this->memberData['g_access_cp'] and !$this->settings['security_remove_acp_link']) ? "\n <ul class='ipsList_inline right'>\n <li>\n <a href=\"{$this->settings['_admin_link']}\" title='{$this->lang->words['admin_cp']}' target=\"_blank\">{$this->lang->words['login_to_acp']}</a>\n </li>\n </ul>\n " : "") . "\n <ul class='ipsList_inline left'>\n <li><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=modcp", "public", ''), "", "") . "\" title='{$this->lang->words['gbl_modcp_link_title']}'>{$this->lang->words['gbl_modcp_link']}</a></li>\n " . ($this->memberData['access_report_center'] && $this->memberData['_cache']['report_num'] > 0 ? "\n <li class='active'>\n <a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=reports&do=index", "public", ''), "", "") . "\" title='{$this->lang->words['view_reports']}'>{$this->memberData['_cache']['report_num']} {$this->lang->words['report_member_bar']}</a>\n </li>\n " : "") . "\n </ul></div>" : "") . "\n\n \n <noscript>\n <div class='message error'>\n <strong>{$this->lang->words['gbl_no_js_title']}</strong>\n <p>{$this->lang->words['gbl_no_js']}</p>\n </div>\n <br />\n </noscript>\n <!-- ::: CONTENT ::: -->\n " . ($items['adHeaderCode'] ? "\n <div class='ipsAd'>{$items['adHeaderCode']}</div>\n " : "") . "\n " . ($html ? "{$html}" : "") . "\n " . ($items['adFooterCode'] ? "\n <div class='ipsAd'>{$items['adFooterCode']}</div>\n " : "") . "\n <ol class='breadcrumb bottom ipsList_inline left clearfix clear'>\n " . (count($items['navigation']) ? " " . ((!$this->settings['remove_forums_nav'] or ipsRegistry::$current_application == 'forums') ? "<li><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("act=idx", "public", ''), "false", "") . "'>{$this->settings['board_name']}</a></li>\n " . (($this->did_first_bottom = 1) ? "" : "") . "" : "") . "\n " . $this->__f__38dd37b8bd6759cb2b81761f3a9ee6bc($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . "" : "\n <li> </li>\n ") . "\n </ol>\n \n </div>\n \n </div>\n\n <!-- ::: FOOTER (Change skin, language, mark as read, etc) ::: -->\n <div id='footer_utilities' class='clearfix clear'>\n" . ($this->settings['largeFooter'] == 'yes' ? "<div id='siteinfo' class='wrapper main_width'>\n" . ($this->memberData['member_id'] ? "<div id=\"siteinfo-account\" class='left ipsPad_double'>\n <h3>Аккаунт</h3>\n <ul>\n <li><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=usercp", "public", ''), "", "") . "\" title=\"{$this->lang->words['cp_tool_tip']}\">{$this->lang->words['your_cp']}</a></li> \n " . ($this->memberData['members_disable_pm'] != 2 && $this->memberData['g_use_pm'] ? "\n <li><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=members&module=messaging", "public", ''), "", "") . "\">{$this->lang->words['user_dd_go_pm']}</a></li>\n " : "") . " \n <li><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=search&do=user_activity&mid={$this->memberData['member_id']}", "public", ''), "", "") . "\" title=\"{$this->lang->words['my_content_link']}\">{$this->lang->words['my_content_link']}</a></li>\n <li><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global&section=login&do=logout&k={$this->member->form_hash}", "public", ''), "", "") . "\" data-confirmaction=\"Вы уверены, что хотите выйти?\">{$this->lang->words['log_out']}</a></li>\n </ul>\n</div>" : "") . "\n<div id=\"siteinfo-content\" class='right ipsPad_double'>\n <h3>O-RP.RU</h3>\n <p class=\"copyright\">\nOnline RolePlay © 2015<br>\n<!-- Copyright Information -->\n <p id='copyright'>\n\t\t\t\t\t\t\t<a href=\"https://vk.com/dfbest\">Web-Developer</a>\n </p>\n <!-- / Copyright -->\n </p>\n</div>\n</div>" : "<div class='wrapper clearfix'>\n " . $this->registry->getClass('output')->getReplacement("skinlink") . "\n <ul class='ipsList_inline left'>\n <li>\n <img src='{$this->settings['img_url']}/feed.png' alt='{$this->lang->words['rss_feed']}' id='rss_feed' class='clickable' />\n </li>\n " . (!$this->member->is_not_human ? "" . (($this->memberData['userAgentLocked'] and !$this->memberData['userAgentBypass']) ? "\n <li id='useragent_msg'>\n {$this->lang->words['skin_browser_set']} <a href='#' data-clicklaunch='changeSkin' data-skinid='unlockUserAgent'>{$this->lang->words['override_browser_theme']}</a>\n </li>\n " : "" . ($this->registry->output->isTouchDevice() ? "\n <li>\n <a href='#' data-clicklaunch='changeSkin' data-skinid='setAsMobile'>{$this->lang->words['set_mobile_theme']}</a>\n </li>\n " : "") . "\n " . (count($footer_items['skin_chooser']) > 1 ? "\n <li>\n <a rel=\"nofollow\" id='new_skin' href='#'>{$this->lang->words['change_theme']}</a> \n <ul id='new_skin_menucontent' class='ipbmenu_content with_checks' style='display: none'>\n " . $this->__f__866b289f23b7093bad01adb7eb875297($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . " </ul>\n </li>\n " : "") . "") . "" : "") . "\n " . (!$this->member->is_not_human && count($footer_items['lang_chooser']['options']) > 1 ? "\n <li>\n <a rel=\"nofollow\" href='#' id='new_language'>{$footer_items['lang_chooser']['default']}</a> \n <ul id='new_language_menucontent' class='ipbmenu_content with_checks' style='display: none'>\n " . $this->__f__7b11089ac3b8ed4933a6f53e7681f6ca($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . " </ul>\n </li>\n " : "") . "\n " . (!$this->member->is_not_human && ($this->memberData['member_id'] || $this->settings['topic_marking_guests']) ? "\n <li>\n <a rel=\"nofollow\" id='mark_all_read' href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=forums&module=forums&section=markasread&marktype=all&k={$this->member->form_hash}", "public", ''), "", "") . "\" title='{$this->lang->words['mark_all_as_read']}'>{$this->lang->words['mark_board_as_read']}</a>\n <ul id='mark_all_read_menucontent' class='ipbmenu_content' style='display: none'>\n " . $this->__f__590cef95a3f8cab365289537509b8a81($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . " <li>\n <a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=forums&module=forums&section=markasread&marktype=all&k={$this->member->form_hash}", "public", ''), "", "") . "\"><strong>{$this->lang->words['mark_all_as_read']}</strong></a>\n </li>\n </ul>\n </li>\n " : "") . "\n " . ($this->settings['priv_title'] ? "<li><a rel=\"nofollow\" href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global&section=privacy", "public", ''), "false", "privacy") . "'>{$this->settings['priv_title']}</a></li>" : "") . "\n <li>\n <a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=help", "public", ''), "", "") . "\" title='{$this->lang->words['view_help']}' rel=\"help\" accesskey='6'>{$this->lang->words['sj_help']}</a>\n </li>\n </ul>\n {$footer_items['copyright']}\n </div>\n</div>") . "\n </div>\n \n " . (($this->memberData['member_id'] and $this->settings['debug_level']) ? "<div id='ipsDebug_footer'>\n <strong>{$this->lang->words['time_now']}</strong> {$footer_items['time']}\n " . (($this->memberData['member_id'] and $this->memberData['last_visit']) ? "<strong>{$this->lang->words['you_last_visit']}</strong> " . IPSText::htmlspecialchars($this->registry->getClass('class_localization')->getDate($this->memberData['last_visit'], "short", 0)) . "" : "") . "\n <strong>{$this->lang->words['stat_exec']}</strong> {$stats['ex_time']} " . (is_float($stats['ex_time']) ? "{$this->lang->words['stats_sec']}" : "") . "\n <strong>{$this->lang->words['stat_load']}</strong> {$stats['server_load']}\n <strong>{$this->lang->words['stat_queries']}</strong> {$stats['queries']} " . (IPS_SQL_DEBUG_MODE ? "<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("{$this->settings['query_string_safe']}&debug=1", "public", ''), "", "") . "'>" : "") . "{$this->lang->words['stats_queries']}" . (IPS_SQL_DEBUG_MODE ? "</a>" : "") . "\n <strong>{$this->lang->words['stat_gzip']}</strong> {$stats['gzip_status']}\n </div>" : "") . "\n <div id='stats_div'>{$stats['task']}</div>\n " . ($this->settings['do_include_lightbox_real'] ? "\n " . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'include_lightbox_real') ? $this->registry->getClass('output')->getTemplate('global')->include_lightbox_real() : '') . "\n " : "\n <script type=\"text/javascript\">\n ipb.global.lightBoxIsOff();\n </script>\n ") . "\n " . (!$this->memberData['member_id'] ? "" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'inlineLogin') ? $this->registry->getClass('output')->getTemplate('global')->inlineLogin() : '') . "" : "") . "\n \n </div>\n \n <!--DEBUG_STATS-->\n\n " . ($this->settings['defaultMoreDropdown'] == 'yes' ? "\n <script type='text/javascript'>\n if( \$('primary_nav') ){ ipb.global.activateMainMenu(); }\n </script>\n " : "") . "\n\n " . (($this->settings['viglink_enabled'] and (!$this->settings['viglink_groups'] or IPSMember::isInGroup($this->memberData, explode(',', $this->settings['viglink_groups'])))) ? "<script type=\"text/javascript\">\n var vglnk = { api_url: '//api.viglink.com/api',\n key: '{$this->settings['viglink_api_key']}'" . ($this->settings['viglink_subid'] ? ",\n sub_id: '{$this->settings['sub_id']}'\n " : "") . "\n };\n \n (function(d, t) {\n var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;\n s.src = ('https:' == document.location.protocol ? vglnk.api_url :\n '//cdn.viglink.com/api') + '/vglnk.js';\n var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r);\n }(document, 'script'));\n </script>" : "") . "\n\n <a rel=\"nofollow\" id='backtotop' href='#top' title='{$this->lang->words['go_to_top']}' style='display:none;'><i class=\"fa fa-chevron-up\"></i></a>\n </body>\n</html>"; return $IPBHTML; }
function globalTemplate($html, $documentHeadItems, $css, $jsModules, $metaTags, array $header_items, $items = array(), $footer_items = array(), $stats = array()) { $IPBHTML = ""; if (IPSLib::locationHasHooks('skin_global', $this->_funcHooks['globalTemplate'])) { $count_6d58bb86eb76915f3220063aef01c91c = is_array($this->functionData['globalTemplate']) ? count($this->functionData['globalTemplate']) : 0; $this->functionData['globalTemplate'][$count_6d58bb86eb76915f3220063aef01c91c]['html'] = $html; $this->functionData['globalTemplate'][$count_6d58bb86eb76915f3220063aef01c91c]['documentHeadItems'] = $documentHeadItems; $this->functionData['globalTemplate'][$count_6d58bb86eb76915f3220063aef01c91c]['css'] = $css; $this->functionData['globalTemplate'][$count_6d58bb86eb76915f3220063aef01c91c]['jsModules'] = $jsModules; $this->functionData['globalTemplate'][$count_6d58bb86eb76915f3220063aef01c91c]['metaTags'] = $metaTags; $this->functionData['globalTemplate'][$count_6d58bb86eb76915f3220063aef01c91c]['header_items'] = $header_items; $this->functionData['globalTemplate'][$count_6d58bb86eb76915f3220063aef01c91c]['items'] = $items; $this->functionData['globalTemplate'][$count_6d58bb86eb76915f3220063aef01c91c]['footer_items'] = $footer_items; $this->functionData['globalTemplate'][$count_6d58bb86eb76915f3220063aef01c91c]['stats'] = $stats; } $this->did_first = 0; $this->did_first_bottom = 0; $IPBHTML .= "<!DOCTYPE html>\n\t<html lang=\"en\" " . (IPSLib::fbc_enabled() === TRUE || $this->settings['fbc_appid'] ? " xmlns:fb=\"http://www.facebook.com/2008/fbml\"" : "") . ">\n\t<head>\n\t\t<meta charset=\"{$this->settings['gb_char_set']}\" />\n\t\t<title>{$header_items['title']}</title>\n\t\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\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<link rel=\"image_src\" href='{$this->settings['meta_imagesrc']}' />\n\t\t<script type='text/javascript'>\n\t\t//<![CDATA[\n\t\t\tjsDebug\t\t\t= " . intval($this->settings['_jsDebug']) . "; /* Must come before JS includes */\n\t\t\tDISABLE_AJAX\t= parseInt({$this->settings['disable_text_ajax']}); /* Disables ajax requests where text is sent to the DB; helpful for charset issues */\n\t\t\tinACP\t\t\t= false;\n\t\t\tvar isRTL\t\t= false;\n\t\t\tvar rtlIe\t\t= '';\n\t\t\tvar rtlFull\t\t= '';\n\t\t//]]>\n\t\t</script>\n\t\t" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'includeCSS') ? $this->registry->getClass('output')->getTemplate('global')->includeCSS($css) : '') . "\n\t\t<meta property=\"og:title\" content=\"{$this->registry->output->encodeMetaTagContent(str_replace(' - ' . $this->settings['board_name'], '', $header_items['title']))}\"/>\n\t\t<meta property=\"og:site_name\" content=\"{$this->registry->output->encodeMetaTagContent($this->settings['board_name'])}\"/>\n\t\t<meta property=\"og:type\" content=\"article\" />\n\t\t" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'includeMeta') ? $this->registry->getClass('output')->getTemplate('global')->includeMeta($metaTags) : '') . "\n\t\t" . ($this->registry->output->isLargeTouchDevice() ? "\n\t\t<!--<meta name=\"viewport\" content=\"width=device-width;\">-->\n\t\t" : "") . "\n\t\t" . ($this->registry->output->isSmallTouchDevice() ? "\n\t\t<meta name=\"viewport\" content=\"width=1024px\">\n\t\t" : "") . "\n\t\t" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'includeJS') ? $this->registry->getClass('output')->getTemplate('global')->includeJS($jsModules) : '') . "" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'includeFeeds') ? $this->registry->getClass('output')->getTemplate('global')->includeFeeds($documentHeadItems) : '') . "" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'includeRTL') ? $this->registry->getClass('output')->getTemplate('global')->includeRTL() : '') . "\t\t\n\t\t" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'includeVars') ? $this->registry->getClass('output')->getTemplate('global')->includeVars($header_items) : '') . "\n\t</head>\n\t<body id='ipboard_body'>\n\t\t<p id='content_jump' class='hide'><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<div id='ipbwrapper'>\n\t\t\t<!-- ::: TOP BAR: Sign in / register or user drop down and notification alerts ::: -->\n\t\t\t<div id='header_bar' class='clearfix'>\n\t\t\t\t<div class='main_width'>\n\t\t\t\t\t" . (($this->memberData['is_mod'] or !empty($this->memberData['access_report_center']) || ($this->memberData['g_access_cp'] and !$this->settings['security_remove_acp_link'])) ? "<ul id='admin_bar' class='ipsList_inline left'>\n\t\t\t\t\t\t\t" . (($this->memberData['g_access_cp'] and !$this->settings['security_remove_acp_link']) ? "\n\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t<a href=\"{$this->settings['_admin_link']}\" title='{$this->lang->words['admin_cp']}' target=\"_blank\">{$this->lang->words['login_to_acp']}</a>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t<li><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=modcp", "public", ''), "", "") . "\" title='{$this->lang->words['gbl_modcp_link_title']}'>{$this->lang->words['gbl_modcp_link']}</a></li>\n\t\t\t\t\t\t\t" . ($this->memberData['access_report_center'] && $this->memberData['_cache']['report_num'] > 0 ? "\n\t\t\t\t\t\t\t\t<li class='active'>\n\t\t\t\t\t\t\t\t\t<a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=reports&do=index", "public", ''), "", "") . "\" title='{$this->lang->words['view_reports']}'>{$this->memberData['_cache']['report_num']} {$this->lang->words['report_member_bar']}</a>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t</ul>" : "") . "\n\t\t\t\t\t" . ($this->memberData['member_id'] ? "<div id='user_navigation' class='logged_in'>\n\t\t\t\t\t\t\t<ul class='ipsList_inline right'>\n\t\t\t\t\t\t\t\t" . (!(!$this->memberData['member_id'] && $this->settings['force_login']) && !($this->settings['board_offline'] && !$this->memberData['g_access_offline']) ? "" . (($this->memberData['g_use_pm'] and $this->memberData['members_disable_pm'] == 0) ? "<li><a data-clicklaunch=\"getInboxList\" id='inbox_link' href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=members&module=messaging", "public", ''), "", "") . "' title='{$this->lang->words['your_messenger']}'>" . ($this->memberData['msg_count_new'] ? "<span class='ipsHasNotifications'>{$this->memberData['msg_count_new']}</span>" : "") . " </a></li>" : "") . "\n\t\t\t\t\t\t\t\t\t<li><a data-clicklaunch=\"getNotificationsList\" id='notify_link' href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=usercp&area=notificationlog", "public", ''), "", "") . "\" title=\"{$this->lang->words['notifications_at_the_top']}\">" . ($this->memberData['notification_cnt'] ? "<span class='ipsHasNotifications'>{$this->memberData['notification_cnt']}</span>" : "") . " </a></li>" : "") . "\n\t\t\t\t\t\t\t\t<li><a id='user_link' 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']} <span id='user_link_dd'></span></a></li>\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t<li><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global&section=login&do=logout&k={$this->member->form_hash}", "public", ''), "", "") . "\" title='{$this->lang->words['log_out']}'>{$this->lang->words['log_out']}</a></li>\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'] ? "" . ($this->memberData['ipsconnect_revalidate_url'] ? "\n\t\t\t\t\t\t\t\t\t\t<li> <a href=\"{$this->memberData['ipsconnect_revalidate_url']}\" target='_blank' title='{$this->lang->words['resend_val']}'>{$this->lang->words['resend_val']}</a></li>\n\t\t\t\t\t\t\t\t\t" : "\n\t\t\t\t\t\t\t\t\t\t<li> <a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global&section=register&do=reval", "public", ''), "", "") . "\" title='{$this->lang->words['resend_val']}'>{$this->lang->words['resend_val']}</a></li>\n\t\t\t\t\t\t\t\t\t") . "" : "") . "\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<!-- ::: USER DROP DOWN MENU ::: -->\n\t\t\t\t\t\t<div id='user_link_menucontent' class='ipsHeaderMenu clearfix boxShadow' style='display: none'>\n\t\t\t\t\t\t\t<a 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']}' class='ipsUserPhotoLink left'>\n\t\t\t\t\t\t\t\t<img src='{$this->memberData['pp_small_photo']}' alt=\"" . sprintf($this->lang->words['users_photo'], $this->memberData['members_display_name']) . "\" class='ipsUserPhoto ipsUserPhoto_medium photo' />\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<div class='left'>\n\t\t\t\t\t\t\t\t" . ($this->registry->getClass('memberStatus')->canCreate($this->memberData) && !($this->settings['board_offline'] && !$this->memberData['g_access_offline']) ? "<form id='statusForm' action='{$this->settings['base_url']}app=members&module=profile&section=status&do=new&k={$this->member->form_hash}&id={$this->memberData['member_id']}' method='post'>\n\t\t\t\t\t\t\t\t\t\t<input type='text' id='statusUpdateGlobal' name='content' class='input_text' style='width: 97%' /><br />\n\t\t\t\t\t\t\t\t\t\t<input type='submit' id='statusSubmitGlobal' class='ipsButton_secondary' value='{$this->lang->words['global_update_status']}' />\n\t\t\t\t\t\t\t\t\t\t" . (((IPSLib::twitter_enabled() or IPSLib::fbc_enabled()) and ($this->memberData['fb_uid'] or $this->memberData['twitter_id'])) ? " \n\t\t\t\t\t\t\t\t\t\t\t" . ((IPSLib::twitter_enabled() and $this->memberData['twitter_id']) ? "<input type='checkbox' id='su_TwitterGlobal' value='1' name='su_Twitter' /> <label for='su_TwitterGlobal' class='desc ipsType_smaller'>{$this->lang->words['su_cb_twitter']}</label>" : "") . " \n\t\t\t\t\t\t\t\t\t\t\t" . ((IPSLib::fbc_enabled() and $this->memberData['fb_uid']) ? " <input type='checkbox' id='su_FacebookGlobal' value='1' name='su_Facebook' /> <label for='su_FacebookGlobal' class='desc ipsType_smaller'>{$this->lang->words['su_cb_facebook']}</label>" : "") . "" : "") . "\n\t\t\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t\t\t<hr />\n\t\t\t\t\t\t\t\t\t</form>" : "") . "\n\t\t\t\t\t\t\t\t\t<ul id='links'>\n\t\t\t\t\t\t\t\t\t\t<li id='user_profile'><a 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->lang->words['my_profile']}</a></li>\n\t\t\t\t\t\t\t\t\t\t<li id='user_ucp'><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=usercp", "public", ''), "", "") . "\" title=\"{$this->lang->words['cp_tool_tip']}\">{$this->lang->words['your_cp']}</a></li>\n\t\t\t\t\t\t\t\t\t\t<li id='user_content'><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=search&do=user_activity&mid={$this->memberData['member_id']}", "public", ''), "", "") . "\" title=\"{$this->lang->words['my_content_link']}\">{$this->lang->words['my_content_link']}</a></li>\n\t\t\t\t\t\t\t\t\t\t" . (count(IPSLib::getEnabledApplications('like')) ? "\n\t\t\t\t\t\t\t\t\t\t\t<li id='user_likes'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=search&do=followed", "public", ''), "", "") . "' title='{$this->lang->words['your_likes']}'>{$this->lang->words['your_likes']}</a></li>\n\t\t\t\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t\t\t\t" . ($this->settings['friends_enabled'] && $this->memberData['g_can_add_friends'] ? "\n\t\t\t\t\t\t\t\t\t\t\t<li id='user_friends'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=members&module=profile&section=friends&do=list", "public", ''), "", "") . "' title=\"{$this->lang->words['manage_friends']}\" class='manage_friends'>{$this->lang->words['manage_friends']}</a></li>\n\t\t\t\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t\t\t\t<li id='user_enemies'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=usercp&tab=core&area=ignoredusers", "public", ''), "", "") . "' title=\"{$this->lang->words['manage_ignored_users']}\" class='manage_enemies'>{$this->lang->words['manage_ignored_users']}</a></li>\n\t\t\t\t\t\t\t\t\t\t" . (($this->memberData['has_blog'] and IPSLib::appIsInstalled('blog')) ? "\n\t\t\t\t\t\t\t\t\t\t\t<li id='user_blog'><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=blog&module=manage", "public", ''), "false", "manageblog") . "\">{$this->lang->words['manage_blogs']}</a></li>\n\t\t\t\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t\t\t\t" . ($this->memberData['members_disable_pm'] != 2 && $this->memberData['g_use_pm'] ? "\n\t\t\t\t\t\t\t\t\t\t\t<li id='user_pm'><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=members&module=messaging", "public", ''), "", "") . "\">{$this->lang->words['user_dd_go_pm']}</a></li>\n\t\t\t\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t\t\t\t" . (($this->memberData['has_gallery'] and IPSLib::appIsInstalled('gallery')) ? "\n\t\t\t\t\t\t\t\t\t\t\t<li id='user_gallery'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=gallery&user={$this->memberData['member_id']}", "public", ''), "{$this->memberData['members_seo_name']}", "useralbum") . "' title=\"{$this->lang->words['go_to_my_gallery']}\">{$this->lang->words['my_gallery']}</a></li>\n\t\t\t\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t\t\t\t" . (IPSLib::appIsInstalled('nexus') ? "\n\t\t\t\t\t\t\t\t\t\t\t<li id='user_nexus'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=nexus&module=clients", "public", ''), "", "") . "' title=\"{$this->lang->words['client_area']}\">{$this->lang->words['client_area']}</a></li>\n\t\t\t\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>" : "<div id='user_navigation' class='not_logged_in'>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<ul class='ipsList_inline right'>\n\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t<span class='services'>\n\t\t\t\t\t\t\t\t\t\t" . (IPSLib::loginMethod_enabled('facebook') ? "\n\t\t\t\t\t\t\t\t\t\t\t<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global&section=login&serviceClick=facebook", "public", ''), "", "") . "'>" . $this->registry->getClass('output')->getReplacement("lim_facebook") . "</a>\n\t\t\t\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t\t\t\t" . (IPSLib::loginMethod_enabled('twitter') ? "\n\t\t\t\t\t\t\t\t\t\t\t<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global&section=login&serviceClick=twitter", "public", ''), "", "") . "'>" . $this->registry->getClass('output')->getReplacement("lim_twitter") . "</a>\n\t\t\t\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t\t\t\t" . (IPSLib::loginMethod_enabled('live') ? "\n\t\t\t\t\t\t\t\t\t\t\t<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global&section=login&do=process&use_live=1&auth_key={$this->member->form_hash}", "public", ''), "", "") . "'>" . $this->registry->getClass('output')->getReplacement("lim_windows") . "</a>\n\t\t\t\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global&section=login", "public", ''), "", "") . "' title='{$this->lang->words['sign_in']}' id='sign_in'>{$this->lang->words['sign_in']}</a> \n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t<a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global&section=register", "public", ''), "", "") . "\" title='{$this->lang->words['register']}' id='register_link'>{$this->lang->words['register']}</a>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</div>") . "\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<!-- ::: BRANDING STRIP: Logo and search box ::: -->\n\t\t\t<div id='branding'>\n\t\t\t\t<div class='main_width'>\n\t\t\t\t\t<div id='logo'>\n\t\t\t\t\t\t" . (ipsRegistry::$applications[$this->registry->getCurrentApplication()]['hasCustomHeader'] ? "\n\t\t\t\t\t\t\t" . (method_exists($this->registry->getClass('output')->getTemplate('' . $this->registry->getCurrentApplication() . '_global'), 'overwriteHeader') ? $this->registry->getClass('output')->getTemplate('' . $this->registry->getCurrentApplication() . '_global')->overwriteHeader() : '') . "\n\t\t\t\t\t\t" : "\n\t\t\t\t\t\t\t" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'defaultHeader') ? $this->registry->getClass('output')->getTemplate('global')->defaultHeader() : '') . "\n\t\t\t\t\t\t") . "\n\t\t\t\t\t</div>\n\t\t\t\t\t" . ($this->memberData['g_use_search'] && $this->settings['allow_search'] ? "\n\t\t\t\t\t\t" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'quickSearch') ? $this->registry->getClass('output')->getTemplate('global')->quickSearch() : '') . "\n\t\t\t\t\t" : "") . "\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<!-- ::: APPLICATION TABS ::: -->\n\t\t\t<div id='primary_nav' class='clearfix'>\n\t\t\t\t<div class='main_width'>\n\t\t\t\t\t<ul class='ipsList_inline' id='community_app_menu'>\n\t\t\t\t\t\t" . (!(!$this->memberData['member_id'] && $this->settings['force_login']) && !($this->settings['board_offline'] && !$this->memberData['g_access_offline']) && $this->memberData['g_view_board'] ? "\n\t\t\t\t\t\t\t<li class='right'>\n\t\t\t\t\t\t\t\t<a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global&section=navigation&inapp=" . IPS_APP_COMPONENT . "", "public", ''), "", "") . "\" rel=\"quickNavigation\" accesskey='9' id='quickNavLaunch' title='{$this->lang->words['launch_quicknav']}'><span> </span></a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t<li id='nav_explore' class='right'>\n\t\t\t\t\t\t\t<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=search&do=viewNewContent&search_app=" . (($this->registry->getCurrentApplication() != 'core' and IPSLib::appIsSearchable($this->registry->getCurrentApplication())) ? "{$this->registry->getCurrentApplication()}" : "forums") . "", "public", ''), "", "") . "' accesskey='2' title='{$this->lang->words['view_new_posts']}'>{$this->lang->words['view_new_posts']}</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t" . (($this->settings['home_url'] and $this->settings['home_name']) ? "\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" . (!empty($header_items['primary_navigation_menu']) ? "\n\t\t\t\t\t\t\t{$header_items['primary_navigation_menu']}\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\t" . $this->__f__a62585487074a52c6628d82c3876e110($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . "\t\t\t\t\t\t\t" : "") . "") . "\n\t\t\t\t\t\t<li id='nav_other_apps' style='display: none'>\n\t\t\t\t\t\t\t<a href='#' class='ipbmenu' id='more_apps'>{$this->lang->words['more_apps']} <img src='{$this->settings['img_url']}/useropts_arrow.png' /></a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\t\n\t\t\t\n\t\t\t<!-- ::: MAIN CONTENT AREA ::: -->\n\t\t\t<div id='content' class='clearfix'>\n\t\t\t\t<!-- ::: NAVIGATION BREADCRUMBS ::: -->\n\t\t\t\t" . (count($items['navigation']) ? "<div id='secondary_navigation' class='clearfix'>\n\t\t\t\t\t\t<ol class='breadcrumb top ipsList_inline left'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t" . ((!$this->settings['remove_forums_nav'] or ipsRegistry::$current_application == 'forums') ? "<li itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\">\n\t\t\t\t\t\t\t\t\t<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("act=idx", "public", ''), "false", "") . "' itemprop=\"url\">\n\t\t\t\t\t\t\t\t\t\t<span itemprop=\"title\">{$this->settings['board_name']}</span>\n\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t" . (($this->did_first = 1) ? "" : "") . "" : "") . "\n\t\t\t\t\t\t\t" . $this->__f__0d4c6f6af396c9b3b3363a4c475d9a7f($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . "\t\t\t\t\t\t</ol>\n\t\t\t\t\t</div>\n\t\t\t\t\t<br />" : "") . "\n\t\t\t\t<noscript>\n\t\t\t\t\t<div class='message error'>\n\t\t\t\t\t\t<strong>{$this->lang->words['gbl_no_js_title']}</strong>\n\t\t\t\t\t\t<p>{$this->lang->words['gbl_no_js']}</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<br />\n\t\t\t\t</noscript>\n\t\t\t\t<!-- ::: CONTENT ::: -->\n\t\t\t\t" . ($items['adHeaderCode'] ? "\n\t\t\t\t\t<div class='ipsAd'>{$items['adHeaderCode']}</div>\n\t\t\t\t" : "") . "\n\t\t\t\t" . ($html ? "{$html}" : "") . "\n\t\t\t\t" . ($items['adFooterCode'] ? "\n\t\t\t\t\t<div class='ipsAd'>{$items['adFooterCode']}</div>\n\t\t\t\t" : "") . "\n\t\t\t\t<ol class='breadcrumb bottom ipsList_inline left clearfix clear'>\n\t\t\t\t\t" . (count($items['navigation']) ? "\t\t\t\t\t\t" . ((!$this->settings['remove_forums_nav'] or ipsRegistry::$current_application == 'forums') ? "<li><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_bottom = 1) ? "" : "") . "" : "") . "\n\t\t\t\t\t\t" . $this->__f__fca2d91bf1367c001172b67788f657a7($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . "" : "\n\t\t\t\t\t\t<li> </li>\n\t\t\t\t\t") . "\n\t\t\t\t\t" . ($this->settings['priv_title'] ? "\n\t\t\t\t\t<li class='right ipsType_smaller'>\n\t\t\t\t\t\t<a rel=\"nofollow\" href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global&section=privacy", "public", ''), "false", "privacy") . "'>{$this->settings['priv_title']}</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t" : "") . "\n\t\t\t\t\t" . (($this->settings['gl_show'] and $this->settings['gl_title']) ? "<li class='right ipsType_smaller'>\n\t\t\t\t\t\t\t<a href='" . ($this->settings['gl_link'] ? "{$this->settings['gl_link']}" : "" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=forums&module=extras&section=boardrules", "public", ''), "", "") . "") . "' title='" . ($this->settings['gl_title'] ? "{$this->settings['gl_title']}" : "{$this->lang->words['board_rules']}") . "'>" . ($this->settings['gl_title'] ? "{$this->settings['gl_title']}" : "{$this->lang->words['board_rules']}") . "</a>" . ($this->settings['priv_title'] ? " · " : "") . "\n\t\t\t\t\t\t</li>" : "") . "\t\n\t\t\t\t</ol>\n\t\t\t</div>\n\t\t\t<!-- ::: FOOTER (Change skin, language, mark as read, etc) ::: -->\n\t\t\t<div id='footer_utilities' class='main_width clearfix clear'>\n\t\t\t\t<a rel=\"nofollow\" href='#top' id='backtotop' title='{$this->lang->words['go_to_top']}'><img src='{$this->settings['img_url']}/top.png' alt='' /></a>\n\t\t\t\t<ul class='ipsList_inline left'>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<img src='{$this->settings['img_url']}/feed.png' alt='{$this->lang->words['rss_feed']}' id='rss_feed' class='clickable' />\n\t\t\t\t\t</li>\n\t\t\t\t\t" . (!$this->member->is_not_human ? "" . (($this->memberData['userAgentLocked'] and !$this->memberData['userAgentBypass']) ? "\n\t\t\t\t\t\t\t<li id='useragent_msg'>\n\t\t\t\t\t\t\t\t{$this->lang->words['skin_browser_set']} <a href='#' data-clicklaunch='changeSkin' data-skinid='unlockUserAgent'>{$this->lang->words['override_browser_theme']}</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t" : "" . ($this->registry->output->isTouchDevice() ? "\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href='#' data-clicklaunch='changeSkin' data-skinid='setAsMobile'>{$this->lang->words['set_mobile_theme']}</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t" . (count($footer_items['skin_chooser']) > 1 ? "\n\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t<a rel=\"nofollow\" id='new_skin' href='#' title='{$this->lang->words['change_theme']}'>{$this->lang->words['change_theme']}</a>\t\t\t\n\t\t\t\t\t\t\t\t\t<ul id='new_skin_menucontent' class='ipbmenu_content with_checks' style='display: none'>\n\t\t\t\t\t\t\t\t\t\t" . $this->__f__1156e151a7185db1131bc7d8e3f6b51b($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . "\t\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t" : "") . "") . "" : "") . "\n\t\t\t\t\t" . (!$this->member->is_not_human && count($footer_items['lang_chooser']['options']) > 1 ? "\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<a rel=\"nofollow\" href='#' id='new_language'>{$footer_items['lang_chooser']['default']}</a>\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<ul id='new_language_menucontent' class='ipbmenu_content with_checks' style='display: none'>\n\t\t\t\t\t\t\t\t" . $this->__f__e05dd4b97e748ba89c1cd676e08a9337($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . "\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t" : "") . "\n\t\t\t\t\t" . (!$this->member->is_not_human && ($this->memberData['member_id'] || $this->settings['topic_marking_guests']) ? "\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<a rel=\"nofollow\" id='mark_all_read' href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=forums&module=forums&section=markasread&marktype=all&k={$this->member->form_hash}", "public", ''), "", "") . "\" title='{$this->lang->words['mark_all_as_read']}'>{$this->lang->words['mark_board_as_read']}</a>\n\t\t\t\t\t\t\t<ul id='mark_all_read_menucontent' class='ipbmenu_content' style='display: none'>\n\t\t\t\t\t\t\t\t" . $this->__f__7f370447b0b396d1c2920623a517e34c($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . "\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t<a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=forums&module=forums&section=markasread&marktype=all&k={$this->member->form_hash}", "public", ''), "", "") . "\"><strong>{$this->lang->words['mark_all_as_read']}</strong></a>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t" : "") . "\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=help", "public", ''), "", "") . "\" title='{$this->lang->words['view_help']}' rel=\"help\" accesskey='6'>{$this->lang->words['sj_help']}</a>\n\t\t\t\t\t</li>\t\t\t\t\n\t\t\t\t</ul>\n\t\t\t\t{$footer_items['copyright']}\n\t\t\t</div>\n\t\t\t" . (($this->memberData['member_id'] and $this->settings['debug_level']) ? "<div id='ipsDebug_footer'>\n\t\t\t\t\t<strong>{$this->lang->words['time_now']}</strong> {$footer_items['time']}\n\t\t\t\t\t" . (($this->memberData['member_id'] and $this->memberData['last_visit']) ? "<strong>{$this->lang->words['you_last_visit']}</strong> " . IPSText::htmlspecialchars($this->registry->getClass('class_localization')->getDate($this->memberData['last_visit'], "short", 0)) . "" : "") . "\n\t\t\t\t\t<strong>{$this->lang->words['stat_exec']}</strong> {$stats['ex_time']} " . (is_float($stats['ex_time']) ? "{$this->lang->words['stats_sec']}" : "") . "\n\t\t\t\t\t<strong>{$this->lang->words['stat_load']}</strong> {$stats['server_load']}\n\t\t\t\t\t<strong>{$this->lang->words['stat_queries']}</strong> {$stats['queries']} " . (IPS_SQL_DEBUG_MODE ? "<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("{$this->settings['query_string_safe']}&debug=1", "public", ''), "", "") . "'>" : "") . "{$this->lang->words['stats_queries']}" . (IPS_SQL_DEBUG_MODE ? "</a>" : "") . "\n\t\t\t\t\t<strong>{$this->lang->words['stat_gzip']}</strong> {$stats['gzip_status']}\n\t\t\t\t</div>" : "") . "\n\t\t\t{$stats['task']}\n\t\t\t" . ($this->settings['do_include_lightbox_real'] ? "\n\t\t\t\t" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'include_lightbox_real') ? $this->registry->getClass('output')->getTemplate('global')->include_lightbox_real() : '') . "\n\t\t\t" : "\n\t\t\t\t<script type=\"text/javascript\">\n\t\t\t\t\tipb.global.lightBoxIsOff();\n\t\t\t\t</script>\n\t\t\t") . "\n\t\t\t" . (!$this->memberData['member_id'] ? "" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'inlineLogin') ? $this->registry->getClass('output')->getTemplate('global')->inlineLogin() : '') . "" : "") . "\n\t\t</div>\n\t\t\n\t\t<!--DEBUG_STATS-->\n\t\t<script type='text/javascript'>\n\t\t\tif( \$('primary_nav') ){\tipb.global.activateMainMenu(); }\n\t\t</script>\n\t\t" . (($this->settings['viglink_enabled'] and (!$this->settings['viglink_groups'] or IPSMember::isInGroup($this->memberData, explode(',', $this->settings['viglink_groups'])))) ? "<script type=\"text/javascript\">\n\t\t\t var vglnk = { api_url: '//api.viglink.com/api',\n\t\t\t key: '{$this->settings['viglink_api_key']}'" . ($this->settings['viglink_subid'] ? ",\n\t\t\t sub_id: '{$this->settings['sub_id']}'\n\t\t\t " : "") . "\n\t\t\t };\n\t\t\t\n\t\t\t (function(d, t) {\n\t\t\t var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;\n\t\t\t s.src = ('https:' == document.location.protocol ? vglnk.api_url :\n\t\t\t '//cdn.viglink.com/api') + '/vglnk.js';\n\t\t\t var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r);\n\t\t\t }(document, 'script'));\n\t\t\t</script>" : "") . "\t</body>\n</html>"; return $IPBHTML; }
/** * Manage */ public function manage() { $enhancements = array(); foreach (IPSLib::getEnabledApplications() as $app) { if (is_dir(IPSLib::getAppDir($app['app_directory']) . '/extensions/enhancements')) { $dir = new DirectoryIterator(IPSLib::getAppDir($app['app_directory']) . '/extensions/enhancements'); foreach ($dir as $file) { if ($file->isFile() and !$file->isDot() and substr($file, 0, 1) !== '.' and substr($file, -4) === '.php') { $className = "enhancements_{$app['app_directory']}_" . str_replace('.php', '', $file->getFilename()); /* Backup system isn't ready */ if ($className == 'enhancements_core_ipsbackup') { continue; } $classToLoad = IPSLib::loadLibrary($file->getPathName(), $className); $enhancements[$className] = new $classToLoad($this->registry); } } } } uasort($enhancements, create_function('$a, $b', 'return $a->title > $b->title;')); $this->registry->output->html .= $this->html->communityEnhancements($enhancements); }
/** * Set up a member's secondary groups * * @param array $data Member data * @return @e array Member data with secondary group perms set properly */ public static function setUpSecondaryGroups($data) { if (!empty($data['mgroup_others'])) { $cache = ipsRegistry::cache()->getCache('group_cache'); $groups_id = explode(',', $data['mgroup_others']); $exclude = array('g_id', 'g_title', 'g_icon', 'prefix', 'suffix', 'g_promotion', 'g_photo_max_vars'); $less_is_more = array('g_search_flood'); $neg1_is_best = array(); $zero_is_best = array('g_attach_max', 'g_attach_per_post', 'g_edit_cutoff', 'g_max_messages', 'g_pm_perday', 'g_pm_flood_mins', 'g_displayname_unit', 'g_sig_unit', 'g_mod_preview', 'g_ppd_limit', 'g_ppd_unit', 'gbw_no_status_update', 'g_max_bgimg_upload', 'gbw_disable_prefixes', 'gbw_disable_tagging'); $special = array('g_signature_limits', 'g_dname_date', 'g_dname_changes', 'g_mod_post_unit', 'gbw_mod_post_unit_type'); //----------------------------------------- // Merge in per-app group overrides //----------------------------------------- foreach (IPSLib::getEnabledApplications() as $application) { if (!empty($application['extensions']['groupOptions'])) { if (!empty($application['extensions']['groupOptions']['neg1_is_best']) and is_array($application['extensions']['groupOptions']['neg1_is_best'])) { $neg1_is_best = array_merge($neg1_is_best, $application['extensions']['groupOptions']['neg1_is_best']); } if (!empty($application['extensions']['groupOptions']['zero_is_best']) and is_array($application['extensions']['groupOptions']['zero_is_best'])) { $zero_is_best = array_merge($zero_is_best, $application['extensions']['groupOptions']['zero_is_best']); } if (!empty($application['extensions']['groupOptions']['less_is_more']) and is_array($application['extensions']['groupOptions']['less_is_more'])) { $less_is_more = array_merge($less_is_more, $application['extensions']['groupOptions']['less_is_more']); } if (!empty($application['extensions']['groupOptions']['exclude']) and is_array($application['extensions']['groupOptions']['exclude'])) { $exclude = array_merge($exclude, $application['extensions']['groupOptions']['exclude']); } } } //----------------------------------------- // Merge permissions //----------------------------------------- if (count($groups_id)) { foreach ($groups_id as $pid) { if (empty($cache[$pid]['g_id'])) { continue; } //----------------------------------------- // Loop through and mix //----------------------------------------- foreach ($cache[$pid] as $k => $v) { if (!in_array($k, $exclude)) { //----------------------------------------- // Add to perm id list //----------------------------------------- if ($k == 'g_perm_id') { $data['g_perm_id'] .= ',' . $v; } else { if (in_array($k, $zero_is_best)) { if (empty($data[$k])) { continue; } else { if ($v == 0) { $data[$k] = 0; } else { if ($v > $data[$k]) { $data[$k] = $v; } } } } else { if (in_array($k, $neg1_is_best)) { if ($data[$k] == -1) { continue; } else { if ($v == -1) { $data[$k] = -1; } else { if ($v > $data[$k]) { $data[$k] = $v; } } } } else { if (in_array($k, $less_is_more)) { if ($v < $data[$k]) { $data[$k] = $v; } } else { if (in_array($k, $special)) { switch ($k) { case 'g_signature_limits': //----------------------------------------- // No limits should win out //----------------------------------------- if (!$data[$k]) { continue; } //----------------------------------------- // We have limits //----------------------------------------- if ($v) { $values = explode(':', $v); $_cur = explode(':', $data[$k]); $_new = array(); foreach ($values as $index => $value) { if ($_cur[$index] === null or $values[$index] === null or $_cur[$index] === '' or $values[$index] === '') { $_new[$index] = null; } elseif ($index == 0 and $_cur[$index] > $values[$index]) { $_new[$index] = $values[$index]; } elseif ($index == 0 and $_cur[$index] < $values[$index]) { $_new[$index] = $_cur[$index]; } else { if ($_cur[$index] > $values[$index]) { $_new[$index] = $_cur[$index]; } else { $_new[$index] = $values[$index]; } } } ksort($_new); $data[$k] = implode(':', $_new); } else { //----------------------------------------- // Set no limits //----------------------------------------- $data[$k] = null; } break; case 'g_dname_date': //----------------------------------------- // We'll handle this in g_dname_changes //----------------------------------------- continue; break; case 'g_dname_changes': $changes = $v; $timeFrame = $cache[$pid]['g_dname_date']; //----------------------------------------- // No time frame restriction //----------------------------------------- if (!$timeFrame) { //----------------------------------------- // This group allows more changes //----------------------------------------- if ($changes > $data[$k]) { $data[$k] = $changes; $data['g_dname_date'] = 0; } else { if ($data['g_dname_date']) { if ($data[$k]) { $_compare = round($data['g_dname_date'] / $data[$k]); if ($_compare > $changes) { $data[$k] = $changes; $data['g_dname_date'] = 0; } } } } } else { if ($changes) { $_compare = round($timeFrame / $changes); //----------------------------------------- // Existing has no time frame restriction //----------------------------------------- if (!$data['g_dname_date'] and $data[$k]) { if ($_compare < $data[$k]) { $data[$k] = $changes; $data['g_dname_date'] = $timeFrame; } } else { if (!$data['g_dname_date']) { $data[$k] = $changes; $data['g_dname_date'] = $timeFrame; } else { if ($data['g_dname_date'] and $data[$k]) { $_oldCompare = $data['g_dname_date'] / $data[$k]; if ($_compare < $_oldCompare) { $data[$k] = $changes; $data['g_dname_date'] = $timeFrame; } } } } } } break; case 'g_mod_post_unit': /* Have we met the current requirements? */ if (!$data['gbw_mod_post_unit_type'] and $data['g_mod_post_unit'] >= $data['posts'] or $data['gbw_mod_post_unit_type'] and time() >= $data['joined'] + $data['g_mod_post_unit'] * 3600) { // Yes - so let's stick with this continue; } else { // No - go with the new group $data['g_mod_post_unit'] = $cache[$pid]['g_mod_post_unit']; $data['gbw_mod_post_unit_type'] = $cache[$pid]['gbw_mod_post_unit_type']; } break; case 'gbw_mod_post_unit_type': // We handle this with g_mod_post_unit - so do nothing break; } } else { if (!isset($data[$k]) or $v > $data[$k]) { $data[$k] = $v; } } } } } } } } } } //----------------------------------------- // Tidy perms_id //----------------------------------------- $rmp = array(); $tmp = explode(',', IPSText::cleanPermString($data['g_perm_id'])); if (count($tmp)) { foreach ($tmp as $t) { $rmp[$t] = $t; } } if (count($rmp)) { $data['g_perm_id'] = implode(',', $rmp); } } return $data; }
/** * Main function executed automatically by the controller * * @param object $registry Registry object * @return @e void */ public function doExecute(ipsRegistry $registry) { //----------------------------------------- // Load basic things //----------------------------------------- $this->registry->class_localization->loadLanguageFile(array('public_reports')); $this->DB->loadCacheFile(IPSLib::getAppDir('core') . '/sql/' . ips_DBRegistry::getDriverType() . '_report_queries.php', 'report_sql_queries'); $classToLoad = IPSLib::loadLibrary(IPSLib::getAppDir('core') . '/sources/classes/reportLibrary.php', 'reportLibrary'); $this->registry->setClass('reportLibrary', new $classToLoad($this->registry)); //----------------------------------------- // Check permissions... //----------------------------------------- if ($this->request['do'] and $this->request['do'] != 'report' and !IPSMember::isInGroup($this->memberData, explode(',', IPSText::cleanPermString($this->settings['report_mod_group_access'])))) { $this->registry->output->showError('no_reports_permission', 2018, true, null, 403); } $this->registry->output->setTitle($this->lang->words['main_title'] . ' - ' . ipsRegistry::$settings['board_name']); //----------------------------------------- // Which road are we going to take? //----------------------------------------- switch ($this->request['do']) { default: case 'report': $this->_initReportForm(); break; case 'showMessage': $this->_viewReportedMessage(); break; case 'index': $this->_displayReportCenter(); break; case 'process': $this->_processReports(); break; case 'findfirst': $this->findFirstReport(); break; case 'show_report': $this->_displayReport(); break; } if ($this->request['do'] and $this->request['do'] != 'report') { /* Init some data */ $_tabs = array(); $_activeNav = array('primary' => 'reported_content', 'secondary' => 'reports'); $moderator = $this->registry->class_forums->getModerator(); $this->registry->class_localization->loadLanguageFile(array('public_modcp'), 'core'); /** * Loop through all apps and get plugins * * @note When updating this code below remember to update also the core in public_core_modcp_modcp */ foreach (IPSLib::getEnabledApplications() as $appDir => $appData) { if (is_dir(IPSLib::getAppDir($appDir) . '/extensions/modcp')) { try { foreach (new DirectoryIterator(IPSLib::getAppDir($appDir) . '/extensions/modcp') as $file) { if (!$file->isDot() && $file->isFile()) { if (preg_match("/^plugin_(.+?)\\.php\$/", $file->getFileName(), $matches)) { //----------------------------------------- // We load each plugin so it can determine // if it should show based on permissions //----------------------------------------- $classToLoad = IPSLib::loadLibrary($file->getPathName(), 'plugin_' . $appDir . '_' . $matches[1], $appDir); $_plugins[$appDir][$matches[1]] = new $classToLoad($this->registry); if ($_plugins[$appDir][$matches[1]]->canView($moderator)) { //----------------------------------------- // Hacky solution - we want forum plugins to // come first as they're the most used //----------------------------------------- if ($appDir == 'forums' and !empty($_tabs[$_plugins[$appDir][$matches[1]]->getPrimaryTab()])) { array_unshift($_tabs[$_plugins[$appDir][$matches[1]]->getPrimaryTab()], array($_plugins[$appDir][$matches[1]]->getSecondaryTab(), $appDir, $matches[1])); } else { $_tabs[$_plugins[$appDir][$matches[1]]->getPrimaryTab()][] = array($_plugins[$appDir][$matches[1]]->getSecondaryTab(), $appDir, $matches[1]); } } } } } } catch (Exception $e) { } } } // Move trash can to the bottom - if available if (isset($_tabs['deleted_content'])) { $trashCan = $_tabs['deleted_content']; unset($_tabs['deleted_content']); $_tabs['deleted_content'] = $trashCan; } $this->output = $this->registry->output->getTemplate('modcp')->portalPage($this->output, $_tabs, $_activeNav); } //----------------------------------------- // Output //----------------------------------------- $this->registry->getClass('output')->addContent($this->output); $this->registry->output->sendOutput(); }
/** * View content you are following * * @author Brandon Farber * @param string $error Error message * @return @e void */ public function viewFollowedContent($error = '') { IPSSearchRegistry::set('in.search_app', $this->request['search_app']); IPSSearchRegistry::set('opt.searchType', 'titles'); IPSSearchRegistry::set('opt.noPostPreview', true); $results = array(); $formatted = array(); $count = 0; //----------------------------------------- // Determine content type //----------------------------------------- $contentTypes = IPSSearchRegistry::get('config.followContentTypes'); //----------------------------------------- // Verify likes are available //----------------------------------------- if (count(IPSLib::getEnabledApplications('like')) and count($contentTypes) and IPSLib::appIsInstalled(IPSSearchRegistry::get('in.search_app'), true)) { //----------------------------------------- // What content type? //----------------------------------------- $_type = ''; if ($this->request['contentType'] and in_array($this->request['contentType'], $contentTypes)) { $_type = $this->request['contentType']; } else { $_type = $contentTypes[0]; } $this->request['contentType'] = $_type; IPSSearchRegistry::set('in.followContentType', $this->request['contentType']); /* Fetch like class */ try { require_once IPS_ROOT_PATH . 'sources/classes/like/composite.php'; /*noLibHook*/ $this->_like = classes_like::bootstrap(IPSSearchRegistry::get('in.search_app'), $_type); } catch (Exception $e) { /* Fail safe... */ $this->registry->output->addNavigation($this->lang->words['followed_ct_title'], ''); $this->title = $this->lang->words['followed_ct_title']; $this->output .= $this->registry->output->getTemplate('search')->followedContentView(array(), '', 0, $error, $contentTypes); } /* Do we have some custom join and sort data? */ if (method_exists($this->_like, 'getSearchJoinAndSortBy')) { $custom = $this->_like->getSearchJoinAndSortBy(); $countQ = array('select' => 'COUNT(*) as er', 'from' => array('core_like' => 'l'), 'where' => 'like_member_id=' . $this->memberData['member_id'] . " AND like_visible=1 AND like_app='" . IPSSearchRegistry::get('in.search_app') . "' AND like_area='" . $_type . "'"); if ($custom['from']) { $countQ['add_join'][] = array('from' => $custom['from'], 'where' => $custom['where']); } if ($custom['order']) { $countQ['order'] = $custom['order'] . ' DESC'; } if ($custom['extraWhere']) { $countQ['where'] .= ' AND ' . $custom['extraWhere']; } $count = $this->DB->buildAndFetch($countQ); $count = $count['er']; $q = array('select' => 'l.*', 'from' => array('core_like' => 'l'), 'where' => 'l.like_member_id=' . $this->memberData['member_id'] . " AND l.like_visible=1 AND l.like_app='" . IPSSearchRegistry::get('in.search_app') . "' AND l.like_area='" . $_type . "'", 'limit' => array(IPSSearchRegistry::get('in.start'), IPSSearchRegistry::get('opt.search_per_page')), 'order' => 'like_added DESC'); if ($custom['from']) { $q['add_join'][] = array('from' => $custom['from'], 'where' => $custom['where']); } if ($custom['order']) { $q['order'] = $custom['order'] . ' DESC'; } if ($custom['extraWhere']) { $q['where'] .= ' AND ' . $custom['extraWhere']; } $this->DB->build($q); } else { $count = $this->DB->buildAndFetch(array('select' => 'COUNT(*) as er', 'from' => 'core_like', 'where' => 'like_member_id=' . $this->memberData['member_id'] . " AND like_visible=1 AND like_app='" . IPSSearchRegistry::get('in.search_app') . "' AND like_area='" . $_type . "'")); $count = $count['er']; $this->DB->build(array('select' => '*', 'from' => 'core_like', 'where' => 'like_member_id=' . $this->memberData['member_id'] . " AND like_visible=1 AND like_app='" . IPSSearchRegistry::get('in.search_app') . "' AND like_area='" . $_type . "'", 'limit' => array(IPSSearchRegistry::get('in.start'), IPSSearchRegistry::get('opt.search_per_page')), 'order' => 'like_added DESC')); } $outer = $this->DB->execute(); while ($r = $this->DB->fetch($outer)) { $results[] = $r['like_rel_id']; $formatted[$r['like_id']] = $r; } /* Process */ $results = $this->searchController->fetchFollowedContentOutput($results, $formatted); $pages = $this->registry->getClass('output')->generatePagination(array('totalItems' => $count, 'itemsPerPage' => IPSSearchRegistry::get('opt.search_per_page'), 'currentStartValue' => IPSSearchRegistry::get('in.start'), 'baseUrl' => "app=core&module=search&do=followed&search_app=" . IPSSearchRegistry::get('in.search_app') . '&sid=' . $this->request['_sid'] . "&contentType=" . $this->request['contentType'])); } else { $count = 0; $results = array(); } /* Output */ $this->registry->output->addNavigation($this->lang->words['followed_ct_title'], ''); $this->title = $this->lang->words['followed_ct_title']; $this->output .= $this->registry->output->getTemplate('search')->followedContentView($results, $pages, $count, $error, $contentTypes); }
function hookSidebarProfile($author = array()) { $IPBHTML = ""; if (IPSLib::locationHasHooks('skin_boards', $this->_funcHooks['hookSidebarProfile'])) { $count_bfcfe5d42d57144d1b6e99bab2989ca3 = is_array($this->functionData['hookSidebarProfile']) ? count($this->functionData['hookSidebarProfile']) : 0; $this->functionData['hookSidebarProfile'][$count_bfcfe5d42d57144d1b6e99bab2989ca3]['author'] = $author; } $IPBHTML .= "<!-- ::: Sidebar profilis - pradžia kodo ::: -->\n\n<td>\n<div id='content3'>\n" . ($this->memberData['member_id'] ? "<div class='ipsSideBlock clearfix'" . (($this->memberData['is_mod'] or !empty($this->memberData['access_report_center']) || ($this->memberData['g_access_cp'] and !$this->settings['security_remove_acp_link'])) ? "" : "") . "'>\n <h3>{$this->lang->words['info_hytext']}, <a 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']}</a></h3>\n<div class='_sbcollapsable'>\n\n<center>\n<a 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']}'>\n<div class=\"align: center\"><img src='{$this->memberData['pp_small_photo']}' alt=\"" . sprintf($this->lang->words['users_photo'], $this->memberData['members_display_name']) . "\" class='ipsUserPhotoSidebare ipsUserPhoto_profileside photo' /></a><br />\n<br /><div class=\"titlebgg\">{$this->memberData['g_title']}</div>\n</div><br />\n\n</center>\n<h2 style=\"text-align:left;text-indent:0px;position:absolute;left:10px;right:10px;\">{$this->lang->words['info_profinfo']}<ul class='ipsList_inline right'>\n\n " . (!(!$this->memberData['member_id'] && $this->settings['force_login']) && !($this->settings['board_offline'] && !$this->memberData['g_access_offline']) ? "\n <a href=\"?app=members&module=messaging\"><img src=\"http://community.invisionpower.com/filestore/public/style_images/master/email.png\" /></a>\n \n <li><a href=\"?app=core&module=usercp&tab=core&area=notificationlog\"><img src=\"http://community.invisionpower.com/filestore/public/style_images/master/bell.png\" /></a></li>\n " : "") . "</ul></h2>\n<br><br><br /><br />\n<div class=\"extraUserInfo\">\n\n <dl class=\"pairsJustified\">\n <li class=\"post_count desc lighter\">\n <dt>{$this->lang->words['info_postcont']}:</dt>\n <dd><div class='textbordg'>{$this->memberData['posts']}</div></dd>\n </li>\n </dl>\n <dl class=\"pairsJustified\">\n <li class=\"post_count desc lighter\">\n <dt>{$this->lang->words['info_profview']}:</dt>\n <dd><div class=\"textbordg\">{$this->memberData['members_profile_views']}</div></dd>\n </li>\n </dl>\n <dl class=\"pairsJustified\">\n <li class=\"post_count desc lighter\">\n <dt>ID:</dt>\n <dd><div class=\"textbordg\">{$this->memberData['member_id']}</div></dd>\n </li>\n </dl>\n <dl class=\"pairsJustified\">\n <li class=\"post_count desc lighter\">\n <dt>{$this->lang->words['info_regdate']}:</dt>\n <dd><div class=\"textbordg\">" . IPSText::htmlspecialchars($this->registry->getClass('class_localization')->getDate($this->memberData['joined'], "long", 0)) . "</div></dd>\n </li>\n </dl>\n\n<dl class=\"pairsJustified\">\n <li class=\"post_count desc lighter\">\n <dt>{$this->lang->words['info_repsize']}:</dt>\n <dd><div class=\"textbordg\">{$this->memberData['pp_reputation_points']}</div></dd>\n </li>\n </dl>\n \n</div>\n<br /><br /><br />\n<div class='left quicklinks'>\n<h2 style=\"text-align:left;text-indent:0px;position:absolute;left:10px;right:10px;\">Навигация</h2>\n <ul style='list-style: none;margin-top:32px;margin-bottom:10px;'>\n <br />\n<dl class=\"pairsJustified\">\n<dl class=\"pairsJustified\"></dl>\n<li class=\"post_count desc lighter\"><dt>\n <li id='user_ucp'><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=usercp", "public", ''), "", "") . "\" title=\"{$this->lang->words['cp_tool_tip']}\">{$this->lang->words['your_cp']}</a></li>\n</li></dt></li>\n </dl></dl>\n<dl class=\"pairsJustified\">\n<li class=\"post_count desc lighter\"><dt>\n <li id='user_content'><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=search&do=user_activity&mid={$this->memberData['member_id']}", "public", ''), "", "") . "\" title=\"{$this->lang->words['my_content_link']}\">{$this->lang->words['my_content_link']}</a></li></dt></li>\n</dl>\n<dl class=\"pairsJustified\">\n<li class=\"post_count desc lighter\"><dt>\n " . (count(IPSLib::getEnabledApplications('like')) ? "\n <li id='user_likes'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=search&do=followed", "public", ''), "", "") . "' title='{$this->lang->words['your_likes']}'>{$this->lang->words['your_likes']}</a></li></dt></li>\n</dl>\n " : "") . "\n<dl class=\"pairsJustified\">\n<li class=\"post_count desc lighter\"><dt>\n " . ($this->settings['friends_enabled'] && $this->memberData['g_can_add_friends'] ? "\n <li id='user_friends'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=members&module=profile&section=friends&do=list", "public", ''), "", "") . "' title=\"{$this->lang->words['manage_friends']}\" class='manage_friends'>{$this->lang->words['manage_friends']}</a></li></dt></li>\n </dl>" : "") . "\n<dl class=\"pairsJustified\">\n<li class=\"post_count desc lighter\"><dt>\n <li id='user_enemies'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=usercp&tab=core&area=ignoredusers", "public", ''), "", "") . "' title=\"{$this->lang->words['manage_ignored_users']}\" class='manage_enemies'>{$this->lang->words['manage_ignored_users']}</a></li></dl></dt></li>\n<dl class=\"pairsJustified\">\n<li class=\"post_count desc lighter\"><dt>\n " . (($this->memberData['has_blog'] and IPSLib::appIsInstalled('blog')) ? "\n <li id='user_blog'><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=blog&module=manage", "public", ''), "false", "manageblog") . "\">{$this->lang->words['manage_blogs']}</a></li></dl></dt></li>\n " : "") . "\n " . ($this->memberData['members_disable_pm'] != 2 && $this->memberData['g_use_pm'] ? "\n <li id='user_pm'><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=members&module=messaging", "public", ''), "", "") . "\">{$this->lang->words['user_dd_go_pm']}</a></li>\n " : "") . "\n<li class=\"post_count desc lighter\"><dt>\n " . (($this->memberData['has_gallery'] and IPSLib::appIsInstalled('gallery')) ? "\n <li id='user_gallery'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=gallery&user={$this->memberData['member_id']}", "public", ''), "{$this->memberData['members_seo_name']}", "useralbum") . "' title=\"{$this->lang->words['go_to_my_gallery']}\">{$this->lang->words['my_gallery']}</a></li></dt></li>\n " : "") . "\n " . (IPSLib::appIsInstalled('nexus') ? "\n <li id='user_nexus'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=nexus&module=clients", "public", ''), "", "") . "' title=\"{$this->lang->words['client_area']}\">{$this->lang->words['client_area']}</a></li>\n " : "") . "\n</ul>\n</div>\n<br>\n<br>\n<br>\n<table style='align:center;width:100%;'>\n<!-- <td>\n<a 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']}'><div class='positiv'>{$this->lang->words['my_profile']}</div></a>\n</td>--><td> \n<a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global&section=login&do=logout&k={$this->member->form_hash}", "public", ''), "", "") . "\" title='{$this->lang->words['log_out']}'><div class='singout'>{$this->lang->words['log_out']}</div></a>\n</td></table>\n<br>\n" . (($this->memberData['is_mod'] or !empty($this->memberData['access_report_center']) || ($this->memberData['g_access_cp'] and !$this->settings['security_remove_acp_link'])) ? "<table style=\"align:center;width:100%;\">\n<tbody><tr><td> \n<a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=modcp", "public", ''), "", "") . "\" title='{$this->lang->words['gbl_modcp_link']}'><div class=\"mini-positiv\">{$this->lang->words['gbl_modcp_link']}</div></a>\n</td>" . (($this->memberData['g_access_cp'] and !$this->settings['security_remove_acp_link']) ? "<td>\n<a href=\"{$this->settings['_admin_link']}\" title='{$this->lang->words['admin_cp']}' target=\"_blank\"><div class=\"mini-error\">{$this->lang->words['login_to_acp']}</div></a>\n</td>" : "") . "\n" . ($this->memberData['access_report_center'] && $this->memberData['_cache']['report_num'] > 0 ? "\n<td>\n<a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=reports&do=index", "public", ''), "", "") . "\" title='{$this->lang->words['view_reports']}'><div class=\"mini-error\">{$this->memberData['_cache']['report_num']} {$this->lang->words['report_member_bar']}</div></a>\n</td>" : "") . "\n\n</tr></tbody></table>" : "") . "\n</div>\n</div>\n</div>" : "") . " \n <!-- ::: Sidebar profilis - pabaiga kodo ::: -->"; return $IPBHTML; }
/** * Builds a list of nag panel entries * * @return array */ public function getNotificationPanelEntries() { /* INIT */ $entries = array(); /* Look for notification classes */ foreach (IPSLib::getEnabledApplications() as $r) { /* Notification Class */ $_file = IPSLib::getAppDir($r['app_directory']) . '/extensions/dashboardNotifications.php'; /* Look for the file */ if (is_file($_file)) { /* Get the file */ $_class = IPSLib::loadLibrary($_file, 'dashboardNotifications__' . $r['app_directory'], $r['app_directory']); /* Look for the class */ if (class_exists($_class)) { /* Create the object */ $notifyObj = new $_class(); /* Look for the method */ if (method_exists($notifyObj, 'get')) { /* Get the entries */ $_entries = $notifyObj->get(); if (is_array($_entries) && count($_entries)) { $entries = array_merge($entries, $_entries); } } } } } /* Return entries */ return $entries; }
/** * Fetches the output * * @access public * @param string Output gathered * @param string Title of the document * @param array Navigation gathered * @param array Array of document head items * @param array Array of JS loader items * @param array Array of extra data * @return string Output to be printed to the client */ public function fetchOutput($output, $title, $navigation, $documentHeadItems, $jsLoaderItems, $extraData = array()) { //----------------------------------------- // INIT //----------------------------------------- $system_vars_cache = $this->caches['systemvars']; $pmData = FALSE; $notificationLatest = array(); //----------------------------------------- // NORMAL //----------------------------------------- if ($this->_outputType == 'normal') { //----------------------------------------- // Do we have a notification show? //----------------------------------------- if (!empty($this->memberData['msg_show_notification']) and $this->memberData['_cache']['show_notification_popup']) { if (!$this->settings['board_offline'] or $this->memberData['g_access_offline']) { if (strpos(ipsRegistry::$settings['query_string_real'], 'module=messaging') === false) { IPSMember::save($this->memberData['member_id'], array('core' => array('msg_show_notification' => 0))); /* Grab inline notifications... */ $classToLoad = IPSLib::loadLibrary(IPS_ROOT_PATH . '/sources/classes/member/notifications.php', 'notifications'); $notifyLibrary = new $classToLoad($this->registry); $notifyLibrary->setMember($this->memberData); $tmp = $notifyLibrary->getLatestNotificationForInlinePopUp(); $weNeed = array('notify_title', 'member_member_id', 'member_PhotoTag', 'member_members_display_name', 'date_parsed', 'title', 'url', 'type', 'content', 'member_HoverCard'); foreach ($weNeed as $k) { $notificationLatest[$k] = $tmp[$k]; } } } } //----------------------------------------- // Add identifier URL //----------------------------------------- $http = 'http://'; if (strpos($this->settings['board_url'], 'https://') === 0) { $http = 'https://'; } $this->addMetaTag('identifier-url', $http . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); //----------------------------------------- // Add in task image? //----------------------------------------- $task = ''; $system_vars_cache['task_next_run'] = isset($system_vars_cache['task_next_run']) ? $system_vars_cache['task_next_run'] : 0; if (!$this->settings['task_use_cron'] and time() >= $system_vars_cache['task_next_run'] or defined('FORCE_TASK_KEY')) { $_url = !$this->registry->getClass('output')->isHTTPS ? $this->settings['base_url'] : $this->settings['base_url_https']; $task = "<div><img src='" . $_url . "app=core&module=task' alt='' style='border: 0px;height:1px;width:1px;' /></div>"; } //----------------------------------------- // Grab output //----------------------------------------- /* Inline msg */ $inlineMsg = $this->member->sessionClass()->getInlineMessage(); $templateName = 'globalTemplate'; $templateGroup = 'global'; if ($this->useMinimalWrapper) { $templateName = 'globalTemplateMinimal'; $templateGroup = 'global_other'; } /* Do pagination */ if (strstr($title, '<%pageNumber%>')) { $replace = $this->_current_page_title ? ' ' . $this->lang->words['page_title_page'] . ' ' . $this->_current_page_title : ''; $title = str_replace('<%pageNumber%>', $replace, $title); } else { if ($this->_current_page_title) { $title = $title . ' ' . $this->lang->words['page_title_page'] . ' ' . $this->_current_page_title; } } $finalOutput = $this->output->getTemplate($templateGroup)->{$templateName}($output, $documentHeadItems, $this->_css, $jsLoaderItems, $this->_metaTags, array('title' => $title, 'applications' => $this->core_fetchApplicationData(), 'page' => $this->_current_page_title, 'notifications' => $notificationLatest ? IPSText::jsonEncodeForTemplate($notificationLatest) : '', 'inlineMsg' => $inlineMsg), array('navigation' => $navigation, 'adHeaderCode' => !empty($extraData['adHeaderCode']) ? $extraData['adHeaderCode'] : '', 'adFooterCode' => !empty($extraData['adFooterCode']) ? $extraData['adFooterCode'] : ''), array('time' => $this->registry->getClass('class_localization')->getDate(time(), 'SHORT', 1), 'mark_read_apps' => IPSLib::getEnabledApplications('itemMarking'), 'lang_chooser' => $this->html_buildLanguageDropDown(), 'skin_chooser' => $this->html_fetchSetsDropDown(), 'copyright' => $this->html_fetchCopyright()), array('ex_time' => (isset($this->request['faster']) and $this->request['faster'] == 'yes') ? $this->_getFasterText() : sprintf("%.4f", IPSDebug::endTimer()), 'gzip_status' => $this->settings['disable_gzip'] == 1 ? $this->lang->words['gzip_off'] : $this->lang->words['gzip_on'], 'server_load' => ipsRegistry::$server_load, 'queries' => $this->DB->getQueryCount(), 'task' => $task)); } else { if ($this->_outputType == 'redirect') { $extraData['full'] = 1; # SEO? if ($extraData['seoTitle']) { $extraData['url'] = $this->output->buildSEOUrl($extraData['url'], 'none', $extraData['seoTitle'], $extraData['seoTemplate']); } $finalOutput = $this->output->getTemplate('global_other')->redirectTemplate($documentHeadItems, $this->_css, $jsLoaderItems, $extraData['text'], $extraData['url'], $extraData['full']); } else { if ($this->_outputType == 'popup') { $finalOutput = $this->output->getTemplate('global_other')->displayPopUpWindow($documentHeadItems, $this->_css, $jsLoaderItems, $title, $output); } } } //----------------------------------------- // Set a class on the body for print //----------------------------------------- if ($this->_printOnly) { $finalOutput = str_replace("<body", "<body class='printpreview'", $finalOutput); } //----------------------------------------- // Return //----------------------------------------- return $finalOutput; }
/** * Save the forum * * @param string $type [new|edit] * @return @e void */ public function forumSave($type = 'new') { /* If this is not a redirect forum anymore empty the redirect url - #35126 */ if ($this->request['forum_type'] != 'redirect') { $this->request['redirect_url'] = ''; } //----------------------------------------- // Converting the type? //----------------------------------------- if ($this->request['convert']) { $this->forumForm($type, 1); return; } //----------------------------------------- // INIT //----------------------------------------- $this->request['name'] = trim($this->request['name']); $this->request['f'] = intval($this->request['f']); $this->request['parent_id'] = !empty($this->request['parent_id']) ? intval($this->request['parent_id']) : -1; $forum_cat_lang = intval($this->request['parent_id']) == -1 ? $this->lang->words['for_iscat_y'] : $this->lang->words['for_iscat_n']; //----------------------------------------- // Auth check... //----------------------------------------- $this->registry->adminFunctions->checkSecurityKey(); //----------------------------------------- // Check //----------------------------------------- if ($this->request['name'] == "") { $this->registry->output->global_message = sprintf($this->lang->words['for_entertitle'], mb_strtolower($forum_cat_lang)); $this->forumForm($type); return; } //----------------------------------------- // Are we trying to do something stupid // like running with scissors or moving // the parent of a forum into itself // spot? //----------------------------------------- if ($this->request['parent_id'] != $this->registry->getClass('class_forums')->forum_by_id[$this->request['f']]['parent_id']) { $ids = $this->registry->getClass('class_forums')->forumsGetChildren($this->request['f']); $ids[] = $this->request['f']; if (in_array($this->request['parent_id'], $ids)) { $this->registry->output->global_error = $this->lang->words['for_whymovethere']; $this->forumForm($type); return; } } //if( $this->request['parent_id'] < 1 ) //{ // $this->request['sub_can_post'] = 1; //} //----------------------------------------- // Save array //----------------------------------------- $save = array('name' => IPSText::getTextClass('bbcode')->xssHtmlClean(nl2br(IPSText::stripslashes($_POST['name']))), 'name_seo' => IPSText::makeSeoTitle(strip_tags(IPSText::UNhtmlspecialchars($this->request['name']))), 'description' => IPSText::getTextClass('bbcode')->xssHtmlClean(nl2br(IPSText::stripslashes($_POST['description']))), 'use_ibc' => isset($this->request['use_ibc']) ? intval($this->request['use_ibc']) : 1, 'use_html' => intval($this->request['use_html']), 'password' => $this->request['password'], 'password_override' => is_array($this->request['password_override']) ? implode(",", $this->request['password_override']) : '', 'sort_key' => $this->request['sort_key'], 'sort_order' => $this->request['sort_order'], 'prune' => intval($this->request['prune']), 'topicfilter' => $this->request['topicfilter'], 'preview_posts' => intval($this->request['preview_posts']), 'allow_poll' => intval($this->request['allow_poll']), 'allow_pollbump' => intval($this->request['allow_pollbump']), 'forum_allow_rating' => intval($this->request['forum_allow_rating']), 'inc_postcount' => intval($this->request['inc_postcount']), 'parent_id' => intval($this->request['parent_id']), 'sub_can_post' => intval($this->request['sub_can_post']), 'redirect_on' => intval($this->request['redirect_on']), 'redirect_hits' => intval($this->request['redirect_hits']), 'redirect_url' => $this->request['redirect_url'], 'notify_modq_emails' => $this->request['notify_modq_emails'], 'permission_showtopic' => $this->request['parent_id'] == -1 ? 1 : intval($this->request['permission_showtopic']), 'min_posts_post' => intval($this->request['min_posts_post']), 'min_posts_view' => intval($this->request['min_posts_view']), 'can_view_others' => intval($this->request['can_view_others']), 'hide_last_info' => intval($this->request['hide_last_info']), 'disable_sharelinks' => intval($this->request['disable_sharelinks']), 'tag_predefined' => $this->request['tag_predefined'], 'forums_bitoptions' => IPSBWOPtions::freeze($this->request, 'forums', 'forums'), 'permission_custom_error' => nl2br(IPSText::stripslashes($_POST['permission_custom_error'])), 'ipseo_priority' => $this->request['ipseo_priority'], 'viglink' => intval($this->request['viglink'])); /* Save data from application tabs */ IPSLib::loadInterface('admin/forum_form.php'); $_forumPlugins = array(); foreach (IPSLib::getEnabledApplications() as $app_dir => $app_data) { if (is_file(IPSLib::getAppDir($app_dir) . '/extensions/admin/forum_form.php')) { $_class = IPSLib::loadLibrary(IPSLib::getAppDir($app_dir) . '/extensions/admin/forum_form.php', 'admin_forum_form__' . $app_dir, $app_dir); $_forumPlugins[$_class] = new $_class($this->registry); $remote = $_forumPlugins[$_class]->getForSave(); $save = array_merge($save, $remote); } } //----------------------------------------- // ADD //----------------------------------------- if ($type == 'new') { $this->DB->build(array('select' => 'MAX(id) as top_forum', 'from' => 'forums')); $this->DB->execute(); $row = $this->DB->fetch(); if ($row['top_forum'] < 1) { $row['top_forum'] = 0; } $row['top_forum']++; /* Forum Information */ //$save['id'] = $row['top_forum']; $save['position'] = $row['top_forum']; $save['topics'] = 0; $save['posts'] = 0; $save['last_post'] = 0; $save['last_poster_id'] = 0; $save['last_poster_name'] = ""; /* Insert the record */ $this->DB->insert('forums', $save); $forum_id = $this->DB->getInsertId(); /* Permissions */ $classToLoad = IPSLib::loadLibrary(IPS_ROOT_PATH . 'sources/classes/class_public_permissions.php', 'classPublicPermissions'); $permissions = new $classToLoad(ipsRegistry::instance()); $permissions->savePermMatrix($this->request['perms'], $forum_id, 'forum'); if (!$save['can_view_others']) { $this->DB->update('permission_index', array('owner_only' => 1), "app='forums' AND perm_type='forum' AND perm_type_id={$forum_id}"); } /* Done */ $this->registry->output->global_message = $forum_cat_lang . $this->lang->words['for__created']; $this->registry->adminFunctions->saveAdminLog($forum_cat_lang . " '" . $this->request['name'] . "'" . mb_strtolower($this->lang->words['for__created'])); } else { $forumData = $this->registry->class_forums->getForumById($this->request['f']); if ($this->request['parent_id'] == -1) { $save['can_view_others'] = 1; /* Permissions */ //$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/class_public_permissions.php', 'classPublicPermissions' ); //$permissions = new $classToLoad( ipsRegistry::instance() ); //$permissions->savePermMatrix( $this->request['perms'], $this->request['f'], 'forum' ); if (!$save['can_view_others']) { $this->DB->update('permission_index', array('owner_only' => 1), "app='forums' AND perm_type='forum' AND perm_type_id={$this->request['f']}"); } else { $this->DB->update('permission_index', array('owner_only' => 0), "app='forums' AND perm_type='forum' AND perm_type_id={$this->request['f']}"); } } $this->DB->update('forums', $save, "id=" . $this->request['f']); $forum_id = $this->request['f']; /* Tags */ $this->registry->getClass('class_forums')->forumsInit(); $this->registry->tags->updatePermssionsByParentId($this->request['f']); /* Did we enable/disable tagging? @todo find a better way to do this. Perhaps another field in tags? */ if (isset($this->request['bw_disable_tagging'])) { if ($forumData['bw_disable_tagging'] != $this->request['bw_disable_tagging']) { $toggle = $this->request['bw_disable_tagging'] ? 0 : 1; $this->registry->tags->updateVisibilityByParentId($this->request['f'], $toggle); if ($this->request['bw_disable_tagging'] == 0) { /* We just restored all tags, so lets return hidden topics back to 0 */ $this->DB->build(array('select' => 'tid', 'from' => 'topics', 'where' => 'forum_id=' . $this->request['f'] . ' AND ' . $this->registry->class_forums->fetchTopicHiddenQuery(array('sdeleted', 'hidden', 'pdelete', 'oktoremove')), 'order' => 'last_post DESC', 'limit' => array(0, 500))); $this->DB->execute(); $topics = array(); while ($row = $this->DB->fetch()) { $topics[] = $row['tid']; } if (count($topics)) { $this->registry->tags->updateVisibilityByMetaId($topics, 0); } } } } $this->registry->output->global_message = $forum_cat_lang . $this->lang->words['for__edited']; $this->registry->adminFunctions->saveAdminLog($forum_cat_lang . " '" . $this->request['name'] . "' " . mb_strtolower($this->lang->words['for__edited'])); } $this->request['f'] = ''; if ($save['parent_id'] > 0) { $this->request['f'] = $save['parent_id']; } //----------------------------------------- // Post save callbacks //----------------------------------------- if (count($_forumPlugins)) { foreach ($_forumPlugins as $_className => $_object) { if (method_exists($_object, 'postSave')) { $_object->postSave($forum_id); } } } $this->registry->getClass('class_forums')->forumsInit(); $this->showForums(); }
/** * Main class entry point * * @param object ipsRegistry reference * @return @e void [Outputs to screen] */ public function doExecute(ipsRegistry $registry) { //----------------------------------------- // INIT //----------------------------------------- $_thisNav = array(); //----------------------------------------- // Load language //----------------------------------------- $this->registry->getClass('class_localization')->loadLanguageFile(array('public_usercp')); //----------------------------------------- // Logged in? //----------------------------------------- if (!$this->memberData['member_id']) { $this->registry->getClass('output')->silentRedirect($this->settings['base_url'] . '&app=core&module=global§ion=login&do=form'); exit; } //----------------------------------------- // Make sure they're clean //----------------------------------------- $this->request['tab'] = IPSText::alphanumericalClean($this->request['tab']); $this->request['area'] = IPSText::alphanumericalClean($this->request['area']); //----------------------------------------- // Set up some basics... //----------------------------------------- $_TAB = $this->request['tab'] ? $this->request['tab'] : 'core'; $_AREA = $this->request['area'] ? $this->request['area'] : 'settings'; $_DO = $this->request['do'] ? $this->request['do'] : 'show'; $_FUNC = $_DO == 'show' ? 'showForm' : ($_DO == 'save' ? 'saveForm' : $_DO); $tabs = array(); $errors = array(); //----------------------------------------- // Got a plug in? //----------------------------------------- IPSLib::loadInterface('interface_usercp.php'); $EXT_DIR = IPSLib::getAppDir($_TAB) . '/extensions'; if (!is_file($EXT_DIR . '/usercpForms.php')) { $this->registry->getClass('output')->showError('usercp_bad_tab', 10147); exit; } //----------------------------------------- // Cycle through applications and load // usercpForm extensions //----------------------------------------- foreach (IPSLib::getEnabledApplications() as $app_dir => $app_data) { $ext_dir = IPSLib::getAppDir($app_dir) . '/extensions'; // Make sure the extension exists if (!is_file($ext_dir . '/usercpForms.php')) { continue; } $__class = IPSLib::loadLibrary($ext_dir . '/usercpForms.php', 'usercpForms_' . $app_dir, $app_dir); if (!class_exists($__class)) { continue; } $_usercp_module = new $__class(); /* Block based on version to prevent old files showing up/causing an error */ if (!$_usercp_module->version or $_usercp_module->version < 32) { continue; } $_usercp_module->makeRegistryShortcuts($this->registry); if (is_callable(array($_usercp_module, 'init'))) { $_usercp_module->init(); /* Set default area? */ if ($_TAB == $app_dir and !isset($_REQUEST['area'])) { if (isset($_usercp_module->defaultAreaCode)) { $this->request['area'] = $_AREA = $_usercp_module->defaultAreaCode; } } } if (is_callable(array($_usercp_module, 'getLinks'))) { $tabs[$app_dir]['_menu'] = $_usercp_module->getLinks(); /* Got any links? */ if (!is_array($tabs[$app_dir]['_menu']) || !count($tabs[$app_dir]['_menu'])) { unset($tabs[$app_dir]); continue; } /* Get title */ $tabs[$app_dir]['_name'] = $_usercp_module->tab_name ? $_usercp_module->tab_name : IPSLib::getAppTitle($app_dir); /* Add in 'last' element */ $tabs[$app_dir]['_menu'][count($tabs[$app_dir]['_menu']) - 1]['last'] = 1; /* This nav? */ if (!count($_thisNav) and $app_dir == $_TAB) { foreach ($tabs[$app_dir]['_menu'] as $_navData) { if ($_navData['url'] == 'area=' . $_AREA) { $_thisNav = array('app=core&module=usercp&tab=' . $_TAB . '&area=' . $_AREA, $_navData['title']); } } } } } //----------------------------------------- // Set up basic navigation //----------------------------------------- $this->_nav[] = array($this->lang->words['t_title'], '&app=core&module=usercp'); $this->_nav[] = array($this->lang->words['tab__' . $_TAB] ? $this->lang->words['tab__' . $_TAB] : IPSLib::getAppTitle($_TAB), '&app=core&module=usercp&tab=' . $_TAB); if (isset($_thisNav[0])) { $this->_nav[] = array($_thisNav[1], $_thisNav[0]); } //----------------------------------------- // Begin initilization routine for extension //----------------------------------------- $classToLoad = IPSLib::loadLibrary($EXT_DIR . '/usercpForms.php', 'usercpForms_' . $_TAB, $_TAB); $usercp_module = new $classToLoad(); $usercp_module->makeRegistryShortcuts($this->registry); $usercp_module->init(); if ($_DO == 'saveForm' || $_DO == 'showForm' and !is_callable(array($usercp_module, $_FUNC))) { $this->registry->getClass('output')->showError('usercp_bad_tab', 10148, true); exit; } //----------------------------------------- // Run it... //----------------------------------------- if ($_FUNC == 'showForm') { //----------------------------------------- // Facebook email //----------------------------------------- $html = $usercp_module->showForm($_AREA); } else { if ($_FUNC == 'saveForm') { //----------------------------------------- // Check secure key... //----------------------------------------- if ($this->request['secure_hash'] != $this->member->form_hash) { $html = $usercp_module->showForm($_AREA); $errors[] = $this->lang->words['securehash_not_secure']; } else { $errors = $usercp_module->saveForm($_AREA); $do = $usercp_module->do_url ? $usercp_module->do_url : 'show'; if (is_array($errors) and count($errors)) { $html = $usercp_module->showForm($_AREA, $errors); } else { if ($usercp_module->ok_message) { $this->registry->getClass('output')->redirectScreen($usercp_module->ok_message, $this->settings['base_url'] . 'app=' . IPS_APP_COMPONENT . '&module=usercp&tab=' . $_TAB . '&area=' . $_AREA . '&do=' . $do . '&saved=1', 1); } else { $this->registry->getClass('output')->silentRedirect($this->settings['base_url_with_app'] . 'module=usercp&tab=' . $_TAB . '&area=' . $_AREA . '&do=' . $do . '&saved=1' . '&_r=' . time()); } } } } else { if (!is_callable(array($usercp_module, 'runCustomEvent'))) { $html = $usercp_module->showForm($_AREA); $errors[] = $this->lang->words['called_invalid_function']; } else { $html = $usercp_module->runCustomEvent($_AREA); } } } //----------------------------------------- // If you've run a custom event, may need to // reset the "area" to highlight the menu correctly //----------------------------------------- if (is_callable(array($usercp_module, 'resetArea'))) { $_AREA = $usercp_module->resetArea($_AREA); } //----------------------------------------- // Wrap form and show //----------------------------------------- $template = $this->registry->getClass('output')->getTemplate('ucp')->userCPTemplate($_TAB, $html, $tabs, $_AREA, $errors, $usercp_module->hide_form_and_save_button, $usercp_module->uploadFormMax); //----------------------------------------- // Pass to CP output hander //----------------------------------------- $this->registry->getClass('output')->setTitle($this->_pageTitle ? "{$this->lang->words['pagetitle_bit']} : " . $this->_pageTitle . ' - ' . $this->settings['board_name'] : "{$this->lang->words['pagetitle_bit']} - " . $this->settings['board_name']); $this->registry->getClass('output')->addContent($template); if (is_array($this->_nav) and count($this->_nav)) { foreach ($this->_nav as $_nav) { $this->registry->getClass('output')->addNavigation($_nav[0], $_nav[1]); } } if (is_array($usercp_module->_nav) and count($usercp_module->_nav)) { foreach ($usercp_module->_nav as $_nav) { $this->registry->getClass('output')->addNavigation($_nav[0], $_nav[1]); } } $this->registry->getClass('output')->sendOutput(); }
/** * Feturn HTML block * * @param array Member information * @return string HTML block */ public function return_html_block($member = array()) { //----------------------------------------- // Get supported applications //----------------------------------------- $supportedApps = array(); foreach (IPSLib::getEnabledApplications() as $app) { $file = IPSLib::getAppDir($app['app_directory']) . '/extensions/reputation.php'; if (is_file($file)) { require_once $file; /*maybeLibHook*/ if (class_exists('reputation_' . $app['app_directory'])) { $supportedApps[$app['app_directory']] = $app; } } } //----------------------------------------- // Get results //----------------------------------------- /* What is it we're getting? */ $app = (!empty($this->request['app_tab']) and isset($supportedApps[$this->request['app_tab']])) ? $this->request['app_tab'] : 'forums'; $type = (isset($this->request['type']) and $this->request['type'] == 'given') ? 'given' : 'received'; $st = isset($this->request['st']) ? intval($this->request['st']) : 0; /* Can we view given reputation - If not, no point going any further*/ if ($type == 'given' && !$this->memberData['gbw_view_reps']) { return $this->registry->getClass('output')->getTemplate('profile')->tabReputation($member, $app, 'received', $supportedApps); } /* Load our extension class */ $classToLoad = IPSLib::loadLibrary(IPSLib::getAppDir($app) . '/extensions/reputation.php', 'reputation_' . $app, $app); $reputationClass = new $classToLoad(); /* Get our query */ $_query = $reputationClass->fetch($type, $member); $_query['group'] = 'r.app, r.type, r.type_id'; /* Get a count */ $queryForCount = $_query; $queryForCount['select'] = 'r.type_id'; $this->DB->build($queryForCount); $rawQuery = $this->DB->fetchSqlString(); $this->DB->flushQuery(); $this->DB->allow_sub_select = 1; $this->DB->query('SELECT COUNT(*) as dracula FROM ( ' . $rawQuery . ') as x'); $this->DB->execute(); $count = $this->DB->fetch(); /* Get em? */ $processedResults = ''; $pagination = ''; if (!empty($count['dracula'])) { $_query['limit'] = array($st, self::PER_PAGE); $_query['order'] = $type == 'received' ? 'r.type_id DESC' : 'r.rep_date DESC'; $results = array(); $this->DB->build($_query); $e = $this->DB->execute(); while ($row = $this->DB->fetch($e)) { $results[] = $reputationClass->process($row); } /* Sort out pagination */ $pagination = $this->registry->output->generatePagination(array('totalItems' => intval($count['dracula']), 'itemsPerPage' => self::PER_PAGE, 'currentStartValue' => $st, 'baseUrl' => "showuser={$member['member_id']}&tab=reputation&app_tab={$app}&type={$type}", 'seoTitle' => $member['members_seo_name'], 'seoTemplate' => 'showuser')); /* Process Results */ $processedResults = $reputationClass->display($results); } /* Display processed results */ return $this->registry->getClass('output')->getTemplate('profile')->tabReputation($member, $app, $type, $supportedApps, $processedResults, $pagination); }
/** * Get notification config file data * * @access public * @param bool If true, will check show_callback to see if user has permission * @return array */ public function getNotificationData($checkCallbacks = FALSE) { //----------------------------------------- // Already stored the data? //----------------------------------------- if (count($this->_notificationData)) { return $this->_notificationData; } //----------------------------------------- // Get for each application //----------------------------------------- foreach (IPSLib::getEnabledApplications(array(), TRUE) as $app_dir => $application) { $newLocation = IPSLib::getAppDir($app_dir) . '/extensions/notifications/config.php'; $oldLocation = IPSLib::getAppDir($app_dir) . '/extensions/notifications.php'; if (!is_file($newLocation)) { $newLocation = $oldLocation; } if (is_file($newLocation)) { $classToLoad = IPSLib::loadLibrary($newLocation, $app_dir . '_notifications', $app_dir); if (class_exists($classToLoad)) { $class = new $classToLoad(); $class->memberData = ipsRegistry::member()->fetchMemberData(); $_NOTIFY = $class->getConfiguration(); if ($checkCallbacks) { foreach ($_NOTIFY as $n) { $n['app'] = $app_dir; if ($n['show_callback'] and method_exists($class, $n['key'])) { if ($class->{$n}['key']($this->_member)) { $this->_notificationData[] = $n; } } else { $this->_notificationData[] = $n; } } } else { $_NEW = array(); foreach ($_NOTIFY as $notify) { $notify['app'] = $app_dir; $_NEW[] = $notify; } $_NOTIFY = $_NEW; $this->_notificationData = is_array($this->_notificationData) ? $this->_notificationData : array(); $this->_notificationData = array_merge($this->_notificationData, $_NOTIFY); } } } } return $this->_notificationData; }
function globalTemplate($html, $documentHeadItems, $css, $jsModules, $metaTags, array $header_items, $items = array(), $footer_items = array(), $stats = array()) { $IPBHTML = ""; if (IPSLib::locationHasHooks('skin_global', $this->_funcHooks['globalTemplate'])) { $count_68e2005a22cac3c53b26528c84a70bfd = is_array($this->functionData['globalTemplate']) ? count($this->functionData['globalTemplate']) : 0; $this->functionData['globalTemplate'][$count_68e2005a22cac3c53b26528c84a70bfd]['html'] = $html; $this->functionData['globalTemplate'][$count_68e2005a22cac3c53b26528c84a70bfd]['documentHeadItems'] = $documentHeadItems; $this->functionData['globalTemplate'][$count_68e2005a22cac3c53b26528c84a70bfd]['css'] = $css; $this->functionData['globalTemplate'][$count_68e2005a22cac3c53b26528c84a70bfd]['jsModules'] = $jsModules; $this->functionData['globalTemplate'][$count_68e2005a22cac3c53b26528c84a70bfd]['metaTags'] = $metaTags; $this->functionData['globalTemplate'][$count_68e2005a22cac3c53b26528c84a70bfd]['header_items'] = $header_items; $this->functionData['globalTemplate'][$count_68e2005a22cac3c53b26528c84a70bfd]['items'] = $items; $this->functionData['globalTemplate'][$count_68e2005a22cac3c53b26528c84a70bfd]['footer_items'] = $footer_items; $this->functionData['globalTemplate'][$count_68e2005a22cac3c53b26528c84a70bfd]['stats'] = $stats; } $this->did_first = 0; $IPBHTML .= "<!DOCTYPE html>\n\t<html lang=\"en\" " . (IPSLib::fbc_enabled() === TRUE || $this->settings['fbc_appid'] ? " xmlns:fb=\"http://www.facebook.com/2008/fbml\"" : "") . ">\n\t<head>\n\t\t<meta charset=\"{$this->settings['gb_char_set']}\" />\n\t\t<title>{$header_items['title']}</title>\n\t\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n\t\t<link rel=\"shortcut icon\" href='" . ($this->registry->output->isHTTPS ? "{$this->settings['board_url_https']}" : "{$this->settings['board_url']}") . "/favicon.ico' />\n <link href=\"http://fonts.googleapis.com/css?family=Oswald|Droid+Sans:400,700\" rel=\"stylesheet\">\n\t\t<link rel=\"image_src\" href='{$this->settings['meta_imagesrc']}' />\n\t\t<script type='text/javascript'>\n\t\t//<![CDATA[\n\t\t\tjsDebug\t\t\t= " . intval($this->settings['_jsDebug']) . "; /* Must come before JS includes */\n\t\t\tDISABLE_AJAX\t= parseInt({$this->settings['disable_text_ajax']}); /* Disables ajax requests where text is sent to the DB; helpful for charset issues */\n\t\t\tinACP\t\t\t= false;\n\t\t\tvar isRTL\t\t= false;\n\t\t\tvar rtlIe\t\t= '';\n\t\t\tvar rtlFull\t\t= '';\n\t\t//]]>\n\t\t</script>\n\t\t" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'includeCSS') ? $this->registry->getClass('output')->getTemplate('global')->includeCSS($css) : '') . "\n\t\t<meta property=\"og:title\" content=\"{$this->registry->output->encodeMetaTagContent(str_replace(' - ' . $this->settings['board_name'], '', $header_items['title']))}\"/>\n\t\t<meta property=\"og:site_name\" content=\"{$this->registry->output->encodeMetaTagContent($this->settings['board_name'])}\"/>\n\t\t<meta property=\"og:type\" content=\"article\" />\n\t\t" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'includeMeta') ? $this->registry->getClass('output')->getTemplate('global')->includeMeta($metaTags) : '') . "\n\t\t" . ($this->registry->output->isLargeTouchDevice() ? "\n\t\t<!--<meta name=\"viewport\" content=\"width=device-width;\">-->\n\t\t" : "") . "\n\t\t" . ($this->registry->output->isSmallTouchDevice() ? "\n\t\t<meta name=\"viewport\" content=\"width=1024px\">\n\t\t" : "") . "\n\t\t" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'includeJS') ? $this->registry->getClass('output')->getTemplate('global')->includeJS($jsModules) : '') . "" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'includeFeeds') ? $this->registry->getClass('output')->getTemplate('global')->includeFeeds($documentHeadItems) : '') . "" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'includeRTL') ? $this->registry->getClass('output')->getTemplate('global')->includeRTL() : '') . "\t\t\n\t\t" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'includeVars') ? $this->registry->getClass('output')->getTemplate('global')->includeVars($header_items) : '') . "" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'audentio_config') ? $this->registry->getClass('output')->getTemplate('global')->audentio_config() : '') . "\n\t\t\n\n\t</head>\n\t<body id='ipboard_body'>\n\t\t\n<p id='content_jump' class='hide'><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<div id='ipbwrapper'>\n<!-- ::: USER BAR: Sign in / register or user drop down and notification alerts ::: -->\n<div class=\"top_panel\">\n <div class=\"wrapper\">\n\n<ul class=\"aud_list right\" style=\"float: left;\">\n\t\t\t\t\t" . ($this->memberData['g_use_search'] ? "\n\t\t\t\t\t\t" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'quickSearch') ? $this->registry->getClass('output')->getTemplate('global')->quickSearch() : '') . "\n\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t" . (!(!$this->memberData['member_id'] && $this->settings['force_login']) && !($this->settings['board_offline'] && !$this->memberData['g_access_offline']) && $this->memberData['g_view_board'] ? "\n\t\t\t\t\t\t\t<li class='right'>\n\t\t\t\t\t\t\t\t<a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global§ion=navigation&inapp=" . IPS_APP_COMPONENT . "", "public", ''), "", "") . "\" rel=\"quickNavigation\" accesskey='9' id='quickNavLaunch' data-tooltip=\"{$this->lang->words['launch_quicknav']}\"><span> </span></a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t<li id='nav_explore' class='right'>\n\t\t\t\t\t\t\t<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=search&do=viewNewContent&search_app=" . (($this->registry->getCurrentApplication() != 'core' and IPSLib::appIsSearchable($this->registry->getCurrentApplication())) ? "{$this->registry->getCurrentApplication()}" : "forums") . "", "public", ''), "", "") . "' accesskey='2'>{$this->lang->words['view_new_posts']}</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t" . (($this->memberData['is_mod'] or !empty($this->memberData['access_report_center']) || ($this->memberData['g_access_cp'] and !$this->settings['security_remove_acp_link'])) ? "" . ($this->memberData['access_report_center'] && $this->memberData['_cache']['report_num'] > 0 ? "\n\t\t\t\t\t\t\t\t<li class='right active'>\n\t\t\t\t\t\t\t\t\t<a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=reports&do=index", "public", ''), "", "") . "\" title='{$this->lang->words['view_reports']}'>{$this->memberData['_cache']['report_num']} {$this->lang->words['report_member_bar']}</a>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t<li class='right'><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=modcp", "public", ''), "", "") . "\" title='{$this->lang->words['gbl_modcp_link']}'>{$this->lang->words['gbl_modcp_link']}</a></li>\n\t\t\t\t\t\t\t" . (($this->memberData['g_access_cp'] and !$this->settings['security_remove_acp_link']) ? "\n\t\t\t\t\t\t\t\t<li class='right'>\n\t\t\t\t\t\t\t\t\t<a href=\"{$this->settings['_admin_link']}\" title='{$this->lang->words['admin_cp']}' target=\"_blank\">{$this->lang->words['login_to_acp']}</a>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t" : "") . "" : "") . "\n</ul>\n<div style=\"float: right;\">\n " . ($this->memberData['member_id'] ? "<div id='user_navigation' class='logged_in'>\n\t\t\t\t\t\t\t<ul class='ipsList_inline left'>\n\n\t\t\t\t\t\t\t\t<li class=\"right_border\"><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("showuser={$this->memberData['member_id']}", "public", ''), "{$this->memberData['members_seo_name']}", "showuser") . "\" data-tooltip='{$this->lang->words['your_profile']}' class='aud_userPhotoLink'>\n\t\t\t\t\t\t\t\t<img class=\"aud_userPhoto ipsUserPhoto\" src='{$this->memberData['pp_small_photo']}' alt=\"{$this->memberData['members_display_name']}{$this->lang->words['users_photo']}\" />\n </a></li>\n\n\t\t\t\t\t\t\t\t<li><a id='user_link' href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("showuser={$this->memberData['member_id']}", "public", ''), "{$this->memberData['members_seo_name']}", "showuser") . "\">{$this->memberData['members_display_name']} <span id='user_link_dd'></span></a></li>\t\n\t\t\t\t\t\t\t\t" . (!(!$this->memberData['member_id'] && $this->settings['force_login']) && !($this->settings['board_offline'] && !$this->memberData['g_access_offline']) ? "" . (($this->memberData['g_use_pm'] and $this->memberData['members_disable_pm'] == 0) ? "<li><a data-clicklaunch=\"getInboxList\" id='inbox_link' href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=members&module=messaging", "public", ''), "", "") . "' data-tooltip='{$this->lang->words['your_messenger']}'>" . ($this->memberData['msg_count_new'] ? "<span class='ipsHasNotifications'>{$this->memberData['msg_count_new']}</span>" : "") . " </a></li>" : "") . "\n\t\t\t\t\t\t\t\t\t<li><a data-clicklaunch=\"getNotificationsList\" id='notify_link' href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=usercp&area=notificationlog", "public", ''), "", "") . "\" data-tooltip=\"{$this->lang->words['notifications_at_the_top']}\">" . ($this->memberData['notification_cnt'] ? "<span class='ipsHasNotifications'>{$this->memberData['notification_cnt']}</span>" : "") . " </a></li>" : "") . "\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t<li><a id=\"logout_link\" href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global§ion=login&do=logout&k={$this->member->form_hash}", "public", ''), "", "") . "\" data-tooltip=\"{$this->lang->words['log_out']}\"></a></li>\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><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global§ion=register&do=reval", "public", ''), "", "") . "\" title='{$this->lang->words['resend_val']}'>{$this->lang->words['resend_val']}</a></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</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<!-- ::: USER DROP DOWN MENU ::: -->\n\t\t\t\t\t\t<div id='user_link_menucontent' class='ipsHeaderMenu clearfix boxShadow' style='display: none'>\n\t\t\t\t\t\t\t<a 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']}' class='ipsUserPhotoLink left'>\n\t\t\t\t\t\t\t\t<img src='{$this->memberData['pp_small_photo']}' alt=\"" . sprintf($this->lang->words['users_photo'], $this->memberData['members_display_name']) . "\" class='ipsUserPhoto ipsUserPhoto_medium photo' />\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<div class='left'>\n\t\t\t\t\t\t\t\t" . ($this->registry->getClass('memberStatus')->canCreate($this->memberData) && !($this->settings['board_offline'] && !$this->memberData['g_access_offline']) ? "<form id='statusForm' action='{$this->settings['base_url']}app=members&module=profile§ion=status&do=new&k={$this->member->form_hash}&id={$this->memberData['member_id']}' method='post'>\n\t\t\t\t\t\t\t\t\t\t<input type='text' id='statusUpdateGlobal' name='content' class='input_text' style='width: 97%' /><br />\n\t\t\t\t\t\t\t\t\t\t<input type='submit' id='statusSubmitGlobal' class='ipsButton_secondary' value='{$this->lang->words['global_update_status']}' />\n\t\t\t\t\t\t\t\t\t\t" . (((IPSLib::twitter_enabled() or IPSLib::fbc_enabled()) and ($this->memberData['fb_uid'] or $this->memberData['twitter_id'])) ? " \n\t\t\t\t\t\t\t\t\t\t\t" . ((IPSLib::twitter_enabled() and $this->memberData['twitter_id']) ? "<input type='checkbox' id='su_TwitterGlobal' value='1' name='su_Twitter' /> <label for='su_TwitterGlobal' class='desc ipsType_smaller'>Twitter</label>" : "") . " \n\t\t\t\t\t\t\t\t\t\t\t" . ((IPSLib::fbc_enabled() and $this->memberData['fb_uid']) ? " <input type='checkbox' id='su_FacebookGlobal' value='1' name='su_Facebook' /> <label for='su_FacebookGlobal' class='desc ipsType_smaller'>Facebook</label>" : "") . "" : "") . "\n\t\t\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t\t\t<hr />\n\t\t\t\t\t\t\t\t\t</form>" : "") . "\n\t\t\t\t\t\t\t\t\t<ul id='links'>\n\t\t\t\t\t\t\t\t\t\t<li id='user_profile'><a 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->lang->words['my_profile']}</a></li>\n\t\t\t\t\t\t\t\t\t\t<li id='user_ucp'><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=usercp", "public", ''), "", "") . "\" title=\"{$this->lang->words['cp_tool_tip']}\">{$this->lang->words['your_cp']}</a></li>\n\t\t\t\t\t\t\t\t\t\t<li id='user_content'><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=search&do=user_activity&mid={$this->memberData['member_id']}", "public", ''), "", "") . "\" title=\"{$this->lang->words['my_content_link']}\">{$this->lang->words['my_content_link']}</a></li>\n\t\t\t\t\t\t\t\t\t\t" . (count(IPSLib::getEnabledApplications('like')) ? "\n\t\t\t\t\t\t\t\t\t\t\t<li id='user_likes'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=search&do=followed", "public", ''), "", "") . "' title='{$this->lang->words['your_likes']}'>{$this->lang->words['your_likes']}</a></li>\n\t\t\t\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t\t\t\t" . ($this->settings['friends_enabled'] && $this->memberData['g_can_add_friends'] ? "\n\t\t\t\t\t\t\t\t\t\t\t<li id='user_friends'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=members&module=profile§ion=friends&do=list", "public", ''), "", "") . "' title=\"{$this->lang->words['manage_friends']}\" class='manage_friends'>{$this->lang->words['manage_friends']}</a></li>\n\t\t\t\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t\t\t\t<li id='user_enemies'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=usercp&tab=core&area=ignoredusers", "public", ''), "", "") . "' title=\"{$this->lang->words['manage_ignored_users']}\" class='manage_enemies'>{$this->lang->words['manage_ignored_users']}</a></li>\n\t\t\t\t\t\t\t\t\t\t" . (($this->memberData['has_blog'] and IPSLib::appIsInstalled('blog')) ? "\n\t\t\t\t\t\t\t\t\t\t\t<li id='user_blog'><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=blog&module=manage", "public", ''), "false", "manageblog") . "\">{$this->lang->words['manage_blogs']}</a></li>\n\t\t\t\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t\t\t\t" . ($this->memberData['members_disable_pm'] != 2 ? "\n\t\t\t\t\t\t\t\t\t\t\t<li id='user_pm'><a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=members&module=messaging", "public", ''), "", "") . "\">{$this->lang->words['user_dd_go_pm']}</a></li>\n\t\t\t\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t\t\t\t" . (($this->memberData['has_gallery'] and IPSLib::appIsInstalled('gallery')) ? "\n\t\t\t\t\t\t\t\t\t\t\t<li id='user_gallery'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=gallery&user={$this->memberData['member_id']}", "public", ''), "{$this->memberData['members_seo_name']}", "useralbum") . "' title=\"{$this->lang->words['go_to_my_gallery']}\">{$this->lang->words['my_gallery']}</a></li>\n\t\t\t\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t\t\t\t" . (IPSLib::appIsInstalled('nexus') ? "\n\t\t\t\t\t\t\t\t\t\t\t<li id='user_nexus'><a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=nexus&module=clients", "public", ''), "", "") . "' title=\"{$this->lang->words['client_area']}\">{$this->lang->words['client_area']}</a></li>\n\t\t\t\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>" : "<div id='user_navigation' class='not_logged_in'>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<ul class='ipsList_inline cubic_list left'>\n\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t<span class='services'>\n\t\t\t\t\t\t\t\t\t" . (IPSLib::loginMethod_enabled('facebook') ? "\n\t\t\t\t\t\t\t\t\t<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global§ion=login&serviceClick=facebook", "public", ''), "", "") . "'>" . $this->registry->getClass('output')->getReplacement("lim_facebook") . "</a>\n\t\t\t\t\t\t\t\t\t" : "") . "\n\n\t\t\t\t\t\t\t\t\t" . (IPSLib::loginMethod_enabled('twitter') ? "\n\t\t\t\t\t\t\t\t\t<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global§ion=login&serviceClick=twitter", "public", ''), "", "") . "'>" . $this->registry->getClass('output')->getReplacement("lim_twitter") . "</a>\n\t\t\t\t\t\t\t\t\t" : "") . "\n\n\t\t\t\t\t\t\t\t\t" . (IPSLib::loginMethod_enabled('live') ? "\n\t\t\t\t\t\t\t\t\t<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global§ion=login&do=process&use_live=1&auth_key={$this->member->form_hash}", "public", ''), "", "") . "'>" . $this->registry->getClass('output')->getReplacement("lim_windows") . "</a>\n\t\t\t\t\t\t\t\t\t" : "") . "\t\t\t\t\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<a class=\"border_bord\" href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global§ion=login", "public", ''), "", "") . "' title='{$this->lang->words['sign_in']}' id='sign_in'>\n\t\t\t\t\t\t\t\t\t<i class=\"aud_icon icon-login\"></i> {$this->lang->words['sign_in']}</a>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global§ion=register", "public", ''), "", "") . "\" title='{$this->lang->words['register']}' id='register_link'><i class=\"aud_icon icon-register\"></i> {$this->lang->words['register']}</a>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</div>") . "\n </div>\n </div>\n</div>\n<div class=\"wrapper\">\n <div id='logo'>\n\t\t\t\t\t\t" . (ipsRegistry::$applications[$this->registry->getCurrentApplication()]['hasCustomHeader'] ? "\n\t\t\t\t\t\t\t" . (method_exists($this->registry->getClass('output')->getTemplate('' . $this->registry->getCurrentApplication() . '_global'), 'overwriteHeader') ? $this->registry->getClass('output')->getTemplate('' . $this->registry->getCurrentApplication() . '_global')->overwriteHeader() : '') . "\n\t\t\t\t\t\t" : "\n\t\t\t\t\t\t\t" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'defaultHeader') ? $this->registry->getClass('output')->getTemplate('global')->defaultHeader() : '') . "\n\t\t\t\t\t\t") . "\n\t\t\t\t\t</div>\n <div style=\"float: right; clear: both; margin-top: 66px;\">\n " . ($this->facebook_url ? "\n\t\t\t\t\t\t\t<a href=\"{$this->facebook_url}\" data-tooltip=\"{$this->facebook_title}\" target=\"_blank\"><img src=\"{style_images_url}/facebook.png\" alt=\"Facebook\" height=\"40\" width=\"40\"></a>\n\t\t\t\t\t" : "") . "" . ($this->twitter_name ? "\n\t\t\t\t\t\t\t<a href=\"http://twitter.com/{$this->twitter_name}\" data-tooltip=\"{$this->twitter_title}\" target=\"_blank\"><img src=\"{style_images_url}/twitter.png\" alt=\"Facebook\" height=\"40\" width=\"40\"></a>\n\t\t\t\t\t" : "") . "\n </div>\n</div>\n\t\t\t<div id=\"aud_wrapper\" class='main_width'>\n\t\t\t\t<!-- ::: BRANDING/NAV BAR: Logo and navigation menu ::: -->\n\t\t\t\t<div id='branding'>\n\t\t\t\t\t\n\t\t\t\t\t<!-- ::: APPLICATION TABS ::: -->\n\t\t\t\t\t\t<div id='primary_nav' class='clearfix right'>\n\t\t\t\t\t\t\t<ul class='ipsList_inline' id='community_app_menu'>\n\t\t\t\t\t\t\t\t" . (($this->settings['home_url'] and $this->settings['home_name']) ? "\n\t\t\t\t\t\t\t\t\t<li id='nav_home'><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\t\t" : "") . "\n\t\t\t\t\t\t\t\t" . (!empty($header_items['primary_navigation_menu']) ? "\n\t\t\t\t\t\t\t\t\t{$header_items['primary_navigation_menu']}\n\t\t\t\t\t\t\t\t" : "" . ((is_array($header_items['applications']) and count($header_items['applications'])) ? "\n\t\t\t\t\t\t\t\t\t\t" . $this->__f__758c3640fe48bb04e47e743dc6faffdd($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . "\t\t\t\t\t\t\t\t\t" : "") . "") . "\n\t\t\t\t\t\t\t\t<li id='nav_other_apps' style='display: none'>\n\t\t\t\t\t\t\t\t\t<a href='#' class='ipbmenu' id='more_apps'>{$this->lang->words['more_apps']} <img src='{$this->settings['img_url']}/dropdown.png' /></a>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t</ul>\n<div class=\"g_12 separator\" style=\"margin-left: 22px;\"><span></span></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<script type='text/javascript'>\n\t\t\t\t\t\t\tif( \$('primary_nav') ){\tipb.global.activateMainMenu(); }\n\t\t\t\t\t\t</script>\n\t\t\t\t</div>\n\t\t\t\t<!-- ::: MAIN CONTENT AREA ::: -->\n\n\t\t\t\t<div id='content' class='clearfix'>\n\t\t\t\t\t<!-- ::: NAVIGATION BREADCRUMBS ::: -->\n\t\t\t\t\t" . (count($items['navigation']) ? "<div id='secondary_navigation' class='clearfix'>\n\t\t\t\t\t\t\t<ol class='breadcrumb top ipsList_inline left'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t" . ((!$this->settings['remove_forums_nav'] or ipsRegistry::$current_application == 'forums') ? "<li itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\">\n\t\t\t\t\t\t\t\t\t\t<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("act=idx", "public", ''), "false", "") . "' itemprop=\"url\">\n\t\t\t\t\t\t\t\t\t\t\t<span itemprop=\"title\">{$this->settings['board_name']}</span>\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t" . (($this->did_first = 1) ? "" : "") . "" : "") . "\n\t\t\t\t\t\t\t\t" . $this->__f__171a69a5fc28f509840cf15566243945($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . "\t\t\t\t\t\t\t</ol>\n\t\t\t\t\t\t</div>" : "") . "" . ($this->show_global_messages == yes ? "<span style=\"margin-top: 5px; display: block;\"></span>" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'aud_announcements') ? $this->registry->getClass('output')->getTemplate('global')->aud_announcements() : '') . "" : "") . "\n\n\t\t\t\t\t<noscript>\n\t\t\t\t\t\t<div class='message error'>\n\t\t\t\t\t\t\t<strong>{$this->lang->words['gbl_no_js_title']}</strong>\n\t\t\t\t\t\t\t<p>{$this->lang->words['gbl_no_js']}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<br />\n\t\t\t\t\t</noscript>\n\t\t\t\t\t<!-- ::: CONTENT ::: -->\n\t\t\t\t\t" . ($items['adHeaderCode'] ? "\n\t\t\t\t\t\t<div class='ipsAd'>{$items['adHeaderCode']}</div>\n\t\t\t\t\t" : "") . "\n\t\t\t\t\t" . ($html ? "{$html}" : "") . "\n\t\t\t\t\t" . ($items['adFooterCode'] ? "\n\t\t\t\t\t\t<div class='ipsAd'>{$items['adFooterCode']}</div>\n\t\t\t\t\t" : "") . "\n\t\t\t\t</div>\n\t\t\t\n\t\t\t\t<!-- ::: FOOTER (Change skin, social links etc) ::: -->\n\t\t\t\t<div id='footer_utilities' class='clearfix clear'>\n\t\t\t\t\t<ul class='aud_list left'>\n\t\t\t\t\t\t" . ($this->enable_adstyler == yes ? "<li>\n\t\t\t\t\t\t\t<a id=\"sbOpen\" href=\"#\" data-tooltip=\"Theme Styler\"><img src=\"{style_images_url}/brush_icon.png\" alt=\"Theme styler\"></a>\n\t\t\t\t\t\t</li>" : "") . "\n\t\t\t\t\t\t" . (!$this->member->is_not_human ? "" . (($this->memberData['userAgentLocked'] and !$this->memberData['userAgentBypass']) ? "\n\t\t\t\t\t\t\t\t<li id='useragent_msg'>\n\t\t\t\t\t\t\t\t\t{$this->lang->words['skin_browser_set']} <a href='#' data-clicklaunch='changeSkin' data-skinid='unlockUserAgent'>{$this->lang->words['override_browser_theme']}</a>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t" : "" . ($this->registry->output->isTouchDevice() ? "\n\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t<a href='#' data-clicklaunch='changeSkin' data-skinid='setAsMobile'>{$this->lang->words['set_mobile_theme']}</a>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\t\t" . (count($footer_items['skin_chooser']) > 1 ? "\n\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<a rel=\"nofollow\" id='new_skin' href='#'>{$this->lang->words['change_theme']}</a>\t\t\t\n\t\t\t\t\t\t\t\t\t\t<ul id='new_skin_menucontent' class='ipbmenu_content with_checks' style='display: none'>\n\t\t\t\t\t\t\t\t\t\t\t" . $this->__f__ec09aa5f6024ece0cc832e649f62820e($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . "\t\t\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t" : "") . "") . "" : "") . "\n\t\t\t\t\t\t\n\t\t\t\t\t\t" . (!$this->member->is_not_human && count($footer_items['lang_chooser']['options']) > 1 ? "\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a rel=\"nofollow\" href='#' id='new_language'>{$footer_items['lang_chooser']['default']}</a>\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t<ul id='new_language_menucontent' class='ipbmenu_content with_checks' style='display: none'>\n\t\t\t\t\t\t\t\t\t" . $this->__f__3c867bcfb1300de730709b3b53153eb4($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . "\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t\t\n\t\t\t\t\t\t" . (!$this->member->is_not_human ? "\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a rel=\"nofollow\" id='mark_all_read' href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=forums&module=forums§ion=markasread&marktype=all&k={$this->member->form_hash}", "public", ''), "", "") . "\" title='{$this->lang->words['mark_all_as_read']}'>{$this->lang->words['mark_board_as_read']}</a>\n\t\t\t\t\t\t\t\t<ul id='mark_all_read_menucontent' class='ipbmenu_content' style='display: none'>\n\t\t\t\t\t\t\t\t\t" . $this->__f__fb5f156f8d7b2071393c16fed14ebfdd($html, $documentHeadItems, $css, $jsModules, $metaTags, $header_items, $items, $footer_items, $stats) . "\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=forums&module=forums§ion=markasread&marktype=all&k={$this->member->form_hash}", "public", ''), "", "") . "\"><strong>{$this->lang->words['mark_all_as_read']}</strong></a>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t" : "") . "\n\t\t\t\t\t" . (($this->settings['gl_show'] and $this->settings['gl_title']) ? "<li class='ipsType_smaller'>\n\t\t\t\t\t\t\t<a href='" . ($this->settings['gl_link'] ? "{$this->settings['gl_link']}" : "" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=forums&module=extras&section=boardrules", "public", ''), "", "") . "") . "'>" . ($this->settings['gl_title'] ? "{$this->settings['gl_title']}" : "{$this->lang->words['board_rules']}") . "</a>" . ($this->settings['priv_title'] ? " · " : "") . "\n\t\t\t\t\t\t</li>" : "") . "\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=help", "public", ''), "", "") . "\" title='{$this->lang->words['view_help']}' rel=\"help\" accesskey='6'>{$this->lang->words['sj_help']}</a>\n\t\t\t\t\t\t</li>\t\n\t\t\t\n\t\t\t\t\t</ul>\n\t\t\t\t<ul class=\"aud_list right\">\n\t\t\t\t\t<li>\n\t\t\t\t\t<a rel=\"nofollow\" href='#top' id='backtotop' data-tooltip='{$this->lang->words['go_to_top']}'></a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t\t\t<div class=\"footer_copyright\">\n<span class=\"copyright_row\">\n<span id=\"footer_links\" class=\"label\">\n <a href=\"/?page=Faq\">FAQ</a>\n | <a href=\"/?page=Terms\">Terms and Conditions</a>\n | <a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&module=global&section=privacy", "public", ''), "false", "privacy") . "\">Privacy Policy</a>\n | <a href=\"/?page=Contact+Us\">Contact Us</a>\n </span>\n</span>\n\t<p id=\"copyright\">All Rights Reserved <a href=\"http://www.grabviews.com\">GrabViews.com</a> © 2013</p>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t" . (($this->memberData['member_id'] and $this->settings['debug_level']) ? "<div id='ipsDebug_footer'>\n\t\t\t\t\t\t<strong>{$this->lang->words['time_now']}</strong> {$footer_items['time']}\n\t\t\t\t\t\t" . (($this->memberData['member_id'] and $this->memberData['last_visit']) ? "<strong>{$this->lang->words['you_last_visit']}</strong> " . IPSText::htmlspecialchars($this->registry->getClass('class_localization')->getDate($this->memberData['last_visit'], "short", 0)) . "" : "") . "\n\t\t\t\t\t\t<strong>{$this->lang->words['stat_exec']}</strong> {$stats['ex_time']} " . (is_float($stats['ex_time']) ? "{$this->lang->words['stats_sec']}" : "") . "\n\t\t\t\t\t\t<strong>{$this->lang->words['stat_load']}</strong> {$stats['server_load']}\n\t\t\t\t\t\t<strong>{$this->lang->words['stat_queries']}</strong> {$stats['queries']} " . (IPS_SQL_DEBUG_MODE ? "<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("{$this->settings['query_string_safe']}&debug=1", "public", ''), "", "") . "'>" : "") . "{$this->lang->words['stats_queries']}" . (IPS_SQL_DEBUG_MODE ? "</a>" : "") . "\n\t\t\t\t\t\t<strong>{$this->lang->words['stat_gzip']}</strong> {$stats['gzip_status']}\n\t\t\t\t\t</div>" : "") . "\n\t\t\t\t<div style=\"display:none;\">\n\t\t\t\t\t{$stats['task']}\n\t\t\t\t</div>\n\t\t\t\t" . ($this->settings['do_include_lightbox_real'] ? "\n\t\t\t\t\t" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'include_lightbox_real') ? $this->registry->getClass('output')->getTemplate('global')->include_lightbox_real() : '') . "\n\t\t\t\t" : "\n\t\t\t\t\t<script type=\"text/javascript\">\n\t\t\t\t\t\tipb.global.lightBoxIsOff();\n\t\t\t\t\t</script>\n\t\t\t\t") . "\n\t\t\t\t" . (!$this->memberData['member_id'] ? "" . (method_exists($this->registry->getClass('output')->getTemplate('global'), 'inlineLogin') ? $this->registry->getClass('output')->getTemplate('global')->inlineLogin() : '') . "" : "") . "\n\t\t\t</div>\n\t\t</div>\n\t\t\n\t\t<!--DEBUG_STATS-->\n\t\t<script type='text/javascript'>\n\t\t\tif( \$('primary_nav') ){\tipb.global.activateMainMenu(); }\n\t\t</script>\n\t\t" . (($this->settings['viglink_enabled'] and (!$this->settings['viglink_groups'] or IPSMember::isInGroup($this->memberData, explode(',', $this->settings['viglink_groups'])))) ? "<script type=\"text/javascript\">\n\t\t\t var vglnk = { api_url: '//api.viglink.com/api',\n\t\t\t key: '{$this->settings['viglink_api_key']}'" . ($this->settings['viglink_subid'] ? ",\n\t\t\t sub_id: '{$this->settings['sub_id']}'\n\t\t\t " : "") . "\n\t\t\t };\n\t\t\t\n\t\t\t (function(d, t) {\n\t\t\t var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;\n\t\t\t s.src = ('https:' == document.location.protocol ? vglnk.api_url :\n\t\t\t '//cdn.viglink.com/api') + '/vglnk.js';\n\t\t\t var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r);\n\t\t\t }(document, 'script'));\n\t\t\t</script>" : "") . "" . ($this->enable_adstyler == yes ? "\n\t\t<!-- Start styleBar -->\n\t\t<form id=\"styleBar\"></form>\n\t\t<!-- End styleBar -->\n\n\t\t<!-- Start styleBar js -->\n\t\t<script>\n\t\t\t(function( jQuery ) {\n\t\t\t\tjQuery( '#styleBar' ).styleBar( { overlay: true } );;\n\t\t\t})( jQuery );\n\t\t</script>\n\t\t<!-- end styleBar js -->\n\t\t" : "") . "\n\t\t\n\t\t<span class=\"mcolor\"></span>\n\t</body>\n</html>"; return $IPBHTML; }
/** * Class entry point * * @param object Registry reference * @return @e void [Outputs to screen] */ public function doExecute(ipsRegistry $registry) { //----------------------------------------- // Get supported applications //----------------------------------------- $supportedApps = array(); foreach (IPSLib::getEnabledApplications() as $app) { $file = IPSLib::getAppDir($app['app_directory']) . '/extensions/reputation.php'; if (is_file($file)) { require_once $file; /*maybeLibHook*/ if (class_exists('reputation_' . $app['app_directory'])) { $supportedApps[$app['app_directory']] = $app; } } } //----------------------------------------- // Get results //----------------------------------------- /* What is it we're getting? */ $app = (is_string($this->request['app_tab']) && !empty($this->request['app_tab']) and isset($supportedApps[$this->request['app_tab']])) ? $this->request['app_tab'] : 'forums'; /* Load our extension class */ $classToLoad = IPSLib::loadLibrary(IPSLib::getAppDir($app) . '/extensions/reputation.php', 'reputation_' . $app, $app); $reputationClass = new $classToLoad(); /* Get our query */ $_query = $reputationClass->fetch('most'); $PRE = trim(ipsRegistry::dbFunctions()->getPrefix()); /* Got something? */ if ($_query['inner']) { /* Build inner join */ $this->DB->build($_query['inner']); $inner = $this->DB->fetchSqlString(); $this->DB->flushQuery(); $this->DB->allow_sub_select = 1; $this->DB->query('SELECT * FROM ' . $PRE . "reputation_totals WHERE rt_app_type=MD5( CONCAT( '" . $app . "', ';', '" . $_query['type'] . "' ) ) AND rt_type_id IN (" . $inner . ") AND rt_total > 0 GROUP BY rt_key ORDER BY rt_total DESC LIMIT 0," . self::NUMBER_TO_SHOW); $this->DB->execute(); $typeIds = array(); $results = array(); $index = array(); while ($row = $this->DB->fetch()) { $typeIds[$row['rt_total'] . '.' . $row['rt_type_id']] = $row['rt_type_id']; $index[$row['rt_type_id']] = $row['rt_total'] . '.' . $row['rt_type_id']; } if (count($typeIds)) { $this->DB->build(array('select' => 'r.*', 'from' => array('reputation_index' => 'r'), 'where' => "r.app='" . $app . "' AND r.type='" . $_query['type'] . "' AND r.type_id IN (" . implode(',', array_values($typeIds)) . ")", 'group' => 'r.app, r.type, r.type_id', 'add_join' => $_query['joins'])); $e = $this->DB->execute(); while ($row = $this->DB->fetch($e)) { $results[$index[$row['type_id']]] = $reputationClass->process($row); } krsort($results); } } //----------------------------------------- // Output //----------------------------------------- /* Process Results */ $processedResults = count($results) ? $reputationClass->display($results) : ''; $this->lang->loadLanguageFile(array('public_profile'), 'members'); /* Setup page */ $langBit = ipsRegistry::$settings['reputation_point_types'] == 'like' ? 'most_rep_likes' : 'most_rep_rep'; $this->registry->output->setTitle($this->lang->words[$langBit] . ' - ' . IPSLib::getAppTitle($app)); $this->registry->output->addNavigation($this->lang->words[$langBit], NULL); /* Display processed results */ $this->registry->output->addContent($this->registry->getClass('output')->getTemplate('profile')->reputationPage($langBit, $app, $supportedApps, $processedResults)); $this->registry->output->sendOutput(); }
/** * Show the mod CP portal * * @return @e void */ protected function _indexPage() { //----------------------------------------- // Init //----------------------------------------- ipsRegistry::getAppClass('forums'); $this->request['tab'] = empty($this->request['tab']) ? 'index' : trim($this->request['tab']); $this->request['fromapp'] = empty($this->request['fromapp']) ? 'index' : trim($this->request['fromapp']); $_plugins = array(); $_tabs = array(); $_activeNav = array('primary' => 'index', 'secondary' => 'index'); $_output = ''; $moderator = $this->registry->class_forums->getModerator(); $tab = $this->request['tab']; $app = $this->request['fromapp']; /** * Loop through all apps and get plugins * * @note When updating this code below remember to update also the core in public_core_reports_reports */ foreach (IPSLib::getEnabledApplications() as $appDir => $appData) { if (is_dir(IPSLib::getAppDir($appDir) . '/extensions/modcp')) { try { foreach (new DirectoryIterator(IPSLib::getAppDir($appDir) . '/extensions/modcp') as $file) { if (!$file->isDot() && $file->isFile()) { if (preg_match('/^plugin_(.+?)\\.php$/', $file->getFileName(), $matches)) { //----------------------------------------- // We load each plugin so it can determine // if it should show based on permissions //----------------------------------------- $classToLoad = IPSLib::loadLibrary($file->getPathName(), 'plugin_' . $appDir . '_' . $matches[1], $appDir); if (class_exists($classToLoad)) { $_plugins[$appDir][$matches[1]] = new $classToLoad($this->registry); if ($_plugins[$appDir][$matches[1]]->canView($moderator)) { //----------------------------------------- // Hacky solution - we want forum plugins to // come first as they're the most used //----------------------------------------- if ($appDir == 'forums' and !empty($_tabs[$_plugins[$appDir][$matches[1]]->getPrimaryTab()])) { array_unshift($_tabs[$_plugins[$appDir][$matches[1]]->getPrimaryTab()], array($_plugins[$appDir][$matches[1]]->getSecondaryTab(), $appDir, $matches[1])); } else { $_tabs[$_plugins[$appDir][$matches[1]]->getPrimaryTab()][] = array($_plugins[$appDir][$matches[1]]->getSecondaryTab(), $appDir, $matches[1]); } /* Sort active tab */ if ($appDir == $app && $tab == $matches[1]) { $_activeNav = array('primary' => $_plugins[$appDir][$matches[1]]->getPrimaryTab(), 'secondary' => $_plugins[$appDir][$matches[1]]->getSecondaryTab()); } } } } } } } catch (Exception $e) { } } } // Move trash can to the bottom - if available if (isset($_tabs['deleted_content'])) { $trashCan = $_tabs['deleted_content']; unset($_tabs['deleted_content']); $_tabs['deleted_content'] = $trashCan; } //----------------------------------------- // If we can't view any tabs, show an error //----------------------------------------- if (!count($_tabs)) { $this->registry->output->showError($this->lang->words['modcp_no_access'], 10194.12, false, null, 403); } //----------------------------------------- // Pass the necessary template variables into the plugin //----------------------------------------- $this->registry->output->getTemplate('modcp')->templateVars['tabs'] = $_tabs; $this->registry->output->getTemplate('modcp')->templateVars['activeNav'] = $_activeNav; //----------------------------------------- // Get appropriate content to show //----------------------------------------- if ($tab and $app and isset($_plugins[$app][$tab])) { $_output = $_plugins[$app][$tab]->executePlugin($moderator); } else { switch ($this->request['do']) { case 'editmember': $_output = $this->_editMember(); break; case 'doeditmember': $_output = $this->_doEditMember(); break; case 'setAsSpammer': $_output = $this->_setAsSpammer(); break; default: $_output = $this->registry->output->getTemplate('modcp')->overview(); break; } } //----------------------------------------- // Output //----------------------------------------- $this->output .= $this->registry->output->getTemplate('modcp')->portalPage($_output, $_tabs, $_activeNav); }
/** * Show the add/edit group form * * @param string 'add' or 'edit' * @return @e void [Outputs to screen] * @todo _initTab doesn't seem to work anymore with the new tabs, need to update each app to have a unique name/id */ protected function _groupForm($type = 'edit') { //----------------------------------------- // Grab group data and start us off //----------------------------------------- if ($type == 'edit') { if ($this->request['id'] == "") { $this->registry->output->showError($this->lang->words['g_whichgroup'], 11210); } $group = $this->DB->buildAndFetch(array('select' => '*', 'from' => 'groups', 'where' => "g_id=" . intval($this->request['id']))); $group = IPSMember::unpackGroup($group, FALSE, TRUE); //----------------------------------------- // Check restrictions. //----------------------------------------- if ($group['g_access_cp']) { $this->registry->getClass('class_permissions')->checkPermissionAutoMsg('groups_edit_admin'); } } else { $group = array(); if ($this->request['id']) { $group = $this->DB->buildAndFetch(array('select' => '*', 'from' => 'groups', 'where' => "g_id=" . intval($this->request['id']))); $group = IPSMember::unpackGroup($group, FALSE, TRUE); } $group['g_title'] = 'New Group'; } //----------------------------------------- // Grab permission masks //----------------------------------------- $perm_masks = array(); $this->DB->build(array('select' => '*', 'from' => 'forum_perms', 'order' => 'perm_name ASC')); $this->DB->execute(); while ($r = $this->DB->fetch()) { $perm_masks[] = array($r['perm_id'], $r['perm_name']); } //----------------------------------------- // Ok? Load interface and child classes //----------------------------------------- $blocks = array('tabs' => array(), 'area' => array()); IPSLib::loadInterface('admin/group_form.php'); $tabsUsed = 5; $firstTab = empty($this->request['_initTab']) ? false : trim($this->request['_initTab']); foreach (IPSLib::getEnabledApplications() as $app_dir => $app_data) { if (is_file(IPSLib::getAppDir($app_dir) . '/extensions/admin/group_form.php')) { $_class = IPSLib::loadLibrary(IPSLib::getAppDir($app_dir) . '/extensions/admin/group_form.php', 'admin_group_form__' . $app_dir, $app_dir); if (class_exists($_class)) { $_object = new $_class($this->registry); $data = $_object->getDisplayContent($group, $tabsUsed); $blocks['area'][$app_dir] = $data['content']; $blocks['tabs'][$app_dir] = $data['tabs']; $tabsUsed = $data['tabsUsed'] ? $tabsUsed + $data['tabsUsed'] : $tabsUsed + 1; if (!empty($this->request['_initTab']) && $this->request['_initTab'] == $app_dir) { $firstTab = $tabsUsed; } } } } //----------------------------------------- // And output to form //----------------------------------------- $this->registry->output->extra_nav[] = array("{$this->settings['base_url']}&{$this->form_code}", $this->lang->words['menu__manage_groups']); $this->registry->output->html .= $this->html->groupsForm($type, $group, $perm_masks, $blocks, $firstTab); }
/** * Modern profile * * @return @e void [Outputs to screen] */ protected function _viewModern() { //----------------------------------------- // INIT //----------------------------------------- $member_id = intval($this->request['id']) ? intval($this->request['id']) : intval($this->request['MID']); if (!$member_id) { $this->registry->output->showError('profiles_no_member', 10246.0, null, null, 404); } //----------------------------------------- // Grab all data... //----------------------------------------- $member = IPSMember::load($member_id, 'profile_portal,pfields_content,sessions,groups', 'id'); //----------------------------------------- // Can we access? //----------------------------------------- if (!$this->memberData['g_mem_info'] && $this->memberData['member_id'] != $member['member_id']) { $this->registry->output->showError('profiles_off', 10245, null, null, 403); } $tab = substr(IPSText::alphanumericalClean(str_replace('..', '', trim($this->request['tab']))), 0, 20); $firsttab = ''; $friends = array(); $visitors = array(); $comment_perpage = 5; $pips = 0; $default_tab = ''; $tabs = array(); $_tabs = array(); $_positions = array(0 => 0); $_member_ids = array(); $sql_extra = ''; $pass = 0; $mod = 0; $_todays_date = getdate(); $_rCustom = intval($this->request['removeCustomization']); $_dCustom = intval($this->request['disableCustomization']); $time_adjust = $this->settings['time_adjust'] == "" ? 0 : $this->settings['time_adjust']; $board_posts = $this->caches['stats']['total_topics'] + $this->caches['stats']['total_replies']; $seenFiles = array(); /* Removing customization? */ if ($_rCustom and ($member_id == $this->memberData['member_id'] or $this->memberData['g_access_cp'] or $this->memberData['g_is_supmod'] and !$member['g_access_cp']) and $this->request['secure_key'] == $this->member->form_hash) { IPSMember::save($member_id, array('extendedProfile' => array('pp_customization' => serialize(array())))); } else { if ($_rCustom) { $this->registry->output->showError('profile_no_remove_perm', '10246.-1', null, null, 403); } } /* Disable? */ if ($_dCustom and ($this->memberData['g_access_cp'] or $this->memberData['g_is_supmod'] and !$member['g_access_cp']) and $this->request['secure_key'] == $this->member->form_hash) { IPSMember::save($member_id, array('core' => array('bw_disable_customization' => 1))); } else { if ($_dCustom) { $this->registry->output->showError('profile_no_remove_perm', '10246.-1', null, null, 403); } } if (!$member['member_id']) { $this->registry->output->showError('profiles_no_member', 10246, null, null, 404); } /* Member banned or is spammer? */ if (IPSMember::isInactive($member) && !$this->memberData['g_is_supmod']) { $this->registry->output->showError('profiles_not_active', '10246.1', null, null, 403); } //----------------------------------------- // Configure tabs //----------------------------------------- foreach (IPSLib::getEnabledApplications() as $appDir => $app) { /* Path to tabs */ $custom_path = IPSLib::getAppDir($appDir) . '/extensions/profileTabs'; if (is_dir($custom_path)) { foreach (new DirectoryIterator($custom_path) as $f) { if (!$f->isDot() && !$f->isDir()) { $file = $f->getFileName(); if ($file[0] == '.') { continue; } if (preg_match('#\\.conf\\.php$#i', $file)) { $classname = str_replace(".conf.php", "", $file); /* Block the old about me file */ if ($classname == 'aboutme') { continue; } $CONFIG = array(); require $custom_path . '/' . $file; /*noLibHook*/ //------------------------------- // Allowed to use? //------------------------------- if ($CONFIG['plugin_enabled']) { /* Block friends tab if we have disabled friends or friends feature is shut off */ if ($CONFIG['plugin_key'] == 'friends' and (!$member['pp_setting_count_friends'] or !$this->settings['friends_enabled'])) { continue; } $CONFIG['app'] = $appDir; $_position = $this->_getTabPosition($_positions, $CONFIG['plugin_order']); $_tabs[$_position] = $CONFIG; $_positions[] = $_position; } } } } } } ksort($_tabs); foreach ($_tabs as $_pos => $data) { $data['_lang'] = isset($this->lang->words[$data['plugin_lang_bit']]) ? $this->lang->words[$data['plugin_lang_bit']] : $data['plugin_name']; $tabs[$data['plugin_key']] = $data; } if ($tab && @is_file(IPSLib::getAppDir($tabs[$tab]['app']) . '/extensions/profileTabs/' . $tab . '.php')) { $default_tab = $tabs[$tab]['app'] . ':' . $tab; /* Update <title> */ $this->lang->words['page_title_pp'] .= ': ' . $tabs[$tab]['_lang']; } else { $default_tab = 'core:info'; } $friends = $this->_getRandomFriends($member); /* Check USER permalink... */ $this->registry->getClass('output')->checkPermalink($member['members_seo_name'] ? $member['members_seo_name'] : IPSText::makeSeoTitle($member['members_display_name'])); /* Build data */ $member = IPSMember::buildDisplayData($member, array('customFields' => 1, 'cfSkinGroup' => 'profile', 'checkFormat' => 1, 'cfGetGroupData' => 1, 'signature' => 1, 'spamStatus' => 1)); //----------------------------------------- // Recent visitor? //----------------------------------------- if ($member['member_id'] != $this->memberData['member_id'] && !IPSMember::isLoggedInAnon($this->memberData)) { $this->_addRecentVisitor($member, $this->memberData['member_id']); } //----------------------------------------- // DST? //----------------------------------------- if ($member['dst_in_use'] == 1) { $member['time_offset'] += 1; } //----------------------------------------- // Format extra user data //----------------------------------------- $member['_age'] = $member['bday_year'] ? date('Y') - $member['bday_year'] : 0; if ($member['bday_month'] > date('n')) { $member['_age'] -= 1; } else { if ($member['bday_month'] == date('n')) { if ($member['bday_day'] > date('j')) { $member['_age'] -= 1; } } } $member['_local_time'] = $member['time_offset'] != "" ? gmstrftime($this->settings['clock_long'], time() + $member['time_offset'] * 3600 + $time_adjust * 60) : ''; $member['g_title'] = IPSMember::makeNameFormatted($member['g_title'], $member['g_id'], $member['prefix'], $member['suffix']); $member['_bday_month'] = $member['bday_month'] ? $this->lang->words['M_' . $member['bday_month']] : 0; //----------------------------------------- // Visitors //----------------------------------------- if ($member['pp_setting_count_visitors']) { $_pp_last_visitors = unserialize($member['pp_last_visitors']); $_visitor_info = array(); if (is_array($_pp_last_visitors)) { krsort($_pp_last_visitors); $_members = IPSMember::load(array_values($_pp_last_visitors), 'extendedProfile'); foreach ($_members as $_id => $_member) { $_visitor_info[$_id] = IPSMember::buildDisplayData($_member, array('reputation' => 0, 'warn' => 0)); } foreach ($_pp_last_visitors as $_time => $_id) { if (!$_visitor_info[$_id]['members_display_name_short']) { $_visitor_info[$_id] = IPSMember::buildDisplayData(IPSMember::setUpGuest(), array('reputation' => 0, 'warn' => 0)); } $_visitor_info[$_id]['_visited_date'] = ipsRegistry::getClass('class_localization')->getDate($_time, 'TINY'); $_visitor_info[$_id]['members_display_name_short'] = $_visitor_info[$_id]['members_display_name_short'] ? $_visitor_info[$_id]['members_display_name_short'] : $this->lang->words['global_guestname']; $visitors[] = $_visitor_info[$_id]; if (count($visitors) == 5) { break; } } } } //----------------------------------------- // Online location //----------------------------------------- $member = IPSMember::getLocation($member); //----------------------------------------- // Add profile view //----------------------------------------- $this->DB->insert('profile_portal_views', array('views_member_id' => $member['member_id']), true); //----------------------------------------- // Grab default tab... //----------------------------------------- $tab_html = ''; if ($tab) { if (@is_file(IPSLib::getAppDir($tabs[$tab]['app']) . '/extensions/profileTabs/' . $tab . '.php')) { require IPSLib::getAppDir('members') . '/sources/tabs/pluginParentClass.php'; /*noLibHook*/ $classToLoad = IPSLib::loadLibrary(IPSLib::getAppDir($tabs[$tab]['app']) . '/extensions/profileTabs/' . $tab . '.php', 'profile_' . $tab, $tabs[$tab]['app']); $plugin = new $classToLoad($this->registry); $tab_html = $plugin->return_html_block($member); } } //----------------------------------------- // Set description tag //----------------------------------------- $_desc = $member['pp_about_me'] ? $member['pp_about_me'] : $member['signature']; if ($_desc) { $this->registry->output->addMetaTag('description', $member['members_display_name'] . ': ' . IPSText::xssMakeJavascriptSafe(IPSText::getTextClass('bbcode')->stripAllTags($_desc))); } /* Reputation */ if ($this->settings['reputation_protected_groups']) { if (in_array($member['member_group_id'], explode(",", $this->settings['reputation_protected_groups']))) { $this->settings['reputation_show_profile'] = false; } } //----------------------------------------- // Try to "fix" empty custom field groups //----------------------------------------- foreach ($member['custom_fields'] as $group => $mdata) { if ($group != 'profile_info' and $group != 'contact') { if (is_array($member['custom_fields'][$group]) and count($member['custom_fields'][$group])) { $_count = 0; foreach ($member['custom_fields'][$group] as $key => $value) { if ($value) { $_count++; } } if (!$_count) { unset($member['custom_fields'][$group]); } } } else { if ($group == 'contact') { $show_contact = false; foreach ($member['custom_fields'][$group] as $key => $value) { $_val = preg_replace('/<!--(.|\\s)*?-->/', '', $value); if ($_val) { $show_contact = true; break; } } } } } //----------------------------------------- // Format signature //----------------------------------------- if ($member['signature']) { IPSText::getTextClass('bbcode')->parse_html = $member['g_dohtml']; IPSText::getTextClass('bbcode')->parse_nl2br = 1; IPSText::getTextClass('bbcode')->parse_smilies = 0; IPSText::getTextClass('bbcode')->parse_bbcode = 1; IPSText::getTextClass('bbcode')->parsing_section = 'signatures'; IPSText::getTextClass('bbcode')->parsing_mgroup = $member['member_group_id']; IPSText::getTextClass('bbcode')->parsing_mgroup_others = $member['mgroup_others']; $member['signature'] = IPSText::getTextClass('bbcode')->preDisplayParse($member['signature']); $member['signature'] = $this->registry->getClass('output')->getTemplate('global')->signature_separator($member['signature']); } //----------------------------------------- // Format 'About me' //----------------------------------------- if ($member['pp_about_me']) { IPSText::getTextClass('bbcode')->parse_html = $member['g_dohtml']; IPSText::getTextClass('bbcode')->parse_nl2br = 1; IPSText::getTextClass('bbcode')->parse_smilies = 1; IPSText::getTextClass('bbcode')->parse_bbcode = 1; IPSText::getTextClass('bbcode')->parsing_section = 'aboutme'; IPSText::getTextClass('bbcode')->parsing_mgroup = $member['member_group_id']; IPSText::getTextClass('bbcode')->parsing_mgroup_others = $member['mgroup_others']; $member['pp_about_me'] = IPSText::getTextClass('bbcode')->preDisplayParse(IPSText::getTextClass('bbcode')->preDbParse($member['pp_about_me'])); } /* final data */ if ($default_tab == 'core:info') { /* Load status class */ if (!$this->registry->isClassLoaded('memberStatus')) { $classToLoad = IPSLib::loadLibrary(IPS_ROOT_PATH . 'sources/classes/member/status.php', 'memberStatus'); $this->registry->setClass('memberStatus', new $classToLoad(ipsRegistry::instance())); } /* Fetch */ $status = $this->registry->getClass('memberStatus')->fetchMemberLatest($member['member_id']); } //----------------------------------------- // Warnings? //----------------------------------------- $warns = array(); if ($member['show_warn']) { if ($member['member_banned']) { $warns['ban'] = 0; $_warn = ipsRegistry::DB()->buildAndFetch(array('select' => 'wl_id', 'from' => 'members_warn_logs', 'where' => "wl_member={$member['member_id']} AND wl_suspend<>0 AND wl_suspend<>-2", 'order' => 'wl_date DESC', 'limit' => 1)); if ($_warn['wl_id']) { $warns['ban'] = $_warn['wl_id']; } } if ($member['temp_ban']) { $warns['suspend'] = 0; $_warn = ipsRegistry::DB()->buildAndFetch(array('select' => 'wl_id', 'from' => 'members_warn_logs', 'where' => "wl_member={$member['member_id']} AND wl_suspend<>0 AND wl_suspend<>-2", 'order' => 'wl_date DESC', 'limit' => 1)); if ($_warn['wl_id']) { $warns['suspend'] = $_warn['wl_id']; } } if ($member['restrict_post']) { $warns['rpa'] = 0; $_warn = ipsRegistry::DB()->buildAndFetch(array('select' => 'wl_id', 'from' => 'members_warn_logs', 'where' => "wl_member={$member['member_id']} AND wl_rpa<>0", 'order' => 'wl_date DESC', 'limit' => 1)); if ($_warn['wl_id']) { $warns['rpa'] = $_warn['wl_id']; } } if ($member['mod_posts']) { $warns['mq'] = 0; $_warn = ipsRegistry::DB()->buildAndFetch(array('select' => 'wl_id', 'from' => 'members_warn_logs', 'where' => "wl_member={$member['member_id']} AND wl_mq<>0", 'order' => 'wl_date DESC', 'limit' => 1)); if ($_warn['wl_id']) { $warns['mq'] = $_warn['wl_id']; } } } //----------------------------------------- // Add to output //----------------------------------------- $this->request['member_id'] = intval($this->request['showuser']); $this->member_name = $member['members_display_name']; $this->output = $this->registry->getClass('output')->getTemplate('profile')->profileModern($tabs, $member, $visitors, $default_tab, $tab_html, $friends, $status, $warns, $show_contact); }
/** * Marks everything within an app as read * * @access public * @param string [App Optional. If ommited, all apps are marked as read] * @return @e void */ public function markAppAsRead($app = '') { /* Search engine? */ if ($this->member->is_not_human === TRUE) { return; } /* Cookie */ $cookie['global'] = time(); $cookie['greset'] = array(); /* One app or all? */ if ($app) { /* Reset member cache */ IPSMember::packMemberCache($this->memberData['member_id'], array('gb_mark__' . $app => time())); /* Mark rows for deletion */ $this->DB->update('core_item_markers', array('item_is_deleted' => 1), "item_app='" . $app . "' AND item_member_id=" . intval($this->memberData['member_id'])); /* Update cookies */ $this->_updateCookieData('itemMarking_' . $app . '_items', array()); $this->_updateCookieData('itemMarking_' . $app, $cookie); } else { /* Do 'em all */ $cache = array(); $apps = IPSLib::getEnabledApplications(array('itemMarking')); foreach ($apps as $app => $data) { $cache['gb_mark__' . $app] = time(); /* Update cookies */ $this->_updateCookieData('itemMarking_' . $app . '_items', array()); $this->_updateCookieData('itemMarking_' . $app, $cookie); } if (count($cache)) { /* Reset member cache */ IPSMember::packMemberCache($this->memberData['member_id'], $cache); } /* Mark rows for deletion */ $this->DB->update('core_item_markers', array('item_is_deleted' => 1), 'item_member_id=' . intval($this->memberData['member_id'])); /* Reset internal array */ $this->_itemMarkers = array(); } /* Save cookie */ $this->_setSaveCookie(); }
/** * Edit a member [process] * * @return @e void */ protected function _memberDoEdit() { //----------------------------------------- // INIT //----------------------------------------- $this->request['member_id'] = intval($this->request['member_id']); //----------------------------------------- // Send to form if this isn't a POST request //----------------------------------------- if ($this->request['request_method'] != 'post') { $this->_memberView(); return; } //----------------------------------------- // Auth check... //----------------------------------------- ipsRegistry::getClass('adminFunctions')->checkSecurityKey($this->request['secure_key']); //----------------------------------------- // Load and config the std/rte editors //----------------------------------------- IPSText::getTextClass('editor')->from_acp = 1; //----------------------------------------- // Get member //----------------------------------------- $member = IPSMember::load($this->request['member_id'], 'all'); //----------------------------------------- // Allowed to edit administrators? //----------------------------------------- if ($member['member_id'] != $this->memberData['member_id'] and $member['g_access_cp'] and !$this->registry->getClass('class_permissions')->checkPermission('member_edit_admin')) { $this->registry->output->global_message = $this->lang->words['m_editadmin']; $this->_memberView(); return; } //----------------------------------------- // Allowed to change an admin's groups? //----------------------------------------- if ($member['g_access_cp'] and !$this->registry->getClass('class_permissions')->checkPermission('member_move_admin1')) { $same = false; if ($this->request['member_group_id'] == $member['member_group_id']) { $member['mgroup_others'] = IPSText::cleanPermString($member['mgroup_others']); $omgroups = $member['mgroup_others'] ? explode(',', $member['mgroup_others']) : array(); $groups = $this->request['mgroup_others'] ? $this->request['mgroup_others'] : array(); if (!count(array_diff($omgroups, $groups)) and !count(array_diff($groups, $omgroups))) { $same = true; } } if (!$same) { $this->registry->output->global_message = $this->lang->words['m_admindemote']; $this->_memberView(); return; } } //----------------------------------------- // What about promoting to admin? //----------------------------------------- if (!$member['g_access_cp'] and !$this->registry->getClass('class_permissions')->checkPermission('member_move_admin2')) { $groups = $_POST['mgroup_others'] ? $_POST['mgroup_others'] : array(); $groups[] = intval($this->request['member_group_id']); foreach ($groups as $group_id) { if ($this->caches['group_cache'][$group_id]['g_access_cp']) { $this->registry->output->global_message = $this->lang->words['m_adminpromote']; $this->_memberView(); return; } } } //----------------------------------------- // What about moving member in general? //----------------------------------------- if ($this->request['member_group_id'] != $member['member_group_id'] and !$this->registry->getClass('class_permissions')->checkPermission('member_move')) { $this->registry->output->global_message = $this->lang->words['m_movemembers']; $this->_memberView(); return; } //----------------------------------------- // Restricted? //----------------------------------------- $restricted = (is_array($this->registry->getClass('class_permissions')->restrictions_row) and count($this->registry->getClass('class_permissions')->restrictions_row)) ? true : false; /* Load editor stuff */ $classToLoad = IPSLib::loadLibrary(IPS_ROOT_PATH . 'sources/classes/editor/composite.php', 'classes_editor_composite'); $_editor = new $classToLoad(); /* Load parser */ $classToLoad = IPSLib::loadLibrary(IPS_ROOT_PATH . 'sources/classes/text/parser.php', 'classes_text_parser'); $parser = new $classToLoad(); /* Get signature */ $_editor->setAllowBbcode(true); $_editor->setAllowSmilies(false); $_editor->setIsHtml($this->request['bw_html_sig'] && $member['g_dohtml']); $_editor->setAllowHtml($member['g_dohtml']); $_editor->setBbcodeSection('signatures'); $signature = $_editor->process($_POST['signature']); $cacheSignature = $parser->display($signature); /* About me editor */ $_editor->setAllowBbcode(true); $_editor->setAllowSmilies(true); $_editor->setAllowHtml($member['g_dohtml']); $_editor->setBbcodeSection('aboutme'); $aboutme = $_editor->process($_POST['aboutme']); //----------------------------------------- // Ok? Load interface and child classes //----------------------------------------- $additionalCore = array(); $additionalExtended = array(); $additionalMCache = array(); IPSLib::loadInterface('admin/member_form.php'); foreach (IPSLib::getEnabledApplications() as $app_dir => $app_data) { if (is_file(IPSLib::getAppDir($app_dir) . '/extensions/admin/member_form.php')) { $_class = IPSLib::loadLibrary(IPSLib::getAppDir($app_dir) . '/extensions/admin/member_form.php', 'admin_member_form__' . $app_dir, $app_dir); $_object = new $_class($this->registry); $remote = $_object->getForSave(); $additionalCore = is_array($remote['core']) ? array_merge($remote['core'], $additionalCore) : $additionalCore; $additionalExtended = is_array($remote['extendedProfile']) ? array_merge($remote['extendedProfile'], $additionalExtended) : $additionalExtended; $additionalMCache = is_array($remote['member_cache']) ? array_merge($remote['member_cache'], $additionalMCache) : $additionalMCache; } } //----------------------------------------- // Fix custom title // @see http://forums.invisionpower.com/index.php?app=tracker&showissue=17383 //----------------------------------------- $memberTitle = $this->request['title']; $rankCache = ipsRegistry::cache()->getCache('ranks'); if (is_array($rankCache) && count($rankCache)) { foreach ($rankCache as $k => $v) { if ($member['posts'] >= $v['POSTS']) { /* If this is the title passed to us from the form, we didn't have a custom title */ if ($v['TITLE'] == $memberTitle) { $memberTitle = ''; } break; } } } //----------------------------------------- // Start array //----------------------------------------- $newMember = array('member_group_id' => intval($this->request['member_group_id']), 'title' => $memberTitle, 'time_offset' => floatval($this->request['time_offset']), 'members_auto_dst' => intval($this->request['dstCheck']), 'dst_in_use' => intval($this->request['dstOption']), 'language' => $this->request['language'], 'skin' => intval($this->request['skin']), 'allow_admin_mails' => intval($this->request['allow_admin_mails']), 'view_sigs' => intval($this->request['view_sigs']), 'posts' => intval($this->request['posts']), 'bday_day' => intval($this->request['bday_day']), 'bday_month' => intval($this->request['bday_month']), 'bday_year' => intval($this->request['bday_year']), 'warn_level' => intval($this->request['warn_level']), 'members_disable_pm' => intval($this->request['members_disable_pm']), 'mgroup_others' => $this->request['mgroup_others'] ? ',' . implode(",", $this->request['mgroup_others']) . ',' : '', 'members_bitoptions' => IPSBWOPtions::freeze($this->request, 'members', 'global'), 'member_uploader' => $this->request['member_uploader']); //----------------------------------------- // Notifications library //----------------------------------------- $classToLoad = IPSLib::loadLibrary(IPS_ROOT_PATH . '/sources/classes/member/notifications.php', 'notifications'); $notifyLibrary = new $classToLoad($this->registry); $notifyLibrary->setMember($member); //----------------------------------------- // Show the form //----------------------------------------- $_basicOptions = array(array('email', $this->lang->words['notopt__email']), array('inline', $this->lang->words['notopt__inline']), array('mobile', $this->lang->words['notopt__mobile'])); $_configOptions = $notifyLibrary->getNotificationData(); $_notifyConfig = $notifyLibrary->getMemberNotificationConfig($newMember); $_defaultConfig = $notifyLibrary->getDefaultNotificationConfig(); $_saveConfig = array(); foreach ($_configOptions as $option) { $_saveConfig[$option['key']] = array(); $_saveConfig[$option['key']]['selected'] = array(); //----------------------------------------- // Loop through and mark what we selected. // Do not allow changing of stuff from disable_override // and disabled, however //----------------------------------------- if (is_array($this->request['config_' . $option['key']]) and count($this->request['config_' . $option['key']])) { foreach ($this->request['config_' . $option['key']] as $_selected) { if (!is_array($_defaultConfig[$option['key']]['disabled']) or !in_array($_selected, $_defaultConfig[$option['key']]['disabled'])) { $_saveConfig[$option['key']]['selected'][] = $_selected; } } } if ($_defaultConfig[$option['key']]['disable_override']) { $_saveConfig[$option['key']]['selected'] = $_defaultConfig[$option['key']]['selected']; } } //----------------------------------------- // Save //----------------------------------------- IPSMember::packMemberCache($member['member_id'], array_merge($additionalMCache, array('notifications' => $_saveConfig, 'show_notification_popup' => intval($this->request['show_notification_popup']))), $member['members_cache']); //----------------------------------------- // Topic preferences //----------------------------------------- $_trackChoice = ''; if ($this->request['auto_track']) { if (in_array($this->request['auto_track_method'], array('none', 'immediate', 'offline', 'daily', 'weekly'))) { $_trackChoice = $this->request['auto_track_method']; } } $newMember['auto_track'] = $_trackChoice; //----------------------------------------- // Custom profile field stuff //----------------------------------------- $classToLoad = IPSLib::loadLibrary(IPS_ROOT_PATH . 'sources/classes/customfields/profileFields.php', 'customProfileFields'); $fields = new $classToLoad(); $fields->initData('edit'); $fields->parseToSave($_POST); /* Check the website url field */ $website_field = $fields->getFieldIDByKey('website'); if ($website_field && $fields->out_fields['field_' . $website_field]) { if (stristr($fields->out_fields['field_' . $website_field], 'http://') === FALSE && stristr($fields->out_fields['field_' . $website_field], 'https://') === FALSE) { $fields->out_fields['field_' . $website_field] = 'http://' . $fields->out_fields['field_' . $website_field]; } } //----------------------------------------- // Throw to the DB //----------------------------------------- IPSMember::save($this->request['member_id'], array('core' => array_merge($newMember, $additionalCore), 'extendedProfile' => array_merge(array('pp_about_me' => $aboutme, 'signature' => $signature, 'pp_reputation_points' => intval($this->request['pp_reputation_points']), 'pp_setting_count_visitors' => intval($this->request['pp_setting_count_visitors']), 'pp_setting_count_comments' => intval($this->request['pp_setting_count_comments']), 'pp_setting_count_friends' => intval($this->request['pp_setting_count_friends']), 'pp_setting_moderate_comments' => intval($this->request['pp_setting_moderate_comments']), 'pp_setting_moderate_friends' => intval($this->request['pp_setting_moderate_friends']), 'pp_customization' => $this->request['removeCustomization'] ? serialize(array()) : $member['pp_customization']), $additionalExtended), 'customFields' => count($fields->out_fields) ? $fields->out_fields : array())); if ($member['member_group_id'] != $newMember['member_group_id']) { IPSLib::runMemberSync('onGroupChange', $this->request['member_id'], $newMember['member_group_id'], $member['member_group_id']); //----------------------------------------- // Remove restrictions if member demoted // Commenting out as this may cause more problems than it's worth // e.g. if you had accidentally changed their group, you'd need to reconfigure all restrictions //----------------------------------------- /*if( !$this->caches['group_cache'][ $newMember['member_group_id'] ]['g_access_cp'] ) { $this->DB->delete( 'admin_permission_rows', 'row_id=' . $member['member_id'] . " AND row_id_type='member'" ); }*/ //----------------------------------------- // Restriction permissions stuff //----------------------------------------- $is_admin = 0; $groups = ipsRegistry::cache()->getCache('group_cache'); if (is_array($this->request['mgroup_others']) and count($this->request['mgroup_others'])) { foreach ($this->request['mgroup_others'] as $omg) { if ($groups[intval($omg)]['g_access_cp']) { $is_admin = 1; break; } } } if ($groups[intval($this->request['member_group_id'])]['g_access_cp']) { $is_admin = 1; } if ($is_admin && $restricted) { //------------------------------------------------- // Copy restrictions if they do not have any yet... //------------------------------------------------- $check = $this->DB->buildAndFetch(array('select' => 'row_updated', 'from' => 'admin_permission_rows', 'where' => "row_id_type='member' AND row_id=" . $this->request['member_id'])); if (!$check['row_updated']) { $this->DB->replace('admin_permission_rows', array('row_id' => $this->request['member_id'], 'row_id_type' => 'member', 'row_perm_cache' => serialize($this->registry->getClass('class_permissions')->restrictions_row), 'row_updated' => time()), array('row_id', 'row_id_type')); } } } //----------------------------------------- // Moved from validating group? //----------------------------------------- if ($member['member_group_id'] == $this->settings['auth_group']) { if ($this->request['member_group_id'] != $this->settings['auth_group']) { //----------------------------------------- // Yes... //----------------------------------------- $this->DB->delete('validating', "member_id=" . $this->request['member_id']); } } /* Update cache */ IPSContentCache::update($this->request['member_id'], 'sig', $cacheSignature); /* Rebuild birthday cache */ $this->cache->rebuildCache('birthdays', 'calendar'); //----------------------------------------- // Redirect //----------------------------------------- ipsRegistry::getClass('adminFunctions')->saveAdminLog(sprintf($this->lang->words['m_editedlog'], $member['members_display_name'])); $this->registry->output->global_message = $this->lang->words['m_edited']; if ($is_admin) { if (!$restricted) { $member = IPSMember::load($member['member_id']); $this->_showAdminForm($member, array()); $this->_memberView(); } else { $this->registry->output->global_message = $this->lang->words['m_edited_restricted']; $this->registry->output->silentRedirectWithMessage($this->settings['base_url'] . $this->form_code . '&do=viewmember&member_id=' . $this->request['member_id']); } } else { $this->registry->output->silentRedirectWithMessage($this->settings['base_url'] . $this->form_code . '&do=viewmember&member_id=' . $this->request['member_id']); } }
/** * Ensure app exists and is enabled * * @param array Task Data * @return array Task Data */ protected function _checkAppEnabled($task) { if (!$task['task_application'] or !ipsRegistry::$applications[$task['task_application']]['app_enabled']) { /* Best update them all */ $_apps = array(); foreach (IPSLib::getEnabledApplications() as $appDir => $appData) { $_apps[] = "'" . $appDir . "'"; } $this->DB->update('task_manager', array('task_enabled' => 0), 'task_application NOT IN (' . implode(',', $_apps) . ')'); /* Fetch task again */ $task = $this->DB->buildAndFetch(array('select' => '*', 'from' => 'task_manager', 'where' => 'task_enabled = 1 AND task_next_run <= ' . $this->time_now, 'order' => 'task_next_run ASC', 'limit' => array(0, 1))); } return $task; }
/** * Rebuild the RSS cache for output * * @param string [Optional app to rebuild] * @return array */ public function rebuildRssCache($app = '') { if (defined('IPS_IS_UPGRADER') and IPS_IS_UPGRADER) { return array(); } $retrieved = array(); foreach (IPSLib::getEnabledApplications() as $app_dir => $app_data) { if ((!empty($app) and $app == $app_dir) || empty($app)) { //----------------------------------------- // Retrieve the RSS links for the header //----------------------------------------- if (is_file(IPSLib::getAppDir($app_dir) . '/extensions/rssOutput.php')) { $classToLoad = IPSLib::loadLibrary(IPSLib::getAppDir($app_dir) . '/extensions/rssOutput.php', 'rss_output_' . $app_dir, $app_dir); if (class_exists($classToLoad)) { $rss = new $classToLoad($this->registry); if (method_exists($rss, "getRssLinks")) { $rssData = $rss->getRssLinks(); if (count($rssData)) { foreach ($rssData as $data) { if (!$data['url']) { continue; } $retrieved[] = $data['title'] . ':|:' . $data['url']; } } } } } } } $this->cache->setCache('rss_output_cache', $retrieved, array('array' => 1)); return $retrieved; }
/** * Show the edit bulk mail form * * @param string [add|edit] * @param array Error messages * @return @e void */ protected function _mailForm($type = 'add', $errors = array()) { //----------------------------------------- // Init some values //----------------------------------------- $id = intval($this->request['id']); if ($type == 'add') { $mail = array(); } else { $mail = $this->DB->buildAndFetch(array('select' => '*', 'from' => 'bulk_mail', 'where' => 'mail_id=' . $this->request['id'])); } if ($this->request['mail_groups']) { $mail['mail_groups'] = $this->request['mail_groups']; } //----------------------------------------- // Format mail content //----------------------------------------- $mail_content = $_POST['mail_content'] ? IPSText::stripslashes($_POST['mail_content']) : $mail['mail_content']; $mail_content = preg_replace("[^\r]\n", "\r\n", $mail_content); if (!$mail_content and $type == 'add') { $mail_content = $this->_getDefaultMailContents(); } /* Bug report #39173 */ $mail_content = IPSText::htmlspecialchars($mail_content); //----------------------------------------- // Get Filters //----------------------------------------- $opts = unserialize($mail['mail_opts']); $id = 1; $filters = array(); foreach (IPSLib::getEnabledApplications() as $app) { $extensionFile = IPSLib::getAppDir($app['app_directory']) . '/extensions/bulkMailFilters.php'; if (file_exists($extensionFile)) { $classToLoad = IPSLib::loadLibrary($extensionFile, 'bulkMailFilters_' . $app['app_directory']); $class = new $classToLoad($this->registry); $filters[$id] = array('appName' => $app['app_title'], 'appKey' => $app['app_directory'], 'filters' => array()); foreach ($class->filters as $f) { $classToLoad = IPSLib::loadLibrary($extensionFile, "bulkMailFilter_{$app['app_directory']}_{$f}"); $_class = new $classToLoad($this->registry); $filters[$id]['filters'][] = array('title' => $this->lang->words["bulkMailFilter_{$app['app_directory']}_{$f}"], 'field' => $_class->getSettingField($opts['filters'][$app['app_directory']][$f])); } $id++; } } /* We want the members tab to be first so it shows groups, which will be the most common filter */ uasort($filters, create_function('$a, $b', 'if ( $a[\'appKey\'] == "members" ) { return -1; } else { return 0; }')); //----------------------------------------- // Output //----------------------------------------- $this->registry->output->html .= $this->html->mailForm($type, $mail, $mail_content, $filters, $errors); }
/** * Run the sitemap generator task. * * @access public * @return void */ public function runTask() { //----------------------------------------- // Check the sitemap file is writable // before going through all the hoohah //----------------------------------------- $sitemapFile = (ipsRegistry::$settings['sitemap_path'] ? ipsRegistry::$settings['sitemap_path'] : DOC_IPS_ROOT_PATH) . 'sitemap.xml'; if (!is_writable($sitemapFile)) { $this->log($this->lang->words['task_path_not_write']); return false; } //----------------------------------------- // Generate //----------------------------------------- /* Process as guest */ ipsRegistry::member()->sessionClass()->setMember(0); /* Init */ $this->log($this->lang->words['smt_start']); /* Run Plugins */ foreach (IPSLib::getEnabledApplications() as $app) { /* Any Plugins? */ if (is_dir(IPSlib::getAppDir($app['app_directory']) . '/extensions/sitemapPlugins')) { /* Yes - run them! */ $this->log(sprintf($this->lang->words['smt_app'], $app['app_directory'])); $directory = new DirectoryIterator(IPSlib::getAppDir($app['app_directory']) . '/extensions/sitemapPlugins'); foreach ($directory as $file) { if ($file->isFile() and substr($file, -4) === '.php') { require_once $file->getPathName(); $pluginName = str_replace('.php', '', $file->getBaseName()); $className = 'sitemap_' . $app['app_directory'] . '_' . str_replace('.php', '', $file->getBaseName()); if (class_exists($className)) { /* Init */ $this->log(sprintf($this->lang->words['smt_plugin'], $pluginName)); $classToLoad = IPSLib::loadLibrary('', 'Sitemap'); $sitemap = new $classToLoad($app['app_directory'], $pluginName); $classToLoad = IPSLib::loadLibrary('', $className); $plugin = new $classToLoad($this->registry, $sitemap); /* Run the plugin */ try { $plugin->generate(); $sitemaps = $sitemap->save(); } catch (ipSeo_Sitemap_File_Exception $ex) { $this->log('- - ' . $ex->getMessage()); continue; } /* Log */ $this->log(sprintf($this->lang->words['smt_generated'], count($sitemaps))); $i = 0; foreach ($sitemaps as $details) { $this->sitemapIndex[] = $details; if ($details['changed']) { $this->log(sprintf($this->lang->words['smt_file'], ++$i, $details['count'])); } } } } } } else { /* Nope */ $this->log(sprintf($this->lang->words['smt_no_plugins'], $app['app_directory'])); } } $this->log($this->lang->words['smt_finished']); /* Put it all togather */ $sitemapIndex = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL; $sitemapIndex .= '<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . PHP_EOL; if (is_array($this->sitemapIndex) and count($this->sitemapIndex)) { foreach ($this->sitemapIndex as $sitemap) { // Skip empty sitemaps: if ($sitemap['count'] == 0) { continue; } // Write sitemap entry: $url = ipsRegistry::$settings['board_url'] . '/index.php?app=core&module=global§ion=sitemap&sitemap=' . $sitemap['file']; $sitemapIndex .= '<sitemap>' . PHP_EOL; $sitemapIndex .= '<loc>' . htmlspecialchars($url) . '</loc>' . PHP_EOL; $sitemapIndex .= '<lastmod>' . date('c', $sitemap['modified']) . '</lastmod>' . PHP_EOL; $sitemapIndex .= '</sitemap>' . PHP_EOL; } } $sitemapIndex .= '</sitemapindex>'; /* Write */ @file_put_contents($sitemapFile, $sitemapIndex); @chmod($sitemapFile, IPS_FILE_PERMISSION); $this->log(sprintf($this->lang->words['smt_written'], $sitemapFile)); //----------------------------------------- // Ping services //----------------------------------------- if (ipsRegistry::$settings['sitemap_ping']) { $this->log($this->lang->words['smt_pinging']); $rtn = true; $sitemapUrl = urlencode((ipsRegistry::$settings['sitemap_url'] ? ipsRegistry::$settings['sitemap_url'] : ipsRegistry::$settings['board_url'] . '/') . 'sitemap.xml'); $classToLoad = IPSLib::loadLibrary(IPS_KERNEL_PATH . 'classFileManagement.php', 'classFileManagement'); $http = new $classToLoad(); $http->timeout = 5; // Ping Google: @$http->getFileContents('http://www.google.com/webmasters/tools/ping?sitemap=' . $sitemapUrl); if ($http->http_status_code != 200) { $rtn = false; $this->log(sprintf($this->lang->words['smt_ping_fail'], "Google")); } else { $this->log(sprintf($this->lang->words['smt_ping_ok'], "Google")); } // Ping Bing: @$http->getFileContents('http://www.bing.com/webmaster/ping.aspx?siteMap=' . $sitemapUrl); if ($http->http_status_code != 200) { $rtn = false; $this->log(sprintf($this->lang->words['smt_ping_fail'], "Bing")); } else { $this->log(sprintf($this->lang->words['smt_ping_ok'], "Bing")); } // Ping Ask: @$http->getFileContents('http://submissions.ask.com/ping?sitemap=' . $sitemapUrl); if ($http->http_status_code != 200) { $rtn = false; $this->log(sprintf($this->lang->words['smt_ping_fail'], "Ask")); } else { $this->log(sprintf($this->lang->words['smt_ping_ok'], "Ask")); } // Ping Moreover: @$http->getFileContents('http://api.moreover.com/ping?u=' . $sitemapUrl); if ($http->http_status_code != 200) { $rtn = false; $this->log(sprintf($this->lang->words['smt_ping_fail'], "Moreover")); } else { $this->log(sprintf($this->lang->words['smt_ping_ok'], "Moreover")); } } //----------------------------------------- // Finish //----------------------------------------- $this->log($this->lang->words['smt_done']); $this->class->appendTaskLog($this->task, $this->log); $this->class->unlockTask($this->task); return true; }