/
ExternalFileProviderFactory.php
88 lines (79 loc) · 2.53 KB
/
ExternalFileProviderFactory.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
namespace Concrete\Core\File\ExternalFileProvider;
use Concrete\Core\Entity\File\ExternalFileProvider\ExternalFileProvider as ExternalFileProviderEntity;
use Concrete\Core\File\ExternalFileProvider\Configuration\ConfigurationInterface;
use Doctrine\ORM\EntityManagerInterface;
/**
* Class ExternalFileProviderFactory
* Get ahold of existing external file providers and create new ones.
*/
class ExternalFileProviderFactory
{
/** @var EntityManagerInterface */
protected $entityManager;
public function __construct(
EntityManagerInterface $entityManager
)
{
$this->entityManager = $entityManager;
}
/**
* Create a new ExternalFileProvider, pass this to ExternalFileProviderFactory->persist() to store this external file provider.
*
* @param ConfigurationInterface $configuration
* @param $name
*
* @return ExternalFileProviderEntity
*/
public function create(ConfigurationInterface $configuration, $name)
{
$externalFileProvider = new ExternalFileProviderEntity();
$externalFileProvider->setConfigurationObject($configuration);
$externalFileProvider->setName($name);
return $externalFileProvider;
}
/**
* Fetch a external file provider by its ID.
*
* @param int $id
*
* @return ExternalFileProviderEntity|object|null
*
*/
public function fetchByID(int $id)
{
return $this->entityManager->find(ExternalFileProviderEntity::class, (int)$id);
}
/**
* Fetch a external file provider by its name.
*
* @param string $name
*
* @return ExternalFileProviderEntity|null|object
*/
public function fetchByName(string $name)
{
return $this->entityManager->getRepository(ExternalFileProviderEntity::class)->findOneBy(['efpName' => $name]);
}
/**
* Fetch a list of external file providers.
*
* @return ExternalFileProviderEntity[]|object[]
*/
public function fetchList()
{
return $this->entityManager->getRepository(ExternalFileProviderEntity::class)->findBy([], ['efpID' => 'asc']);
}
/**
* Store a created external file provider to the database.
*
* @param ExternalFileProviderEntity $externalFileProvider
* @return ExternalFileProviderEntity
*/
public function persist(ExternalFileProviderEntity $externalFileProvider)
{
$this->entityManager->persist($externalFileProvider);
$this->entityManager->flush();
return $externalFileProvider;
}
}