Skip to content

Commit c85f57a

Browse files
committed
Merge branch '2.2-develop' into MAGETWO-60339
2 parents 1dea563 + 47361f8 commit c85f57a

File tree

200 files changed

+3004
-3666
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

200 files changed

+3004
-3666
lines changed

app/code/Magento/Analytics/Controller/Adminhtml/Reports/Show.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66
namespace Magento\Analytics\Controller\Adminhtml\Reports;
77

8+
use Magento\Analytics\Model\Exception\State\SubscriptionUpdateException;
89
use Magento\Analytics\Model\ReportUrlProvider;
910
use Magento\Backend\App\Action;
1011
use Magento\Backend\App\Action\Context;
@@ -55,6 +56,9 @@ public function execute()
5556
$resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
5657
try {
5758
$resultRedirect->setUrl($this->reportUrlProvider->getUrl());
59+
} catch (SubscriptionUpdateException $e) {
60+
$this->getMessageManager()->addNoticeMessage($e->getMessage());
61+
$resultRedirect->setPath('adminhtml');
5862
} catch (LocalizedException $e) {
5963
$this->getMessageManager()->addExceptionMessage($e, $e->getMessage());
6064
$resultRedirect->setPath('adminhtml');

app/code/Magento/Analytics/Cron/Update.php

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
*/
66
namespace Magento\Analytics\Cron;
77

8+
use Magento\Analytics\Model\AnalyticsToken;
9+
use Magento\Analytics\Model\Config\Backend\Baseurl\SubscriptionUpdateHandler;
810
use Magento\Analytics\Model\Connector;
9-
use Magento\Analytics\Model\Plugin\BaseUrlConfigPlugin;
1011
use Magento\Framework\FlagManager;
1112
use Magento\Framework\App\Config\ReinitableConfigInterface;
1213
use Magento\Framework\App\Config\Storage\WriterInterface;
1314

1415
/**
15-
* Class Update
1616
* Executes by cron schedule in case base url was changed
1717
*/
1818
class Update
@@ -28,8 +28,6 @@ class Update
2828
private $configWriter;
2929

3030
/**
31-
* Reinitable Config Model.
32-
*
3331
* @var ReinitableConfigInterface
3432
*/
3533
private $reinitableConfig;
@@ -40,22 +38,29 @@ class Update
4038
private $flagManager;
4139

4240
/**
43-
* Update constructor.
41+
* @var AnalyticsToken
42+
*/
43+
private $analyticsToken;
44+
45+
/**
4446
* @param Connector $connector
4547
* @param WriterInterface $configWriter
4648
* @param ReinitableConfigInterface $reinitableConfig
4749
* @param FlagManager $flagManager
50+
* @param AnalyticsToken $analyticsToken
4851
*/
4952
public function __construct(
5053
Connector $connector,
5154
WriterInterface $configWriter,
5255
ReinitableConfigInterface $reinitableConfig,
53-
FlagManager $flagManager
56+
FlagManager $flagManager,
57+
AnalyticsToken $analyticsToken
5458
) {
5559
$this->connector = $connector;
5660
$this->configWriter = $configWriter;
5761
$this->reinitableConfig = $reinitableConfig;
5862
$this->flagManager = $flagManager;
63+
$this->analyticsToken = $analyticsToken;
5964
}
6065

6166
/**
@@ -65,13 +70,23 @@ public function __construct(
6570
*/
6671
public function execute()
6772
{
68-
$updateResult = $this->connector->execute('update');
69-
if ($updateResult === false) {
70-
return false;
73+
$result = false;
74+
$attemptsCount = $this->flagManager
75+
->getFlagData(SubscriptionUpdateHandler::SUBSCRIPTION_UPDATE_REVERSE_COUNTER_FLAG_CODE);
76+
77+
if ($attemptsCount) {
78+
$attemptsCount -= 1;
79+
$result = $this->connector->execute('update');
80+
}
81+
82+
if ($result || ($attemptsCount <= 0) || (!$this->analyticsToken->isTokenExist())) {
83+
$this->flagManager
84+
->deleteFlag(SubscriptionUpdateHandler::SUBSCRIPTION_UPDATE_REVERSE_COUNTER_FLAG_CODE);
85+
$this->flagManager->deleteFlag(SubscriptionUpdateHandler::PREVIOUS_BASE_URL_FLAG_CODE);
86+
$this->configWriter->delete(SubscriptionUpdateHandler::UPDATE_CRON_STRING_PATH);
87+
$this->reinitableConfig->reinit();
7188
}
72-
$this->configWriter->delete(BaseUrlConfigPlugin::UPDATE_CRON_STRING_PATH);
73-
$this->flagManager->deleteFlag(BaseUrlConfigPlugin::OLD_BASE_URL_FLAG_CODE);
74-
$this->reinitableConfig->reinit();
75-
return true;
89+
90+
return $result;
7691
}
7792
}
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Analytics\Model\Config\Backend\Baseurl;
8+
9+
use Magento\Analytics\Model\AnalyticsToken;
10+
use Magento\Framework\App\Config\ReinitableConfigInterface;
11+
use Magento\Framework\App\Config\Storage\WriterInterface;
12+
use Magento\Framework\FlagManager;
13+
14+
/**
15+
* Class for processing of change of Base URL.
16+
*/
17+
class SubscriptionUpdateHandler
18+
{
19+
/**
20+
* Flag code for a reserve counter to update subscription.
21+
*/
22+
const SUBSCRIPTION_UPDATE_REVERSE_COUNTER_FLAG_CODE = 'analytics_link_subscription_update_reverse_counter';
23+
24+
/**
25+
* Config path for schedule setting of update handler.
26+
*/
27+
const UPDATE_CRON_STRING_PATH = "crontab/default/jobs/analytics_update/schedule/cron_expr";
28+
29+
/**
30+
* Flag code for the previous Base URL.
31+
*/
32+
const PREVIOUS_BASE_URL_FLAG_CODE = 'analytics_previous_base_url';
33+
34+
/**
35+
* Max value for a reserve counter to update subscription.
36+
*
37+
* @var int
38+
*/
39+
private $attemptsInitValue = 48;
40+
41+
/**
42+
* @var WriterInterface
43+
*/
44+
private $configWriter;
45+
46+
/**
47+
* Cron expression for a update handler.
48+
*
49+
* @var string
50+
*/
51+
private $cronExpression = '0 * * * *';
52+
53+
/**
54+
* @var FlagManager
55+
*/
56+
private $flagManager;
57+
58+
/**
59+
* @var ReinitableConfigInterface
60+
*/
61+
private $reinitableConfig;
62+
63+
/**
64+
* @var AnalyticsToken
65+
*/
66+
private $analyticsToken;
67+
68+
/**
69+
* @param AnalyticsToken $analyticsToken
70+
* @param FlagManager $flagManager
71+
* @param ReinitableConfigInterface $reinitableConfig
72+
* @param WriterInterface $configWriter
73+
*/
74+
public function __construct(
75+
AnalyticsToken $analyticsToken,
76+
FlagManager $flagManager,
77+
ReinitableConfigInterface $reinitableConfig,
78+
WriterInterface $configWriter
79+
) {
80+
$this->analyticsToken = $analyticsToken;
81+
$this->flagManager = $flagManager;
82+
$this->reinitableConfig = $reinitableConfig;
83+
$this->configWriter = $configWriter;
84+
}
85+
86+
/**
87+
* Activate process of subscription update handling.
88+
*
89+
* @param string $url
90+
* @return bool
91+
*/
92+
public function processUrlUpdate(string $url)
93+
{
94+
if ($this->analyticsToken->isTokenExist()) {
95+
if (!$this->flagManager->getFlagData(self::PREVIOUS_BASE_URL_FLAG_CODE)) {
96+
$this->flagManager->saveFlag(self::PREVIOUS_BASE_URL_FLAG_CODE, $url);
97+
}
98+
99+
$this->flagManager
100+
->saveFlag(self::SUBSCRIPTION_UPDATE_REVERSE_COUNTER_FLAG_CODE, $this->attemptsInitValue);
101+
$this->configWriter->save(self::UPDATE_CRON_STRING_PATH, $this->cronExpression);
102+
$this->reinitableConfig->reinit();
103+
}
104+
105+
return true;
106+
}
107+
}

app/code/Magento/Analytics/Model/Connector/NotifyDataChangedCommand.php

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
namespace Magento\Analytics\Model\Connector;
77

88
use Magento\Analytics\Model\AnalyticsToken;
9+
use Magento\Framework\App\Config\ScopeConfigInterface;
910
use Magento\Framework\HTTP\ZendClient;
10-
use Magento\Config\Model\Config;
1111
use Psr\Log\LoggerInterface;
1212
use Magento\Store\Model\Store;
1313
use Magento\Analytics\Model\Connector\Http\ResponseResolver;
@@ -33,7 +33,7 @@ class NotifyDataChangedCommand implements CommandInterface
3333
private $httpClient;
3434

3535
/**
36-
* @var Config
36+
* @var ScopeConfigInterface
3737
*/
3838
private $config;
3939

@@ -51,14 +51,14 @@ class NotifyDataChangedCommand implements CommandInterface
5151
* NotifyDataChangedCommand constructor.
5252
* @param AnalyticsToken $analyticsToken
5353
* @param Http\ClientInterface $httpClient
54-
* @param Config $config
54+
* @param ScopeConfigInterface $config
5555
* @param ResponseResolver $responseResolver
5656
* @param LoggerInterface $logger
5757
*/
5858
public function __construct(
5959
AnalyticsToken $analyticsToken,
6060
Http\ClientInterface $httpClient,
61-
Config $config,
61+
ScopeConfigInterface $config,
6262
ResponseResolver $responseResolver,
6363
LoggerInterface $logger
6464
) {
@@ -80,16 +80,14 @@ public function execute()
8080
if ($this->analyticsToken->isTokenExist()) {
8181
$response = $this->httpClient->request(
8282
ZendClient::POST,
83-
$this->config->getConfigDataValue($this->notifyDataChangedUrlPath),
83+
$this->config->getValue($this->notifyDataChangedUrlPath),
8484
[
8585
"access-token" => $this->analyticsToken->getToken(),
86-
"url" => $this->config->getConfigDataValue(
87-
Store::XML_PATH_SECURE_BASE_URL
88-
),
86+
"url" => $this->config->getValue(Store::XML_PATH_SECURE_BASE_URL),
8987
]
9088
);
9189
$result = $this->responseResolver->getResult($response);
9290
}
93-
return $result;
91+
return (bool)$result;
9492
}
9593
}

app/code/Magento/Analytics/Model/Connector/SignUpCommand.php

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use Magento\Analytics\Model\AnalyticsToken;
99
use Magento\Analytics\Model\Connector\Http\ResponseResolver;
1010
use Magento\Analytics\Model\IntegrationManager;
11-
use Magento\Config\Model\Config;
11+
use Magento\Framework\App\Config\ScopeConfigInterface;
1212
use Psr\Log\LoggerInterface;
1313
use Magento\Framework\HTTP\ZendClient;
1414
use Magento\Store\Model\Store;
@@ -36,7 +36,7 @@ class SignUpCommand implements CommandInterface
3636
private $integrationManager;
3737

3838
/**
39-
* @var Config
39+
* @var ScopeConfigInterface
4040
*/
4141
private $config;
4242

@@ -60,15 +60,15 @@ class SignUpCommand implements CommandInterface
6060
*
6161
* @param AnalyticsToken $analyticsToken
6262
* @param IntegrationManager $integrationManager
63-
* @param Config $config
63+
* @param ScopeConfigInterface $config
6464
* @param Http\ClientInterface $httpClient
6565
* @param LoggerInterface $logger
6666
* @param ResponseResolver $responseResolver
6767
*/
6868
public function __construct(
6969
AnalyticsToken $analyticsToken,
7070
IntegrationManager $integrationManager,
71-
Config $config,
71+
ScopeConfigInterface $config,
7272
Http\ClientInterface $httpClient,
7373
LoggerInterface $logger,
7474
ResponseResolver $responseResolver
@@ -101,12 +101,10 @@ public function execute()
101101
$this->integrationManager->activateIntegration();
102102
$response = $this->httpClient->request(
103103
ZendClient::POST,
104-
$this->config->getConfigDataValue($this->signUpUrlPath),
104+
$this->config->getValue($this->signUpUrlPath),
105105
[
106106
"token" => $integrationToken->getData('token'),
107-
"url" => $this->config->getConfigDataValue(
108-
Store::XML_PATH_SECURE_BASE_URL
109-
)
107+
"url" => $this->config->getValue(Store::XML_PATH_SECURE_BASE_URL),
110108
]
111109
);
112110

@@ -121,6 +119,6 @@ public function execute()
121119
}
122120
}
123121

124-
return $result;
122+
return (bool)$result;
125123
}
126124
}

app/code/Magento/Analytics/Model/Connector/UpdateCommand.php

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
namespace Magento\Analytics\Model\Connector;
77

88
use Magento\Analytics\Model\AnalyticsToken;
9+
use Magento\Analytics\Model\Config\Backend\Baseurl\SubscriptionUpdateHandler;
910
use Magento\Analytics\Model\Connector\Http\ResponseResolver;
10-
use Magento\Analytics\Model\Plugin\BaseUrlConfigPlugin;
11-
use Magento\Config\Model\Config;
11+
use Magento\Framework\App\Config\ScopeConfigInterface;
1212
use Magento\Framework\FlagManager;
1313
use Magento\Framework\HTTP\ZendClient;
1414
use Magento\Store\Model\Store;
@@ -36,7 +36,7 @@ class UpdateCommand implements CommandInterface
3636
private $httpClient;
3737

3838
/**
39-
* @var Config
39+
* @var ScopeConfigInterface
4040
*/
4141
private $config;
4242

@@ -58,15 +58,15 @@ class UpdateCommand implements CommandInterface
5858
/**
5959
* @param AnalyticsToken $analyticsToken
6060
* @param Http\ClientInterface $httpClient
61-
* @param Config $config
61+
* @param ScopeConfigInterface $config
6262
* @param LoggerInterface $logger
6363
* @param FlagManager $flagManager
6464
* @param ResponseResolver $responseResolver
6565
*/
6666
public function __construct(
6767
AnalyticsToken $analyticsToken,
6868
Http\ClientInterface $httpClient,
69-
Config $config,
69+
ScopeConfigInterface $config,
7070
LoggerInterface $logger,
7171
FlagManager $flagManager,
7272
ResponseResolver $responseResolver
@@ -90,12 +90,11 @@ public function execute()
9090
if ($this->analyticsToken->isTokenExist()) {
9191
$response = $this->httpClient->request(
9292
ZendClient::PUT,
93-
$this->config->getConfigDataValue($this->updateUrlPath),
93+
$this->config->getValue($this->updateUrlPath),
9494
[
95-
"url" => $this->flagManager->getFlagData(BaseUrlConfigPlugin::OLD_BASE_URL_FLAG_CODE),
96-
"new-url" => $this->config->getConfigDataValue(
97-
Store::XML_PATH_SECURE_BASE_URL
98-
),
95+
"url" => $this->flagManager
96+
->getFlagData(SubscriptionUpdateHandler::PREVIOUS_BASE_URL_FLAG_CODE),
97+
"new-url" => $this->config->getValue(Store::XML_PATH_SECURE_BASE_URL),
9998
"access-token" => $this->analyticsToken->getToken(),
10099
]
101100
);
@@ -110,6 +109,6 @@ public function execute()
110109
}
111110
}
112111

113-
return $result;
112+
return (bool)$result;
114113
}
115114
}

0 commit comments

Comments
 (0)