Skip to content

Commit 843daf6

Browse files
Use extension names instead of IDs when erroring on enable/disable reqs (#2563)
1 parent 930fcf9 commit 843daf6

File tree

7 files changed

+33
-32
lines changed

7 files changed

+33
-32
lines changed

src/Extension/Exception/DependentExtensionsException.php

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
use Exception;
1313
use Flarum\Extension\Extension;
14+
use Flarum\Extension\ExtensionManager;
1415

1516
/**
1617
* This exception is thrown when someone attempts to disable an extension
@@ -30,18 +31,6 @@ public function __construct(Extension $extension, array $dependent_extensions)
3031
$this->extension = $extension;
3132
$this->dependent_extensions = $dependent_extensions;
3233

33-
parent::__construct($extension->getId().' could not be disabled, because it is a dependency of: '.implode(', ', $this->getDependentExtensionIds()));
34-
}
35-
36-
/**
37-
* Get array of IDs for extensions that depend on this extension.
38-
*
39-
* @return array
40-
*/
41-
public function getDependentExtensionIds()
42-
{
43-
return array_map(function (Extension $extension) {
44-
return $extension->getId();
45-
}, $this->dependent_extensions);
34+
parent::__construct($extension->getTitle().' could not be disabled, because it is a dependency of: '.implode(', ', ExtensionManager::pluckTitles($dependent_extensions)));
4635
}
4736
}

src/Extension/Exception/DependentExtensionsExceptionHandler.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
namespace Flarum\Extension\Exception;
1111

12+
use Flarum\Extension\ExtensionManager;
1213
use Flarum\Foundation\ErrorHandling\HandledError;
1314

1415
class DependentExtensionsExceptionHandler
@@ -26,8 +27,8 @@ protected function errorDetails(DependentExtensionsException $e): array
2627
{
2728
return [
2829
[
29-
'extension' => $e->extension->getId(),
30-
'extensions' => $e->getDependentExtensionIds(),
30+
'extension' => $e->extension->getTitle(),
31+
'extensions' => ExtensionManager::pluckTitles($e->dependent_extensions),
3132
]
3233
];
3334
}

src/Extension/Exception/MissingDependenciesException.php

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
use Exception;
1313
use Flarum\Extension\Extension;
14+
use Flarum\Extension\ExtensionManager;
1415

1516
/**
1617
* This exception is thrown when someone attempts to enable an extension
@@ -30,18 +31,6 @@ public function __construct(Extension $extension, array $missing_dependencies =
3031
$this->extension = $extension;
3132
$this->missing_dependencies = $missing_dependencies;
3233

33-
parent::__construct($extension->getId().' could not be enabled, because it depends on: '.implode(', ', $this->getMissingDependencyIds()));
34-
}
35-
36-
/**
37-
* Get array of IDs for missing (disabled) extensions that this extension depends on.
38-
*
39-
* @return array
40-
*/
41-
public function getMissingDependencyIds()
42-
{
43-
return array_map(function (Extension $extension) {
44-
return $extension->getId();
45-
}, $this->missing_dependencies);
34+
parent::__construct($extension->getTitle().' could not be enabled, because it depends on: '.implode(', ', ExtensionManager::pluckTitles($missing_dependencies)));
4635
}
4736
}

src/Extension/Exception/MissingDependenciesExceptionHandler.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
namespace Flarum\Extension\Exception;
1111

12+
use Flarum\Extension\ExtensionManager;
1213
use Flarum\Foundation\ErrorHandling\HandledError;
1314

1415
class MissingDependenciesExceptionHandler
@@ -26,8 +27,8 @@ protected function errorDetails(MissingDependenciesException $e): array
2627
{
2728
return [
2829
[
29-
'extension' => $e->extension->getId(),
30-
'extensions' => $e->getMissingDependencyIds(),
30+
'extension' => $e->extension->getTitle(),
31+
'extensions' => ExtensionManager::pluckTitles($e->missing_dependencies),
3132
]
3233
];
3334
}

src/Extension/Extension.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,14 @@ public function getId()
278278
return $this->id;
279279
}
280280

281+
/**
282+
* @return string
283+
*/
284+
public function getTitle()
285+
{
286+
return $this->composerJsonAttribute('extra.flarum-extension.title');
287+
}
288+
281289
/**
282290
* @return string
283291
*/

src/Extension/ExtensionManager.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public function getExtensions()
114114
}
115115

116116
$this->extensions = $extensions->sortBy(function ($extension, $name) {
117-
return $extension->composerJsonAttribute('extra.flarum-extension.title');
117+
return $extension->getTitle();
118118
});
119119
}
120120

@@ -369,4 +369,17 @@ public function isEnabled($extension)
369369

370370
return isset($enabled[$extension]);
371371
}
372+
373+
/**
374+
* Returns the titles of the extensions passed.
375+
*
376+
* @param array $exts
377+
* @return string[]
378+
*/
379+
public static function pluckTitles(array $exts)
380+
{
381+
return array_map(function (Extension $extension) {
382+
return $extension->getTitle();
383+
}, $exts);
384+
}
372385
}

src/Install/Steps/EnableBundledExtensions.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ private function loadExtensions()
111111
})->filter(function (Extension $extension) {
112112
return in_array($extension->getId(), self::EXTENSION_WHITELIST);
113113
})->sortBy(function (Extension $extension) {
114-
return $extension->composerJsonAttribute('extra.flarum-extension.title');
114+
return $extension->getTitle();
115115
})->mapWithKeys(function (Extension $extension) {
116116
return [$extension->getId() => $extension];
117117
});

0 commit comments

Comments
 (0)