コード例 #1
0
ファイル: helper.php プロジェクト: sam-akopyan/hamradio
 public static function getList(&$_params)
 {
     $db = JFactory::getDbo();
     // Get an instance of the generic articles model
     $articles = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true));
     // Set application parameters in model
     $articles->setState('list.select', 'a.id, a.title, a.alias, a.introtext, a.fulltext, ' . 'a.checked_out, a.checked_out_time, ' . 'a.catid, a.created, a.created_by, a.created_by_alias, ' . 'CASE WHEN a.modified = ' . $db->q($db->getNullDate()) . ' THEN a.created ELSE a.modified END as modified, ' . 'a.modified_by, uam.name as modified_by_name,' . 'CASE WHEN a.publish_up = ' . $db->q($db->getNullDate()) . ' THEN a.created ELSE a.publish_up END as publish_up,' . 'a.publish_down, a.images, a.urls, a.attribs, a.metadata, a.metakey, a.metadesc, a.access, ' . 'a.hits, a.xreference, a.featured');
     $app = JFactory::getApplication();
     $appParams = $app->getParams();
     $articles->setState('params', $appParams);
     // Set the filters based on the module params
     $articles->setState('list.start', 0);
     $articles->setState('list.limit', (int) $_params->get('count', 0));
     $articles->setState('filter.published', 1);
     // Access filter
     $access = !JComponentHelper::getParams('com_content')->get('show_noauth');
     $authorised = JAccess::getAuthorisedViewLevels(JFactory::getUser()->get('id'));
     $articles->setState('filter.access', $access);
     // Category filter
     $catids = $_params->get('depends');
     if ($catids != null) {
         if ($_params->get('show_child_category_articles', 0) && (int) $_params->get('levels', 0) > 0) {
             // Get an instance of the generic categories model
             $categories = JModelLegacy::getInstance('Categories', 'ContentModel', array('ignore_request' => true));
             $categories->setState('params', $appParams);
             $levels = $_params->get('levels', 1) ? $_params->get('levels', 1) : 9999;
             $categories->setState('filter.get_children', $levels);
             $categories->setState('filter.published', 1);
             $categories->setState('filter.access', $access);
             $additional_catids = array();
             foreach ($catids as $catid) {
                 $categories->setState('filter.parentId', $catid);
                 $recursive = true;
                 $items = $categories->getItems($recursive);
                 if ($items) {
                     foreach ($items as $category) {
                         $condition = $category->level - $categories->getParent()->level <= $levels;
                         if ($condition) {
                             $additional_catids[] = $category->id;
                         }
                     }
                 }
             }
             $catids = array_unique(array_merge($catids, $additional_catids));
         }
         $articles->setState('filter.category_id', $catids);
         // Ordering
         $articles->setState('list.ordering', $_params->get('article_ordering', 'a.ordering'));
         $articles->setState('list.direction', $_params->get('article_ordering_direction', 'ASC'));
         // 		// New Parameters
         $articles->setState('filter.featured', $_params->get('show_front', 'show'));
         // Filter by language
         $articles->setState('filter.language', $app->getLanguageFilter());
         $items = $articles->getItems();
         //$show_introtext = $_params->get('show_introtext', 0);
         //$introtext_limit = $_params->get('introtext_limit', 100);
         $title_limit = $_params->get('item_title_max_characs', 20);
         // Find current Article ID if on an article page
         $option = $app->input->get('option');
         $view = $app->input->get('view');
         if ($option === 'com_content' && $view === 'article') {
             $active_article_id = $app->input->getInt('id');
         } else {
             $active_article_id = 0;
         }
         // Prepare data for display using display options
         foreach ($items as &$item) {
             $item->slug = $item->id . ':' . $item->alias;
             $item->catslug = $item->catid ? $item->catid . ':' . $item->category_alias : $item->catid;
             if ($access || in_array($item->access, $authorised)) {
                 // We know that user has the privilege to view the article
                 $item->link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug));
             } else {
                 $app = JFactory::getApplication();
                 $menu = $app->getMenu();
                 $menuitems = $menu->getItems('link', 'index.php?option=com_users&view=login');
                 if (isset($menuitems[0])) {
                     $Itemid = $menuitems[0]->id;
                 } elseif ($app->input->getInt('Itemid') > 0) {
                     // Use Itemid from requesting page only if there is no existing menu
                     $Itemid = $app->input->getInt('Itemid');
                 }
                 $item->link = JRoute::_('index.php?option=com_users&view=login&Itemid=' . $Itemid);
             }
             // Used for styling the active article
             $item->active = $item->id == $active_article_id ? 'active' : '';
             $item->title = BaseHelper::truncate($item->title, $title_limit);
             //if ($show_introtext) {
             // 				$item->introtext = JHtml::_('content.prepare', $item->introtext, '', 'plg_content_relatednews.content');
             // 				self::getImages($item, $_params);
             // 				$item->introtext = self::_cleanIntrotext($item->introtext);
             //} else {
             $item->introtext = JHtml::_('content.prepare', $item->introtext, '', 'plg_content_relatednews.content');
             BaseHelper::getArticleImages($item, $_params);
             //}
             //$item->displayIntrotext = $show_introtext ? self::truncate($item->introtext, $introtext_limit) : '';
             //$item->displayReadmore = $item->alternative_readmore;
         }
         return $items;
     }
 }