1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
/* |
4
|
|
|
* This file is part of the FOSElasticaBundle package. |
5
|
|
|
* |
6
|
|
|
* (c) FriendsOfSymfony <https://friendsofsymfony.github.com/> |
7
|
|
|
* |
8
|
|
|
* For the full copyright and license information, please view the LICENSE |
9
|
|
|
* file that was distributed with this source code. |
10
|
|
|
*/ |
11
|
|
|
|
12
|
|
|
namespace FOS\ElasticaBundle\Doctrine; |
13
|
|
|
|
14
|
|
|
use Doctrine\Persistence\ManagerRegistry; |
15
|
|
|
use FOS\ElasticaBundle\Provider\PagerfantaPager; |
16
|
|
|
use FOS\ElasticaBundle\Provider\PagerInterface; |
17
|
|
|
use FOS\ElasticaBundle\Provider\PagerProviderInterface; |
18
|
|
|
use Pagerfanta\Adapter\DoctrineODMPhpcrAdapter; |
19
|
|
|
use Pagerfanta\Pagerfanta; |
20
|
|
|
|
21
|
|
|
final class PHPCRPagerProvider implements PagerProviderInterface |
22
|
|
|
{ |
23
|
|
|
public const ENTITY_ALIAS = 'a'; |
24
|
|
|
|
25
|
|
|
/** |
26
|
|
|
* @var string |
27
|
|
|
*/ |
28
|
|
|
private $objectClass; |
29
|
|
|
|
30
|
|
|
/** |
31
|
|
|
* @var ManagerRegistry |
32
|
|
|
*/ |
33
|
|
|
private $doctrine; |
34
|
|
|
|
35
|
|
|
/** |
36
|
|
|
* @var array |
37
|
|
|
*/ |
38
|
|
|
private $baseOptions; |
39
|
|
|
|
40
|
|
|
/** |
41
|
|
|
* @var RegisterListenersService |
42
|
|
|
*/ |
43
|
|
|
private $registerListenersService; |
44
|
|
|
|
45
|
|
|
/** |
46
|
|
|
* @param string $objectClass |
47
|
|
|
*/ |
48
|
4 |
|
public function __construct(ManagerRegistry $doctrine, RegisterListenersService $registerListenersService, $objectClass, array $baseOptions) |
49
|
|
|
{ |
50
|
4 |
|
$this->doctrine = $doctrine; |
51
|
4 |
|
$this->objectClass = $objectClass; |
52
|
4 |
|
$this->baseOptions = $baseOptions; |
53
|
4 |
|
$this->registerListenersService = $registerListenersService; |
54
|
4 |
|
} |
55
|
|
|
|
56
|
|
|
/** |
57
|
|
|
* {@inheritdoc} |
58
|
|
|
*/ |
59
|
3 |
|
public function provide(array $options = []): PagerInterface |
60
|
|
|
{ |
61
|
3 |
|
$options = \array_replace($this->baseOptions, $options); |
62
|
|
|
|
63
|
3 |
|
$manager = $this->doctrine->getManagerForClass($this->objectClass); |
64
|
3 |
|
$repository = $manager->getRepository($this->objectClass); |
65
|
|
|
|
66
|
3 |
|
$adapter = new DoctrineODMPhpcrAdapter( |
|
|
|
|
67
|
3 |
|
\call_user_func([$repository, $options['query_builder_method']], static::ENTITY_ALIAS) |
68
|
|
|
); |
69
|
|
|
|
70
|
3 |
|
$pager = new PagerfantaPager(new Pagerfanta($adapter)); |
71
|
|
|
|
72
|
3 |
|
$this->registerListenersService->register($manager, $pager, $options); |
|
|
|
|
73
|
|
|
|
74
|
3 |
|
return $pager; |
75
|
|
|
} |
76
|
|
|
} |
77
|
|
|
|
This class, trait or interface has been deprecated. The supplier of the file has supplied an explanatory message.
The explanatory message should give you some clue as to whether and when the type will be removed from the class and what other constant to use instead.