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\DoctrineODMMongoDBAdapter; |
19
|
|
|
use Pagerfanta\Pagerfanta; |
20
|
|
|
|
21
|
|
|
final class MongoDBPagerProvider implements PagerProviderInterface |
22
|
|
|
{ |
23
|
|
|
/** |
24
|
|
|
* @var string |
25
|
|
|
*/ |
26
|
|
|
private $objectClass; |
27
|
|
|
|
28
|
|
|
/** |
29
|
|
|
* @var ManagerRegistry |
30
|
|
|
*/ |
31
|
|
|
private $doctrine; |
32
|
|
|
|
33
|
|
|
/** |
34
|
|
|
* @var array |
35
|
|
|
*/ |
36
|
|
|
private $baseOptions; |
37
|
|
|
|
38
|
|
|
/** |
39
|
|
|
* @var RegisterListenersService |
40
|
|
|
*/ |
41
|
|
|
private $registerListenersService; |
42
|
|
|
|
43
|
|
|
/** |
44
|
|
|
* @param string $objectClass |
45
|
|
|
*/ |
46
|
4 |
|
public function __construct(ManagerRegistry $doctrine, RegisterListenersService $registerListenersService, $objectClass, array $baseOptions) |
47
|
|
|
{ |
48
|
4 |
|
$this->doctrine = $doctrine; |
49
|
4 |
|
$this->objectClass = $objectClass; |
50
|
4 |
|
$this->baseOptions = $baseOptions; |
51
|
4 |
|
$this->registerListenersService = $registerListenersService; |
52
|
4 |
|
} |
53
|
|
|
|
54
|
|
|
/** |
55
|
|
|
* {@inheritdoc} |
56
|
|
|
*/ |
57
|
3 |
|
public function provide(array $options = []): PagerInterface |
58
|
|
|
{ |
59
|
3 |
|
$options = \array_replace($this->baseOptions, $options); |
60
|
|
|
|
61
|
3 |
|
$manager = $this->doctrine->getManagerForClass($this->objectClass); |
62
|
3 |
|
$repository = $manager->getRepository($this->objectClass); |
63
|
|
|
|
64
|
3 |
|
$pager = new PagerfantaPager(new Pagerfanta( |
65
|
3 |
|
new DoctrineODMMongoDBAdapter(\call_user_func([$repository, $options['query_builder_method']])) |
|
|
|
|
66
|
|
|
)); |
67
|
|
|
|
68
|
3 |
|
$this->registerListenersService->register($manager, $pager, $options); |
|
|
|
|
69
|
|
|
|
70
|
3 |
|
return $pager; |
71
|
|
|
} |
72
|
|
|
} |
73
|
|
|
|
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.