Example #1
0
 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;
 }