示例#1
0
 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);
 }
示例#2
0
 /**
  * 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);
 }