File tree Expand file tree Collapse file tree
Configuration/Model/Filter Expand file tree Collapse file tree Original file line number Diff line number Diff line change 44
55namespace PhpList \Core \Domain \Common \Model \Filter ;
66
7- trait PaginatedFilterTrait
7+ class PaginatedFilter implements FilterRequestInterface
88{
99 private int $ lastId = 0 ;
1010 private int $ limit = 50 ;
Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ class PaginatedResult
1313 private array $ items ;
1414 private int $ total ;
1515 private int $ limit ;
16+ // maybe $lastId not needed
1617 private int $ lastId ;
1718
1819 /** @param list<T> $items */
Original file line number Diff line number Diff line change 66
77use DateTimeInterface ;
88use PhpList \Core \Domain \Common \Model \Filter \FilterRequestInterface ;
9- use PhpList \Core \Domain \Common \Model \Filter \PaginatedFilterTrait ;
9+ use PhpList \Core \Domain \Common \Model \Filter \PaginatedFilter ;
1010
11- class EventLogFilter implements FilterRequestInterface
11+ class EventLogFilter extends PaginatedFilter implements FilterRequestInterface
1212{
13- use PaginatedFilterTrait;
14-
1513 public function __construct (
1614 private readonly ?string $ page = null ,
1715 private readonly ?DateTimeInterface $ dateFrom = null ,
Original file line number Diff line number Diff line change 55namespace PhpList \Core \Domain \Identity \Model \Filter ;
66
77use PhpList \Core \Domain \Common \Model \Filter \FilterRequestInterface ;
8- use PhpList \Core \Domain \Common \Model \Filter \PaginatedFilterTrait ;
8+ use PhpList \Core \Domain \Common \Model \Filter \PaginatedFilter ;
99
10- class AdminAttributeValueFilter implements FilterRequestInterface
10+ class AdminAttributeValueFilter extends PaginatedFilter implements FilterRequestInterface
1111{
12- use PaginatedFilterTrait;
13-
1412 private ?int $ adminId = null ;
1513
1614 public function setAdminId (?int $ adminId ): self
Original file line number Diff line number Diff line change 55namespace PhpList \Core \Domain \Messaging \Model \Filter ;
66
77use PhpList \Core \Domain \Common \Model \Filter \FilterRequestInterface ;
8- use PhpList \Core \Domain \Common \Model \Filter \PaginatedFilterTrait ;
8+ use PhpList \Core \Domain \Common \Model \Filter \PaginatedFilter ;
99use PhpList \Core \Domain \Identity \Model \Administrator ;
1010
11- class MessageFilter implements FilterRequestInterface
11+ class MessageFilter extends PaginatedFilter implements FilterRequestInterface
1212{
13- use PaginatedFilterTrait;
14-
1513 private ?Administrator $ owner = null ;
1614
1715 public function getOwner (): ?Administrator
Original file line number Diff line number Diff line change 55namespace PhpList \Core \Domain \Messaging \Model \Filter ;
66
77use PhpList \Core \Domain \Common \Model \Filter \FilterRequestInterface ;
8- use PhpList \Core \Domain \Common \Model \Filter \PaginatedFilterTrait ;
8+ use PhpList \Core \Domain \Common \Model \Filter \PaginatedFilter ;
99use PhpList \Core \Domain \Identity \Model \Administrator ;
1010
11- class SubscriberListFilter implements FilterRequestInterface
11+ class SubscriberListFilter extends PaginatedFilter implements FilterRequestInterface
1212{
13- use PaginatedFilterTrait;
14-
1513 private ?Administrator $ owner = null ;
1614
1715 public function getOwner (): ?Administrator
Original file line number Diff line number Diff line change 55namespace PhpList \Core \Domain \Subscription \Model \Filter ;
66
77use PhpList \Core \Domain \Common \Model \Filter \FilterRequestInterface ;
8- use PhpList \Core \Domain \Common \Model \Filter \PaginatedFilterTrait ;
8+ use PhpList \Core \Domain \Common \Model \Filter \PaginatedFilter ;
99
10- class SubscriberAttributeValueFilter implements FilterRequestInterface
10+ class SubscriberAttributeValueFilter extends PaginatedFilter implements FilterRequestInterface
1111{
12- use PaginatedFilterTrait;
1312
1413 private ?int $ subscriberId = null ;
1514
Original file line number Diff line number Diff line change 66
77use DateTimeImmutable ;
88use PhpList \Core \Domain \Common \Model \Filter \FilterRequestInterface ;
9- use PhpList \Core \Domain \Common \Model \Filter \PaginatedFilterTrait ;
9+ use PhpList \Core \Domain \Common \Model \Filter \PaginatedFilter ;
1010
1111/** @SuppressWarnings("ExcessiveParameterList") */
12- class SubscriberFilter implements FilterRequestInterface
12+ class SubscriberFilter extends PaginatedFilter implements FilterRequestInterface
1313{
14- use PaginatedFilterTrait;
15-
1614 private ?int $ listId ;
1715 private ?DateTimeImmutable $ subscribedDateFrom ;
1816 private ?DateTimeImmutable $ subscribedDateTo ;
Original file line number Diff line number Diff line change 66
77use DateTimeImmutable ;
88use PhpList \Core \Domain \Common \Model \Filter \FilterRequestInterface ;
9- use PhpList \Core \Domain \Common \Model \Filter \PaginatedFilterTrait ;
9+ use PhpList \Core \Domain \Common \Model \Filter \PaginatedFilter ;
1010use PhpList \Core \Domain \Subscription \Model \Subscriber ;
1111
12- class SubscriberHistoryFilter implements FilterRequestInterface
12+ class SubscriberHistoryFilter extends PaginatedFilter implements FilterRequestInterface
1313{
14- use PaginatedFilterTrait;
15-
1614 private ?Subscriber $ subscriber ;
1715 private ?string $ ip ;
1816 private ?DateTimeImmutable $ dateFrom ;
Original file line number Diff line number Diff line change @@ -67,7 +67,14 @@ public function getFilteredAfterId(FilterRequestInterface $filter): PaginatedRes
6767
6868 $ queryBuilder = $ this ->createQueryBuilder ('l ' );
6969
70- return $ queryBuilder
70+ $ countQb = clone $ queryBuilder ;
71+ $ total = (int ) $ countQb
72+ ->select ('COUNT(DISTINCT l.id) ' )
73+ ->getQuery ()
74+ ->getSingleScalarResult ();
75+
76+ /** @var list<SubscriberList> $items */
77+ $ items = $ queryBuilder
7178 ->where ($ queryBuilder ->expr ()->orX ('l.owner = :admin ' , 'l.public = true ' ))
7279 ->setParameter ('admin ' , $ filter ->getOwner ())
7380 ->andWhere ('l.id > :id ' )
@@ -76,6 +83,13 @@ public function getFilteredAfterId(FilterRequestInterface $filter): PaginatedRes
7683 ->orderBy ('l.id ' , 'ASC ' )
7784 ->getQuery ()
7885 ->getResult ();
86+
87+ return new PaginatedResult (
88+ items: $ items ,
89+ total: $ total ,
90+ limit: $ filter ->getLimit (),
91+ lastId: $ filter ->getLastId (),
92+ );
7993 }
8094
8195 public function getListNames (array $ listIds ): array
You can’t perform that action at this time.
0 commit comments