/
DefaultConfigurationFactory.php
85 lines (71 loc) · 3.06 KB
/
DefaultConfigurationFactory.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
<?php
namespace Concrete\Core\File\Component\Chooser;
use Concrete\Core\Entity\File\Folder\FavoriteFolder;
use Concrete\Core\Entity\Search\SavedFileSearch;
use Concrete\Core\File\Component\Chooser\Option\ExternalFileProviderOption;
use Concrete\Core\File\Component\Chooser\Option\FileManagerOption;
use Concrete\Core\File\Component\Chooser\Option\FileSetsOption;
use Concrete\Core\File\Component\Chooser\Option\FileUploadOption;
use Concrete\Core\File\Component\Chooser\Option\FolderBookmarkOption;
use Concrete\Core\File\Component\Chooser\Option\RecentUploadsOption;
use Concrete\Core\File\Component\Chooser\Option\SavedSearchOption;
use Concrete\Core\File\Component\Chooser\Option\SearchOption;
use Concrete\Core\File\ExternalFileProvider\ExternalFileProviderFactory;
use Concrete\Core\File\Set\Set;
use Concrete\Core\User\User;
use Doctrine\ORM\EntityManager;
use Concrete\Core\Entity\User\User as UserEntity;
class DefaultConfigurationFactory
{
/**
* @var EntityManager
*/
protected $entityManager;
/**
* @var ExternalFileProviderFactory
*/
protected $externalFileProviderFactory;
public function __construct(
EntityManager $entityManager,
ExternalFileProviderFactory $externalFileProviderFactory
) {
$this->entityManager = $entityManager;
$this->externalFileProviderFactory = $externalFileProviderFactory;
}
public function createConfiguration(): ChooserConfigurationInterface
{
$configuration = new ChooserConfiguration();
$sets = Set::getMySets();
$searches = $this->entityManager->getRepository(SavedFileSearch::class)->findAll();
$configuration->addChooser(new FileManagerOption());
$configuration->addChooser(new RecentUploadsOption());
$configuration->addChooser(new SearchOption());
if (count($sets) > 0) {
$configuration->addChooser(new FileSetsOption());
}
if (count($searches) > 0) {
$configuration->addChooser(new SavedSearchOption());
}
$configuration->addUploader(new FileUploadOption());
// get external file providers
foreach ($this->externalFileProviderFactory->fetchList() as $externalFileProvider) {
$configuration->addUploader(new ExternalFileProviderOption($externalFileProvider));
}
// get all favored folders
$user = new User();
$favoriteFolderRepository = $this->entityManager->getRepository(FavoriteFolder::class);
$userRepository = $this->entityManager->getRepository(UserEntity::class);
/** @var User $userEntity */
$userEntity = $userRepository->findOneBy(["uID" => $user->getUserID()]);
$favoriteFolderEntries = $favoriteFolderRepository->findBy(
[
"owner" => $userEntity
]
);
foreach ($favoriteFolderEntries as $favoriteFolderEntry) {
/** @noinspection PhpUnhandledExceptionInspection */
$configuration->addChooser(new FolderBookmarkOption($favoriteFolderEntry));
}
return $configuration;
}
}