/** * Collect address data to xml node * Remove objects from data array and escape data values * * @param Mage_Customer_Model_Address $address * @param Mage_XmlConnect_Model_Simplexml_Element $item * @return Mage_XmlConnect_Block_Checkout_Onepage_Address_List */ protected function _prepareAddressData(Mage_Customer_Model_Address $address, Mage_XmlConnect_Model_Simplexml_Element $item) { $attributes = Mage::helper('customer/address')->getAttributes(); $data = array('entity_id' => $address->getId()); foreach ($attributes as $attribute) { /* @var $attribute Mage_Customer_Model_Attribute */ if (!$attribute->getIsVisible()) { continue; } if ($attribute->getAttributeCode() == 'country_id') { $data['country'] = $address->getCountryModel()->getName(); $data['country_id'] = $address->getCountryId(); } else { if ($attribute->getAttributeCode() == 'region') { $data['region'] = $address->getRegion(); } else { $dataModel = Mage_Customer_Model_Attribute_Data::factory($attribute, $address); $attributeValue = $dataModel->outputValue(Mage_Customer_Model_Attribute_Data::OUTPUT_FORMAT_ONELINE); if ($attribute->getFrontendInput() == 'multiline') { $values = $dataModel->outputValue(Mage_Customer_Model_Attribute_Data::OUTPUT_FORMAT_ARRAY); // explode lines foreach ($values as $attributeIndex => $attributeVal) { $key = sprintf('%s%d', $attribute->getAttributeCode(), $attributeIndex + 1); $data[$key] = $attributeVal; } } $data[$attribute->getAttributeCode()] = $attributeValue; } } } foreach ($data as $key => $value) { if (empty($value)) { continue; } $item->addCustomChild($key, $value); } return $this; }
/** * Build a Magento address model into a Braintree array * * @param Mage_Sales_Model_Order_Address|Mage_Sales_Model_Quote_Address|Mage_Customer_Model_Address $address * * @return array */ private function buildAddress($address) { // Build up the initial array $return = array('firstName' => $address->getFirstname(), 'lastName' => $address->getLastname(), 'streetAddress' => $address->getStreet1(), 'locality' => $address->getCity(), 'postalCode' => $address->getPostcode(), 'countryCodeAlpha2' => $address->getCountry()); // Any extended address? if ($address->getStreet2()) { $return['extendedAddress'] = $address->getStreet2(); } // Region if ($address->getRegion()) { $return['region'] = $address->getRegionCode(); } // Check to see if we have a company if ($address->getCompany()) { $return['company'] = $address->getCompany(); } return $return; }
/** * Import quote address data from customer address object * * @param Mage_Customer_Model_Address $address * @return Mage_Sales_Model_Quote_Address */ public function importCustomerAddress(Mage_Customer_Model_Address $address) { $this->setCustomerAddressId($address->getId())->setCustomerId($address->getParentId())->setEmail($address->hasEmail() ? $address->getEmail() : $address->getCustomer()->getEmail())->setFirstname($address->getFirstname())->setLastname($address->getLastname())->setCompany($address->getCompany())->setStreet($address->getStreet())->setCity($address->getCity())->setRegion($address->getRegion())->setRegionId($address->getRegionId())->setPostcode($address->getPostcode())->setCountryId($address->getCountryId())->setTelephone($address->getTelephone())->setFax($address->getFax()); return $this; }
/** * Convert magento address to array for braintree * * @param Mage_Customer_Model_Address $address * @return array */ protected function _toBraintreeAddress($address) { if ($address) { return array('firstName' => $address->getFirstname(), 'lastName' => $address->getLastname(), 'company' => $address->getCompany(), 'streetAddress' => $address->getStreet(1), 'extendedAddress' => $address->getStreet(2), 'locality' => $address->getCity(), 'region' => $address->getRegion(), 'postalCode' => $address->getPostcode(), 'countryCodeAlpha2' => $address->getCountry()); } else { return array(); } }