function display($cachable = false, $urlparams = array())
 {
     $mainframe = JFactory::getApplication();
     $option = JRequest::getCmd('option');
     $section = JRequest::getVar('section');
     $db = JFactory::getDBO();
     $filter_gid = $mainframe->getUserStateFromRequest("{$option}.filter_gid", 'filter_gid', 0, 'int');
     $filter_order = $mainframe->getUserStateFromRequest("{$option}.filter_order", 'filter_order', 'a.id', 'cmd');
     $filter_order_Dir = $mainframe->getUserStateFromRequest("{$option}.filter_order_Dir", 'filter_order_Dir', '', 'word');
     $filter_state = $mainframe->getUserStateFromRequest("{$option}.filter_state", 'filter_state', '', 'word');
     $filter_sid = $mainframe->getUserStateFromRequest("{$option}.filter_sid", 'filter_sid', 0, 'int');
     $filter_vid = $mainframe->getUserStateFromRequest("{$option}.filter_vid", 'filter_vid', 0, 'var');
     $filter_catid = $mainframe->getUserStateFromRequest("{$option}.filter_catid", 'filter_catid', 0, 'int');
     $search = $mainframe->getUserStateFromRequest("{$option}.search", 'search', '', 'string');
     $search = JString::strtolower($search);
     $limit = $mainframe->getUserStateFromRequest('global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int');
     $limitstart = $mainframe->getUserStateFromRequest($option . '.limitstart', 'limitstart', 0, 'int');
     $where = array();
     $where[] = ' c.archiv = 0';
     $zps = JRequest::getVar('zps');
     if ($zps > 0) {
         $filter_vid = $zps;
     }
     if ($filter_catid) {
         $where[] = 'a.published = ' . (int) $filter_catid;
     }
     if ($filter_sid) {
         $where[] = 'a.sid = ' . (int) $filter_sid;
     }
     if ($filter_vid) {
         $where[] = "a.zps = '{$filter_vid}'";
     }
     if ($filter_state) {
         if ($filter_state == 'P') {
             $where[] = 'a.published = 1';
         } else {
             if ($filter_state == 'U') {
                 $where[] = 'a.published = 0';
             }
         }
     }
     $where2 = count($where) ? ' WHERE ' . implode(' AND ', $where) : '';
     if ($search) {
         $where[] = 'LOWER(v.Vereinname) LIKE "' . $db->escape('%' . $search . '%') . '"';
     }
     $where = count($where) ? ' WHERE ' . implode(' AND ', $where) : '';
     // get the total number of records
     $query = ' SELECT COUNT(*) ' . ' FROM #__clm_rangliste_id AS a' . ' LEFT JOIN #__clm_saison AS c ON c.id = a.sid' . $where2;
     $db->setQuery($query);
     $total = $db->loadResult();
     if ($filter_order == 'a.id') {
         $orderby = ' ORDER BY sid ' . $filter_order_Dir . ', n.id ' . $filter_order_Dir;
     } else {
         if ($filter_order == 'a.Gruppe' or $filter_order == 'a.Meldeschluss' or $filter_order == 'a.rang' or $filter_order == 'a.user' or $filter_order == 'a.saison' or $filter_order == 'a.ordering' or $filter_order == 'a.published') {
             $orderby = ' ORDER BY ' . $filter_order . ' ' . $filter_order_Dir . ', a.id';
         } else {
             $filter_order = 'a.id';
             $orderby = '';
         }
     }
     jimport('joomla.html.pagination');
     $pageNav = new JPagination($total, $limitstart, $limit);
     // get the subset (based on limits) of required records
     $query = 'SELECT a.*, c.name AS saison, v.Vereinname as vname, n.Gruppe as gname ' . ' FROM #__clm_rangliste_id AS a' . ' LEFT JOIN #__clm_saison AS c ON c.id = a.sid' . ' LEFT JOIN #__clm_dwz_vereine AS v ON v.ZPS = a.zps AND v.sid = a.sid' . ' LEFT JOIN #__clm_rangliste_name AS n ON n.sid = a.sid AND n.id = a.gid' . ' LEFT JOIN #__users AS u ON u.id = a.checked_out' . $where . $orderby;
     $db->setQuery($query, $pageNav->limitstart, $pageNav->limit);
     $rows = $db->loadObjectList();
     if ($db->getErrorNum()) {
         echo $db->stderr();
         return false;
     }
     // Filter
     // Saisonfilter
     $sql = 'SELECT id, name FROM #__clm_saison WHERE archiv =0';
     $db->setQuery($sql);
     $saisonlist[] = JHtml::_('select.option', '0', JText::_('RANGLISTE_SAISON_WAE'), 'id', 'name');
     $saisonlist = array_merge($saisonlist, $db->loadObjectList());
     $lists['sid'] = JHtml::_('select.genericlist', $saisonlist, 'filter_sid', 'class="inputbox" size="1" onchange="document.adminForm.submit();"', 'id', 'name', intval($filter_sid));
     // Vereinefilter laden
     $vereinefilter = CLMFilterVerein::vereine_filter(0);
     $lists['vid'] = JHtml::_('select.genericlist', $vereinefilter, 'filter_vid', 'class="inputbox" size="1" onchange="document.adminForm.submit();"', 'zps', 'name', $filter_vid);
     // Suchefilter
     $lists['search'] = $search;
     // Ordering
     $lists['order_Dir'] = $filter_order_Dir;
     $lists['order'] = $filter_order;
     require_once JPATH_COMPONENT . DS . 'views' . DS . 'ranglisten.php';
     CLMViewRanglisten::Ranglisten($rows, $lists, $pageNav, $option);
 }