_storeManager = $storeManager; $this->_addressHelper = $addressHelper; $this->_scopeConfig = $scopeConfig; } /** * Set store * * @param null|string|bool|int|\Magento\Store\Model\Store $store * @return $this */ public function setStore($store) { $this->_store = $this->_storeManager->getStore($store); return $this; } /** * Retrieve store * * @return \Magento\Store\Model\Store */ public function getStore() { if ($this->_store === null) { $this->_store = $this->_storeManager->getStore(); } return $this->_store; } /** * Retrieve address formats * * @return array */ public function getFormats() { $store = $this->getStore(); $storeId = $store->getId(); if (!isset($this->_types[$storeId])) { $this->_types[$storeId] = []; foreach ($this->get() as $typeCode => $typeConfig) { $path = sprintf('%s%s', self::XML_PATH_ADDRESS_TEMPLATE, $typeCode); $type = new DataObject(); if (isset($typeConfig['escapeHtml'])) { $escapeHtml = $typeConfig['escapeHtml'] == 'true' || $typeConfig['escapeHtml'] == '1'; } else { $escapeHtml = false; } $type->setCode($typeCode) ->setTitle((string)$typeConfig['title']) ->setDefaultFormat($this->_scopeConfig->getValue($path, ScopeInterface::SCOPE_STORE, $store)) ->setEscapeHtml($escapeHtml); $renderer = isset($typeConfig['renderer']) ? (string)$typeConfig['renderer'] : null; if (!$renderer) { $renderer = self::DEFAULT_ADDRESS_RENDERER; } $type->setRenderer($this->_addressHelper->getRenderer($renderer)->setType($type)); $this->_types[$storeId][] = $type; } } return $this->_types[$storeId]; } /** * Retrieve default address format * * @return DataObject */ protected function _getDefaultFormat() { $store = $this->getStore(); $storeId = $store->getId(); if (!isset($this->_defaultTypes[$storeId])) { $this->_defaultTypes[$storeId] = new DataObject(); $this->_defaultTypes[$storeId]->setCode( 'default' )->setDefaultFormat( '{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}' . '{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}}, ' . '{{var street}}, {{var city}}, {{var region}} {{var postcode}}, {{var country}}' ); $renderer = $this->_addressHelper->getRenderer(self::DEFAULT_ADDRESS_RENDERER) ->setType($this->_defaultTypes[$storeId]); $this->_defaultTypes[$storeId]->setRenderer($renderer); } return $this->_defaultTypes[$storeId]; } /** * Retrieve address format by code * * @param string $typeCode * @return DataObject */ public function getFormatByCode($typeCode) { foreach ($this->getFormats() as $type) { if ($type->getCode() == $typeCode) { return $type; } } return $this->_getDefaultFormat(); } }