Skip to content

Commit 95a31b5

Browse files
committed
Merge remote-tracking branch 'origin/MAGETWO-43265-exception-if-no-permission' into PR_Branch
2 parents 783fbc8 + 345a88f commit 95a31b5

File tree

9 files changed

+269
-218
lines changed

9 files changed

+269
-218
lines changed

setup/config/di.config.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
'Magento\Setup\Controller\ReadinessCheckInstaller',
2020
'Magento\Setup\Controller\ReadinessCheckUpdater',
2121
'Magento\Setup\Controller\Environment',
22+
'Magento\Setup\Controller\DependencyCheck',
2223
'Magento\Setup\Controller\DatabaseCheck',
2324
'Magento\Setup\Controller\AddDatabase',
2425
'Magento\Setup\Controller\WebConfiguration',

setup/pub/magento/setup/readiness-check.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ angular.module('readiness-check', [])
2424
};
2525
switch ($state.current.type) {
2626
case 'uninstall':
27-
$scope.dependencyUrl = 'index.php/environment/uninstall-dependency-check';
27+
$scope.dependencyUrl = 'index.php/dependency-check/uninstall-dependency-check';
2828
if ($localStorage.packages) {
2929
$scope.componentDependency.packages = $localStorage.packages;
3030
}
3131
break;
3232
case 'enable':
3333
case 'disable':
34-
$scope.dependencyUrl = 'index.php/environment/enable-disable-dependency-check';
34+
$scope.dependencyUrl = 'index.php/dependency-check/enable-disable-dependency-check';
3535
if ($localStorage.packages) {
3636
$scope.componentDependency.packages = {
3737
type: $state.current.type,
@@ -40,7 +40,7 @@ angular.module('readiness-check', [])
4040
}
4141
break;
4242
default:
43-
$scope.dependencyUrl = 'index.php/environment/component-dependency';
43+
$scope.dependencyUrl = 'index.php/dependency-check/component-dependency';
4444
if ($localStorage.packages) {
4545
$scope.componentDependency.packages = $localStorage.packages;
4646
}
Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Setup\Controller;
8+
9+
use Magento\Setup\Model\DependencyReadinessCheck;
10+
use Magento\Setup\Model\UninstallDependencyCheck;
11+
use Zend\Json\Json;
12+
use Zend\Mvc\Controller\AbstractActionController;
13+
use Zend\View\Model\JsonModel;
14+
use Magento\Framework\Filesystem;
15+
use Magento\Setup\Model\ModuleStatusFactory;
16+
use Magento\Framework\Module\Status;
17+
18+
/**
19+
* Class DependencyCheck
20+
*
21+
* Checks dependencies.
22+
*/
23+
class DependencyCheck extends AbstractActionController
24+
{
25+
/**
26+
* Dependency Readiness Check
27+
*
28+
* @var DependencyReadinessCheck
29+
*/
30+
protected $dependencyReadinessCheck;
31+
32+
/**
33+
* Uninstall Dependency Readiness Check
34+
*
35+
* @var UninstallDependencyCheck
36+
*/
37+
protected $uninstallDependencyCheck;
38+
39+
/**
40+
* Module/Status Object
41+
*
42+
* @var Status
43+
*/
44+
protected $moduleStatus;
45+
46+
/**
47+
* Constructor
48+
*
49+
* @param DependencyReadinessCheck $dependencyReadinessCheck
50+
* @param UninstallDependencyCheck $uninstallDependencyCheck
51+
* @param ModuleStatusFactory $moduleStatusFactory
52+
*/
53+
public function __construct(
54+
DependencyReadinessCheck $dependencyReadinessCheck,
55+
UninstallDependencyCheck $uninstallDependencyCheck,
56+
ModuleStatusFactory $moduleStatusFactory
57+
) {
58+
$this->dependencyReadinessCheck = $dependencyReadinessCheck;
59+
$this->uninstallDependencyCheck = $uninstallDependencyCheck;
60+
$this->moduleStatus = $moduleStatusFactory->create();
61+
}
62+
63+
/**
64+
* Verifies component dependency
65+
*
66+
* @return JsonModel
67+
*/
68+
public function componentDependencyAction()
69+
{
70+
$responseType = ResponseTypeInterface::RESPONSE_TYPE_SUCCESS;
71+
$packages = Json::decode($this->getRequest()->getContent(), Json::TYPE_ARRAY);
72+
$data = [];
73+
foreach ($packages as $package) {
74+
$data[] = implode(' ', $package);
75+
}
76+
$dependencyCheck = $this->dependencyReadinessCheck->runReadinessCheck($data);
77+
$data = [];
78+
if (!$dependencyCheck['success']) {
79+
$responseType = ResponseTypeInterface::RESPONSE_TYPE_ERROR;
80+
$data['errorMessage'] = $dependencyCheck['error'];
81+
}
82+
$data['responseType'] = $responseType;
83+
return new JsonModel($data);
84+
}
85+
86+
/**
87+
* Verifies component dependency for uninstall
88+
*
89+
* @return JsonModel
90+
*/
91+
public function uninstallDependencyCheckAction()
92+
{
93+
$responseType = ResponseTypeInterface::RESPONSE_TYPE_SUCCESS;
94+
$packages = Json::decode($this->getRequest()->getContent(), Json::TYPE_ARRAY);
95+
96+
$packagesToDelete = [];
97+
foreach ($packages as $package) {
98+
$packagesToDelete[] = $package['name'];
99+
}
100+
101+
$dependencyCheck = $this->uninstallDependencyCheck->runUninstallReadinessCheck($packagesToDelete);
102+
$data = [];
103+
if (!$dependencyCheck['success']) {
104+
$responseType = ResponseTypeInterface::RESPONSE_TYPE_ERROR;
105+
$data['errorMessage'] = $dependencyCheck['error'];
106+
}
107+
$data['responseType'] = $responseType;
108+
return new JsonModel($data);
109+
}
110+
111+
/**
112+
* Verifies component dependency for enable/disable actions
113+
*
114+
* @return JsonModel
115+
*/
116+
public function enableDisableDependencyCheckAction()
117+
{
118+
$responseType = ResponseTypeInterface::RESPONSE_TYPE_SUCCESS;
119+
$data = Json::decode($this->getRequest()->getContent(), Json::TYPE_ARRAY);
120+
121+
try {
122+
if (empty($data['packages'])) {
123+
throw new \Exception('No packages have been found.');
124+
}
125+
126+
if (empty($data['type'])) {
127+
throw new \Exception('Can not determine the flow.');
128+
}
129+
130+
$modules = $data['packages'];
131+
132+
$isEnable = ($data['type'] !== 'disable');
133+
134+
$modulesToChange = [];
135+
foreach ($modules as $module) {
136+
if (!isset($module['name'])) {
137+
throw new \Exception('Can not find module name.');
138+
}
139+
$modulesToChange[] = $module['name'];
140+
}
141+
142+
$constraints = $this->moduleStatus->checkConstraints($isEnable, $modulesToChange);
143+
$data = [];
144+
145+
if ($constraints) {
146+
$data['errorMessage'] = "Unable to change status of modules because of the following constraints: "
147+
. implode("<br>", $constraints);
148+
$responseType = ResponseTypeInterface::RESPONSE_TYPE_ERROR;
149+
}
150+
151+
} catch (\Exception $e) {
152+
$responseType = ResponseTypeInterface::RESPONSE_TYPE_ERROR;
153+
$data['errorMessage'] = $e->getMessage();
154+
}
155+
156+
$data['responseType'] = $responseType;
157+
return new JsonModel($data);
158+
}
159+
}

0 commit comments

Comments
 (0)