/** * Return true if all address fields ar enabled * * @return boolean */ protected function isAddressFieldsEnabled() { $result = false; $allowedAddressFields = array('country_code', 'state_id', 'custom_state', 'zipcode'); // Find all enabled address fields $enabledAddressFields = \XLite\Core\Database::getRepo('XLite\\Model\\AddressField')->findByEnabled(true); if ($enabledAddressFields) { $addressFields = array(); foreach ($enabledAddressFields as $field) { $addressFields[] = $field->getServiceName(); } $addressFields = array_intersect($addressFields, $allowedAddressFields); if ($addressFields) { // Get processors required address fields $processorFields = \XLite\Model\Shipping::getRequiredAddressFields(); if ($processorFields) { foreach ($processorFields as $processor => $fields) { $intersect = array_intersect($fields, $addressFields); if (count($intersect) === count($fields)) { $result = true; break; } } } } } return $result; }