protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { $visitor = XenForo_Visitor::getInstance(); if (XenForo_Permission::hasPermission($visitor['permissions'], 'moturdrn_gw2api', 'verified')) { require_once "library/Moturdrn/TS3GW2Auth/Includes/TeamSpeak3/ts3admin.class.php"; $tsAdmin = new ts3admin(XenForo_Application::getOptions()->ts3gw2auth_ts3server, XenForo_Application::getOptions()->ts3gw2auth_ts3sqport); if ($tsAdmin->getElement('success', $tsAdmin->connect())) { $tsAdmin->login(XenForo_Application::getOptions()->ts3gw2auth_ts3username, XenForo_Application::getOptions()->ts3gw2auth_ts3password); $tsAdmin->selectServer(XenForo_Application::getOptions()->ts3gw2auth_ts3port); } $ts3server = array(); $serverinfo = $tsAdmin->serverInfo(); $ts3server['server_name'] = $serverinfo['data']['virtualserver_name']; $ts3server['connected_clients'] = $serverinfo['data']['virtualserver_clientsonline']; $channellist = $tsAdmin->channelList("-topic -flags -voice -limits -icon"); $clientlist = $tsAdmin->clientList("-uid -away -voice -times -groups -info -country -icon -ip -badges"); foreach ($channellist['data'] as $channelInfo) { $ts3server['channellist'][$channelInfo['cid']] = $channelInfo; } foreach ($clientlist['data'] as $clientInfo) { if ($clientInfo['client_type'] == 1) { $this->subtractClient($ts3server['channellist'], $clientInfo['cid']); } else { $ts3server['clientlist'][] = $clientInfo; } } $ts3server['channellist'] = $this->buildTree($ts3server['channellist']); $ts3server['clientlist'] = $this->array_orderby($ts3server['clientlist'], 'client_talk_power', SORT_DESC, 'client_nickname', SORT_ASC); $output = ""; foreach ($ts3server['channellist'] as $channel) { $output .= $this->outputChannel($channel, $ts3server['clientlist']); } $tsOutput = <<<HTML <b><a href="https://www.gunnars-hold.eu/resources/gunnars-hold-ts-information.10/" class='tschannellink'>* Connection & Server Details</a></b><br /> <b><a href='ts3server://ts3.gunnars-hold.eu/?port=9987' class='tschannellink'>* Or Click Here To Connect Now!</a></b><br /><br /> {$output} HTML; } else { $tsOutput = 'You cannot view this item'; } $renderTemplateObject->setParam('tsOutput', $tsOutput); return $renderTemplateObject->render(); }
/** * Renders the widget. * Add variables to the template obj: $renderTemplateObject->setParam('users', $users); * @param array $widget * @param string $positionCode * @param array $params * @param XenForo_Template_Abstract $renderTemplateObject * @return string */ protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { $carouselModel = $this->_getCarouselModel(); // Get posts and attachments. $posts = $carouselModel->getThreadAndPostDataFromWidgetId($widget['widget_id'], 0); $renderTemplateObject->setParam('posts', $posts); $renderTemplateObject->setParam('widget_id', $widget['widget_id']); return $renderTemplateObject->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { $limit = XenForo_Application::getOptions()->get('xengalleryShowRecentComments', 'limit'); if (!empty($widget['options']['limit'])) { $limit = $widget['options']['limit']; } $renderTemplateObject->setParam('limit', $limit); $renderTemplateObject->setParam('title', $this->extraPrepareTitle($widget)); return $renderTemplateObject->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { if ('forum_list' == $positionCode) { $renderTemplateObject->setParam('boardTotals', $params['boardTotals']); } else { $core = WidgetFramework_Core::getInstance(); $boardTotals = $core->getModelFromCache('XenForo_Model_DataRegistry')->get('boardTotals'); if (!$boardTotals) { $boardTotals = $core->getModelFromCache('XenForo_Model_Counters')->rebuildBoardTotalsCounter(); } $renderTemplateObject->setParam('boardTotals', $boardTotals); } return $renderTemplateObject->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { if ('forum_list' === $positionCode and !empty($params['onlineUsers'])) { $renderTemplateObject->setParam('onlineUsers', $params['onlineUsers']); } else { if (empty($GLOBALS['WidgetFramework_onlineUsers'])) { $visitor = XenForo_Visitor::getInstance(); $sessionModel = WidgetFramework_Core::getInstance()->getModelFromCache('XenForo_Model_Session'); $GLOBALS['WidgetFramework_onlineUsers'] = $sessionModel->getSessionActivityQuickList($visitor->toArray(), array('cutOff' => array('>', $sessionModel->getOnlineStatusTimeout())), $visitor['user_id'] ? $visitor->toArray() : null); } $renderTemplateObject->setParam('onlineUsers', $GLOBALS['WidgetFramework_onlineUsers']); } return $renderTemplateObject->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { if ('forum_list' === $positionCode and !empty($params['onlineUsers']) and !empty($params['visitor'])) { $renderTemplateObject->setParam('onlineUsers', $params['onlineUsers']); $renderTemplateObject->setParam('visitor', $params['visitor']); XenForo_Application::set(self::APPLICATION_KEY, $params['onlineUsers']); } else { $visitor = XenForo_Visitor::getInstance(); $onlineUsers = $this->_getOnlineUsers(); $renderTemplateObject->setParam('onlineUsers', $onlineUsers); $renderTemplateObject->setParam('visitor', $visitor); } return $renderTemplateObject->render(); }
/** * Renders the widget. * Add variables to the template obj: $renderTemplateObject->setParam('users', $users); * @param array $widget * @param string $positionCode * @param array $params * @param XenForo_Template_Abstract $renderTemplateObject * @return string */ protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { /* Widget Info */ $widgets = array(); /* Carousel Info */ if ($canEditCarousel = WidgetPortal_Helper_Permission_Carousel::canEditCarousel()) { $widgetModel = $this->_getWidgetModel(); $widgets['carousel'] = $widgetModel->getAllFrontendEditableWidgets(); } /* TODO add future editable widgets here */ /* Permissions */ $renderTemplateObject->setParam('canEditCarousel', $canEditCarousel); $renderTemplateObject->setParam('widgets', $widgets); return $renderTemplateObject->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { $order = 'new'; if (!empty($widget['options']['order']) && in_array($widget['options']['order'], array('new', 'rand'), true)) { $order = $widget['options']['order']; } $limit = XenForo_Application::getOptions()->get('xengalleryRecentMediaLimit'); if (!empty($widget['options']['limit'])) { $limit = $widget['options']['limit']; } $renderTemplateObject->setParam('order', $order); $renderTemplateObject->setParam('limit', $limit); $renderTemplateObject->setParam('blockPhrase', $this->extraPrepareTitle($widget)); $renderTemplateObject->setParam('isSidebarBlock', strpos($positionCode, 'hook:') !== 0); return $renderTemplateObject->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $template) { $core = WidgetFramework_Core::getInstance(); /** @var Tinhte_XenTag_XenForo_Model_Tag $tagModel */ $tagModel = $core->getModelFromCache('XenForo_Model_Tag'); if (!empty($widget['options']['limit'])) { $limit = $widget['options']['limit']; } else { $limit = XenForo_Application::getOptions()->get('tagCloud', 'count'); } $tags = $tagModel->getTagsForCloud($limit); $tagsLevels = $tagModel->getTagCloudLevels($tags); $template->setParam('tags', $tags); $template->setParam('tagsLevels', $tagsLevels); return $template->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { if (!XenForo_Visitor::getInstance()->hasPermission('modm_ajaxchat', 'ajax_chat_view')) { return ""; } /* @var $ajaxChatModel MODM_AJAXChat_Model_Chat */ $ajaxChatModel = XenForo_Model::create("MODM_AJAXChat_Model_Chat"); // Removes inactive users $ajaxChatModel->checkAndRemoveInactive(); // Get online users for all accessible channels: $channels = $ajaxChatModel->getChannels(); // Add the own private channel if allowed: if ($ajaxChatModel->isAllowedToCreatePrivateChannel()) { array_push($channels, $ajaxChat->getPrivateChannelID()); } // Add the invitation channels: foreach ($ajaxChatModel->getInvitations() as $channelID) { if (!in_array($channelID, $channels)) { array_push($channels, $channelID); } } $userNames = $ajaxChatModel->getOnlineUsers($channels); /* @var $userModel XenForo_Model_User */ $userModel = XenForo_Model::create("XenForo_Model_User"); $guestUsers = array(); $ajaxChat['onlineUsers'] = $userModel->getUsersByNames($userNames, array(), $guestUsers); $ajaxChat['members'] = count($ajaxChat['onlineUsers']); $ajaxChat['guests'] = XenForo_Application::getOptions()->get('modm_ajaxchat_options_allowguests') != "0" ? count($guestUsers) : null; $ajaxChat['total'] = $ajaxChat['members'] + $ajaxChat['guests']; $ajaxChat['limit'] = $ajaxChat['members'] < 10 ? $ajaxChat['members'] : 10; $ajaxChat['recordsUnseen'] = $ajaxChat['members'] > $ajaxChat['limit'] ? true : false; $renderTemplateObject->setParam('AjaxChat', $ajaxChat); return $renderTemplateObject->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { if (empty($widget['options']['limit'])) { $widget['options']['limit'] = 5; } if (empty($widget['options']['order'])) { $widget['options']['order'] = 'register_date'; } if (empty($widget['options']['direction'])) { $widget['options']['direction'] = 'DESC'; } $users = false; // try to be smart and get the users data if they happen to be available if ($positionCode == 'member_list') { if ($widget['options']['limit'] == 12 && $widget['options']['order'] == 'message_count' and !empty($params['activeUsers'])) { $users = $params['activeUsers']; } if ($widget['options']['limit'] == 8 && $widget['options']['order'] == 'register_date' and !empty($params['latestUsers'])) { $users = $params['latestUsers']; } } if ($users === false) { /** @var XenForo_Model_User $userModel */ $userModel = WidgetFramework_Core::getInstance()->getModelFromCache('XenForo_Model_User'); $conditions = array('user_state' => 'valid', 'is_banned' => 0); $fetchOptions = array('limit' => $widget['options']['limit'], 'order' => $widget['options']['order'], 'direction' => $widget['options']['direction']); $users = $userModel->getUsers($conditions, $fetchOptions); } $renderTemplateObject->setParam('users', $users); return $renderTemplateObject->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { $renderTemplateObject->setParams($params); if (!isset($params['url'])) { // try to detect the correct url for different templates $autoDetectedUrl = false; switch ($positionCode) { case 'forum_list': $autoDetectedUrl = XenForo_Link::buildPublicLink('canonical:forums'); break; case 'forum_view': $autoDetectedUrl = XenForo_Link::buildPublicLink('canonical:forums', $params['forum']); break; case 'member_view': // this widget on member_view, seriously? $autoDetectedUrl = XenForo_Link::buildPublicLink('canonical:members', $params['user']); break; case 'resource_author_view': $autoDetectedUrl = XenForo_Link::buildPublicLink('canonical:resources/authors', $params['user']); break; case 'resource_view': $autoDetectedUrl = XenForo_Link::buildPublicLink('canonical:resources', $params['resource']); break; case 'thread_view': $autoDetectedUrl = XenForo_Link::buildPublicLink('canonical:threads', $params['thread']); break; } if ($autoDetectedUrl !== false) { $renderTemplateObject->setParam('url', $autoDetectedUrl); } } return $renderTemplateObject->render(); }
/** * Required method: prepare data or whatever to get the render template ready to * be rendered. * * @param array $widget * @param string $positionCode * @param array $params * @param XenForo_Template_Abstract $renderTemplateObject */ protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { $minecraftServerModel = $this->_getMinecraftServerModel(); //Get all active minecraft servers from the database $minecraftServers = $minecraftServerModel->prepareMinecraftServers($minecraftServerModel->getAllActiveMinecraftServers()); $renderTemplateObject->setParam('minecraftServers', $minecraftServers); return $renderTemplateObject->render(); }
protected function _render(array $widget, $templateName, array $params, XenForo_Template_Abstract $renderTemplateObject) { $userModel = WidgetFramework_Core::getInstance()->getModelFromCache('XenForo_Model_User'); $fetchOptions = array(); $users = $userModel->getTopUsers($widget['options']); $renderTemplateObject->setParam('users', $users); return $renderTemplateObject->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { $options = XenForo_Application::get('options'); if ($options->dark_taigachat_sidebar) { $taigamodel = XenForo_Model::create('Dark_TaigaChat_Model_TaigaChat'); $onlineUsersTaiga = $taigamodel->getActivityUserList(); $renderTemplateObject->setParam('taigachat', array('online' => $onlineUsersTaiga)); } return $renderTemplateObject->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { if (!XenForo_Visitor::getInstance()->hasPermission('modm_ajaxchat', 'ajax_chat_view')) { return ""; } /* @var $ajaxChatModel MODM_AJAXChat_Model_Chat */ $ajaxChatModel = XenForo_Model::create("MODM_AJAXChat_Model_Chat"); $ajaxChat = $ajaxChatModel->getWidgetContent(); $renderTemplateObject->setParam('AjaxChatShoutbox', $ajaxChat); return $renderTemplateObject->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { $limit = XenForo_Application::getOptions()->get('xengalleryShowTopContributors', 'limit'); if (!empty($widget['options']['limit'])) { $limit = $widget['options']['limit']; } /** @var XenGallery_Model_Media $mediaModel */ $mediaModel = WidgetFramework_Core::getInstance()->getModelFromCache('XenGallery_Model_Media'); $users = $mediaModel->getTopContributors($limit); $renderTemplateObject->setParam('users', $users); return $renderTemplateObject->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $template) { $core = WidgetFramework_Core::getInstance(); /** @var Tinhte_XenTag_XenForo_Model_Tag $tagModel */ $tagModel = $core->getModelFromCache('XenForo_Model_Tag'); if (!empty($widget['options']['days'])) { $days = $widget['options']['days']; } else { $days = Tinhte_XenTag_Option::get('trendingDays'); } $cutoff = XenForo_Application::$time - $days * 86400; if (!empty($widget['options']['limit'])) { $limit = $widget['options']['limit']; } else { $limit = Tinhte_XenTag_Option::get('trendingMax'); } $tags = $tagModel->Tinhte_XenTag_getTrendingTags($cutoff, $limit); $tagsLevels = $tagModel->getTagCloudLevels($tags); $template->setParam('tags', $tags); $template->setParam('tagsLevels', $tagsLevels); return $template->render(); }
protected function _renderOptions(XenForo_Template_Abstract $template) { $params = $template->getParams(); $categoriesRaw = WidgetFramework_Core::getInstance()->getModelFromCache('XenResource_Model_Category')->getAllCategories(); $categories = array(); foreach ($categoriesRaw as $categoryId => &$categoryRaw) { $category = array('value' => $categoryId, 'label' => $categoryRaw['category_title'], 'depth' => $categoryRaw['depth']); if (!empty($params['options']['categories']) and in_array($category['value'], $params['options']['categories'])) { $category['selected'] = true; } $categories[] = $category; } $template->setParam('categories', $categories); return parent::_renderOptions($template); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $template) { $threads = array(); $tags = Tinhte_XenTag_Helper::explodeTags($widget['options']['tags']); $tagsText = array(); foreach ($tags as $tag) { $tag = trim($tag); if (!empty($tag)) { $tagsText[] = $tag; } } if (!empty($tagsText)) { $core = WidgetFramework_Core::getInstance(); /* @var $threadModel XenForo_Model_Thread */ $threadModel = $core->getModelFromCache('XenForo_Model_Thread'); /* @var $tagModel Tinhte_XenTag_Model_Tag */ $tagModel = $core->getModelFromCache('Tinhte_XenTag_Model_Tag'); $tags = $tagModel->getTagsByText($tagsText); $threadIds = array(); foreach ($tags as $tag) { $latest = Tinhte_XenTag_Helper::unserialize($tag['latest_tagged_contents']); if (empty($latest)) { // for some reason, the latest_tagged_contents field is empty // this is illogical because at least there is 1 tagged content (current thread) // so we will rebuild the tag... $latest = $tagModel->updateTag($tag['tag_id']); } if (!empty($latest)) { foreach ($latest as $taggedContent) { if ($taggedContent['content_type'] == 'thread') { $threadIds[] = $taggedContent['content_id']; } } } } if (!empty($threadIds)) { $threadIds = array_unique($threadIds); $forumIds = $this->_helperGetForumIdsFromOption(array(), $params, empty($widget['options']['as_guest']) ? false : true); // quick way to get all viewable forum ids $conditions = array('node_id' => $forumIds, Tinhte_XenTag_XenForo_Model_Thread::CONDITIONS_THREAD_ID => $threadIds, 'deleted' => false, 'moderated' => false); $fetchOptions = array('limit' => $widget['options']['limit'], 'join' => XenForo_Model_Thread::FETCH_AVATAR, 'order' => 'post_date', 'orderDirection' => 'desc'); $threads = $threadModel->getThreads($conditions, $fetchOptions); } } $template->setParam('threads', $threads); return $template->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { if (empty($widget['options']['limit'])) { $widget['options']['limit'] = 5; } $users = false; // try to be smart and get the users data if they happen to be available if ($positionCode == 'member_notable' and $widget['options']['limit'] == 0 and !empty($params['staff'])) { $users = $params['staff']; } if ($users === false) { $userModel = WidgetFramework_Core::getInstance()->getModelFromCache('XenForo_Model_User'); $users = $userModel->getUsers(array('is_staff' => true), array('join' => XenForo_Model_User::FETCH_USER_FULL, 'limit' => $widget['options']['limit'], 'order' => 'username')); } $renderTemplateObject->setParam('users', $users); return $renderTemplateObject->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { $limit = XenForo_Application::getOptions()->get('xengalleryShowTopContributors', 'limit'); if (!empty($widget['options']['limit'])) { $limit = $widget['options']['limit']; } /** @var XenGallery_Model_Album $albumModel */ $albumModel = WidgetFramework_Core::getInstance()->getModelFromCache('XenGallery_Model_Album'); /** @var XenGallery_Model_Media $mediaModel */ $mediaModel = WidgetFramework_Core::getInstance()->getModelFromCache('XenGallery_Model_Media'); $visitor = XenForo_Visitor::getInstance(); $conditions = array('deleted' => false, 'privacyUserId' => $visitor->getUserId(), 'viewAlbums' => XenForo_Permission::hasPermission($visitor->getPermissions(), 'xengallery', 'viewAlbums'), 'viewCategoryIds' => $mediaModel->getViewableCategoriesForVisitor($visitor->toArray()), 'album_media_count' => '> 0', 'is_banned' => 0); $fetchOptions = array('order' => 'new', 'orderDirection' => 'desc', 'limit' => $limit, 'join' => XenGallery_Model_Album::FETCH_PRIVACY | XenGallery_Model_Album::FETCH_USER); $albums = $albumModel->getAlbums($conditions, $fetchOptions); $albums = $albumModel->prepareAlbums($albums); $renderTemplateObject->setParam('albums', $albums); return $renderTemplateObject->render(); }
protected function _renderOptions(XenForo_Template_Abstract $template) { $text = null; $widget = $template->getParam('widget'); if (!empty($widget['widget_id'])) { $widgetOptions = $template->getParam('options'); if (!empty($widgetOptions['html'])) { // backward compatibility for Html renderers // html should be saved as template after the next save $text = $widgetOptions['html']; } elseif (!empty($widgetOptions['_text'])) { $model = $this->_getWidgetRendererTemplateModel(); $widgetTemplateTitle = $model->getWidgetTemplateTitle($widget['widget_id']); $text = $model->getTemplateText($widgetTemplateTitle); } } $template->setParam('text', $text); return parent::_renderOptions($template); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { if (empty($widget['options']['url'])) { return ''; } if (empty($widget['options']['limit'])) { $widget['options']['limit'] = 5; } $core = WidgetFramework_Core::getInstance(); /** @var XenForo_Model_Feed $feedModel */ $feedModel = $core->getModelFromCache('XenForo_Model_Feed'); $feedUrl = $widget['options']['url']; $feedData = $feedModel->getFeedData($feedUrl); $feedConfig = array(); $feedConfig['baseUrl'] = $feedModel->getFeedBaseUrl($feedUrl); $entries = array(); if (!empty($feedData['entries'])) { foreach ($feedData['entries'] as $entryRaw) { $entry = array(); $entryRaw = $feedModel->prepareFeedEntry($entryRaw, $feedData, $feedConfig); $entry['link'] = $entryRaw['link']; $entry['author'] = $entryRaw['author']; $entry['title'] = $entryRaw['title']; $entry['content'] = $entryRaw['content']; if (defined('BDIMAGE_IS_WORKING')) { // outsource the image processing + handling to [bd] Image $entry['bdImage_image'] = call_user_func(array('bdImage_Integration', 'getBbCodeImage'), $entryRaw['content']); } else { // TODO: support other method? } $entries[] = $entry; if (count($entries) >= $widget['options']['limit']) { // we have got enough entries, stop here break; } } } $renderTemplateObject->setParam('entries', $entries); return $renderTemplateObject->render(); }
public static function renderWrapper(XenForo_Template_Abstract $template) { $sections1st = array(); $sections2nd = array(); $autoRenderData = array('template' => $template); $sections1stRaw = VietXfAdvStats_Option::get('sections1st'); foreach ($sections1stRaw as $section) { $sections1st[] = self::_prepareSectionForWrapper($section, count($sections1st) == 0 ? $autoRenderData : array()); } $sections2ndRaw = VietXfAdvStats_Option::get('sections2nd'); foreach ($sections2ndRaw as $section) { $sections2nd[] = self::_prepareSectionForWrapper($section, count($sections2nd) == 0 ? $autoRenderData : array()); } $template->setParam('sections1st', $sections1st); $template->setParam('sections2nd', $sections2nd); $template->setParam('bulkUpdateUrl', XenForo_Link::buildPublicLink(VietXfAdvStats_Option::get('routePrefix') . '/bulk-update')); $template->setParam('updateInterval', VietXfAdvStats_Option::get('updateInterval')); $template->setParam('updateIntervals', VietXfAdvStats_Option::get('updateIntervalsSorted')); $template->setParam('itemLimit', VietXfAdvStats_Option::get('itemLimit')); $template->setParam('itemLimits', VietXfAdvStats_Option::get('itemLimitsSorted')); $template->setParam('backLink', VietXfAdvStats_Option::get('backLink')); return $template->render(); }
/** * @param array $widget * @param string $positionCode * @param array $params * @param XenForo_Template_Abstract $template * @return string */ protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $template) { if (!$this->_canViewGallery()) { return; } $photoModel = $this->_getPhotoModel(); $conditions = array('content_type' => sonnb_XenGallery_Model_Photo::$contentType, 'content_state' => 'visible'); $this->_prepareConditions($widget, $conditions, $fetchOptions); $photos = $photoModel->getContents($conditions, $fetchOptions); $photos = $photoModel->prepareContents($photos, $fetchOptions); $this->_prepareContents($widget, $photos, $photoModel); if (empty($photos)) { return; } $template->setParam('photos', null); $template->setParams(array('widget' => $widget, 'contents' => $photos)); if (method_exists('WidgetFramework_Template_Trojan', 'WidgetFramework_setRequiredExternals')) { $externalRequires = array('css' => array('sonnb_xengallery_widget_photo')); WidgetFramework_Template_Trojan::WidgetFramework_setRequiredExternals($externalRequires); } return $template->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $template) { $threads = array(); $core = WidgetFramework_Core::getInstance(); /* @var $tagModel XenForo_Model_Tag */ $tagModel = $core->getModelFromCache('XenForo_Model_Tag'); $tagsText = $tagModel->splitTags($widget['options']['tags']); if (!empty($tagsText)) { $tags = $tagModel->getTags($tagsText); /* @var $searchModel XenForo_Model_Search */ $searchModel = $core->getModelFromCache('XenForo_Model_Search'); $tagConstraint = implode(' ', array_keys($tags)); $constraints = array(Tinhte_XenTag_Constants::SEARCH_CONSTRAINT_TAGS => $tagConstraint); $searcher = new XenForo_Search_Searcher($searchModel); $searchQuery = ''; $order = 'date'; $typeHandler = $searchModel->getSearchDataHandler('thread'); $results = $searcher->searchType($typeHandler, $searchQuery, $constraints, $order, false, $widget['options']['limit'] * 10); if (!empty($results)) { $threadIds = array(); foreach ($results as $result) { if ($result[0] === 'thread') { $threadIds[] = $result[1]; } } $threadIds = array_unique($threadIds); $forumIds = $this->_helperGetForumIdsFromOption(array(), $params, empty($widget['options']['as_guest']) ? false : true); $conditions = array('node_id' => $forumIds, Tinhte_XenTag_XenForo_Model_Thread::CONDITIONS_THREAD_ID => $threadIds, 'deleted' => false, 'moderated' => false); $fetchOptions = array('limit' => $widget['options']['limit'], 'join' => XenForo_Model_Thread::FETCH_AVATAR, 'order' => 'post_date', 'orderDirection' => 'desc'); /* @var $threadModel XenForo_Model_Thread */ $threadModel = $core->getModelFromCache('XenForo_Model_Thread'); $threads = $threadModel->getThreads($conditions, $fetchOptions); } } $template->setParam('threads', $threads); return $template->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { $core = WidgetFramework_Core::getInstance(); $threadModel = $core->getModelFromCache('XenForo_Model_Thread'); $visitor = XenForo_Visitor::getInstance(); // Get data for each param. $new = $this->_getDataForThisVar(); $recent = $this->_getDataForThisVar(); $popular = $this->_getDataForThisVar(); $mostReplied = $this->_getDataForThisVar(); $mostLiked = $this->_getDataForThisVar(); $polls = $this->_getDataForThisVar(); $renderTemplateObject->setParam('new', $new); $renderTemplateObject->setParam('recent', $recent); $renderTemplateObject->setParam('popular', $popular); $renderTemplateObject->setParam('mostReplied', $mostReplied); $renderTemplateObject->setParam('mostLiked', $mostLiked); $renderTemplateObject->setParam('polls', $polls); return $renderTemplateObject->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $template) { $threads = array(); if (isset($params['thread']) and !empty($params['thread']['thread_id'])) { // $thread is found in the template params, try to fetch the tags $tagsOrTexts = Tinhte_XenTag_Helper::unserialize($params['thread'][Tinhte_XenTag_Constants::FIELD_THREAD_TAGS]); } if (empty($tagsOrTexts) and isset($params['page']) and !empty($params['page']['node_id'])) { // fetch page's tags $tagsOrTexts = Tinhte_XenTag_Helper::unserialize($params['page'][Tinhte_XenTag_Constants::FIELD_PAGE_TAGS]); } if (empty($tagsOrTexts) and isset($params['forum']) and !empty($params['forum']['node_id'])) { // fetch forum's tags $tagsOrTexts = Tinhte_XenTag_Helper::unserialize($params['forum'][Tinhte_XenTag_Constants::FIELD_FORUM_TAGS]); } if (empty($tagsOrTexts) and isset($params['resource']) and !empty($params['resource']['resource_id'])) { // fetch resource's tags $tagsOrTexts = Tinhte_XenTag_Helper::unserialize($params['resource'][Tinhte_XenTag_Constants::FIELD_RESOURCE_TAGS]); } if (!empty($tagsOrTexts)) { $core = WidgetFramework_Core::getInstance(); /* @var $threadModel XenForo_Model_Thread */ $threadModel = $core->getModelFromCache('XenForo_Model_Thread'); /* @var $tagModel Tinhte_XenTag_Model_Tag */ $tagModel = $core->getModelFromCache('Tinhte_XenTag_Model_Tag'); $tagTexts = Tinhte_XenTag_Helper::getTextsFromTagsOrTexts($tagsOrTexts); $tags = $tagModel->getTagsByText($tagTexts); $threadIds = array(); foreach ($tags as $tag) { $latest = Tinhte_XenTag_Helper::unserialize($tag['latest_tagged_contents']); if (empty($latest)) { // for some reason, the latest_tagged_contents field is empty // this is illogical because at least there is 1 tagged content (current thread) // so we will rebuild the tag... $latest = $tagModel->updateTag($tag['tag_id']); } if (!empty($latest)) { foreach ($latest as $taggedContent) { if ($taggedContent['content_type'] == 'thread') { // ignore current thread id, obviously!!! if (!empty($params['thread']['thread_id']) and $taggedContent['content_id'] == $params['thread']['thread_id']) { continue; } $threadIds[] = $taggedContent['content_id']; } } } } if (!empty($threadIds)) { $threadIds = array_unique($threadIds); $forumIds = $this->_helperGetForumIdsFromOption(array(), $params, empty($widget['options']['as_guest']) ? false : true); // quick way to get all viewable forum ids $conditions = array('node_id' => $forumIds, Tinhte_XenTag_XenForo_Model_Thread::CONDITIONS_THREAD_ID => $threadIds, 'deleted' => false, 'moderated' => false); $fetchOptions = array('limit' => $widget['options']['limit'], 'join' => XenForo_Model_Thread::FETCH_AVATAR, 'order' => 'post_date', 'orderDirection' => 'desc'); $threads = $threadModel->getThreads($conditions, $fetchOptions); } } $template->setParam('threads', $threads); return $template->render(); }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $template) { $core = WidgetFramework_Core::getInstance(); $tagModel = $core->getModelFromCache('Tinhte_XenTag_Model_Tag'); if (!empty($widget['options']['days'])) { $days = $widget['options']['days']; } else { $days = Tinhte_XenTag_Option::get('trendingDays'); } $cutoff = XenForo_Application::$time - $days * 86400; $createdCutoff = 0; if (!empty($widget['options']['created_days'])) { $createdCutoff = XenForo_Application::$time - $widget['options']['created_days'] * 86400; } if (!empty($widget['options']['limit'])) { $limit = $widget['options']['limit']; } else { $limit = Tinhte_XenTag_Option::get('trendingMax'); } $forumIds = $this->_helperGetForumIdsFromOption($widget['options']['forums'], $params, true); $db = XenForo_Application::getDb(); $taggedCount = $db->fetchPairs(' SELECT tagged.tag_id, count(*) AS tagged_count FROM `xf_tinhte_xentag_tagged_content` AS tagged INNER JOIN `xf_thread` AS thread ON (thread.thread_id = tagged.content_id) ' . ($createdCutoff > 0 ? 'INNER JOIN `xf_tinhte_xentag_tag` AS tag ON (tag.tag_id = tagged.tag_id AND tag.created_date > ' . $createdCutoff . ')' : '') . ' WHERE tagged.content_type = "thread" AND tagged.tagged_date > ? ' . (!empty($forumIds) ? 'AND thread.node_id IN (' . $db->quote($forumIds) . ')' : '') . ' GROUP BY tagged.tag_id ORDER BY tagged_count DESC LIMIT ?; ', array($cutoff, $limit)); $tags = array(); if (!empty($taggedCount)) { $tagsDb = $tagModel->getAllTag(array('tag_id' => array_keys($taggedCount))); foreach ($taggedCount as $tagId => $count) { if (isset($tagsDb[$tagId])) { $tags[$tagId] = $tagsDb[$tagId]; $tags[$tagId]['tagged_count'] = $count; } } } $tagModel->calculateCloudLevel($tags); $template->setParam('tags', $tags); return $template->render(); }