Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
IntegrationService.php
Go to the documentation of this file.
1 <?php
8 
10 use Magento\Integration\Model\IntegrationFactory;
11 use Magento\Integration\Api\OauthServiceInterface as IntegrationOauthService;
13 
20 {
25 
29  protected $_oauthService;
30 
37  public function __construct(IntegrationFactory $integrationFactory, IntegrationOauthService $oauthService)
38  {
39  $this->_integrationFactory = $integrationFactory;
40  $this->_oauthService = $oauthService;
41  }
42 
46  public function create(array $integrationData)
47  {
48  $this->_checkIntegrationByName($integrationData['name']);
49  $integration = $this->_integrationFactory->create()->setData($integrationData);
50  $integration->save();
51  $consumerName = 'Integration' . $integration->getId();
52  $consumer = $this->_oauthService->createConsumer(['name' => $consumerName]);
53  $integration->setConsumerId($consumer->getId());
54  $integration->save();
55  return $integration;
56  }
57 
61  public function update(array $integrationData)
62  {
63  $integration = $this->_loadIntegrationById($integrationData['integration_id']);
64  //If name has been updated check if it conflicts with an existing integration
65  if ($integration->getName() != $integrationData['name']) {
66  $this->_checkIntegrationByName($integrationData['name']);
67  }
68  $integration->addData($integrationData);
69  $integration->save();
70  return $integration;
71  }
72 
76  public function delete($integrationId)
77  {
78  $integration = $this->_loadIntegrationById($integrationId);
79  $data = $integration->getData();
80  $integration->delete();
81  return $data;
82  }
83 
87  public function get($integrationId)
88  {
89  $integration = $this->_loadIntegrationById($integrationId);
92  return $integration;
93  }
94 
98  public function findByName($name)
99  {
100  $integration = $this->_integrationFactory->create()->load($name, 'name');
101  return $integration;
102  }
103 
107  public function findByConsumerId($consumerId)
108  {
109  $integration = $this->_integrationFactory->create()->load($consumerId, 'consumer_id');
110  return $integration;
111  }
112 
116  public function findActiveIntegrationByConsumerId($consumerId)
117  {
118  $integration = $this->_integrationFactory->create()->loadActiveIntegrationByConsumerId($consumerId);
119  return $integration;
120  }
121 
129  private function _checkIntegrationByName($name)
130  {
131  $integration = $this->_integrationFactory->create()->load($name, 'name');
132  if ($integration->getId()) {
133  throw new IntegrationException(__('The integration with name "%1" exists.', $name));
134  }
135  }
136 
144  protected function _loadIntegrationById($integrationId)
145  {
146  $integration = $this->_integrationFactory->create()->load($integrationId);
147  if (!$integration->getId()) {
148  throw new IntegrationException(__('The integration with ID "%1" doesn\'t exist.', $integrationId));
149  }
150  return $integration;
151  }
152 
160  {
161  if ($integration->getId()) {
162  $consumer = $this->_oauthService->loadConsumer($integration->getConsumerId());
163  $integration->setData('consumer_key', $consumer->getKey());
164  $integration->setData('consumer_secret', $consumer->getSecret());
165  }
166  }
167 
175  {
176  if ($integration->getId()) {
177  $accessToken = $this->_oauthService->getAccessToken($integration->getConsumerId());
178  if ($accessToken) {
179  $integration->setData('token', $accessToken->getToken());
180  $integration->setData('token_secret', $accessToken->getSecret());
181  }
182  }
183  }
184 
188  public function getSelectedResources($integrationId)
189  {
190  $integration = $this->get($integrationId);
191  $data = $integration->getData();
192 
193  $selectedResourceIds = [];
194  if ($data && isset($data['resource']) && is_array($data['resource'])) {
195  $selectedResourceIds = $data['resource'];
196  }
197  return $selectedResourceIds;
198  }
199 }
__construct(IntegrationFactory $integrationFactory, IntegrationOauthService $oauthService)
_addOauthTokenData(IntegrationModel $integration)
__()
Definition: __.php:13
_addOauthConsumerData(IntegrationModel $integration)
if(!isset($_GET['name'])) $name
Definition: log.php:14