/** * show galleries * @param database A database connector object */ function show() { global $mainframe, $option; $database =& JFactory::getDBO(); $app =& JFactory::getApplication(); $list_limit = $app->getCfg('list_limit'); $limit = $mainframe->getUserStateFromRequest("viewlistlimit", 'limit', $list_limit); $limitstart = $mainframe->getUserStateFromRequest("view{$option}limitstart", 'limitstart', 0); $levellimit = $mainframe->getUserStateFromRequest("view{$option}limit", 'levellimit', 10); $search = $mainframe->getUserStateFromRequest("search{$option}", 'search', ''); $search = $database->getEscaped(trim(strtolower($search))); // select the records // note, since this is a tree we have to do the limits code-side if ($search) { $query = "SELECT id" . "\n FROM #__rsgallery2_galleries" . "\n WHERE LOWER( name ) LIKE '%" . strtolower($search) . "%'"; $database->setQuery($query); $search_rows = $database->loadResultArray(); } $query = "SELECT a.*, u.name AS editor" . "\n FROM #__rsgallery2_galleries AS a" . "\n LEFT JOIN #__users AS u ON u.id = a.checked_out" . "\n ORDER BY a.ordering"; $database->setQuery($query); $rows = $database->loadObjectList(); if ($database->getErrorNum()) { echo $database->stderr(); return false; } // establish the hierarchy of the menu $children = array(); // first pass - collect children foreach ($rows as $v) { $pt = $v->parent; $list = @$children[$pt] ? $children[$pt] : array(); array_push($list, $v); $children[$pt] = $list; } // second pass - get an indent list of the items $list = JHTML::_('menu.treerecurse', 0, '', array(), $children, max(0, $levellimit - 1)); // eventually only pick out the searched items. if ($search) { $list1 = array(); foreach ($search_rows as $sid) { foreach ($list as $item) { if ($item->id == $sid) { $list1[] = $item; } } } // replace full list with found items $list = $list1; } $total = count($list); jimport("joomla.html.pagination"); $pageNav = new JPagination($total, $limitstart, $limit); $lists['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); html_rsg2_galleries::show($list, $lists, $search, $pageNav); }