public function showList($pageno = null, $items_limit = null) { global $tmpl; if (!isset($pageno) || empty($pageno) || !is_numeric($pageno)) { if (($current_page = $this->getSessionVar("current_page")) === false) { $current_page = 1; } } else { $current_page = $pageno; } if (!isset($items_limit) || is_null($items_limit) || !is_numeric($items_limit)) { if (($current_items_limit = $this->getSessionVar("current_items_limit")) === false) { $current_items_limit = -1; } } else { $current_items_limit = $items_limit; } if (method_exists($this, static::$view_class_name . "List") && is_callable(array(&$this, static::$view_class_name . "List"))) { $tmpl->registerPlugin('block', static::$view_class_name . "_list", array(&$this, static::$view_class_name . "List")); } else { $tmpl->registerPlugin('block', static::$view_class_name . "_list", array(&$this, 'dataList')); } $template_name = static::$view_class_name . "_list.tpl"; if (!$tmpl->templateExists($template_name)) { static::raiseError(__METHOD__ . "(), template '{$template_name}' does not exist!"); return false; } if (!$this->hasViewData()) { return $tmpl->fetch($template_name); } try { $pager = new \Thallium\Controllers\PagingController(array('delta' => 2)); } catch (\Exception $e) { $this->raiseError(__METHOD__ . '(), failed to load PagingController!'); return false; } if (($view_data = $this->getViewData()) === false) { static::raiseError(__CLASS__ . '::getViewData() returned false!'); return false; } if (!$view_data->hasItems()) { return $tmpl->fetch($template_name); } if (!$pager->setPagingData($view_data)) { $this->raiseError(get_class($pager) . '::setPagingData() returned false!'); return false; } if (!$pager->setCurrentPage($current_page)) { $this->raiseError(get_class($pager) . '::setCurrentPage() returned false!'); return false; } if (!$pager->setItemsLimit($current_items_limit)) { $this->raiseError(get_class($pager) . '::setItemsLimit() returned false!'); return false; } if (($items = $pager->getPageData()) === false) { $this->raiseError(get_class($pager) . '::getPageData() returned false!'); return false; } if (!isset($items) || !is_array($items)) { $this->raiseError(get_class($pager) . '::getPageData() returned invalid data!'); return false; } $this->view_items = $items; if (!$this->setSessionVar("current_page", $current_page)) { $this->raiseError(__CLASS__ . '::setSessionVar() returned false!'); return false; } if (!$this->setSessionVar("current_items_limit", $current_items_limit)) { $this->raiseError(__CLASS__ . '::setSessionVar() returned false!'); return false; } $tmpl->assign('pager', $pager); return $tmpl->fetch($template_name); }
/** * a helper method to display a listing. * * @param int|null $pageno * @param int|null $items_limit * @return string|bool * @throws \Thallium\Controllers\ExceptionController */ public function showList($pageno = null, $items_limit = null) { global $thallium, $router, $tmpl; if (!isset($pageno) || empty($pageno) || !is_numeric($pageno) || !$this->hasSessionVar("current_page") || $this->hasSessionVar("current_page") && ($current_page = $this->getSessionVar("current_page")) === false) { $current_page = 1; } if (!isset($current_page)) { $current_page = $pageno; } if ((!isset($items_limit) || is_null($items_limit) || !is_numeric($items_limit)) && !$this->hasSessionVar("current_items_limit") || $this->hasSessionVar("current_items_limit") && ($current_items_limit = $this->getSessionVar("current_items_limit")) === false) { $current_items_limit = $this->default_items_limit; } if (isset($items_limit) && !is_null($items_limit) && (is_int($items_limit) || is_numeric($items_limit)) && (int) $items_limit >= 0) { $current_items_limit = $items_limit; } if (($template_name = static::getListTemplateName()) === false) { static::raiseError(__CLASS__ . '::getListTemplateName() returned false!'); return false; } if (!$tmpl->templateExists($template_name)) { static::raiseError(__METHOD__ . "(), template '{$template_name}' does not exist!"); return false; } if (!$this->hasViewData()) { return $tmpl->fetch($template_name); } if ($router->hasQueryParams() && $router->hasQueryParam(2) && ($display = $router->getQueryParam(2)) !== false && $thallium->isModelIdentifier($display)) { $start_at = $display; } try { $pager = new \Thallium\Controllers\PagingController(array('delta' => 2)); } catch (\Exception $e) { static::raiseError(__METHOD__ . '(), failed to load PagingController!', false, $e); return false; } if (($view_data = $this->getViewData()) === false) { static::raiseError(__CLASS__ . '::getViewData() returned false!'); return false; } if (!$view_data->hasItems()) { return $tmpl->fetch($template_name); } if (!$pager->setPagingData($view_data)) { static::raiseError(get_class($pager) . '::setPagingData() returned false!'); return false; } if (!$pager->setItemsLimit($current_items_limit)) { static::raiseError(get_class($pager) . '::setItemsLimit() returned false!'); return false; } if (isset($start_at)) { if (!$view_data->hasItem($start_at)) { static::raiseError(get_class($view_data) . '::hasItem() returned false!'); return false; } if (($current_page = $pager->getPageOfItem($start_at)) === false) { static::raiseError(get_class($pager) . '::getPageOfItem() returned false!'); return false; } } if (!$pager->setCurrentPage($current_page)) { static::raiseError(get_class($pager) . '::setCurrentPage() returned false!'); return false; } if (($items = $pager->getPageData()) === false) { static::raiseError(get_class($pager) . '::getPageData() returned false!'); return false; } if (!isset($items) || !is_array($items)) { static::raiseError(get_class($pager) . '::getPageData() returned invalid data!'); return false; } $this->view_items = $items; if (!$this->setSessionVar("current_page", $current_page)) { static::raiseError(__CLASS__ . '::setSessionVar() returned false!'); return false; } if (!$this->setSessionVar("current_items_limit", $current_items_limit)) { static::raiseError(__CLASS__ . '::setSessionVar() returned false!'); return false; } $tmpl->assign('pager', $pager); return $tmpl->fetch($template_name); }