Exemplo n.º 1
0
 public static function getChildCategories(&$result, $params, &$categories, $level = 1)
 {
     $db = EB::db();
     $my = JFactory::getUser();
     $mainframe = JFactory::getApplication();
     $order = $params->get('order', 'popular');
     $sort = $params->get('sort', 'desc');
     $count = (int) trim($params->get('count', 0));
     $hideEmptyPost = $params->get('hideemptypost', '0');
     foreach ($result as $row) {
         if ($row->parent_id == 0) {
             $categories[$row->id] = $row;
             $categories[$row->id]->childs = array();
         } else {
             $categories[$row->id] = $row;
             $categories[$row->id]->childs = array();
         }
         $query = 'SELECT ' . $db->qn('a.id') . ', ' . $db->qn('a.title') . ', ' . $db->qn('a.parent_id') . ', ' . $db->qn('a.alias') . ', ' . $db->qn('a.avatar') . ', COUNT(b.`id`) AS `cnt`' . ' , ' . $db->quote($level) . ' AS level' . ' FROM ' . $db->qn('#__easyblog_category') . ' AS `a`' . ' LEFT JOIN ' . $db->qn('#__easyblog_post_category') . ' AS pc' . ' ON a.`id` = pc.`category_id`' . ' INNER JOIN ' . $db->qn('#__easyblog_post') . ' AS b' . ' ON b.`id` = pc.`post_id`' . ' AND b.`published` = ' . $db->Quote(EASYBLOG_POST_PUBLISHED) . ' AND b.`state` = ' . $db->Quote(EASYBLOG_POST_NORMAL);
         $query .= ' WHERE a.`published` = 1';
         $query .= ' AND a.`parent_id`=' . $db->Quote($row->id);
         if (!$hideEmptyPost) {
             $query .= ' GROUP BY a.`id` ';
         } else {
             $query .= ' GROUP BY a.`id` HAVING (COUNT(b.`id`) > 0)';
         }
         if ($order == 'ordering') {
             $orderBy = ' ORDER BY `lft` ' . $sort;
         }
         if ($order == 'popular') {
             $orderBy = ' ORDER BY `cnt` ' . $sort;
         }
         if ($order == 'alphabet') {
             $orderBy = ' ORDER BY a.`title` ' . $sort;
         }
         if ($order == 'latest') {
             $orderBy = ' ORDER BY a.`created` ' . $sort;
         }
         $query .= $orderBy;
         $db->setQuery($query);
         $records = $db->loadObjectList();
         if ($records) {
             modEasyBlogCategoriesHelper::getChildCategories($records, $params, $categories[$row->id]->childs, ++$level);
             foreach ($records as $childrec) {
                 $categories[$row->id]->cnt += $childrec->cnt;
             }
         }
     }
 }
Exemplo n.º 2
0
 public static function getChildCategories(&$result, $params, &$categories, $level = 1)
 {
     $db = EasyBlogHelper::db();
     $my = JFactory::getUser();
     $mainframe = JFactory::getApplication();
     $order = $params->get('order', 'popular');
     $sort = $params->get('sort', 'desc');
     $count = (int) trim($params->get('count', 0));
     $hideEmptyPost = $params->get('hideemptypost', '0');
     foreach ($result as $row) {
         if ($row->parent_id == 0) {
             $categories[$row->id] = $row;
             $categories[$row->id]->childs = array();
         } else {
             $categories[$row->id] = $row;
             $categories[$row->id]->childs = array();
         }
         $query = 'SELECT a.`id`, a.`title`, a.`parent_id`, a.`alias`, a.`avatar`, COUNT(b.`id`) AS `cnt`' . ' , ' . $db->quote($level) . ' AS level' . ' FROM ' . $db->nameQuote('#__easyblog_category') . ' AS `a`' . ' LEFT JOIN ' . $db->nameQuote('#__easyblog_post') . ' AS b' . ' ON a.`id` = b.`category_id`' . ' AND b.`published` = ' . $db->Quote('1');
         $query .= ' WHERE a.`published` = 1';
         $query .= ' AND a.`parent_id`=' . $db->Quote($row->id);
         if (!$hideEmptyPost) {
             $query .= ' GROUP BY a.`id`';
         } else {
             $query .= ' GROUP BY a.`id` HAVING (COUNT(b.`id`) > 0)';
         }
         switch ($order) {
             case 'ordering':
                 $orderBy = ' ORDER BY `lft` ';
                 break;
             case 'popular':
                 $orderBy = ' ORDER BY `cnt` ';
                 break;
             case 'alphabet':
                 $orderBy = ' ORDER BY a.`title` ';
                 break;
             case 'latest':
             default:
                 $orderBy = ' ORDER BY a.`created` ';
                 break;
         }
         $query .= $orderBy . $sort;
         $db->setQuery($query);
         $records = $db->loadObjectList();
         if ($records) {
             modEasyBlogCategoriesHelper::getChildCategories($records, $params, $categories[$row->id]->childs, ++$level);
             foreach ($records as $childrec) {
                 $categories[$row->id]->cnt += $childrec->cnt;
             }
         }
     }
 }