function showAdministration($option) { $kunena_app = JFactory::getApplication(); $kunena_db = JFactory::getDBO(); $kunena_acl = JFactory::getACL(); $filter_order = $kunena_app->getUserStateFromRequest($option . 'filter_order', 'filter_order', 'ordering', 'cmd'); $filter_order_Dir = $kunena_app->getUserStateFromRequest($option . 'filter_order_Dir', 'filter_order_Dir', 'asc', 'word'); if ($filter_order_Dir != 'asc') { $filter_order_Dir = 'desc'; } $limit = $kunena_app->getUserStateFromRequest("global.list.limit", 'limit', $kunena_app->getCfg('list_limit'), 'int'); $limitstart = $kunena_app->getUserStateFromRequest("{$option}.limitstart", 'limitstart', 0, 'int'); $levellimit = $kunena_app->getUserStateFromRequest("{$option}.limit", 'levellimit', 10, 'int'); $search = $kunena_app->getUserStateFromRequest($option . 'search', 'search', '', 'string'); $search = JString::strtolower($search); $order = ''; if ($filter_order == 'ordering') { $order = ' ORDER BY a.ordering ' . $filter_order_Dir; } else { if ($filter_order == 'name') { $order = ' ORDER BY a.name ' . $filter_order_Dir; } else { if ($filter_order == 'id') { $order = ' ORDER BY a.id ' . $filter_order_Dir; } } } $where = ''; if ($search) { $where .= ' WHERE LOWER( a.name ) LIKE ' . $kunena_db->Quote('%' . $kunena_db->getEscaped($search, true) . '%', false) . ' OR LOWER( a.id ) LIKE ' . $kunena_db->Quote('%' . $kunena_db->getEscaped($search, true) . '%', false); } if (KUNENA_JOOMLA_COMPAT == '1.5') { // Joomla 1.5 $query = "SELECT a.*, a.parent>0 AS category, u.name AS editor, g.name AS groupname, g.id AS group_id, h.name AS admingroup, v.name AS viewlevel\n\t\t\tFROM #__kunena_categories AS a\n\t\t\tLEFT JOIN #__users AS u ON u.id = a.checked_out\n\t\t\tLEFT JOIN #__core_acl_aro_groups AS g ON a.accesstype='none' AND g.id = a.pub_access\n\t\t\tLEFT JOIN #__core_acl_aro_groups AS h ON a.accesstype='none' AND h.id = a.admin_access\n\t\t\tLEFT JOIN #__groups AS v ON a.accesstype='joomla.level' AND v.id = a.access\n\t\t\t" . $where . $order; } else { // Joomla 1.6 $query = "SELECT a.*, a.parent>0 AS category, u.name AS editor, g.title AS groupname, h.title AS admingroup, v.title AS viewlevel\n\t\t\tFROM #__kunena_categories AS a\n\t\t\tLEFT JOIN #__users AS u ON u.id = a.checked_out\n\t\t\tLEFT JOIN #__usergroups AS g ON a.accesstype='none' AND g.id = a.pub_access\n\t\t\tLEFT JOIN #__usergroups AS h ON a.accesstype='none' AND h.id = a.admin_access\n\t\t\tLEFT JOIN #__viewlevels AS v ON a.accesstype='joomla.level' AND v.id = a.access\n\t\t\t" . $where . $order; } $kunena_db->setQuery($query); $rows = $kunena_db->loadObjectList('id'); KunenaError::checkDatabaseError(); // establish the hierarchy of the categories $children = array(0 => array()); // first pass - collect children foreach ($rows as $v) { $list = array(); $vv = $v; while ($vv->parent > 0 && isset($rows[$vv->parent]) && !in_array($vv->parent, $list)) { $list[] = $vv->id; $vv = $rows[$vv->parent]; } if ($vv->parent) { $v->parent = -1; if (empty($search)) { $v->published = 0; } if (empty($search)) { $v->name = JText::_('COM_KUNENA_CATEGORY_ORPHAN') . ' : ' . $v->name; } } if ($v->accesstype == 'joomla.level') { if (KUNENA_JOOMLA_COMPAT == '1.5') { $v->accessname = JText::_('COM_KUNENA_INTEGRATION_JOOMLA_LEVEL') . ': ' . ($v->viewlevel ? JText::_($v->viewlevel) : JText::_('COM_KUNENA_NOBODY')); } else { $v->accessname = JText::_('COM_KUNENA_INTEGRATION_JOOMLA_LEVEL') . ': ' . ($v->viewlevel ? $v->viewlevel : JText::_('COM_KUNENA_NOBODY')); } } elseif ($v->accesstype != 'none') { $v->accessname = JText::_('COM_KUNENA_INTEGRATION_' . strtoupper(preg_replace('/[^\\w\\d]+/', '_', $v->accesstype))) . ': ' . $v->access; } elseif (KUNENA_JOOMLA_COMPAT == '1.5') { // Joomla 1.5 if ($v->pub_access == 0) { $v->accessname = JText::_('COM_KUNENA_PUBLIC'); } else { if ($v->pub_access == -1) { $v->accessname = JText::_('COM_KUNENA_ALLREGISTERED'); } else { if ($v->pub_access == 1 || !$v->groupname) { $v->accessname = JText::_('COM_KUNENA_NOBODY'); } else { $v->accessname = JText::sprintf($v->pub_recurse ? 'COM_KUNENA_A_GROUP_X_PLUS' : 'COM_KUNENA_A_GROUP_X_ONLY', JText::_($v->groupname)); } } } if ($v->pub_access > 0 && $v->admingroup && $v->pub_access != $v->admin_access) { $v->accessname .= ' / ' . JText::sprintf($v->admin_recurse ? 'COM_KUNENA_A_GROUP_X_PLUS' : 'COM_KUNENA_A_GROUP_X_ONLY', JText::_($v->admingroup)); } } else { // Joomla 1.6+ $v->accessname = JText::sprintf($v->pub_recurse ? 'COM_KUNENA_A_GROUP_X_PLUS' : 'COM_KUNENA_A_GROUP_X_ONLY', $v->groupname ? JText::_($v->groupname) : JText::_('COM_KUNENA_NOBODY')); if ($v->admingroup && $v->pub_access != $v->admin_access) { $v->accessname .= ' / ' . JText::sprintf($v->admin_recurse ? 'COM_KUNENA_A_GROUP_X_PLUS' : 'COM_KUNENA_A_GROUP_X_ONLY', JText::_($v->admingroup)); } } if ($v->checked_out && !JTable::isCheckedOut(0, intval($v->checked_out))) { $v->checked_out = 0; $v->editor = ''; } $children[$v->parent][] = $v; $v->location = count($children[$v->parent]) - 1; } if (isset($children[-1])) { $children[0] = array_merge($children[-1], $children[0]); if (empty($search)) { $kunena_app->enqueueMessage(JText::_('COM_KUNENA_CATEGORY_ORPHAN_DESC'), 'notice'); } } // second pass - get an indent list of the items $list = fbTreeRecurse(0, '', array(), $children, max(0, $levellimit - 1)); $total = count($list); if ($limitstart >= $total) { $limitstart = 0; } jimport('joomla.html.pagination'); $pageNav = new JPagination($total, $limitstart, $limit); $levellist = JHTML::_('select.integerList', 1, 20, 1, 'levellimit', 'size="1" onchange="document.adminForm.submit();"', $levellimit); // slice out elements based on limits $list = array_slice($list, $pageNav->limitstart, $pageNav->limit); /** *@end */ // table ordering $lists['order_Dir'] = $filter_order_Dir; $lists['order'] = $filter_order; $lists['search'] = $search; html_Kunena::showAdministration($list, $children, $pageNav, $option, $lists); }
function showAdministration($option) { $app =& JFactory::getApplication(); $kunena_db =& JFactory::getDBO(); $limit = $app->getUserStateFromRequest("global.list.limit", 'limit', $app->getCfg('list_limit'), 'int'); $limitstart = $app->getUserStateFromRequest("{$option}.limitstart", 'limitstart', 0, 'int'); $levellimit = $app->getUserStateFromRequest("{$option}.limit", 'levellimit', 10, 'int'); /* * danial */ $kunena_db->setQuery("SELECT a.*, a.name AS category, u.name AS editor, g.name AS groupname, h.name AS admingroup" . "\nFROM #__fb_categories AS a" . "\nLEFT JOIN #__users AS u ON u.id = a.checked_out" . "\nLEFT JOIN #__core_acl_aro_groups AS g ON g.id = a.pub_access" . "\nLEFT JOIN #__core_acl_aro_groups AS h ON h.id = a.admin_access" . "\n GROUP BY a.id" . "\n ORDER BY a.ordering, a.name"); $rows = $kunena_db->loadObjectList(); check_dberror("Unable to load categories."); // establish the hierarchy of the categories $children = array(); // first pass - collect children foreach ($rows as $v) { $pt = $v->parent; $list = isset($children[$pt]) ? $children[$pt] : array(); $v->location = count($list); array_push($list, $v); $children[$pt] = $list; } // second pass - get an indent list of the items $list = fbTreeRecurse(0, '', array(), $children, max(0, $levellimit - 1)); $total = count($list); if ($limitstart >= $total) { $limitstart = 0; } jimport('joomla.html.pagination'); $pageNav = new JPagination($total, $limitstart, $limit); $levellist = JHTML::_('select.integerList', 1, 20, 1, 'levellimit', 'size="1" onchange="document.adminForm.submit();"', $levellimit); // slice out elements based on limits $list = array_slice($list, $pageNav->limitstart, $pageNav->limit); /** *@end */ html_Kunena::showAdministration($list, $children, $pageNav, $option); }