static function removeAllBounceInformation($bounceID)
 {
     $bounceItem = eZBounce::fetch($bounceID);
     if (!$bounceItem) {
         return;
     }
     $sendItem = eZSendNewsletterItem::fetch($bounceItem->attribute('newslettersenditem_id'), true);
     if ($sendItem) {
         $subscription = eZSubscription::fetch($sendItem->attribute('subscription_id'));
         if ($subscription) {
             $subscription->setAttribute('bounce_count', 0);
             $subscription->store();
         }
         $sendItem->setAttribute('bounce_id', 0);
         $sendItem->store();
         $bounceItem->remove();
     } else {
         $bounceItem->remove();
     }
 }
function unsubscribe($address_string, $list_name)
{
    $subscription_list = eZSubscriptionList::fetch($list_name);
    eZMail::extractEmail($address_string, $email, $name);
    if ($email) {
        $subscription = eZSubscription::fetchByEmailSubscriptionListID($email, $subscription_list->attribute('id'));
        if ($subscription) {
            if ($subscription->attribute('status') == eZSubscription::StatusApproved) {
                $subscription->setAttribute('status', eZSubscription::StatusRemovedSelf);
                $subscription->sync();
                return $subscription;
            }
        }
    }
    return false;
}
include_once "lib/ezutils/classes/ezmailtransport.php";
include_once "lib/ezfile/classes/ezfile.php";
include_once eZExtension::baseDirectory() . '/eznewsletter/classes/ezsubscriptionlist.php';
include_once eZExtension::baseDirectory() . '/eznewsletter/classes/ezsubscription.php';
include_once eZExtension::baseDirectory() . '/eznewsletter/classes/eznewsletter.php';
$Module =& $Params['Module'];
$tpl = eZTemplate::instance();
$http = eZHTTPTool::instance();
$res = eZTemplateDesignResource::instance();
$res->setKeys(array(array('newsletter_view', 'register_subscription')));
$NewsletterItem = eZSendNewsletterItem::fetchByHash($Params['UserHash']);
if (!$NewsletterItem) {
    return $Module->handleError(3, 'kernel');
}
$sub = $NewsletterItem->userData();
$subscription = eZSubscription::fetch($NewsletterItem->attribute('subscription_id'));
$tpl->setVariable('NewsletterItem', $NewsletterItem);
$tpl->setVariable('UserHash', $Params['UserHash']);
$tpl->setVariable('subscriptions', $subscription);
if ($http->hasPostVariable('OKButton')) {
    $subscription->unsubscribe();
    $siteini = eZINI::instance();
    $sender = $siteini->variable('MailSettings', 'EmailSender');
    $mail = new eZMail();
    $mail->setReceiver($sub['email']);
    $mail->setSender($sender);
    $mail->setSubject(ezpI18n::tr('newsletteraddons', "Your subscription removal"));
    $hostName = eZSys::hostname();
    $mailtpl = eZTemplate::instance();
    $mailtpl->setVariable('hostname', $hostName);
    $mailtpl->setVariable('siteaccess', $GLOBALS['eZCurrentAccess']['name']);
function handleBounce($type, $id, $bounceType)
{
    $previousBounce = eZBounce::fetchObject(eZBounce::definition(), null, array('newslettersenditem_id' => $id, 'bounce_type' => $bounceType), true);
    if ($previousBounce) {
        //Update the bounce count for this mailling
        $previousCount = $previousBounce->attribute('bounce_count');
        $previousBounce->setAttribute('bounce_count', ++$previousCount);
        $previousBounce->setAttribute('bounce_message', $type['bounce_message']);
        $previousBounce->store();
        $sendItem = eZSendNewsletterItem::fetch($id, true);
        if ($sendItem) {
            if ($bounceType == EZSOFTBOUNCE && $previousCount < $bounceCountStop) {
                $sendItem->setAttribute('send_status', eZSendNewsletterItem::SendStatusNone);
                $sendItem->store();
            }
            $subscriptionObject = eZSubscription::fetch($sendItem->attribute('subscription_id'));
            if ($subscriptionObject) {
                $bounce_count = $subscriptionObject->attribute('bounce_count');
                $subscriptionObject->setAttribute('bounce_count', ++$bounce_count);
                $subscriptionObject->store();
            }
        }
    } else {
        //We create a new bounce entry
        $db = eZDB::instance();
        $db->begin();
        $bounceData = new eZBounce(array());
        $bounceData->store();
        $bounceData->setAttribute('address', $type['address']);
        $bounceData->setAttribute('bounce_type', $bounceType);
        $bounceData->setAttribute('bounce_count', 1);
        $bounceData->setAttribute('bounce_arrived', $type['bounce_arrived']);
        $bounceData->setAttribute('newslettersenditem_id', $id);
        $bounceData->setAttribute('bounce_message', $type['bounce_message']);
        $bounceData->store();
        $db->commit();
        //Update the sendnewsletteritem table with reference to this bounce entry
        $sendItem = eZSendNewsletterItem::fetch($id, true);
        if ($sendItem) {
            $current_bounceID = $sendItem->attribute('bounce_id');
            if ($current_bounceID == 0) {
                $sendItem->setAttribute('bounce_id', $bounceData->attribute('id'));
                $sendItem->store();
            } else {
                eZDebug::writeNotice("Bounce ID already in place", 'check_bounce');
            }
            if ($bounceType == EZSOFTBOUNCE) {
                $sendItem->setAttribute('send_status', eZSendNewsletterItem::SendStatusNone);
                $sendItem->store();
            }
            //Set the bounce count for the matching subscription_id directly in the subscription table
            $subscription_id = $sendItem->attribute('subscription_id');
            $subscriptionObject = eZSubscription::fetch($subscription_id);
            if ($subscriptionObject) {
                $bounce_count = $subscriptionObject->attribute('bounce_count');
                $subscriptionObject->setAttribute('bounce_count', ++$bounce_count);
                $subscriptionObject->store();
            }
        }
    }
}
                $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();
if (eZHTTPFile::canFetch('UploadCSVFile')) {
 function subscriptionCount()
 {
     $count = eZSubscription::count($this->attribute('id'));
     return $count;
 }
 function subscriptionList()
 {
     return eZSubscription::fetchListByEmail($this->attribute('email'));
 }
// This source file is part of the eZ publish (tm) Open Source Content
// Management System.
//
// ## END COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
//
/*! \file edit_subscription.php
*/
$Module = $Params['Module'];
$http = eZHTTPTool::instance();
if ($http->hasPostVariable('RemoveSubscriptionButton')) {
    if (is_array($http->postVariable('SubscriptionIDArray'))) {
        foreach ($http->postVariable('SubscriptionIDArray') as $subscriptionID) {
            $userData = eZUserSubscriptionData::fetchById($subscriptionID);
            $subscriptionList = eZSubscription::fetchListByEmail($userData->attribute('email'), eZSubscription::VersionStatusPublished, array(array(eZSubscription::StatusPending, eZSubscription::StatusApproved, eZSubscription::StatusConfirmed, eZSubscription::StatusRemovedSelf, eZSubscription::StatusRemovedAdmin)));
            foreach ($subscriptionList as $subscription) {
                eZSubscription::removeAll($subscription->Attribute('id'));
            }
            eZUserSubscriptionData::removeAll($subscriptionID);
        }
    }
}
if ($http->hasPostVariable('searchString') && trim($http->postVariable('searchString')) != "") {
    $search = trim(strtolower($http->postVariable('searchString')));
    $db = eZDB::instance();
    $searchSQL = "SELECT email FROM ezsubscriptionuserdata WHERE LOWER(firstname) LIKE '%" . $db->escapeString($search) . "%' or LOWER(name) LIKE '%" . $db->escapeString($search) . "%' or LOWER(email) LIKE '%" . $db->escapeString($search) . "%' group by email LIMIT 50";
    $searchResult = $db->arrayQuery($searchSQL);
    $subscriberList = array();
    foreach ($searchResult as $email) {
        $subscriberList[] = eZUserSubscriptionData::fetch($email['email']);
    }
    $countSQL = "SELECT id FROM ezsubscriptionuserdata WHERE LOWER(firstname) LIKE '%" . $db->escapeString($search) . "%' or LOWER(name) LIKE '%" . $db->escapeString($search) . "%' or LOWER(email) LIKE '%" . $db->escapeString($search) . "%' group by email";
//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//   GNU General Public License for more details.
//
//   You should have received a copy of version 2.0 of the GNU General
//   Public License along with this program; if not, write to the Free
//   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
//   MA 02110-1301, USA.
//
//
// ## END COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
//
/*! \file subscription_activate.php
*/
$Module = $Params['Module'];
$http = eZHTTPTool::instance();
$subscription = eZSubscription::fetchByHash($Params['Hash']);
if (!$subscription) {
    return $Module->handleError(eZError::KERNEL_NOT_AVAILABLE, 'kernel');
}
$subscriptionList = $subscription->attribute('subscription_list');
$res = eZTemplateDesignResource::instance();
$res->setKeys(array(array('newsletter_view', 'subscription_activate')));
$subscription->setAttribute('status', eZSubscription::StatusConfirmed);
if ($subscriptionList->attribute('auto_approve_registered')) {
    $subscription->setAttribute('status', eZSubscription::StatusApproved);
}
$subscription->store();
$tpl = eZNewsletterTemplateWrapper::templateInit();
$tpl->setVariable('subscription', $subscription);
$Result = array();
$Result['content'] = $tpl->fetch("design:eznewsletter/subscription_activate.tpl");
 function objectAttributeContent($contentObjectAttribute)
 {
     newsletterlistType::storeSession($contentObjectAttribute);
     $return = array();
     $lists = eZSubscriptionList::fetchList();
     $userID = $contentObjectAttribute->attribute('contentobject_id');
     $selection = unserialize($contentObjectAttribute->attribute("data_text"));
     $subscriptions = eZPersistentObject::fetchObjectList(eZSubscription::definition(), null, array('user_id' => $userID, 'version_status' => eZSubscription::VersionStatusPublished), true);
     foreach ($lists as $list) {
         $attribute_filter = array(array('newsletter_group/newsletter_id', '=', $list->attribute('url')));
         $treeParameters = array('OnlyTranslated' => true, 'AttributeFilter' => $attribute_filter, 'ClassFilterType' => 'include', 'ClassFilterArray' => array('newsletter_group'), 'IgnoreVisibility' => false, 'MainNodeOnly' => true);
         $listitem = array();
         $listitem['list'] = $list;
         if (in_array($list->attribute('id'), $selection['register'])) {
             $listitem['selected'] = true;
         } elseif (in_array($list->attribute('id'), $selection['unregister'])) {
             $listitem['selected'] = false;
         }
         $nodesList = eZContentObjectTreeNode::fetch(2)->subTree($treeParameters);
         foreach ($subscriptions as $subscription) {
             $listitem['disabled'] = false;
             if ($subscription->attribute('subscriptionlist_id') == $list->attribute('id')) {
                 $listitem['subscription'] = $subscription;
                 if ($listitem['subscription']->attribute('status') == eZSubscription::StatusPending or $listitem['subscription']->attribute('status') == eZSubscription::StatusConfirmed or $listitem['subscription']->attribute('status') == eZSubscription::StatusRemovedAdmin) {
                     $listitem['disabled'] = true;
                 }
                 if (!array_key_exists('selected', $listitem)) {
                     if ($listitem['subscription']->attribute('status') == eZSubscription::StatusApproved) {
                         $listitem['selected'] = true;
                     } else {
                         $listitem['selected'] = false;
                     }
                 }
                 break;
             }
         }
         if (isset($nodesList[0]) and is_object($nodesList[0])) {
             $listitem['node'] = $nodesList[0];
         }
         if (count($listitem) > 0) {
             $return['list'][] = $listitem;
         }
         unset($listitem);
     }
     if ($selection['show_newsletter_tab']) {
         $return['show_newsletter_tab'] = true;
     } else {
         $return['show_newsletter_tab'] = false;
     }
     return $return;
 }
//   MA 02110-1301, USA.
//
// This source file is part of the eZ publish (tm) Open Source Content
// Management System.
//
// ## END COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
//
/*! \file edit_subscription.php
*/
$Module = $Params['Module'];
$http = eZHTTPTool::instance();
$warnings = array();
$subscriptionID = $Params['SubscriptionID'];
$subscription = eZSubscription::fetchDraft($subscriptionID);
if (!$subscription) {
    $subscription = eZSubscription::create();
}
if (!$subscription) {
    return $Module->handleError(eZError::KERNEL_NOT_AVAILABLE, 'kernel');
}
if ($http->hasPostVariable('StoreButton') || $http->hasPostVariable('ProfileButton') || $http->hasPostVariable('BrowseUserButton') || $http->hasPostVariable('UnsetUserButton')) {
    if (!eZRobinsonListEntry::inList($http->postVariable('Email')) && !eZRobinsonListEntry::inList($http->postVariable('Mobile'))) {
        if (!eZMail::validate($http->postVariable('Email'))) {
            $warnings[] = ezpI18n::tr('eznewsletter/newsletter/edit_subscription', 'You must provide a valid email address.');
        } else {
            $subscription->setAttribute('email', $http->postVariable('Email'));
        }
        $subscription->setAttribute('firstname', $http->postVariable('Firstname'));
        $subscription->setAttribute('name', $http->postVariable('Name'));
        $subscription->setAttribute('mobile', $http->postVariable('Mobile'));
        $subscription->setAttribute('status', $http->postVariable('Status'));
 function &userData()
 {
     $retVal = false;
     $subscription = eZSubscription::fetch($this->attribute('subscription_id'));
     if ($subscription) {
         $userSubscription = eZUserSubscriptionData::fetch($subscription->attribute('email'));
         if (!$userSubscription) {
             eZDebug::writeError("User subscription not found for: " . $subscription->attribute('email'), 'eZSendNewsletterItem::userData');
             return false;
         } else {
             $generic_hash = $userSubscription->attribute('hash');
             $retVal = array('firstname' => $subscription->attribute('firstname'), 'name' => $subscription->attribute('name'), 'email' => $subscription->attribute('email'), 'mobile' => $subscription->attribute('mobile'), 'output_format' => $subscription->attribute('output_format'), 'userhash' => $this->attribute('hash'), 'generic_userhash' => $generic_hash);
         }
     }
     return $retVal;
 }
if (!$subscriptionList->siteaccessAllowed()) {
    return $Module->handleError(eZError::KERNEL_ACCESS_DENIED, 'kernel');
}
$user = false;
$currentUser = eZUser::currentUser();
if ($currentUser->isLoggedIn()) {
    $user = $currentUser;
}
$warning = false;
$success = false;
$firstname = '';
$name = '';
$email = '';
if ($http->hasPostVariable('StoreButton')) {
    if ($user) {
        $subscription = eZSubscription::fetchByUserSubscriptionListID($user->attribute('contentobject_id'), $subscriptionList->attribute('id'));
        if (is_object($subscription) and $subscription->attribute('status') != eZSubscription::StatusRemovedSelf) {
            $warning = ezpI18n::tr('eznewsletter/register_subscription', 'Nous avons déjà pris en compte votre inscription à notre newsletter. Nous vous en remercions.');
            $success = true;
            //$warning = ezpI18n::tr( 'eznewsletter/register_subscription', 'Nous avons déjà pris en compte votre inscription à notre newsletter. Nous vous en remercions' );
        } elseif (is_object($subscription) and $subscription->attribute('status') == eZSubscription::StatusRemovedSelf) {
            $subscription->setAttribute('status', eZSubscription::StatusApproved);
            $subscription->store();
            $warning = ezpI18n::tr('eznewsletter/register_subscription', 'You have renewed your subscription.');
        } else {
            $subscription = $subscriptionList->registerUser($user->attribute('contentobject_id'));
        }
    } 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) {
 static function fetchListBySubscriptionListID($subscriptionListID, $condArray = array(), $offset = 0, $limit = 10, $asObject = true)
 {
     return eZPersistentObject::fetchObjectList(eZSubscription::definition(), null, array_merge(array('version_status' => eZSubscription::VersionStatusPublished, 'subscriptionlist_id' => $subscriptionListID), $condArray), null, array('limit' => $limit, 'offset' => $offset), $asObject);
 }
//get new data
//all subscriptions
$found = false;
$additionalLists = array();
$allSubscriptionList = eZSubscriptionList::fetchList(0, 100);
foreach ($allSubscriptionList as $addList) {
    foreach ($subscriptionList as $userList) {
        if ($addList->attribute('id') === $userList->attribute('subscriptionlist_id')) {
            $found = true;
        }
    }
    if (!$found) {
        $additionalLists[] = $addList;
    }
    $found = false;
}
//$tpl = templateInit();
//$tpl->setVariable( 'user', $user );
if (isset($warning)) {
    $tpl->setVariable('warning', $warning);
}
$tpl->setVariable('hash', $Params['hash']);
$tpl->setVariable('userData', $userData);
$tpl->setVariable('allowedStatusList', $allowedStatusList);
$tpl->setVariable('statusNameMap', eZSubscription::statusNameMap());
$tpl->setVariable('subscriptionList', $subscriptionList);
$tpl->setVariable('additionalLists', $additionalLists);
$Result = array();
$Result['left_menu'] = 'design:parts/content/eznewsletter_menu.tpl';
$Result['content'] = $tpl->fetch("design:eznewsletter/user_modify.tpl");
$Result['path'] = array(array('url' => false, 'text' => ezpI18n::tr('eznewsletter/modify_subscription', 'Activate subscription')));
    }
    if (!$warning) {
        $tpl = eZNewsletterTemplateWrapper::templateInit();
        $tpl->setVariable('subscriptionList', $subscriptionList);
        $subscription->sendConfirmation();
        $Result = array();
        $Result['content'] = $tpl->fetch("design:eznewsletter/register_subscription_info.tpl");
        $Result['path'] = array(array('url' => false, 'text' => ezi18n('eznewsletter/register_subscription', 'Register subscription')));
        return;
    }
} else {
    if ($http->hasPostVariable('CancelButton')) {
        $ini = eZINI::instance();
        return $Module->redirectTo($ini->variable('SiteSettings', 'DefaultPage'));
    }
}
$tpl = eZNewsletterTemplateWrapper::templateInit();
if ($user) {
    $tpl->setVariable('user', $user);
}
$tpl->setVariable('firstname', $firstname);
$tpl->setVariable('name', $name);
$tpl->setVariable('email', $email);
$tpl->setVariable('subscriptionList', $subscriptionList);
$tpl->setVariable('output_map', eZSubscription::outputFormatNameMap());
if (isset($warning)) {
    $tpl->setVariable('warning', $warning);
}
$Result = array();
$Result['content'] = $tpl->fetch("design:eznewsletter/register_subscription.tpl");
$Result['path'] = array(array('url' => false, 'text' => ezi18n('eznewsletter/register_subscription', 'Register subscription')));
 function subscriptionByID($id)
 {
     return array('result' => eZSubscription::fetch($id));
 }
$condArray = array();
if ( !in_array( -1, $statusFilter ) )
{
    $condArray['status'] = array( $statusFilter );
}
//if ( !in_array( -1, $vipFilter ) )
//{
//    $condArray['vip'] = array( $vipFilter );
//}
*/
$condArray = array();
if (!in_array(-1, $statusFilterArray)) {
    $condArray['status'] = array($statusFilterArray);
}
$subscriberList = eZSubscription::fetchListBySubscriptionListID($subscriptionList->attribute('id'), $condArray, $offset, $limit);
//$viewParameters['statusFilter'] = $userParameters['statusFilter'];
$tpl = eZNewsletterTemplateWrapper::templateInit();
$tpl->setVariable('view_parameters', $viewParameters);
$tpl->setVariable('statusFilter', $statusFilterArray);
$tpl->setVariable('limit', $limit);
$tpl->setVariable('subscriptionList', $subscriptionList);
$tpl->setVariable('subscriberList', $subscriberList);
//$tpl->setVariable( 'vip_map', eZSubscription::vipNameMap() );
$tpl->setVariable('status_map', eZSubscription::statusNameMap());
$tpl->setVariable('loginSteps_map', eZSubscriptionList::loginStepsNameMap());
$tpl->setVariable('subscriptionCount', eZSubscription::count($subscriptionList->attribute('id'), eZSubscription::VersionStatusPublished, $condArray));
$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/subscription_list.tpl");
$Result['path'] = array(array('url' => false, 'text' => ezpI18n::tr('eznewsletter/subscription_list', 'Subscription list')));