Example #1
0
function fbTreeRecurse($id, $indent, $list, &$children, $maxlevel = 9999, $level = 0, $type = 1)
{
    if (@$children[$id] && $level <= $maxlevel) {
        foreach ($children[$id] as $v) {
            $id = $v->id;
            if ($type) {
                $pre = '&nbsp;';
                $spacer = '...';
            } else {
                $pre = '- ';
                $spacer = '&nbsp;&nbsp;';
            }
            if ($v->parent == 0) {
                $txt = kunena_htmlspecialchars(stripslashes($v->name));
            } else {
                $txt = $pre . kunena_htmlspecialchars(stripslashes($v->name));
            }
            $pt = $v->parent;
            $list[$id] = $v;
            $list[$id]->treename = $indent . $txt;
            $list[$id]->children = count(@$children[$id]);
            $list = fbTreeRecurse($id, $indent . $spacer, $list, $children, $maxlevel, $level + 1, $type);
        }
    }
    return $list;
}
Example #2
0
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);
}
Example #3
0
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);
}
Example #4
0
function fbTreeRecurse($id, $indent, $list, &$children, $maxlevel = 9999, $level = 0, $type = 1)
{
    if (isset($children[$id]) && $level <= $maxlevel) {
        foreach ($children[$id] as $v) {
            $id = $v->id;
            if (KUNENA_JOOMLA_COMPAT >= '1.6') {
                $pre = '- ';
                $spacer = '- ';
            } elseif ($type) {
                $pre = '&nbsp;';
                $spacer = '...';
            } else {
                $pre = '- ';
                $spacer = '&nbsp;&nbsp;';
            }
            if ($v->parent == 0) {
                $txt = kunena_htmlspecialchars($v->name);
            } else {
                $txt = $pre . kunena_htmlspecialchars($v->name);
            }
            $pt = $v->parent;
            $list[$id] = $v;
            $list[$id]->treename = $indent . $txt;
            $list[$id]->children = !empty($children[$id]) ? count($children[$id]) : 0;
            $list[$id]->section = $v->parent == 0;
            $list = fbTreeRecurse($id, $indent . $spacer, $list, $children, $maxlevel, $level + 1, $type);
        }
    }
    return $list;
}