/** * 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; }
/** * 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; } }