X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fplset.php;h=68a06d5d31629193ae511ae04616cd16675172c7;hb=38b7dbd95e5d725eb2b7b34a6a8fe5e0c84073f0;hp=648d81460a766fa15b0f965cae3ccb65ef34b874;hpb=08fa70684fd1332178cddb6b318151335fb4506c;p=platal.git diff --git a/classes/plset.php b/classes/plset.php index 648d814..68a06d5 100644 --- a/classes/plset.php +++ b/classes/plset.php @@ -80,7 +80,8 @@ class PlSet $limit"; // echo $query; // print_r($this); - $it = XDB::iterator($query); + $it = XDB::query($query); + $it = $it->fetchAllAssoc(); $count = XDB::query('SELECT FOUND_ROWS()'); $this->count = intval($count->fetchOneCell()); return $it; @@ -153,7 +154,7 @@ class PlSet return $view; } - public function apply($baseurl, PlatalPage &$page, $view = null, $data = null) + public function apply($baseurl, PlPage &$page, $view = null, $data = null) { $view =& $this->buildView($view, $data); if (is_null($view)) { @@ -181,7 +182,7 @@ class PlSet interface PlView { public function __construct(PlSet &$set, $data, array $params); - public function apply(PlatalPage &$page); + public function apply(PlPage &$page); public function args(); } @@ -199,6 +200,8 @@ abstract class MultipageView implements PlView protected $sortkeys = array(); protected $defaultkey = null; + protected $bound_field = null; + public function __construct(PlSet &$set, $data, array $params) { $this->set =& $set; @@ -222,6 +225,11 @@ abstract class MultipageView implements PlView return null; } + public function bounds() + { + return null; + } + protected function addSortKey($name, array $keys, $desc, $default = false) { $this->sortkeys[$name] = array('keys' => $keys, 'desc' => $desc); @@ -253,19 +261,34 @@ abstract class MultipageView implements PlView abstract public function templateName(); - public function apply(PlatalPage &$page) + public function apply(PlPage &$page) { + $res = $this->set->get($this->fields(), + $this->joins(), + $this->where(), + $this->groupBy(), + $this->order(), + $this->entriesPerPage, + $this->offset); + $show_bounds = $this->bounds(); + $end = end($res); + if ($show_bounds) { + if ($show_bounds == 1) { + $first = $res[0][$this->bound_field]; + $last = $end[$this->bound_field]; + } elseif ($show_bounds == -1) { + $first = $end[$this->bound_field]; + $last = $res[0][$this->bound_field]; + } + $page->assign('first', $first); + $page->assign('last', $last); + } + + $page->assign('show_bounds', $show_bounds); $page->assign('order', Env::v('order', $this->defaultkey)); $page->assign('orders', $this->sortkeys); $page->assign_by_ref('plview', $this); - $page->assign_by_ref('set', - $this->set->get($this->fields(), - $this->joins(), - $this->where(), - $this->groupBy(), - $this->order(), - $this->entriesPerPage, - $this->offset)); + $page->assign_by_ref('set', $res); $count = $this->set->count(); $this->pages = intval(ceil($count / $this->entriesPerPage)); return 'include/plview.multipage.tpl';