public static function rrssbExtFiles(&$templateName, array &$params, XenForo_Template_Abstract $template) { if ($templateName == 'thread_view') { $template->addRequiredExternal('css', 'SV_rrssbDefault'); $template->preloadTemplate('SV_rrssbShares'); } }
public static function template_create($templateName, array &$params, XenForo_Template_Abstract $template) { switch ($templateName) { case 'thread_online': case 'thread_view': $visitor = XenForo_Visitor::getInstance(); $options = XenForo_Application::get('options'); $livedNodes = $options->sonnb_LiveThread_EnabledNodes; $hasViewPermission = $visitor->hasPermission('sonnb_LiveThread', 'sonnb_LiveThread_Use') || $visitor->hasPermission('sonnb_LiveThread', 'sonnb_LiveThread_Manage'); if (isset($params['thread']) && ($params['thread']['sonnb_live_thread'] || in_array($params['thread']['node_id'], $livedNodes)) && $hasViewPermission) { $template->addRequiredExternal('js', 'js/sonnb/LiveThread/LiveThread.js'); $template->addRequiredExternal('css', 'thread_view_live'); } break; } }
public static function templateCreate(&$templateName, array &$params, XenForo_Template_Abstract $template) { if ($templateName == 'PAGE_CONTAINER' && $template instanceof XenForo_Template_Admin) { $template->addRequiredExternal('css', 'devkit'); } }
public static function template_post_render($templateName, &$content, array &$containerData, XenForo_Template_Abstract $template) { if ($template instanceof XenForo_Template_Admin || !self::$_hasPerm) { return; } $xenOptions = XenForo_Application::get('options'); $visitor = XenForo_Visitor::getInstance(); $params = $template->getParams(); /** @var sonnbUpThread_Model_Log $upModel */ $upModel = XenForo_Model::create('sonnbUpThread_Model_Log'); if (!empty($params['forum']['node_id']) && in_array($params['forum']['node_id'], $xenOptions->sonnbUpThread_allowedNodes)) { switch ($templateName) { case 'forum_view': if (!$xenOptions->SUT_showInThreadList) { return; } if (preg_match_all('#<li[^>]*?\\bid="thread-([0-9]+)"[^>]*+>(.*)<\\/li>#Usi', $content, $matchThreads)) { $template->addRequiredExternal('js', 'js/sonnb/UpThread/threadlist.js'); foreach ($matchThreads[1] as $index => $threadId) { $thread = false; if (isset($params['threads'][$threadId])) { $thread = $params['threads'][$threadId]; } else { if (isset($params['stickyThreads'][$threadId])) { $thread = $params['stickyThreads'][$threadId]; } } if (!$upModel->canUpThread($thread)) { continue; } $params['canAutoUp'] = $upModel->canScheduleThread($thread); if ($thread && $thread['discussion_state'] == 'visible' && ($thread['discussion_open'] || !$thread['discussion_open'] && !$xenOptions->sonnbUpThread_disableOnClosed)) { if (preg_match('#<div[^>]*?\\bclass="controls(.*)"[^>]*+>(.*)<\\/div>#Usi', $matchThreads[0][$index], $matchCtrl)) { $params['thread'] = $thread; $btnHtml = $template->create('sonnb_up_thread_list', $params); $matchCtrlNew = str_replace($matchCtrl[2], $matchCtrl[2] . $btnHtml, $matchCtrl[0]); $matchThreadNew = str_replace($matchCtrl[0], $matchCtrlNew, $matchThreads[0][$index]); $content = str_replace($matchThreads[0][$index], $matchThreadNew, $content); } } } } break; case 'thread_view': $thread = $params['thread']; if (!$upModel->canUpThread($thread)) { return; } $params['canAutoUp'] = $upModel->canScheduleThread($thread); if ($thread['discussion_state'] == 'visible' && ($thread['discussion_open'] || !$thread['discussion_open'] && !$xenOptions->sonnbUpThread_disableOnClosed)) { $template->addRequiredExternal('js', 'js/sonnb/UpThread/threadlist.js'); if ($xenOptions->sonnbUpThread_enableLimit && ($xenOptions->SUT_countdown || $xenOptions->SUT_countdown_top)) { $requireWait = $xenOptions->sonnbUpThread_requireDelay; $delayThread = $upModel->getPermission('SUT_upDelayThread'); $delayGlobal = $upModel->getPermission('SUT_upDelayGlobal'); $duration = $lastThreadUpTime = $lastGlobalUpTime = 0; if ($delayThread > 0) { $lastThreadUpTime = $upModel->getLastUptime($visitor['user_id'], $thread['thread_id']); if (!$lastThreadUpTime && $requireWait) { $lastThreadUpTime = $thread['post_date']; } } if ($delayGlobal > 0) { $lastGlobalUpTime = $upModel->getLastUptime($visitor['user_id']); } if ($lastThreadUpTime > 0 || $lastGlobalUpTime > 0) { if ($lastThreadUpTime + $delayThread > $lastGlobalUpTime + $delayGlobal) { $duration = $lastThreadUpTime + $delayThread; } else { $duration = $lastGlobalUpTime + $delayGlobal; } } $now = XenForo_Application::$time; if ($duration > $now) { $params['upCountDown'] = $duration; $countdown = $params['upCountDown'] - $now; if ($countdown > 1000) { $params['upCountDownFormat'] = 'owdhMS'; $params['upCountDownLayout'] = '{o<}{onn}m {o>}{w<}{wnn}w {w>}{d<}{dnn}d {d>}{h<}{hnn}:{h>}{mnn}:{snn}'; } else { $params['upCountDownFormat'] = 'S'; $params['upCountDownLayout'] = '{snn} ' . new XenForo_Phrase('SUT_seconds'); } } } if (preg_match('#<div[^>]*?\\bclass="linkGroup\\s*SelectionCountContainer"[^>]*+>(.*)<\\/div>#Usi', $content, $matchCtrl)) { if ($xenOptions->SUT_singleUpButton) { $_templateName = 'sonnb_up_thread_view_single'; } else { $_templateName = 'sonnb_up_thread_view'; } $btnHtml = $template->create($_templateName, $params); $matchCtrlNew = str_replace($matchCtrl[1], $btnHtml . $matchCtrl[1], $matchCtrl[0]); $content = str_replace($matchCtrl[0], $matchCtrlNew, $content); } if (preg_match('#<div[^>]*?\\bclass="submitUnit"[^>]*+>.*<input[^>]*?\\btype="submit"\\s*\\bclass="button\\s*primary"[^>]*+>#Usi', $content, $matchSubmit)) { $btnHtml = $template->create('sonnb_up_thread_reply_up', $params); $content = str_replace($matchSubmit[0], $matchSubmit[0] . $btnHtml, $content); } } break; } } unset($params); }
/** * @param $hookName * @param $contents * @param array $hookParams * @param XenForo_Template_Abstract $template */ public static function template_hook($hookName, &$contents, array $hookParams, XenForo_Template_Abstract $template) { if (!self::canViewGallery()) { return; } if ($template instanceof XenForo_Template_Admin) { return; } $params = array_merge($template->getParams(), $hookParams); switch ($hookName) { case 'account_wrapper_sidebar': $contents .= $template->create('sonnb_xengallery_account_nav', $params); break; case 'navigation_visitor_tab_links2': $contents .= $template->create('sonnb_xengallery_nav_visitor', $params); break; case 'member_card_stats': $contents .= $template->create('sonnb_xengallery_member_card', $params); break; case 'member_view_info_block': $contents .= $template->create('sonnb_xengallery_member_view_info', $params); break; case 'member_card_links': $contents .= $template->create('sonnb_xengallery_member_card_links', $params); break; case 'member_view_tabs_heading': $contents .= $template->create('sonnb_xengallery_member_view_tabs_heading', $params); break; case 'member_view_tabs_content': $contents .= $template->create('sonnb_xengallery_member_view_tabs_content', $params); break; case 'search_form_tabs': $contents .= $template->create('sonnb_xengallery_search_form_tabs_album', $params); $contents .= $template->create('sonnb_xengallery_search_form_tabs_photo', $params); $contents .= $template->create('sonnb_xengallery_search_form_tabs_video', $params); break; case 'sonnb_cr_information': if ($tos = XenForo_Application::getOptions()->sonnbXG_copyright) { $contents .= $template->create('sonnb_xengallery_option_copyright', array('tos' => $tos)); } if (XenForo_Application::getConfig()->get('sonnbXengalleryCopyrightRemoved') !== true) { $contents .= $template->create('sonnb_xengallery_copyright'); } break; case 'editor': if (XenForo_Application::$versionId > 1020000 && XenForo_Application::getOptions()->sonnbXG_editorButtons) { $template->addRequiredExternal('js', 'js/sonnb/XenGallery/gallery.editor.js'); } break; case 'xengallery_quick_navigation_menu': $contents .= $template->create('sonnb_xengallery_quick_navigation_menu_gallery'); break; } }