public function getPagi($sql) { $perpage = $_SESSION['user']['perpage']; $page = $_GET['p']; if ($page == '') { $page = 1; } $data = array(); $sql = DB::prefix($sql); $sqlcount = substr($sql, strpos($sql, ' FROM '), strlen($sql)); $tab = substr($sqlcount, strpos($sqlcount, ' ', 1), strpos($sqlcount, ' ', 6) - 1); if (strpos($sql, 'SELECT DISTINCT') !== false) { $sqlcount = 'SELECT COUNT(DISTINCT ' . $tab . '.id) ' . $sqlcount; } else { $sqlcount = 'SELECT count(*) ' . $sqlcount; } if (class_exists(PaginationWidget)) { PaginationWidget::$count = DB::getOne($sqlcount); } $sql = $sql . ' LIMIT ' . ($page - 1) * $perpage . ',' . $perpage . ''; $q = DB::$pdo->query($sql) or die(DB::error($sql, debug_backtrace())); foreach ($q as $row) { $data[] = $row; } return $data; }
function run() { foreach ($_SESSION['perpage'] as $key => $item) { if (in_array($key, Funcs::$uri)) { $path = $key; } } $items = PaginationWidget::getPage($_SESSION['perpage'][$path], PaginationWidget::$count); View::widget('pagination', array('pagination' => $items)); }
/** * * * @dataProvider configProvider * * @return void * @since 0.1.0 */ public function testWidget($current, $total, $size) { ob_start(); $controller = $this->getController($total); $w = new \PaginationWidget($controller); $w->currentPage = $current; $w->totalPages = $total; $w->size = $size; $w->route = 'dummy/index'; $w->init(); $w->run(); $out = ob_get_clean(); $offset = ceil($size / 2); $leftGap = $current - $offset > 2; $rightGap = $current + $offset < $total - 1; $leftDisabled = $current === 1; $rightDisabled = $current === $total; $crawler = $this->getCrawler($out); $elements = $crawler->filter('li'); $totalElements = $elements->count(); if ($total === 1) { $this->assertEmpty($out); return; } if ($leftGap) { $delimiter = trim($crawler->filter('li:nth-child(2)')->text()); $this->assertEquals('pagination.delimiter', $delimiter); } if ($rightGap) { $number = $totalElements - 1; $delimiter = trim($crawler->filter('li:nth-child(' . $number . ')')->text()); $this->assertEquals('pagination.delimiter', $delimiter); } if ($leftDisabled) { $this->assertEquals('disabled', $elements->first()->attr('class')); } if ($rightDisabled) { $this->assertEquals('disabled', $elements->last()->attr('class')); } }
function getUndefinedDealers() { $data = array(); // INNER JOIN {{dealers_status}} ON {{dealers}}.status = {{dealers_status}}.id $sql = ' SELECT {{dealers}}.* , {{dealers_status}}.shortname as statusname, {{dealers}}.id as dealer_id, ( SELECT COUNT(*) FROM {{dealers_orders}} LEFT JOIN {{dealers_orders_status}} ON {{dealers_orders}}.status = {{dealers_orders_status}}.id WHERE {{dealers_orders}}.`dealer` = dealer_id AND {{dealers_orders_status}}.path = \'new\' ) as new_orders FROM {{dealers}} LEFT JOIN {{dealers_status}} ON {{dealers}}.status = {{dealers_status}}.id WHERE {{dealers}}.active=1 ORDER BY new_orders DESC '; //getPagi не cпособен переварить запрос с подзапросами //вместо //$list=DB::getPagi($sql); //приходится делать так $dealers_count = DB::getOne('SELECT COUNT(*) FROM {{dealers}}'); if (Funcs::$OneSSA) { $perpage = $_SESSION['user']['perpage']; } else { if ($_SESSION['perpage'][end(Funcs::$uri)]) { $perpage = $_SESSION['perpage'][end(Funcs::$uri)]; } else { $perpage = 10; } } $page = intval($_GET['p']) > 0 ? $_GET['p'] : '1'; if (class_exists(PaginationWidget)) { PaginationWidget::$count = $dealers_count; } $sql .= ' LIMIT ' . ($page - 1) * $perpage . ',' . $perpage; $list = DB::getAll($sql); foreach ($list as $item) { $item['stores_cnt'] = DealersStores::getCount($item['id']); $item['consignee_cnt'] = DealersConsignee::getCount($item['id']); $item['balance'] = self::getBalance($item['id']); $item['files'] = DealersFiles::getCountFiles($item['id']); $item['orders'] = DealersOrders::getOrdersCountByStatus($item['id'], 'new') . '/' . DealersOrders::getOrdersCountByStatus($item['id']); $data[] = $item; } return $data; }
public function getPagi($sql, $exec = 0) { $perpage = 0; if (Funcs::$OneSSA) { $perpage = $_SESSION['user']['perpage']; } else { if ($_SESSION['perpage'][end(Funcs::$uri)]) { $perpage = $_SESSION['perpage'][end(Funcs::$uri)]; } if ($perpage == 0) { $perpage = $_SESSION['perpage'][reset(Funcs::$uri)]; } if ($perpage == 0) { $perpage = 10; } } $page = $_GET['p']; if ($page == '') { $page = 1; } $data = array(); $sql = DB::prefix($sql, $exec); $sqlcount = substr($sql, strpos($sql, ' FROM '), strlen($sql)); $tab = substr($sqlcount, strpos($sqlcount, ' ', 1), strpos($sqlcount, ' ', 6) - 1); if (strpos($sql, 'SELECT DISTINCT') !== false) { $sqlcount = 'SELECT COUNT(DISTINCT ' . $tab . '.id) ' . $sqlcount; } else { $sqlcount = 'SELECT COUNT(*) ' . $sqlcount; } if (strpos($sqlcount, 'ORDER BY') !== false) { $sqlcount = substr($sqlcount, 0, strpos($sqlcount, 'ORDER BY')); } if (class_exists(PaginationWidget)) { PaginationWidget::$count = DB::getOne($sqlcount, 1); } $sql = $sql . ' LIMIT ' . ($page - 1) * $perpage . ',' . $perpage . ''; $q = mysql_query($sql) or die('<b>Ошибка в SQL-запросе:</b> ' . $sql); while ($row = mysql_fetch_assoc($q)) { $data[] = $row; } return $data; }
<td class="sections_table_cell"><?php echo $item['paid'] == 1 ? 'Оплачен' : 'Ожидает'; ?> </td> <td class="sections_table_cell"><a href="/<?php echo Funcs::$cdir; ?> /selling/authors/<?php echo $item['author']; ?> /"><?php echo $item['iusername']; ?> </a></td> </tr> <?php } ?> </table> </div> </div> </div> <div class="ltRow"> <div class="sections_footer clearfix"> <?php echo PaginationWidget::run($pagination); ?> </div> </div> </div> </div>
<?php } ?> <?php } ?> </tr> <?php } ?> </table> <div class="hr" style="margin-bottom: 18px;"></div> <div class="nav-bar"> <a href="#up" class="up-but"></a> <?php PaginationWidget::run(); ?> </div> </div> </div> <?php if ((empty($url[3]) || strpos($url[3], "?") !== false) && !empty($fields["fulltext"])) { echo '<div style="clear: right;">' . $fields["fulltext"] . '</div>'; } ?> <div style="clear: right;"><?php echo Funcs::$seo['textpost']['value']; ?> </div> <div class="clear"></div> </div>
function run() { $items = PaginationWidget::getPage($_SESSION['user']['perpage'], PaginationWidget::$count); View::widget('pagination', array('pagination' => $items)); }