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; } } } }
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; } } } }