Exemple #1
0
 /**
  * Send Customer Data
  * 
  * @param   array $mailupCustomerIds
  * @param   array
  * @param   int
  * @return  int|FALSE ReturnCode
  */
 public static function generateAndSendCustomers($mailupCustomerIds, $post = null, $storeId = NULL)
 {
     $config = Mage::getModel('mailup/config');
     /* @var $config MailUp_MailUpSync_Model_Config */
     $wsSend = new MailUpWsSend($storeId);
     require_once dirname(__FILE__) . "/../Model/MailUpWsImport.php";
     $wsImport = new MailUpWsImport($storeId);
     $accessKey = $wsSend->loginFromId();
     if (empty($mailupCustomerIds)) {
         if ($config->isLogEnabled($storeId)) {
             $config->log('generateAndSendCustomers [Empty Customer ID Array]');
         }
         return false;
     }
     $jobId = $post['id'];
     $jobModel = Mage::getModel('mailup/job')->load($post['id']);
     /* @var $jobModel MailUp_MailUpSync_Model_Job */
     if ($accessKey === false) {
         Mage::throwException('no access key returned');
     }
     $fields_mapping = $wsImport->getFieldsMapping($storeId);
     // Pass StoreId
     if (count($fields_mapping) == 0) {
         if ($config->isLogEnabled($storeId)) {
             $config->log('No mappings set, so cannot sync customers');
         }
         return false;
     }
     // Define the group we're adding customers to
     $groupId = $post['mailupGroupId'];
     $listGUID = $post['mailupListGUID'];
     $idList = $post['mailupIdList'];
     /**
      * Create a new Mailup Group.
      */
     if ($post['mailupNewGroup'] == 1) {
         $newGroup = array("idList" => $idList, "listGUID" => $listGUID, "newGroupName" => $post['mailupNewGroupName']);
         $groupId = $wsImport->CreaGruppo($newGroup);
     }
     // If message_id set, then pass this to define which message is sent to customers
     if (isset($post['message_id']) && $post['message_id'] !== null) {
         $idConfirmNL = $post['message_id'];
     } else {
         // Default to 0 (ignored)
         $idConfirmNL = 0;
     }
     $importProcessData = array("idList" => $idList, "listGUID" => $listGUID, "idGroup" => $groupId, "xmlDoc" => "", "idGroups" => $groupId, "importType" => self::IMPORT_TYPE_REPLACE_EMPTY_ONLY_EMAIL, "mobileInputType" => self::MOBILE_INPUT_TYPE_SPLIT_INTL_CODE, "asPending" => $jobModel->getAsPending() ? 1 : 0, "ConfirmEmail" => $jobModel->getSendOptin() ? 1 : 0, "asOptOut" => 0, "forceOptIn" => 0, "replaceGroups" => 0, "idConfirmNL" => $idConfirmNL);
     $xmlData = '';
     $subscribers_counter = 0;
     $totalCustomers = sizeof($mailupCustomerIds);
     foreach ($mailupCustomerIds as $customerId) {
         $subscribers_counter++;
         $xmlCurrentCust = self::_getCustomerXml($customerId, $fields_mapping, $storeId);
         if ($xmlCurrentCust !== false) {
             $xmlData .= $xmlCurrentCust;
         }
     }
     /**
      * We have Valid Data to send
      */
     if (strlen($xmlData) > 0) {
         $importProcessData["xmlDoc"] = "<subscribers>{$xmlData}</subscribers>";
         $xmlData = "";
         $subscribers_counter = 0;
         if ($config->isLogEnabled($storeId)) {
             Mage::log('ImportProcessData');
             Mage::log($importProcessData, 0);
         }
         $processID = $wsImport->newImportProcess($importProcessData);
         /**
          * Failure
          */
         if ($processID === FALSE || $processID < 0) {
             if ($config->isLogEnabled($storeId)) {
                 $config->dbLog(sprintf('newImportProcess [ERROR] [%d]', $processID), $jobId, $storeId);
             }
             return $processID;
         } else {
             $config->dbLog(sprintf("newImportProcess [SUCCESS] [ProcessID: %d]", $processID), $jobId, $storeId);
             $jobModel->setProcessId($processID);
         }
     }
     /**
      * Build Data for StartImportProcesses
      */
     $startImportProcessesData = array('listsIDs' => $post['mailupIdList'], 'listsGUIDs' => $post['mailupListGUID'], 'groupsIDs' => $groupId, "idList" => $idList, "importType" => self::IMPORT_TYPE_REPLACE_EMPTY_ONLY_EMAIL, "mobileInputType" => self::MOBILE_INPUT_TYPE_SPLIT_INTL_CODE, "asPending" => $jobModel->getAsPending() ? 1 : 0, "ConfirmEmail" => $jobModel->getSendOptin() ? 1 : 0, "asOptOut" => 0, "forceOptIn" => 0, "replaceGroups" => 0, "idConfirmNL" => $idConfirmNL);
     if ($config->isLogEnabled($storeId)) {
         $config->log("mailup: StartImportProcesses (STORE: {$storeId})", $storeId);
         $config->log($startImportProcessesData);
     }
     $startProcessesReturnCode = $wsImport->StartImportProcesses($startImportProcessesData);
     /**
      * Save the Job Model, and update the tries as we've just tried to Start the Process
      */
     $jobModel->incrementTries();
     try {
         $jobModel->save();
     } catch (Exception $e) {
         Mage::log($e->getMessage());
     }
     if ($config->isLogEnabled($storeId)) {
         if ($startProcessesReturnCode < 0) {
             $config->dbLog(sprintf("StartImportProcesses [ReturnCode] [ERROR] [%d]", $startProcessesReturnCode), $jobId, $storeId);
         } else {
             $config->dbLog(sprintf("StartImportProcesses [ReturnCode] [SUCCESS] [%d]", $startProcessesReturnCode), $jobId, $storeId);
         }
     }
     return (int) $startProcessesReturnCode;
 }
Exemple #2
0
 /**
  * Config Check
  * 
  * @return type
  */
 public function configCheck()
 {
     $url_console = Mage::getStoreConfig('mailup_newsletter/mailup/url_console');
     $user = Mage::getStoreConfig('mailup_newsletter/mailup/username_ws');
     $password = Mage::getStoreConfig('mailup_newsletter/mailup/password_ws');
     $list = Mage::getStoreConfig('mailup_newsletter/mailup/list');
     if (!strlen($url_console) or !strlen($user) or !strlen($password) or !strlen($list)) {
         $url = Mage::getModel('adminhtml/url');
         $url = $url->getUrl("mailup/adminhtml_configuration");
         $message = Mage::helper("mailup")->__('MailUp configuration is not complete');
         $message = str_replace("href=''", "href='{$url}'", $message);
         Mage::getSingleton('adminhtml/session')->addWarning($message);
         return;
     }
     $wsimport = new MailUpWsImport();
     $mapping = $wsimport->getFieldsMapping();
     if (empty($mapping)) {
         $url = Mage::getModel('adminhtml/url');
         $url = $url->getUrl("mailup/adminhtml_configuration");
         $message = Mage::helper("mailup")->__('MailUp fields mapping is not complete');
         $message = str_replace("href=''", "href='{$url}'", $message);
         Mage::getSingleton('adminhtml/session')->addWarning($message);
         return;
     }
 }