Пример #1
0
 /**
  * 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;
 }
Пример #3
0
 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']} &nbsp;<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&amp;module=global&amp;section=login&amp;do=logout&amp;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&amp;module=global&amp;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&amp;module=global&amp;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> &nbsp;ВКонтакте&nbsp;</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> &nbsp;Сайт&nbsp;</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> &nbsp;Магазин&nbsp;</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&amp;module=profile&amp;section=status&amp;do=new&amp;k={$this->member->form_hash}&amp;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&amp;module=search&amp;do=user_activity&amp;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&amp;module=profile&amp;section=friends&amp;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&amp;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&amp;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&amp;module=search&amp;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&amp;module=usercp&amp;tab=core&amp;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&amp;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&amp;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&amp;module=usercp&amp;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&amp;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&amp;module=search&amp;do=user_activity&amp;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&amp;module=extras&amp;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&amp;module=search&amp;do=viewNewContent&amp;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&amp;module=global&amp;section=navigation&amp;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&amp;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&amp;module=reports&amp;do=index", "public", ''), "", "") . "\" title='{$this->lang->words['view_reports']}'>{$this->memberData['_cache']['report_num']} {$this->lang->words['report_member_bar']}</a>\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>&nbsp;</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&amp;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&amp;module=search&amp;do=user_activity&amp;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&amp;module=global&amp;section=login&amp;do=logout&amp;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&amp;module=forums&amp;section=markasread&amp;marktype=all&amp;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&amp;module=forums&amp;section=markasread&amp;marktype=all&amp;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&amp;module=global&amp;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&amp;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']}&amp;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;
 }
Пример #4
0
 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&amp;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&amp;module=reports&amp;do=index", "public", ''), "", "") . "\" title='{$this->lang->words['view_reports']}'>{$this->memberData['_cache']['report_num']} {$this->lang->words['report_member_bar']}</a>\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&amp;module=messaging", "public", ''), "", "") . "' title='{$this->lang->words['your_messenger']}'>" . ($this->memberData['msg_count_new'] ? "<span class='ipsHasNotifications'>{$this->memberData['msg_count_new']}</span>" : "") . "&nbsp;</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&amp;module=usercp&amp;area=notificationlog", "public", ''), "", "") . "\" title=\"{$this->lang->words['notifications_at_the_top']}\">" . ($this->memberData['notification_cnt'] ? "<span class='ipsHasNotifications'>{$this->memberData['notification_cnt']}</span>" : "") . "&nbsp;</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']} &nbsp;<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&amp;module=global&amp;section=login&amp;do=logout&amp;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>&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;<a href=\"" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&amp;module=global&amp;section=register&amp;do=reval", "public", ''), "", "") . "\" title='{$this->lang->words['resend_val']}'>{$this->lang->words['resend_val']}</a></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&amp;module=profile&amp;section=status&amp;do=new&amp;k={$this->member->form_hash}&amp;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'])) ? "&nbsp;&nbsp;\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>" : "") . " &nbsp; \n\t\t\t\t\t\t\t\t\t\t\t" . ((IPSLib::fbc_enabled() and $this->memberData['fb_uid']) ? "&nbsp;<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&amp;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&amp;module=search&amp;do=user_activity&amp;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&amp;module=search&amp;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&amp;module=profile&amp;section=friends&amp;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&amp;module=usercp&amp;tab=core&amp;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&amp;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&amp;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&amp;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&amp;module=global&amp;section=login&amp;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&amp;module=global&amp;section=login&amp;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&amp;module=global&amp;section=login&amp;do=process&amp;use_live=1&amp;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&nbsp;&nbsp;&nbsp;&nbsp;\n\t\t\t\t\t\t\t\t\t<a href='" . $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl("app=core&amp;module=global&amp;section=login", "public", ''), "", "") . "' title='{$this->lang->words['sign_in']}' id='sign_in'>{$this->lang->words['sign_in']}</a>&nbsp;&nbsp;&nbsp;\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&amp;module=global&amp;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&amp;module=global&amp;section=navigation&amp;inapp=" . IPS_APP_COMPONENT . "", "public", ''), "", "") . "\" rel=\"quickNavigation\" accesskey='9' id='quickNavLaunch' title='{$this->lang->words['launch_quicknav']}'><span>&nbsp;</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&amp;module=search&amp;do=viewNewContent&amp;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>&nbsp;</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&amp;module=global&amp;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&amp;module=extras&amp;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'] ? " &middot; " : "") . "\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&amp;module=forums&amp;section=markasread&amp;marktype=all&amp;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&amp;module=forums&amp;section=markasread&amp;marktype=all&amp;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&amp;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']}&amp;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;
 }
Пример #5
0
 /**
  * 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);
 }
Пример #6
0
 /**
  * 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;
 }
Пример #7
0
 /**
  * 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();
 }
Пример #8
0
 /**
  * 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&amp;module=search&amp;do=followed&amp;search_app=" . IPSSearchRegistry::get('in.search_app') . '&amp;sid=' . $this->request['_sid'] . "&amp;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);
 }
Пример #9
0
 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&amp;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&amp;module=search&amp;do=user_activity&amp;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&amp;module=search&amp;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&amp;module=profile&amp;section=friends&amp;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&amp;module=usercp&amp;tab=core&amp;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&amp;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&amp;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&amp;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&amp;module=global&amp;section=login&amp;do=logout&amp;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&amp;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&amp;module=reports&amp;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;
 }
Пример #10
0
 /**
  * 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;
 }
Пример #11
0
 /**
  * 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&amp;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;
 }
Пример #12
0
 /**
  * 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();
 }
Пример #13
0
 /**
  * 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&section=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&amp;module=usercp&amp;tab=' . $_TAB . '&amp;area=' . $_AREA, $_navData['title']);
                     }
                 }
             }
         }
     }
     //-----------------------------------------
     // Set up basic navigation
     //-----------------------------------------
     $this->_nav[] = array($this->lang->words['t_title'], '&amp;app=core&amp;module=usercp');
     $this->_nav[] = array($this->lang->words['tab__' . $_TAB] ? $this->lang->words['tab__' . $_TAB] : IPSLib::getAppTitle($_TAB), '&amp;app=core&amp;module=usercp&amp;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();
 }
Пример #14
0
 /**
  * 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']}&amp;tab=reputation&amp;app_tab={$app}&amp;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);
 }
Пример #15
0
 /**
  * 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;
 }
Пример #16
0
 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&section=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&section=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&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" : "") . "\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&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'>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&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 ? "\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&section=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&section=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&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\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&section=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&section=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&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\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&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\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&amp;module=extras&amp;section=boardrules", "public", ''), "", "") . "") . "'>" . ($this->settings['gl_title'] ? "{$this->settings['gl_title']}" : "{$this->lang->words['board_rules']}") . "</a>" . ($this->settings['priv_title'] ? " &middot; " : "") . "\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&amp;module=global&amp;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;
 }
Пример #17
0
 /**
  * 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();
 }
Пример #18
0
 /**
  * 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);
 }
Пример #19
0
 /**
  * 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']}&amp;{$this->form_code}", $this->lang->words['menu__manage_groups']);
     $this->registry->output->html .= $this->html->groupsForm($type, $group, $perm_masks, $blocks, $firstTab);
 }
Пример #20
0
 /**
  * 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();
 }
Пример #22
0
 /**
  * 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;
 }
Пример #24
0
 /**
  * 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;
 }
Пример #25
0
 /**
  * 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);
 }
Пример #26
0
 /**
  * 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&section=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;
 }