예제 #1
0
 }
 if ($http->hasPostVariable('RobinsonlistEntry_Mobile')) {
     if ($http->postVariable('RobinsonlistEntry_Mobile') != "") {
         $empty_input = false;
         if ($http->hasPostVariable('AddButton')) {
             if (!eZRobinsonListEntry::inList($http->postVariable('RobinsonlistEntry_Mobile'), eZRobinsonListEntry::MOBILE)) {
                 eZRobinsonListEntry::create($http->postVariable('RobinsonlistEntry_Mobile'), eZRobinsonListEntry::MOBILE, eZRobinsonListEntry::IMPORT_LOCAL);
                 $done = true;
             } else {
                 $warning = ezpI18n::tr('eznewsletter/robinson_user', 'Entered mobile phone number is already in the list.');
                 $done = true;
             }
         } else {
             if ($http->hasPostVariable('RemoveButton')) {
                 if (eZRobinsonListEntry::inList($http->postVariable('RobinsonlistEntry_Mobile'), eZRobinsonListEntry::MOBILE, eZRobinsonListEntry::IMPORT_LOCAL)) {
                     eZRobinsonListEntry::removeByValue($http->postVariable('RobinsonlistEntry_Mobile'), eZRobinsonListEntry::MOBILE, eZRobinsonListEntry::IMPORT_LOCAL);
                     $done = true;
                 } else {
                     $warning = ezpI18n::tr('eznewsletter/robinson_user', 'Entered mobile phone number is not in the list.');
                     $done = true;
                 }
             }
         }
     }
 }
 if (!$done && $warning == "") {
     $warning = ezpI18n::tr('eznewsletter/robinson_user', 'An error occured, no updates were made.');
 }
 if ($done && $warning == "") {
     $warning = ezpI18n::tr('eznewsletter/robinson_user', 'Updates complete.');
 }
            } else {
                $labelMap = array();
                foreach (array_keys($data) as $label) {
                    $mapName = 'LabelMap_' . $label;
                    if ($http->hasPostVariable($mapName)) {
                        if ($http->postVariable($mapName) != '0') {
                            $labelMap[$http->postVariable($mapName)] = $label;
                        }
                    }
                }
                if ($http->hasPostVariable('RowNum')) {
                    $subscriptionListID = $subscriptionList->attribute('id');
                    foreach ($http->postVariable('RowNum') as $rowIndex) {
                        if ($data[$labelMap['email']][$rowIndex] != "") {
                            if (!eZSubscription::fetchByEmailSubscriptionListID($data[$labelMap['email']][$rowIndex], $subscriptionListID)) {
                                if (!eZRobinsonListEntry::inList($data[$labelMap['email']][$rowIndex])) {
                                    $subscription = eZSubscription::create($subscriptionListID, $data[$labelMap['firstname']][$rowIndex], $data[$labelMap['name']][$rowIndex], $data[$labelMap['mobile']][$rowIndex], $data[$labelMap['email']][$rowIndex]);
                                    $subscription->setAttribute('status', eZSubscription::StatusApproved);
                                    $subscription->publish();
                                }
                            }
                        }
                    }
                }
                $http->removeSessionVariable('CSVData');
                return $Module->redirectToView('subscription_list', array($subscriptionList->attribute('url_alias')));
            }
        }
    }
}
$data = array();
 static function importData($data, $labels, $rows, $global, $type, $options)
 {
     if ($type == self::EMAIL) {
         $mapping = $labels['email'];
     } else {
         if ($type == self::MOBILE) {
             $mapping = $labels['mobile'];
         }
     }
     //add new entries
     if ($options == self::ADD) {
         foreach ($rows as $rowIndex) {
             //add new from new data
             $value = $data[$mapping][$rowIndex];
             //echo "Adding: ".$value." ".$type." ".$global."<br>";
             eZRobinsonListEntry::create($value, $type, $global);
         }
     } else {
         if ($options == self::SYNC) {
             $new_values = array();
             foreach ($rows as $rowIndex) {
                 $new_values = array_merge($new_values, $data[$mapping][$rowIndex]);
             }
             foreach ($new_values as $value) {
                 //add new from new data
                 //echo "Sync Adding: ".$value." ".$type." ".$global."<br>";
                 eZRobinsonListEntry::create($value, $type, $global);
             }
             //get all current data
             $old_values = eZRobinsonListEntry::fetchValues($type, $global);
             foreach ($old_values as $value) {
                 if (!in_array($value, $new_values)) {
                     //remove from database
                     //echo "Sync Removing: ".$value." ".$type." ".$global."<br>";
                     eZRobinsonListEntry::removeByValue($value, $type, $global);
                 }
             }
         }
     }
     //echo "<br>";
 }
예제 #4
0
 function addNumber($number)
 {
     if (!eZRobinsonListEntry::inList($number, eZRobinsonListEntry::MOBILE)) {
         $this->numbers[] = $this->numberClean($number);
     }
 }
예제 #5
0
         }
     }
 } else {
     $password = false;
     if ($subscriptionList->attribute('require_password')) {
         if ($http->postVariable('Password1') != 'password' && $http->postVariable('Password1') === $http->postVariable('Password2') && strlen(trim($http->postVariable('Password1'))) > 0) {
             $password = $http->postVariable('Password1');
         } else {
             $warning = ezi18n('eznewsletter/register_subscription', 'Passwords did not match.');
         }
     }
     $firstname = $http->postVariable('Firstname');
     $name = $http->postVariable('Name');
     $email = $http->postVariable('Email');
     $mobile = $http->postVariable('Mobile');
     if (!eZRobinsonListEntry::inList($http->postVariable('Email')) && !eZRobinsonListEntry::inList($http->postVariable('Mobile'))) {
         if (!$firstname) {
             $warning = ezi18n('eznewsletter/register_subscription', 'You must enter a first name.');
         }
         if (!$name) {
             $warning = ezi18n('eznewsletter/register_subscription', 'You must enter a last name.');
         }
         if (!eZMail::validate($email)) {
             $warning = ezi18n('eznewsletter/register_subscription', 'You must provide a valid email address.');
         }
         if (!$warning) {
             $subscription = $subscriptionList->registerSubscription($firstname, $name, $mobile, $email, $password);
             if (!$subscription) {
                 $warning = ezi18n('eznewsletter/register_subscription', 'You\'re already a registered subscriber');
             } else {
                 if ($http->hasPostVariable('OutputFormat')) {
    $parser = new eZCSVParser($binaryFile->attribute('filename'), $http->hasPostVariable('FirstRowLabel') ? true : false);
    $data = $parser->data();
    $http->setSessionVariable('CSVData', $data);
} else {
    if ($http->hasSessionVariable('CSVData')) {
        $data = $http->sessionVariable('CSVData');
    }
}
$tpl = eZNewsletterTemplateWrapper::templateInit();
$tpl->setVariable('data', $data);
if (isset($warning)) {
    $tpl->setVariable('warning', $warning);
}
$tpl->setVariable('global_map', eZRobinsonListEntry::globalNameMap());
$tpl->setVariable('type_map', eZRobinsonListEntry::typeNameMap());
$tpl->setVariable('import_map', eZRobinsonListEntry::importNameMap());
if ($http->hasPostVariable('import_list')) {
    $tpl->setVariable('import_list', $http->postVariable('import_list'));
}
if ($http->hasPostVariable('import_options')) {
    $tpl->setVariable('import_options', $http->postVariable('import_options'));
}
if ($http->hasPostVariable('import_datatype')) {
    $tpl->setVariable('import_datatype', $http->postVariable('import_datatype'));
}
if ($http->hasPostVariable('RowNum')) {
    $tpl->setVariable('RowNum', $http->postVariable('RowNum'));
}
$Result = array();
$Result['newsletter_menu'] = 'design:parts/content/robinson_menu.tpl';
$Result['left_menu'] = 'design:parts/content/eznewsletter_menu.tpl';
예제 #7
0
$limitList = array('1' => 10, '2' => 25, '3' => 50);
$limit = $limitList[(string) $limitKey];
$viewParameters = array('offset' => $offset);
if ($http->hasPostVariable('CreateRobinsonlistEntryButton')) {
    $robinsonlistEntry = eZRobinsonListEntry::create();
    return $Module->redirectToView('robinson_edit', array($robinsonlistEntry->attribute('id')));
}
$condArray = array();
if (!in_array(-1, $statusFilterArray)) {
    $condArray['global'] = array($statusFilterArray);
}
$robinsonlist_Email = eZRobinsonListEntry::fetchByOffset(eZRobinsonListEntry::EMAIL, $condArray, $offset, $limit);
$robinsonlist_Mobile = eZRobinsonListEntry::fetchByOffset(eZRobinsonListEntry::MOBILE, $condArray, $offset, $limit);
$tpl = eZNewsletterTemplateWrapper::templateInit();
$tpl->setVariable('view_parameters', $viewParameters);
$tpl->setVariable('statusFilter', $statusFilterArray);
$tpl->setVariable('limit', $limit);
$tpl->setVariable('robinsonlist_Email', $robinsonlist_Email);
$tpl->setVariable('robinsonlist_Mobile', $robinsonlist_Mobile);
$tpl->setVariable('status_map', eZRobinsonListEntry::globalNameMap());
$tpl->setVariable('type_map', eZRobinsonListEntry::typeNameMap());
$tpl->setVariable('robinsonlistCount_Email', eZRobinsonListEntry::countAll(eZRobinsonListEntry::EMAIL, $condArray));
$tpl->setVariable('robinsonlistCount_Mobile', eZRobinsonListEntry::countAll(eZRobinsonListEntry::MOBILE, $condArray));
if (isset($warning)) {
    $tpl->setVariable('warning', $warning);
}
$Result = array();
$Result['newsletter_menu'] = 'design:parts/content/robinson_menu.tpl';
$Result['left_menu'] = 'design:parts/content/eznewsletter_menu.tpl';
$Result['content'] = $tpl->fetch("design:eznewsletter/robinson_show.tpl");
$Result['path'] = array(array('url' => false, 'text' => ezpI18n::tr('eznewsletter/robinson_show', 'Opt-out list')));
예제 #8
0
 function buildSendList()
 {
     $mailsettings = eZINI::instance('bounce.ini');
     $bounceCountStop = $mailsettings->variable('BounceSettings', 'BounceCount') ? $mailsettings->variable('BounceSettings', 'BounceCount') : 2;
     $db = eZDB::instance();
     $db->begin();
     $sql = "SELECT email, SUM(bounce_count) FROM ezsubscription GROUP BY email HAVING SUM(bounce_count) >=" . $bounceCountStop;
     $bouncedRecipients = $db->arrayQuery($sql);
     $bounceEmails = array();
     foreach ($bouncedRecipients as $bounce) {
         if (!in_array($bounce['email'], $bounceEmails)) {
             $bounceEmails[] = $bounce['email'];
         }
     }
     $newsletterType = $this->attribute('newsletter_type');
     foreach ($newsletterType->attribute('subscription_list') as $newsletterSubscriptionLink) {
         $offset = 0;
         $subscriptionList = $newsletterSubscriptionLink->attribute('subscription_object');
         while ($subscriptionArray = $subscriptionList->fetchSubscriptionArray($offset, eZNewsletter::MaxSubscriptionFetchLimit, true, eZSubscription::VersionStatusPublished, array(array(eZSubscription::StatusApproved, eZSubscription::StatusConfirmed)))) {
             foreach ($subscriptionArray as $subscription) {
                 if (!eZRobinsonListEntry::inList($subscription->attribute('email'), eZRobinsonListEntry::EMAIL)) {
                     if (in_array($subscription->attribute('email'), $bounceEmails)) {
                         //This recipient is in the bounce register, we set mailing on hold
                         eZSendNewsletterItem::create($this->attribute('id'), $subscription->attribute('id'), eZSendNewsletterItem::SendStatusOnHold);
                     } else {
                         if (eZMail::validate($subscription->attribute('email'))) {
                             eZSendNewsletterItem::create($this->attribute('id'), $subscription->attribute('id'));
                             echo ".";
                         } else {
                             echo "Invalid email address: <" . $subscription->attribute('email') . ">" . "\n";
                         }
                     }
                 } else {
                     echo "Ignoring <" . $subscription->attribute('email') . "> (in robinsonlist)" . "\n";
                 }
             }
             $offset += eZNewsletter::MaxSubscriptionFetchLimit;
         }
     }
     $db->commit();
 }