Exemple #1
0
 /**
  * Deletion of segment
  */
 public function delete()
 {
     AW_Advancednewsletter_Model_Sync_Mailchimpclient::$disableAutosync = true;
     $segmentCode = $this->getCode();
     parent::delete();
     Mage::getModel('advancednewsletter/subscriber')->getCollection()->removeSegment($segmentCode);
     Mage::dispatchEvent('an_segment_delete', array('segment_code' => $segmentCode));
 }
 public function testConnectionAction()
 {
     try {
         AW_Advancednewsletter_Model_Sync_Mailchimpclient::testConnection($this->getRequest()->getParams());
     } catch (Exception $e) {
         return $this->getResponse()->setBody($this->_helper()->__($e->getMessage()));
     }
     return $this->getResponse()->setBody($this->_helper()->__('Connection successfull'));
 }
Exemple #3
0
 public function removeSegment($observer)
 {
     if ($observer->getSegmentCode()) {
         try {
             foreach (Mage::app()->getStores() as $store) {
                 AW_Advancednewsletter_Model_Sync_Mailchimpclient::getInstance($store->getId())->removeSegment($observer->getSegmentCode());
             }
         } catch (Exception $ex) {
         }
     }
 }
 public static function getInstance($storeId)
 {
     $createNewInstance = true;
     if (self::$_instance) {
         if (self::$_instance->_client && self::$_instance->_clientStoreId == $storeId) {
             $createNewInstance = false;
         }
     }
     if ($createNewInstance) {
         $instance = new self();
         $instance->setKeys($storeId);
         try {
             $instance->_client = new Zend_XmlRpc_Client($instance->_connect());
         } catch (Exception $e) {
             throw new AW_Core_Exception(Mage::helper('advancednewsletter')->__('Couldn\'t connect to MailChimp'));
         }
         $instance->_clientStoreId = $storeId;
         self::$_instance = $instance;
     }
     return self::$_instance;
 }
 public function massUnsubscribeAction()
 {
     $segment = $this->getRequest()->getParam('segment');
     $customersIds = $this->getRequest()->getParam('customer');
     if (!is_array($customersIds)) {
         Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select customer(s)'));
     } else {
         try {
             AW_Advancednewsletter_Model_Sync_Mailchimpclient::$disableAutosync = true;
             foreach ($customersIds as $customerId) {
                 $customer = Mage::getModel('customer/customer')->load($customerId);
                 Mage::getModel('advancednewsletter/subscriber')->loadByEmail($customer->getEmail())->unsubscribe($segment);
             }
             Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Total of %d record(s) were successfully updated', count($customersIds)));
         } catch (Exception $e) {
             Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
         }
     }
     $this->_redirect('*/*/index');
 }
 public function saveAction()
 {
     $request = $this->getRequest();
     $template = Mage::getModel('advancednewsletter/template');
     if ($id = (int) $request->getParam('id')) {
         $template->load($id);
     }
     try {
         $template->addData($request->getParams())->setTemplateSubject($request->getParam('subject'))->setTemplateCode($request->getParam('code'))->setTemplateSenderEmail($request->getParam('sender_email'))->setTemplateSenderName($request->getParam('sender_name'))->setTemplateText($request->getParam('text'))->setTemplateStyles($request->getParam('styles'))->setModifiedAt(Mage::getSingleton('core/date')->gmtDate());
         if (!$template->getId()) {
             $template->setTemplateType(Mage_Newsletter_Model_Template::TYPE_HTML);
         }
         if ($this->getRequest()->getParam('_change_type_flag')) {
             $template->setTemplateType(Mage_Newsletter_Model_Template::TYPE_TEXT);
             $template->setTemplateStyles('');
         }
         /* Market Segmentation Suite compatibility */
         if ($request->getParam('mss_rule_id')) {
             $rule = Mage::getModel('marketsuite/filter')->load($request->getParam('mss_rule_id'));
             if ($rule->getId()) {
                 $newSegmentCode = 'MSS_' . str_replace(array(' ', ',', '<', '>'), array('_', '', '_less_', '_more_'), $rule->getName());
                 Mage::getModel('advancednewsletter/segment')->createNewSegment($newSegmentCode);
                 $template->setData('segments_codes', array($newSegmentCode));
                 foreach (Mage::getModel('marketsuite/api')->exportCustomers($rule->getId()) as $customer) {
                     AW_Advancednewsletter_Model_Sync_Mailchimpclient::$disableAutosync = true;
                     Mage::getModel('advancednewsletter/subscriber')->setCustomer(Mage::getModel('customer/customer')->load($customer->getId()))->subscribe($customer->getEmail(), array($newSegmentCode));
                 }
             }
         }
         if ($this->getRequest()->getParam('_save_as_flag')) {
             $template->setId(null);
         }
         $template->preprocess();
         $this->_redirect('*/*');
     } catch (Mage_Core_Exception $e) {
         $this->_getSession()->addError(nl2br($e->getMessage()));
         $this->_getSession()->setData('advancednewsletter_template_form_data', $this->getRequest()->getParams());
     } catch (Exception $e) {
         $this->_getSession()->addException($e, Mage::helper('adminhtml')->__('An error occurred while saving this template.'));
         $this->_getSession()->setData('advancednewsletter_template_form_data', $this->getRequest()->getParams());
     }
     $this->_forward('new');
 }
Exemple #7
0
 public function syncToMailchimp()
 {
     self::$_massSyncFlag = true;
     $syncToParams = Mage::getModel('advancednewsletter/cache')->loadCache('aw_advancednewsletter_mailchimp_to_params');
     if (!$syncToParams) {
         return;
     }
     $syncToParams = unserialize($syncToParams);
     if (!isset($syncToParams['sync_for']) || !isset($syncToParams['include_names']) || !isset($syncToParams['sync_stores'])) {
         return;
     }
     $syncFor = $syncToParams['sync_for'];
     $includeNames = $syncToParams['include_names'];
     $currentPage = Mage::getModel('advancednewsletter/cache')->loadCache('aw_advancednewsletter_mailchimp_to_page');
     if (!$currentPage) {
         $currentPage = 1;
     }
     $subscribersCollection = Mage::getModel('advancednewsletter/subscriber')->getCollection()->addStoreFilter($syncToParams['sync_stores']);
     if ($subscribersCollection->getSize() < ($currentPage - 1) * self::SYNC_TO_MAILCHIMP_PAGE_SIZE) {
         Mage::getModel('advancednewsletter/cache')->removeCache('aw_advancednewsletter_mailchimp_to_params');
         Mage::getModel('advancednewsletter/cache')->removeCache('aw_advancednewsletter_mailchimp_to_page');
         return;
     }
     $subscribers = $subscribersCollection->setPageSize(self::SYNC_TO_MAILCHIMP_PAGE_SIZE)->setCurPage($currentPage);
     switch ($syncFor) {
         case AW_Advancednewsletter_Block_Adminhtml_Synchronization::SYNC_SUBSCRIBED:
             $subscribers->addFilterSubscribed();
             break;
         case AW_Advancednewsletter_Block_Adminhtml_Synchronization::SYNC_UNSUBSCRIBED:
             $subscribers->addFilterUnsubscribed();
             break;
         default:
             $subscribers->addFilterSubscribedUnsubscribed();
             break;
     }
     $syncWithErrorsFlag = false;
     foreach ($subscribers as $subscriber) {
         try {
             if ($subscriber->getStatus() == AW_Advancednewsletter_Model_Subscriber::STATUS_SUBSCRIBED) {
                 AW_Advancednewsletter_Model_Sync_Mailchimpclient::getInstance($subscriber->getStoreId())->setSkipChangesCheck(true)->setIncludeNames($includeNames)->subscribe($subscriber);
             }
             if ($subscriber->getStatus() == AW_Advancednewsletter_Model_Subscriber::STATUS_UNSUBSCRIBED) {
                 AW_Advancednewsletter_Model_Sync_Mailchimpclient::getInstance($subscriber->getStoreId())->setSkipChangesCheck(true)->setIncludeNames($includeNames)->subscribe($subscriber)->unsubscribeFromList($subscriber);
             }
         } catch (Exception $ex) {
             $syncWithErrorsFlag = true;
         }
     }
     Mage::getModel('advancednewsletter/cache')->saveCache($currentPage + 1, 'aw_advancednewsletter_mailchimp_to_page');
     self::$_massSyncFlag = false;
 }
Exemple #8
0
 protected function _exportSubsPage($storeId, $type, $page, $pageSize, $includeNames)
 {
     if ($page === 'none') {
         return 'none';
     }
     $subscribers = $this->_getSubscibersPack($storeId, $type, $page, $pageSize);
     if (!count($subscribers)) {
         return 'none';
     }
     switch ($type) {
         case 'subscribed':
             $batch = $this->_getSubsBatch($subscribers, $includeNames, TRUE);
             AW_Advancednewsletter_Model_Sync_Mailchimpclient::getInstance($storeId)->batchSubscribe($batch);
             break;
         case 'unsubscribed':
             /*
              *   1) unsubscribe batch with 'delete_members' to delete old data
              *   2) subscribe batch to list to add new data
              *   3) unsubscribe this batch to change status
              */
             $batch = $this->_getSubsBatch($subscribers, $includeNames);
             $email = array();
             foreach ($batch as $subscriber) {
                 $email[] = $subscriber['EMAIL'];
             }
             AW_Advancednewsletter_Model_Sync_Mailchimpclient::getInstance($storeId)->batchUnsubscribe($email, TRUE);
             AW_Advancednewsletter_Model_Sync_Mailchimpclient::getInstance($storeId)->batchSubscribe($batch);
             AW_Advancednewsletter_Model_Sync_Mailchimpclient::getInstance($storeId)->batchUnsubscribe($email, FALSE);
             break;
         default:
             break;
     }
     return $page + 1;
 }