-
Notifications
You must be signed in to change notification settings - Fork 177
/
Copy pathExtensionsController.php
72 lines (58 loc) · 2.1 KB
/
ExtensionsController.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
<?php
declare(strict_types=1);
namespace Bolt\Controller\Backend;
use Bolt\Extension\BaseExtension;
use Bolt\Extension\ExtensionRegistry;
use ComposerPackages\Dependencies;
use ComposerPackages\Versions;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Security("is_granted('extensions')")
*/
class ExtensionsController extends AbstractController implements BackendZoneInterface
{
/** @var ExtensionRegistry */
private $extensionRegistry;
/** @var Dependencies */
private $dependenciesManager;
public function __construct(ExtensionRegistry $extensionRegistry)
{
$this->extensionRegistry = $extensionRegistry;
$this->dependenciesManager = new Dependencies();
}
/**
* @Route("/extensions", name="bolt_extensions")
*/
public function index(): Response
{
$extensions = $this->extensionRegistry->getExtensions();
$twigvars = [
'extensions' => $extensions,
];
return $this->render('@bolt/pages/extensions.html.twig', $twigvars);
}
/**
* @Route("/extensions/{name}", name="bolt_extensions_view", requirements={"name"=".+"})
*/
public function viewExtension($name): Response
{
$name = str_replace('/', '\\', $name);
/** @var BaseExtension $extension */
$extension = $this->extensionRegistry->getExtension($name);
$dependenciesNames = iterator_to_array($this->dependenciesManager->get($extension->getComposerPackage()->getName()));
$dependencies = [];
foreach ($dependenciesNames as $dependency) {
$extDependency['name'] = $dependency;
$extDependency['version'] = Versions::get($dependency);
$dependencies[] = $extDependency;
}
$twigvars = [
'extension' => $extension,
'dependencies' => $dependencies,
];
return $this->render('@bolt/pages/extension_details.html.twig', $twigvars);
}
}