/** * Setup data fields. * * @param $username * @param $password * * @return bool */ public function setupDataFields($username, $password) { $error = false; $apiModel = false; if ($this->helper->isEnabled()) { $apiModel = $this->helper->getWebsiteApiClient(0, $username, $password); } if (!$apiModel) { $error = true; $this->helper->log('setupDataFields client is not enabled'); } else { $dataFields = $this->dataField->getContactDatafields(); foreach ($dataFields as $key => $dataField) { $response = $apiModel->postDataFields($dataField); //ignore existing datafields message if (isset($response->message) && $response->message != Client::API_ERROR_DATAFIELD_EXISTS) { $error = true; } else { //map the successfully created data field $this->helper->saveConfigData('connector_data_mapping/customer_data/' . $key, strtoupper($dataField['name']), 'default', 0); $this->helper->log('successfully connected : ' . $dataField['name']); } } } return $error == true ? false : true; }
/** * Execute method. */ public function execute() { $result = ['errors' => false, 'message' => '']; $website = $this->getRequest()->getParam('website', 0); $client = false; if ($this->data->isEnabled()) { $client = $this->data->getWebsiteApiClient($website); } $redirectUrl = $this->getUrl('adminhtml/system_config/edit', ['section' => 'connector_developer_settings']); if (!$client) { $this->messageManager->addNoticeMessage('Please enable api first.'); } else { // get all possible datatifileds $datafields = $this->datafield->getContactDatafields(); foreach ($datafields as $key => $datafield) { $response = $client->postDataFields($datafield); //ignore existing datafields message if (isset($response->message) && $response->message != \Dotdigitalgroup\Email\Model\Apiconnector\Client::API_ERROR_DATAFIELD_EXISTS) { $result['errors'] = true; $result['message'] .= ' Datafield ' . $datafield['name'] . ' - ' . $response->message . '</br>'; } else { if ($website) { $scope = 'websites'; $scopeId = $website; } else { $scope = 'default'; $scopeId = '0'; } /* * map the succesful created datafield */ $this->data->saveConfigData('connector_data_mapping/customer_data/' . $key, strtoupper($datafield['name']), $scope, $scopeId); $this->data->log('successfully connected : ' . $datafield['name']); } } if ($result['errors']) { $this->messageManager->addNoticeMessage($result['message']); } else { $this->messageManager->addSuccessMessage('All Datafields Created And Mapped.'); } } $this->_redirect($redirectUrl); }