Example #1
1
    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();
    }
Example #2
0
 /**
  * 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();
 }
Example #4
0
 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();
 }
Example #5
0
 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();
 }
Example #7
0
 /**
  * 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();
 }
Example #9
0
 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();
 }
Example #10
0
 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();
 }
Example #11
0
 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();
 }
Example #12
0
 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();
 }
Example #14
0
 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();
 }
Example #15
0
 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();
 }
Example #16
0
 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();
 }
Example #18
0
 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();
 }
Example #19
0
 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);
 }
Example #20
0
 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();
 }
Example #21
0
 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();
 }
Example #25
0
 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();
 }
Example #26
0
 /**
  * @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();
 }
Example #28
0
 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();
 }
Example #29
0
 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();
 }
Example #30
0
    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();
    }