76 $page_number = isset($params[
'page']) ? (int) $params[
'page'] : 1;
77 $per_page = isset($params[
'per_page']) ? (int) $params[
'per_page'] : 10;
79 if ($page_number < 1 && $per_page < 1) {
80 throw new KumbiaException(
"La página $page_number no existe en el páginador");
82 $start = $per_page * ($page_number - 1);
84 $page =
new stdClass();
86 if (is_array($model)) {
91 if ($page_number > 1 && $start >= $n) {
92 throw new KumbiaException(
"La página $page_number no existe en el páginador");
94 $page->items = array_slice($items, $start, $per_page);
100 if (isset($params[
'conditions'])) {
101 $conditions = $params[
'conditions'];
102 } elseif (isset($params[1])) {
103 $conditions = $params[1];
105 if (isset($params[
'columns'])) {
106 $find_args[] =
"columns: {$params['columns']}";
108 if (isset($params[
'join'])) {
109 $find_args[] =
"join: {$params['join']}";
111 if (isset($params[
'group'])) {
112 $find_args[] =
"group: {$params['group']}";
114 if (isset($params[
'having'])) {
115 $find_args[] =
"having: {$params['having']}";
117 if (isset($params[
'order'])) {
118 $find_args[] =
"order: {$params['order']}";
120 if (isset($params[
'distinct'])) {
121 $find_args[] =
"distinct: {$params['distinct']}";
123 if (isset($conditions)) {
124 $find_args[] = $conditions;
127 $n = call_user_func_array(array($model,
'count'), $find_args);
130 if ($page_number > 1 && $start >= $n) {
131 throw new KumbiaException(
"La página $page_number no existe en el páginador");
134 $find_args[] =
"offset: $start";
135 $find_args[] =
"limit: $per_page";
137 $page->items = call_user_func_array(array($model,
'find'), $find_args);
140 $page->next = ($start + $per_page) < $n ? ($page_number + 1) :
false;
141 $page->prev = ($page_number > 1) ? ($page_number - 1) :
false;
142 $page->current = $page_number;
143 $page->total = ceil($n / $per_page);
145 $page->per_page = $per_page;
175 $page_number = isset($params[
'page']) ? (int) $params[
'page'] : 1;
176 $per_page = isset($params[
'per_page']) ? (int) $params[
'per_page'] : 10;
178 if ($page_number < 1 || $per_page < 1) {
179 throw new KumbiaException(
"La página $page_number no existe en el páginador");
181 $start = $per_page * ($page_number - 1);
183 $page =
new stdClass();
185 $n = $model->count_by_sql(
"SELECT COUNT(*) FROM ($sql) AS t");
188 if ($page_number > 1 && $start >= $n) {
189 throw new KumbiaException(
"La página $page_number no existe en el páginador");
191 $page->items = $model->find_all_by_sql($model->limit($sql,
"offset: $start",
"limit: $per_page"));
193 $page->next = ($start + $per_page) < $n ? ($page_number + 1) :
false;
194 $page->prev = ($page_number > 1) ? ($page_number - 1) :
false;
195 $page->current = $page_number;
196 $page->total = ceil($n / $per_page);
198 $page->per_page = $per_page;