$tags = $request->query->get('tags', '');
$since = $request->query->get('since', 0);
+ /** @var \Pagerfanta\Pagerfanta $pager */
$pager = $this->getDoctrine()
->getRepository('WallabagCoreBundle:Entry')
->findEntries($this->getUser()->getId(), $isArchived, $isStarred, $sort, $order, $since, $tags);
- $pager->setCurrentPage($page);
$pager->setMaxPerPage($perPage);
+ $pager->setCurrentPage($page);
$pagerfantaFactory = new PagerfantaFactory('page', 'perPage');
$paginatedCollection = $pagerfantaFactory->createRepresentation(
namespace Wallabag\CoreBundle\Form\Type;
use Doctrine\ORM\EntityRepository;
+use Lexik\Bundle\FormFilterBundle\Filter\FilterOperands;
use Lexik\Bundle\FormFilterBundle\Filter\Query\QueryInterface;
use Lexik\Bundle\FormFilterBundle\Filter\Form\Type\NumberRangeFilterType;
use Lexik\Bundle\FormFilterBundle\Filter\Form\Type\DateRangeFilterType;
$this->user = $tokenStorage->getToken() ? $tokenStorage->getToken()->getUser() : null;
if (null === $this->user || !is_object($this->user)) {
- return null;
+ return;
}
}
{
$builder
->add('readingTime', NumberRangeFilterType::class, [
+ 'left_number_options' => [
+ 'condition_operator' => FilterOperands::OPERATOR_GREATER_THAN_EQUAL,
+ 'attr' => ['min' => 0],
+ ],
+ 'right_number_options' => [
+ 'condition_operator' => FilterOperands::OPERATOR_LOWER_THAN_EQUAL,
+ 'attr' => ['min' => 0],
+ ],
'apply_filter' => function (QueryInterface $filterQuery, $field, $values) {
$lower = $values['value']['left_number'][0];
$upper = $values['value']['right_number'][0];
<tr><td>hoa/zformat</td><td>BSD-3-Clause</td></tr>
<tr><td>htmlawed/htmlawed</td><td>GPL-2.0+ or LGPL-3.0</td></tr>
<tr><td>incenteev/composer-parameter-handler</td><td>MIT</td></tr>
- <tr><td>j0k3r/graby</td><td>AGPL-3.0</td></tr>
- <tr><td>j0k3r/graby-site-config</td><td>AGPL-3.0</td></tr>
+ <tr><td>j0k3r/graby</td><td>MIT</td></tr>
+ <tr><td>j0k3r/graby-site-config</td><td>Public domain</td></tr>
<tr><td>j0k3r/php-readability</td><td>Apache-2.0</td></tr>
<tr><td>j0k3r/safecurl</td><td>MIT</td></tr>
<tr><td>jdorn/sql-formatter</td><td>MIT</td></tr>
$this->assertEquals('application/json', $this->client->getResponse()->headers->get('Content-Type'));
}
+ public function testGetEntriesOnPageTwo()
+ {
+ $this->client->request('GET', '/api/entries', [
+ 'page' => 2,
+ 'perPage' => 2,
+ ]);
+
+ $this->assertEquals(200, $this->client->getResponse()->getStatusCode());
+
+ $content = json_decode($this->client->getResponse()->getContent(), true);
+
+ $this->assertGreaterThanOrEqual(0, $content['total']);
+ $this->assertEquals(2, $content['page']);
+ $this->assertEquals(2, $content['limit']);
+ }
+
public function testGetStarredEntries()
{
$this->client->request('GET', '/api/entries', ['starred' => 1, 'sort' => 'updated']);
$this->assertCount(1, $crawler->filter('div[class=entry]'));
}
+ public function testFilterOnReadingTimeWithNegativeValue()
+ {
+ $this->logInAs('admin');
+ $client = $this->getClient();
+
+ $crawler = $client->request('GET', '/unread/list');
+
+ $form = $crawler->filter('button[id=submit-filter]')->form();
+
+ $data = [
+ 'entry_filter[readingTime][right_number]' => -22,
+ 'entry_filter[readingTime][left_number]' => -22,
+ ];
+
+ $crawler = $client->submit($form, $data);
+
+ // forcing negative value results in no entry displayed
+ $this->assertCount(0, $crawler->filter('div[class=entry]'));
+ }
+
public function testFilterOnReadingTimeOnlyUpper()
{
$this->logInAs('admin');