Пример #1
0
 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();
     $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 (class_exists('bdImage_Integration')) {
                 // out source the image processing + handling to [bd] Image
                 $entry['bdImage_image'] = 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();
 }