public function getAdminCategories() { if ($this->_admincategories === false) { $params = array('ordering' => $this->getState('list.ordering'), 'direction' => $this->getState('list.direction') == 'asc' ? 1 : -1, 'search' => $this->getState('filter.search'), 'unpublished' => 1, 'published' => $this->getState('filter.published'), 'filter_title' => $this->getState('filter.title'), 'filter_type' => $this->getState('filter.type'), 'filter_access' => $this->getState('filter.access'), 'filter_locked' => $this->getState('filter.locked'), 'filter_allow_polls' => $this->getState('filter.allow_polls'), 'filter_review' => $this->getState('filter.review'), 'filter_anonymous' => $this->getState('filter.anonymous'), 'action' => 'admin'); $catid = $this->getState('item.id', 0); $categories = array(); $orphans = array(); if ($catid) { $categories = KunenaForumCategoryHelper::getParents($catid, $this->getState('filter.levels'), array('unpublished' => 1, 'action' => 'none')); $categories[] = KunenaForumCategoryHelper::get($catid); } else { $orphans = KunenaForumCategoryHelper::getOrphaned($this->getState('filter.levels'), $params); } $categories = array_merge($categories, KunenaForumCategoryHelper::getChildren($catid, $this->getState('filter.levels'), $params)); $categories = array_merge($orphans, $categories); $categories = KunenaForumCategoryHelper::getIndentation($categories); $this->setState('list.total', count($categories)); if ($this->getState('list.limit')) { $this->_admincategories = array_slice($categories, $this->getState('list.start'), $this->getState('list.limit')); } else { $this->_admincategories = $categories; } $admin = 0; $acl = KunenaAccess::getInstance(); /** @var KunenaForumCategory $category */ foreach ($this->_admincategories as $category) { // TODO: Following is needed for J!2.5 only: $parent = $category->getParent(); $siblings = array_keys(KunenaForumCategoryHelper::getCategoryTree($category->parent_id)); $category->up = $this->me->isAdmin($parent) && reset($siblings) != $category->id; $category->down = $this->me->isAdmin($parent) && end($siblings) != $category->id; $category->reorder = $this->me->isAdmin($parent); // Get ACL groups for the category. $access = $acl->getCategoryAccess($category); $category->accessname = array(); foreach ($access as $item) { $category->accessname[] = $item['title']; } $category->accessname = implode(' / ', $category->accessname); // Checkout? if ($this->me->isAdmin($category) && $category->isCheckedOut(0)) { $category->editor = KunenaFactory::getUser($category->checked_out)->getName(); } else { $category->checked_out = 0; $category->editor = ''; } $admin += $this->me->isAdmin($category); } $this->setState('list.count.admin', $admin); } if (!empty($orphans)) { $this->app->enqueueMessage(JText::_('COM_KUNENA_CATEGORY_ORPHAN_DESC'), 'notice'); } return $this->_admincategories; }