/** * Checking subscribers data and getting 'merges' array for Mailchimp sync (names, segments_codes) * @param <type> $subscriber * @return <type> */ protected function checkAndGetMerges($subscriber) { $merges = array(); if (!$this->getSkipChangesCheck()) { $namesChanged = $segmentsChanged = $storeChanged = $emailChanged = false; if ($subscriber->getOrigData('store_id') != $subscriber->getData('store_id')) { $storeChanged = true; } if ($subscriber->getOrigData('email') != $subscriber->getData('email')) { $emailChanged = true; } if ($subscriber->getOrigData('first_name') != $subscriber->getData('first_name') || $subscriber->getOrigData('last_name') != $subscriber->getData('last_name')) { $namesChanged = true; } $subscriberOldSegments = implode(',', $subscriber->getOrigData('segments_codes')); $subscriberCurrentSegments = implode(',', $subscriber->getData('segments_codes')); if ($subscriberOldSegments != $subscriberCurrentSegments) { $segmentsChanged = true; } if ($subscriber->getIsNew()) { $storeChanged = $emailChanged = false; $namesChanged = $segmentsChanged = true; } /* * If subscriber store id changed, we remove it from his previous list and set * $namesChanged and $segmentsChanged to true to upload this params to this customer * in the new list */ if ($storeChanged || $emailChanged) { $this->deleteOptional($subscriber->getOrigData('email'), $subscriber->getOrigData('store_id')); $namesChanged = $segmentsChanged = true; } if ($segmentsChanged) { $merges['INTERESTS'] = $subscriberCurrentSegments; } if ($namesChanged) { $merges['FNAME'] = $subscriber->getData('first_name'); $merges['LNAME'] = $subscriber->getData('last_name'); } } else { $merges['INTERESTS'] = $subscriber->getData('segments_codes'); if ($this->getIncludeNames()) { $merges['FNAME'] = $subscriber->getData('first_name'); $merges['LNAME'] = $subscriber->getData('last_name'); } } return $merges; }
/** * Call registerMail and check if it is a customer or guest * @param <type> $subscriber */ public function callRegisterMailForSubscriber($subscriber) { if ($subscriber->getData('customer_id') > 0) { $customer = Mage::getModel('customer/customer')->load($subscriber->getData('customer_id')); $addressId = $customer->getData('default_shipping'); $address = Mage::getModel('customer/address')->load($addressId); Mage::helper('rapidmail')->registerMail($subscriber->getEmail(), $customer->getFirstname(), $customer->getLastname(), Mage::helper('rapidmail')->convertGender($customer->getGender()), $address->getPostcode(), Mage::helper('rapidmail')->convertDob($customer->getData('dob'))); } else { Mage::helper('rapidmail')->registerMail($subscriber->getEmail(), ''); } }