Skip to content

Commit 8637c06

Browse files
author
mrflos
committed
feat(importer): accept Importer classes from extensions, and better class load
1 parent 4408f91 commit 8637c06

File tree

1 file changed

+20
-16
lines changed

1 file changed

+20
-16
lines changed

services/ImporterManager.php

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,35 +41,39 @@ public function __construct(
4141

4242
public function getAvailableImporters()
4343
{
44+
4445
$services = array_filter($this->wiki->services->getServiceIds(), function ($subject) {
4546
return preg_match('/Importer$/', $subject);
4647
});
48+
4749
$importers = [];
4850
foreach ($services as $serv) {
49-
$shortClass = str_replace(['YesWiki\Importer\Service\\', 'YesWiki\Custom\Service\\', 'Importer'], '', $serv);
51+
$short = explode('Service\\', $serv)[1];
52+
$shortClass = str_replace(['Importer'], '', $short);
5053
$importers[$shortClass] = $serv;
5154
}
5255
return $importers;
5356
}
5457

5558
private function findImporterClass(string $importer, string $source)
5659
{
57-
$classPrefixes = ['YesWiki\Importer\Service\\', 'YesWiki\Custom\Service\\'];
58-
foreach ($classPrefixes as $prefix) {
59-
$className = $prefix . $importer . 'Importer';
60-
if (class_exists($className)) {
61-
return new $className(
62-
$source,
63-
$this->params,
64-
$this->services,
65-
$this->entryManager,
66-
$this,
67-
$this->formManager,
68-
$this->listManager,
69-
$this->wiki
70-
);
71-
}
60+
$available = $this->getAvailableImporters();
61+
if (!empty($available[$importer])) {
62+
$className = $available[$importer];
7263
}
64+
if (!empty($className) && class_exists($className, false)) {
65+
return new $className(
66+
$source,
67+
$this->params,
68+
$this->services,
69+
$this->entryManager,
70+
$this,
71+
$this->formManager,
72+
$this->listManager,
73+
$this->wiki
74+
);
75+
}
76+
7377
return false;
7478
}
7579

0 commit comments

Comments
 (0)