/**
  * Create new CjwNewsletterSubscription object
  *
  * @param integer $listContentObjectId
  * @param integer $newsletterUserId
  * @param array $outputFormatArray
  * @param unknown_type $status
  * @return object
  */
 static function create($listContentObjectId, $newsletterUserId, $outputFormatArray, $status = self::STATUS_PENDING, $context = 'default')
 {
     $rows = array('created' => time(), 'list_contentobject_id' => $listContentObjectId, 'newsletter_user_id' => $newsletterUserId, 'output_format_array_string' => self::arrayToString($outputFormatArray), 'creator_contentobject_id' => eZUser::currentUserID(), 'hash' => CjwNewsletterUtils::generateUniqueMd5Hash($newsletterUserId), 'remote_id' => 'cjwnl:' . $context . ':' . CjwNewsletterUtils::generateUniqueMd5Hash($newsletterUserId), 'status' => 0);
     $object = new CjwNewsletterSubscription($rows);
     // set status again so automatic status change is working
     $object->setAttribute('status', $status);
     return $object;
 }
 /**
  * @return void
  */
 static function definition()
 {
     $listDefinition = parent::definition();
     // set Classname for Virtual List
     $listDefinition['class_name'] = 'CjwNewsletterSubscriptionVirtual';
     return $listDefinition;
 }
 /**
  * Replaces markers in newsletter content
  * @param string $content
  * @param CjwNewsletterEditionSend $newsletterEditionSend
  * @param CjwNewsletterUser $newsletterUser
  * @return string
  */
 static function replaceNewsletterMarkers($content, CjwNewsletterEditionSend $newsletterEditionSend, CjwNewsletterUser $newsletterUser = null)
 {
     // TODO parse extra variables
     $editionSendHash = $newsletterEditionSend->attribute('hash');
     $searchArray = array('#_hash_editionsend_#');
     $replaceArray = array($editionSendHash);
     if ($newsletterUser) {
         $subscription = CjwNewsletterSubscription::fetchByListIdAndNewsletterUserId($newsletterEditionSend->attribute('list_contentobject_id'), $newsletterUser->attribute('id'));
         $newsletterUnsubscribeHash = $subscription->attribute('hash');
         $newsletterConfigureHash = $newsletterUser->attribute('hash');
         $personalizeContent = (int) $newsletterEditionSend->attribute('personalize_content');
         $searchArray = array_merge($searchArray, array('#_hash_unsubscribe_#', '#_hash_configure_#'));
         $replaceArray = array_merge($replaceArray, array($newsletterUnsubscribeHash, $newsletterConfigureHash));
         if ($personalizeContent === 1) {
             $searchArray = array_merge($searchArray, array('[[name]]', '[[salutation_name]]', '[[first_name]]', '[[last_name]]'));
             $replaceArray = array_merge($replaceArray, array($newsletterUser->attribute('name'), $newsletterUser->attribute('salutation_name'), $newsletterUser->attribute('first_name'), $newsletterUser->attribute('last_name')));
         }
     }
     return str_replace($searchArray, $replaceArray, $content);
 }
 function modify($tpl, $operatorName, $operatorParameters, $rootNamespace, $currentNamespace, &$operatorValue, $namedParameters)
 {
     switch ($operatorName) {
         case 'cjw_newsletter_preg_replace':
             $operatorValue = preg_replace($namedParameters['string_search'], $namedParameters['string_replace'], $operatorValue);
             break;
         case 'cjw_newsletter_str_replace':
             $operatorValue = str_replace($namedParameters['string_search'], $namedParameters['string_replace'], $operatorValue);
             break;
         case 'cjw_newsletter_variable':
             $returnValue = false;
             // {cjw_newsletter_variable( $namedParameters['variable_name'] )}
             switch ($namedParameters['variable_name']) {
                 // {cjw_newsletter_variable( 'available_subscription_status_id_name_array' )}
                 case 'available_subscription_status_id_name_array':
                     $returnValue = CjwNewsletterSubscription::availableStatusIdNameArray();
                     break;
             }
             $operatorValue = $returnValue;
             break;
     }
 }
 *
 * @copyright Copyright (C) 2007-2010 CJW Network - Coolscreen.de, JAC Systeme GmbH, Webmanufaktur. All rights reserved.
 * @license http://ez.no/licenses/gnu_gpl GNU GPL v2
 * @version //autogentag//
 * @package cjw_newsletter
 * @subpackage modules
 * @filesource
 */
require_once 'kernel/common/i18n.php';
include_once 'kernel/common/template.php';
$module = $Params['Module'];
$http = eZHTTPTool::instance();
$tpl = templateInit();
$templateFile = 'design:newsletter/subscription_view.tpl';
$subscriptionId = (int) $Params['SubscriptionId'];
$subscriptionObject = CjwNewsletterSubscription::fetch($subscriptionId);
if (!is_object($subscriptionObject)) {
    return $module->handleError(eZError::KERNEL_NOT_AVAILABLE, 'kernel');
}
$message = '';
if ($http->hasVariable('SubscriptionApproveButton')) {
    $subscriptionObject->approveByAdmin();
    $message = ezi18n('cjw_newsletter/subscription_view', 'Subscription successfully approved!');
}
if ($http->hasVariable('SubscriptionRemoveButton')) {
    $subscriptionObject->removeByAdmin();
    $message = ezi18n('cjw_newsletter/subscription_view', 'Subscription successfully removed!');
}
$viewParameters = array();
if (is_array($Params['UserParameters'])) {
    $viewParameters = array_merge($viewParameters, $Params['UserParameters']);
예제 #6
0
 /**
  * fetch all active subscriptions with current import id
  * and set status to remove by admin
  * @return array subscriptions => nl_user_id
  */
 public function removeActiveSubscriptionsByAdmin()
 {
     $count = CjwNewsletterSubscription::fetchSubscriptionListByImportIdAndStatusCount($this->attribute('id'), CjwNewsletterSubscription::STATUS_APPROVED);
     CjwNewsletterLog::writeNotice("CjwNewsletterImport::removeActiveSubscriptionsByAdmin", 'import', 'start', array('import_id' => $this->attribute('id'), 'active_subscriptions' => $count, 'current_user' => eZUser::currentUserID()));
     // count active subscriptions for import id
     $removeSubscriptionArray = array();
     $limit = 100;
     $loops = ceil($count / $limit);
     // get active subscriptions partly
     for ($i = 0; $i < $loops; $i++) {
         // get active subscriptions
         $subscriptionObjectList = CjwNewsletterSubscription::fetchSubscriptionListByImportIdAndStatus($this->attribute('id'), CjwNewsletterSubscription::STATUS_APPROVED, $limit);
         foreach ($subscriptionObjectList as $subscription) {
             $subscription->removeByAdmin();
             $removeSubscriptionArray[$subscription->attribute('id')] = $subscription->attribute('newsletter_user_id');
         }
     }
     $count = CjwNewsletterSubscription::fetchSubscriptionListByImportIdAndStatusCount($this->attribute('id'), CjwNewsletterSubscription::STATUS_APPROVED);
     CjwNewsletterLog::writeNotice("CjwNewsletterImport::removeActiveSubscriptionsByAdmin", 'import', 'end', array('import_id' => $this->attribute('id'), 'subscriptions_remove_count' => count($removeSubscriptionArray), 'current_user' => eZUser::currentUserID()));
     return $removeSubscriptionArray;
 }
예제 #7
0
 /**
  * This should be called if a user is bounced or blacklisted
  * all related subscriptions and active senditems will be updated
  *
  * @param $status
  * @return unknown_type
  */
 private function setAllNewsletterUserRelatedItemsToStatus($status)
 {
     $newsletterUserId = $this->attribute('id');
     $updateSubcriptions = false;
     switch ($status) {
         case CjwNewsletterSubscription::STATUS_BOUNCED_SOFT:
         case CjwNewsletterSubscription::STATUS_BOUNCED_HARD:
             $bounceCount = CjwNewsletterEditionSendItem::setAllActiveItemsToStatusAbortAndBouncedByNewsletterUserId($newsletterUserId);
             $updateSubcriptions = true;
             break;
         case CjwNewsletterSubscription::STATUS_BLACKLISTED:
             // update active senditems
             $abortCount = CjwNewsletterEditionSendItem::setAllActiveItemsToStatusAbortByNewsletterUserId($newsletterUserId);
             $updateSubcriptions = true;
             break;
     }
     if ($updateSubcriptions === true) {
         // update active subscriptions
         $activeSubscriptionList = CjwNewsletterSubscription::fetchListNotRemovedOrBlacklistedByNewsletterUserId($newsletterUserId, true);
         foreach ($activeSubscriptionList as $subscription) {
             if ($subscription->attribute('status') == $status) {
                 CjwNewsletterLog::writeDebug('skip - already set this status - CjwNewsletterUser::setAllNewsletterUserRelatedItemsToStatus', 'subscription', 'status', array('status' => $status, 'subscription_id' => $subscription->attribute('id'), 'nl_user' => $newsletterUserId));
             } else {
                 $subscription->setAttribute('status', $status);
                 $subscription->store();
                 /*    CjwNewsletterLog::writeDebug(
                        'set CjwNewsletterUser::setAllNewsletterUserRelatedItemsToStatus',
                       'subscription',
                       'status',
                       array( 'status' => $status,
                       'subscription_id' => $subscription->attribute('id'),
                       'nl_user' => $newsletterUserId ) );
                       */
             }
         }
     }
 }
예제 #8
0
 /**
  * Return count of alle subribed users
  *
  * @return unknown_type
  */
 function getUserCount()
 {
     $userCount = CjwNewsletterSubscription::fetchSubscriptionListByListIdCount($this);
     return $userCount;
 }
 /**
  * fetch email, first_name, ... from informationcollection to use for
  * subscription
  */
 private function fetchCurrentDataFromCollection($collection)
 {
     $http = eZHTTPTool::instance();
     // mapping of user data from contentobject for the newsletter user
     // the current object must be a User!!!
     $dataMap = $collection->attribute('data_map');
     $subscriptionDataArr = array('ez_user_id' => 0, 'email' => '', 'salutation' => 0, 'first_name' => '', 'last_name' => '', 'id_array' => array(), 'list_array' => array());
     // get email from informationcollection
     if (isset($dataMap['email'])) {
         $subscriptionDataArr['email'] = $dataMap['email']->content();
     } else {
         return false;
     }
     if (isset($dataMap['salutation'])) {
         $subscriptionDataArr['salutation'] = (int) $dataMap['salutation']->content();
     }
     if (isset($dataMap['first_name'])) {
         $subscriptionDataArr['first_name'] = $dataMap['first_name']->content();
     }
     if (isset($dataMap['last_name'])) {
         $subscriptionDataArr['last_name'] = $dataMap['last_name']->content();
     }
     if ($http->hasPostVariable('Subscription_IdArray')) {
         $subscriptionDataArr['id_array'] = $http->postVariable('Subscription_IdArray');
     }
     if ($http->hasPostVariable('Subscription_ListArray')) {
         $subscriptionDataArr['list_array'] = $http->postVariable('Subscription_ListArray');
     }
     foreach ($subscriptionDataArr['id_array'] as $listId) {
         if ($http->hasPostVariable("Subscription_OutputFormatArray_{$listId}")) {
             $subscriptionDataArr['list_output_format_array'][$listId] = $http->postVariable("Subscription_OutputFormatArray_{$listId}");
         } else {
             $defaultOutputFormatId = 0;
             $subscriptionDataArr['list_output_format_array'][$listId] = array($defaultOutputFormatId);
         }
     }
     $existingNewsletterUserObject = false;
     $subscriptionResultArray = false;
     // only create update subscriptions if a list is select
     if (count($subscriptionDataArr['list_array']) > 0) {
         if ($subscriptionDataArr['email'] != '') {
             $existingNewsletterUserObject = CjwNewsletterUser::fetchByEmail($subscriptionDataArr['email']);
         }
         // email exist but subscription for email is done again
         // => email send with configure link
         if (is_object($existingNewsletterUserObject)) {
             // $existingNewsletterUserObject->sendSubriptionInfoMail();
             $mailSendResult = $existingNewsletterUserObject->sendSubcriptionInformationMail();
         } else {
             $context = 'datatype_collect';
             // subscribe to all selected lists
             $subscriptionResultArray = CjwNewsletterSubscription::createSubscriptionByArray($subscriptionDataArr, CjwNewsletterUser::STATUS_PENDING, false, $context);
             $confirmationResultArray = array();
             $newNewsletterUser = CjwNewsletterUser::fetchByEmail($subscriptionDataArr['email']);
             $mailSendResult = $newNewsletterUser->sendSubcriptionConfirmationMail();
         }
     }
     $returnArray = array('subscription_data_array' => $subscriptionDataArr, 'subscription_data_result_array' => $subscriptionResultArray, 'existing_newsletter_user' => $existingNewsletterUserObject, 'mail_send_result' => $mailSendResult);
     // var_dump( $returnArray );
     return $returnArray;
 }
                 if ($existingSubscription->isRemovedSelf() || $existingSubscription->isBlacklisted()) {
                     // no
                     $createNewSubscription = 0;
                 } else {
                     // 2 - update
                     $createNewSubscription = 2;
                     $subscriptionObject = $existingSubscription;
                     $subscriptionObject->setAttribute('status', CjwNewsletterSubscription::STATUS_APPROVED);
                     $subscriptionObject->setAttribute('import_id', $importId);
                     // set new remote_id
                     $subscriptionObject->setAttribute('remote_id', 'cjwnl:csvimport:' . CjwNewsletterUtils::generateUniqueMd5Hash($newsletterUserId . $importId));
                     $subscriptionObject->store();
                 }
             } else {
                 $createNewSubscription = 1;
                 $newListSubscription = CjwNewsletterSubscription::create($listContentObjectId, $newsletterUserId, $outputFormatArray, CjwNewsletterSubscription::STATUS_APPROVED);
                 $newListSubscription->setAttribute('import_id', $importId);
                 // set new remote_id
                 $newListSubscription->setAttribute('remote_id', 'cjwnl:csvimport:' . CjwNewsletterUtils::generateUniqueMd5Hash($newsletterUserId . $importId));
                 $newListSubscription->store();
                 $subscriptionObject = $newListSubscription;
                 $newSubscriptionStatus = $subscriptionObject->attribute('status');
             }
         }
     }
     $listSubscriptionArray[$rowId] = array('subscription_object' => $subscriptionObject, 'email_ok' => $emailOk, 'user_created' => $createNewUser, 'newsletter_user_id' => $newsletterUserId, 'subscription_created' => $createNewSubscription, 'user_status_old' => $existingUserStatus, 'user_status_new' => $newUserStatus, 'subscription_status_old' => $existingSubscriptionStatus, 'subscription_status_new' => $newSubscriptionStatus);
 }
 // imported timestamp + set count for imported users + subscriptions
 $importObject->setImported();
 CjwNewsletterLog::writeNotice('subscription_list_csvimport', 'import', 'end', array('import_id' => $importObject->attribute('id'), 'current_user' => eZUser::currentUserID()));
 // store result to File
예제 #11
0
 /**
  * Return count of alle subribed users
  *
  * @return unknown_type
  */
 function getUserCount()
 {
     $userCount = CjwNewsletterSubscription::fetchSubscriptionListByListIdCount($this->attribute('contentobject_id'));
     return $userCount;
 }
예제 #12
0
            $tpl->setVariable('user_email_already_exists', $subscriptionDataArr['email']);
            // $existingNewsletterUserObject->sendSubriptionInfoMail();
            $mailSendResult = $existingNewsletterUserObject->sendSubcriptionInformationMail();
            $tpl->setVariable('newsletter_user', $existingNewsletterUserObject);
            $tpl->setVariable('mail_send_result', $mailSendResult);
            $tpl->setVariable('subscription_result_array', false);
            $tpl->setVariable('back_url_input', $backUrl);
            if ($mailSendResult['send_result'] === true) {
                $templateFile = "design:newsletter/subscribe_success.tpl";
            } else {
                $templateFile = "design:newsletter/subscribe_success_not.tpl";
            }
        } else {
            if (count($warningArr) == 0) {
                // subscribe to all selected lists
                $subscriptionResultArray = CjwNewsletterSubscription::createSubscriptionByArray($subscriptionDataArr, CjwNewsletterUser::STATUS_PENDING, true, $context);
                $newNewsletterUser = CjwNewsletterUser::fetchByEmail($subscriptionDataArr['email']);
                $mailSendResult = $newNewsletterUser->sendSubcriptionConfirmationMail();
                $tpl->setVariable('user_email_already_exists', false);
                $tpl->setVariable('mail_send_result', $mailSendResult);
                $tpl->setVariable('newsletter_user', $newNewsletterUser);
                $tpl->setVariable('subscription_result_array', $subscriptionResultArray);
                $tpl->setVariable('back_url_input', $backUrl);
                $templateFile = 'design:newsletter/subscribe_success.tpl';
            }
        }
    }
}
if ($user) {
    $tpl->setVariable('user', $user);
}
예제 #13
0
/**
 * File unsubscribe.php
 *
 * @copyright Copyright (C) 2007-2012 CJW Network - Coolscreen.de, JAC Systeme GmbH, Webmanufaktur. All rights reserved.
 * @license http://ez.no/licenses/gnu_gpl GNU GPL v2
 * @version //autogentag//
 * @package cjw_newsletter
 * @subpackage modules
 * @filesource
 */
require_once 'kernel/common/i18n.php';
include_once 'kernel/common/template.php';
$module = $Params['Module'];
$http = eZHTTPTool::instance();
$tpl = templateInit();
$subscription = CjwNewsletterSubscription::fetchByHash($Params['Hash']);
if (!$subscription) {
    return $module->handleError(eZError::KERNEL_NOT_AVAILABLE, 'kernel');
}
$newsletterUser = $subscription->attribute('newsletter_user');
if (!is_object($newsletterUser)) {
    return $module->handleError(eZError::KERNEL_NOT_AVAILABLE, 'kernel');
}
if ($newsletterUser->isOnBlacklist()) {
    return $module->handleError(eZError::KERNEL_NOT_AVAILABLE, 'kernel');
}
if ($subscription->isRemoved()) {
    $tplTemplate = 'design:newsletter/unsubscribe_already_done.tpl';
} elseif ($module->isCurrentAction('Unsubscribe')) {
    $unsubscribeResult = $subscription->unsubscribe();
    $tpl->setVariable('unsubscribe_result', $unsubscribeResult);
$cli->output($message);
// 1. search all SEND objects which create for the mail list
$waitForProcessObjectList = CjwNewsletterEditionSend::fetchEditionSendListByStatus(array(CjwNewsletterEditionSend::STATUS_WAIT_FOR_PROCESS));
$message = ">>> NlEditionSend objects with STATUS_WAIT_FOR_PROCESS found: " . count($waitForProcessObjectList);
$cli->output($message);
// 2. every SEND object true
foreach ($waitForProcessObjectList as $newsletterEdtionSendObject) {
    $sendId = $newsletterEdtionSendObject->attribute('id');
    $listContentObjectId = $newsletterEdtionSendObject->attribute('list_contentobject_id');
    $message = "## Procsessing: cjw_newsletter_mailqueue_create - sendObjectId: " . $sendId;
    $cli->output($message);
    // 3. search all user which corresponding with list and has CjwNewslettersSubscription::STATUS_APPROVED
    // create a new send_item-entry
    $limit = 0;
    $offset = 0;
    $subscriptionObjectList = CjwNewsletterSubscription::fetchSubscriptionListByListIdAndStatus($listContentObjectId, CjwNewsletterSubscription::STATUS_APPROVED, $limit, $offset);
    $message = "++ Find SubscriptionObjects with STATUS_APPROVED: " . count($subscriptionObjectList);
    $cli->output($message);
    $counter = 0;
    foreach ($subscriptionObjectList as $subscriptionObject) {
        $subscriptionId = $subscriptionObject->attribute('id');
        $editionContentObjectId = $subscriptionObject->attribute('edition_contentobject_id');
        $newsletterUserId = $subscriptionObject->attribute('newsletter_user_id');
        $subscriptionOutputFormatArray = $subscriptionObject->attribute('output_format_array');
        $counter++;
        // status == STATUS_WAIT_FOR_PROCESS || != ABORT ?
        $newsletterEdtionSendObject->sync();
        if ($newsletterEdtionSendObject->attribute('status') == CjwNewsletterEditionSend::STATUS_WAIT_FOR_PROCESS) {
            // every subscription can have multiple outputformats
            // create for every outputformat one send_item
            foreach ($subscriptionOutputFormatArray as $outputFormatId => $outputFormatName) {
예제 #15
0
            {
                $newsletter_user_subscription_array[ $listId ] = CjwNewsletterSubscription::removeSubscriptionByAdmin( $listId, $existingNewsletterUserId );
            }
        }
    */
    // modifing nl subscriptions
    // e.g.  add non existingl  subscription or modify existing
    foreach ($idArray as $listId) {
        $outputFormatArray = $listOutputFormatArray[$listId];
        $subscriptionStatusIdPostVarName = 'Subscription_StatusId_' . $listId;
        $status = -1;
        if ($http->hasPostVariable($subscriptionStatusIdPostVarName)) {
            $status = (int) $http->postVariable($subscriptionStatusIdPostVarName);
        }
        if ($status >= 0) {
            $newsletter_user_subscription_array[$listId] = CjwNewsletterSubscription::createUpdateNewsletterSubscription($listId, $existingNewsletterUserId, $outputFormatArray, $status, $dryRun, $context);
        }
    }
}
if ($module->isCurrentAction('Store') && count($warningArr) == 0) {
    if ($contextCreateNewsletterUser === true && $redirectUrlStore === false) {
        $newNewsletterUserObject = CjwNewsletterUser::fetchByEmail($subscriptionDataArr['email']);
        if (is_object($newNewsletterUserObject)) {
            $redirectUrlStore = '/newsletter/user_view/' . $newNewsletterUserObject->attribute('id');
        }
    } elseif ($redirectUrlStore === false) {
        $redirectUrlStore = '/newsletter/user_list/';
    }
    // if all is ok
    $module->redirectTo($redirectUrlStore);
} elseif ($module->isCurrentAction('Cancel')) {
 /**
  * count all subscriptions with import_id
  * @param integer $importId
  * @return array
  */
 static function fetchImportSubscriptionListCount($importId)
 {
     $objectCount = CjwNewsletterSubscription::fetchSubscriptionListByImportIdCount($importId);
     return array('result' => $objectCount);
 }
예제 #17
0
 * @subpackage modules
 * @filesource
 */
include_once 'kernel/common/template.php';
$module = $Params["Module"];
$http = eZHTTPTool::instance();
$editionSendHash = $Params['EditionSendHash'];
$outputFormatId = 0;
$subscriptionHash = false;
$newsletterUser = null;
if ($Params['OutputFormatId']) {
    $outputFormatId = (int) $Params['OutputFormatId'];
}
if ($Params['SubscriptionHash']) {
    $subscriptionHash = $Params['SubscriptionHash'];
    $subscription = CjwNewsletterSubscription::fetchByHash($subscriptionHash);
    if ($subscription) {
        $newsletterUser = CjwNewsletterUser::fetch($subscription->attribute('newsletter_user_id'));
    }
}
$editionSendObject = CjwNewsletterEditionSend::fetchByHash($editionSendHash);
if (!is_object($editionSendObject)) {
    return $module->handleError(eZError::KERNEL_NOT_AVAILABLE, 'kernel');
}
$newsletterDataArray = $editionSendObject->getParsedOutputXml();
$newsletterContent = false;
if (isset($newsletterDataArray[$outputFormatId])) {
    $newsletterContentArray = $newsletterDataArray[$outputFormatId];
}
switch ($outputFormatId) {
    // html
예제 #18
0
        $subscriptionDataArray['last_name'] = trim($http->postVariable('Subscription_LastName'));
    }
    if ($http->hasPostVariable('Subscription_Salutation')) {
        $subscriptionDataArray['salutation'] = trim($http->postVariable('Subscription_Salutation'));
    }
    if ($http->hasPostVariable('Subscription_IdArray')) {
        $subscriptionDataArray['id_array'] = $http->postVariable('Subscription_IdArray');
    }
    if ($http->hasPostVariable('Subscription_ListArray')) {
        $subscriptionDataArray['list_array'] = $http->postVariable('Subscription_ListArray');
    }
    // $subscriptionDataArr['list_output_format_array'] = array();
    foreach ($subscriptionDataArray['id_array'] as $listId) {
        if ($http->hasPostVariable("Subscription_OutputFormatArray_{$listId}")) {
            $subscriptionDataArray['list_output_format_array'][$listId] = $http->postVariable("Subscription_OutputFormatArray_{$listId}");
        } else {
            $defaultOutputFormatId = 0;
            $subscriptionDataArray['list_output_format_array'][$listId] = array($defaultOutputFormatId);
        }
    }
    // TODO
    // required fields
    // update subscribe/ remove supscripions
    $subscriptionResultArray = CjwNewsletterSubscription::createSubscriptionByArray($subscriptionDataArray, CjwNewsletterUser::STATUS_PENDING, $subscribeOnlyMode = false, $context = 'configure');
    $tpl->setVariable('changes_saved', true);
}
$newsletterUser = CjwNewsletterUser::fetchByHash($Params['UserHash']);
$tpl->setVariable('newsletter_user', $newsletterUser);
$Result = array();
$Result['content'] = $tpl->fetch('design:newsletter/configure.tpl');
$Result['path'] = array(array('url' => false, 'text' => ezi18n('cjw_newsletter/configure', 'Configure newsletter settings')));
 /**
  *
  * @return unknown_type
  */
 function getNewsletterSubscriptionObject()
 {
     return CjwNewsletterSubscription::fetch($this->attribute('subscription_id'));
 }
 /**
  * Return userobject by id
  *
  * @param integer $id
  * @return object
  */
 static function fetch($id)
 {
     $object = eZPersistentObject::fetchObject(CjwNewsletterSubscription::definition(), null, array('id' => $id), true);
     return $object;
 }
 /**
  * if subscriptionId = 0 the subscription is came from virtual list
  * @return object CjwNewsletterSubscription or CjwNewsletterSubscriptionVirtual
  */
 function getNewsletterSubscriptionObject()
 {
     if ($this->attribute('is_subscription_virtual')) {
         $subscriptionObject = CjwNewsletterSubscriptionVirtual::createByUserIdAndEditionSendId($this->attribute('newsletter_user_id'), $this->attribute('edition_send_id'));
     } else {
         $subscriptionObject = CjwNewsletterSubscription::fetch($this->attribute('subscription_id'));
     }
     return $subscriptionObject;
 }