/** * */ public function testCreateMusician() { $this->dispatchRouter('/pages/crud/', ['title' => 'splinter', 'alias' => 'test', 'content' => 'qqqqqqqqqqqq', 'keywords' => 'qqq', 'description' => 'test', 'created' => '2014-09-02', 'updated' => '2014-09-02', 'userId' => 1], Http\Request::METHOD_POST); // $this->assertOk(); $count = Db::fetchOne('SELECT count(*) FROM pages WHERE title = ?', ['splinter']); $this->assertEquals($count, 1); }
/** * Process * * @param array $settings * @return \Bluz\Grid\Data */ public function process(array $settings = []) { // process filters if (!empty($settings['filters'])) { foreach ($settings['filters'] as $column => $filters) { foreach ($filters as $filter => $value) { if ($filter == Grid\Grid::FILTER_LIKE) { $value = '%' . $value . '%'; } $this->source->andWhere($column . ' ' . $this->filters[$filter] . ' ?', $value); } } } // process orders if (!empty($settings['orders'])) { // Obtain a list of columns foreach ($settings['orders'] as $column => $order) { $this->source->addOrderBy($column, $order); } } // process pages $this->source->setLimit($settings['limit']); $this->source->setPage($settings['page']); // prepare query $connect = Proxy\Config::getData('db', 'connect'); if (strtolower($connect['type']) == 'mysql') { // MySQL $select = $this->source->getQueryPart('select'); $this->source->select('SQL_CALC_FOUND_ROWS ' . current($select)); // run queries $data = $this->source->execute(); $total = Proxy\Db::fetchOne('SELECT FOUND_ROWS()'); } else { // other $totalSource = clone $this->source; $totalSource->select('COUNT(*)'); // run queries $data = $this->source->execute(); $total = $totalSource->execute(); } $gridData = new Grid\Data($data); $gridData->setTotal($total); return $gridData; }
/** * {@inheritdoc} * * @param int $offset * @param int $limit * @param array $params * @return array|int|mixed */ public function readSet($offset = 0, $limit = 10, $params = array()) { $select = Db::select('*')->from('test', 't'); if ($limit) { $selectPart = $select->getQueryPart('select'); $selectPart = 'SQL_CALC_FOUND_ROWS ' . current($selectPart); $select->select($selectPart); $select->setLimit($limit); $select->setOffset($offset); } $result = $select->execute('\\Application\\Test\\Row'); if ($limit) { $total = Db::fetchOne('SELECT FOUND_ROWS()'); } else { $total = sizeof($result); } if (sizeof($result) < $total && Request::METHOD_GET == Request::getMethod()) { Response::setStatusCode(206); Response::setHeader('Content-Range', 'items ' . $offset . '-' . ($offset + sizeof($result)) . '/' . $total); } return $result; }
/** * Process * * @param array $settings * @return \Bluz\Grid\Data */ public function process(array $settings = []) { // process filters $where = []; if (!empty($settings['filters'])) { foreach ($settings['filters'] as $column => $filters) { foreach ($filters as $filter => $value) { if ($filter == Grid\Grid::FILTER_LIKE) { $value = '%' . $value . '%'; } $where[] = $column . ' ' . $this->filters[$filter] . ' ' . Proxy\Db::quote($value); } } } // process orders $orders = []; if (!empty($settings['orders'])) { // Obtain a list of columns foreach ($settings['orders'] as $column => $order) { $column = Proxy\Db::quoteIdentifier($column); $orders[] = $column . ' ' . $order; } } // process pages $limit = ' LIMIT ' . ($settings['page'] - 1) * $settings['limit'] . ', ' . $settings['limit']; // prepare query $connect = Proxy\Config::getData('db', 'connect'); if (strtolower($connect['type']) == 'mysql') { // MySQL $dataSql = preg_replace('/SELECT\\s(.*?)\\sFROM/is', 'SELECT SQL_CALC_FOUND_ROWS $1 FROM', $this->source, 1); $countSql = 'SELECT FOUND_ROWS()'; } else { // other $dataSql = $this->source; $countSql = preg_replace('/SELECT\\s(.*?)\\sFROM/is', 'SELECT COUNT(*) FROM', $this->source, 1); if (sizeof($where)) { $countSql .= ' WHERE ' . join(' AND ', $where); } } if (sizeof($where)) { $dataSql .= ' WHERE ' . join(' AND ', $where); } if (sizeof($orders)) { $dataSql .= ' ORDER BY ' . join(', ', $orders); } $dataSql .= $limit; // run queries $data = Proxy\Db::fetchAll($dataSql); $total = Proxy\Db::fetchOne($countSql); $gridData = new Grid\Data($data); $gridData->setTotal($total); return $gridData; }
/** * Get set of records * * @param int $offset * @param int $limit * @param array $params * @param int $total * @return array|int|mixed * @throws ApplicationException */ public function readSet($offset = 0, $limit = 10, $params = [], &$total = null) { $select = $this->getTable()->select(); // switch statement for DB type $type = Proxy\Db::getOption('connect', 'type'); switch ($type) { case 'mysql': $selectPart = $select->getQueryPart('select'); $selectPart = 'SQL_CALC_FOUND_ROWS ' . current($selectPart); $select->select($selectPart); $totalSQL = 'SELECT FOUND_ROWS()'; break; case 'pgsql': default: $selectTotal = clone $select; $selectTotal->select('COUNT(*)'); $totalSQL = $selectTotal->getSql(); break; } $select->setLimit($limit); $select->setOffset($offset); // run queries // use transaction to avoid errors Proxy\Db::transaction(function () use(&$result, &$total, $select, $totalSQL) { $result = $select->execute(); if (!is_null($total)) { $total = Proxy\Db::fetchOne($totalSQL); } }); return $result; }
/** * DELETE request with PRIMARY */ public function testDelete() { $this->dispatchRouter('/test/rest/1', null, Http\Request::METHOD_DELETE); $this->assertResponseCode(204); $count = Db::fetchOne('SELECT count(*) FROM `test` WHERE `id` = ?', [1]); $this->assertEquals($count, 0); }
/** * DELETE request should remove record */ public function testDelete() { $this->dispatchRouter('/test/crud/', ['id' => 3], Http\Request::METHOD_DELETE); $this->assertOk(); $count = Db::fetchOne('SELECT count(*) FROM `test` WHERE `email` = ?', ['*****@*****.**']); $this->assertEquals($count, 0); }
/** * DELETE request with PRIMARY */ public function testDelete() { Request::setMethod(Request::METHOD_DELETE); Request::setRawParams([1]); $result = $this->processRest(); $this->assertFalse($result); $count = Db::fetchOne('SELECT count(*) FROM test WHERE id = ?', [1]); $this->assertEquals($count, 0); }
/** * get exist dish from table */ private function getTestDish() { return Db::fetchOne('SELECT * FROM `dishes` WHERE `title` = ?', [$this->validData['title']]); }
/** * DELETE request should remove record */ public function testDelete() { Request::setMethod(Request::METHOD_DELETE); Request::setParams(['id' => 3]); $result = $this->processCrud(); $this->assertEquals(1, $result); $count = Db::fetchOne('SELECT count(*) FROM test WHERE id = ?', [3]); $this->assertEquals(0, $count); }
public function testUpdate() { Db::insert('musician')->setArray(['id' => 1, 'nickname' => 'testupdate', 'group' => 'test2', 'concertDate' => '2015-11-10', 'alias' => 'test2', 'image' => '560asdg9af3f39.jpg'])->execute(); $this->dispatchRouter('/musician/crud/', ['id' => 1, 'nickname' => 'testupdate', 'group' => 'florida', 'concertDate' => '2015-09-02', 'alias' => 'florida', 'types' => 'jazz'], Http\Request::METHOD_PUT); $this->assertResponseCode(200); $count = Db::fetchOne('SELECT count(*) FROM musician WHERE alias = ?', ['florida']); $this->assertEquals($count, 1); }
use Application\Users\Table; use Bluz\Controller\Controller; use Bluz\Proxy\Db; use Bluz\Proxy\Router; /** * @privilege Management * * @return void */ return function () { /** * @var Controller $this */ $this->disableView(); $total = Db::fetchOne('SELECT COUNT(*) FROM users'); $active = Db::fetchOne('SELECT COUNT(*) FROM users WHERE status = ?', [Table::STATUS_ACTIVE]); $last = Db::fetchRow('SELECT id, login FROM users ORDER BY id DESC LIMIT 1'); ?> <script> require(['bluz.widget']); </script> <div class="widget col-4" data-widget-key="users-stats"> <div class="widget-title"> <span class="iconholder-left"><i class="fa fa-signal"></i></span> <h4>Users</h4> <span class="iconholder-right widget-control" data-widget-control="collapse"> <i class="fa fa-chevron-up"></i> </span> </div> <div class="widget-content"> <ul class="widget-stats">