/** * Return specific data for address entry. Helper. * * @param \XLite\Model\Address $address Address * @param boolean $showEmpty Show empty fields OPTIONAL * * @return array */ protected function getAddressSectionData(\XLite\Model\Address $address, $showEmpty = false) { $result = array(); $hasStates = $address->getCountry() ? $address->getCountry()->hasStates() : false; foreach (\XLite\Core\Database::getRepo('XLite\\Model\\AddressField')->findAllEnabled() as $field) { $method = 'get' . \Includes\Utils\Converter::convertToCamelCase($field->getViewGetterName() ?: $field->getServiceName()); $addressFieldValue = $address->{$method}(); $cssFieldName = $field->getCSSFieldName(); switch ($field->getServiceName()) { case 'state_id': $addressFieldValue = $hasStates ? $addressFieldValue : null; if (null === $addressFieldValue && $hasStates) { $addressFieldValue = $address->getCustomState(); } break; case 'custom_state': $addressFieldValue = $hasStates ? null : $address->getCustomState(); $cssFieldName = $hasStates ? $cssFieldName : 'address-state'; break; default: } if ($addressFieldValue || $showEmpty) { $result[$field->getServiceName()] = array('css_class' => $cssFieldName, 'title' => $field->getName(), 'value' => $addressFieldValue); } } return $result; }
/** * Prepare the specific data format for address * * @param \XLite\Model\Address $address Address * * @return array */ public static function prepareAddressData($address) { return $address ? array('address' => $address->getStreet(), 'city' => $address->getCity(), 'state' => $address->getState()->getStateId(), 'custom_state' => $address->getCustomState(), 'zipcode' => $address->getZipcode(), 'country' => $address->getCountry() ? $address->getCountry()->getCode() : '', 'type' => $address->getType() ?: \XLite\Core\Config::getInstance()->Shipping->anonymous_address_type) : null; }