/**
  * Synchronous registration / deregistration for several lists with an array
  * if id_array has more elements than list_array, than is a deregistration defined
  * the difference of id_array and list_array means that these elements shouldn't
  * has subscriptions
  *
  * $subscriptionDataArr = array();
  * $subscriptionDataArr['ez_user_id']
  * $subscriptionDataArr['salutation']
  * $subscriptionDataArr['first_name'] = $http->postVariable( 'Subscription_FirstName' );
  * $subscriptionDataArr['name'] = $http->postVariable( 'Subscription_Name' );
  * $subscriptionDataArr['email'] = $http->postVariable( 'Subscription_Email' );
  *
  * $subscriptionDataArr['id_array'] = $http->postVariable( 'Subscription_IdArray' );
  * $subscriptionDataArr['list_array'] = $http->postVariable( 'Subscription_ListArray' );
  * $subscriptionDataArr['list_output_format_array'] = $http->postVariable( 'Subscription_OutputFormatArray' );
  *
  * @param array $subscriptionDataArr
  * @param $newNewsletterUserStatus status for new created nl users e.g. CjwNewsletterUser::STATUS_PENDING
  * @param $subscribeOnlyMode if true than no subscription will be removed used if subscription is done as ez_user
  * @param $context subscribe | configure | user_edit | datatype_edit | datatype_collect | csvimport from which context the function is called
  * @return array
  */
 static function createSubscriptionByArray($subscriptionDataArr, $newNewsletterUserStatus = CjwNewsletterUser::STATUS_PENDING, $subscribeOnlyMode = false, $context = 'default')
 {
     $resultArray = array();
     $resultArray['list_subscribe'] = array();
     $resultArray['list_remove'] = array();
     $resultArray['errors'] = array();
     $email = $subscriptionDataArr['email'];
     if (isset($subscriptionDataArr['salutation'])) {
         $salutation = $subscriptionDataArr['salutation'];
     } else {
         $salutation = null;
     }
     $firstName = $subscriptionDataArr['first_name'];
     $lastName = $subscriptionDataArr['last_name'];
     $eZUserId = isset($subscriptionDataArr['ez_user_id']) ? (int) $subscriptionDataArr['ez_user_id'] : 0;
     // new value form POST
     $newEzUserId = $eZUserId;
     $newEmail = $email;
     // TODO return here the nl user object for update + status
     $checkResult = CjwNewsletterUser::checkIfUserCanBeUpdated($email, $eZUserId, $updateNewEmail = true);
     switch ($checkResult) {
         // create new user
         case 40:
             break;
             // update user
         // update user
         case 41:
             break;
             // update user with new mail
         // update user with new mail
         case 42:
             break;
         case -20:
         case -1:
             if ($context == 'subscribe') {
                 eZDebug::writeDebug("checkResult[{$checkResult}] - CjwNewsletterSubscription::createSubscriptionByArray return false because email already exists");
                 // break because a newsletter user with email exists
                 return false;
             }
             break;
     }
     $idArray = $subscriptionDataArr['id_array'];
     $listArray = $subscriptionDataArr['list_array'];
     $listOutputFormatArray = $subscriptionDataArr['list_output_format_array'];
     $newsletterUserObject = CjwNewsletterUser::createUpdateNewsletterUser($email, $salutation, $firstName, $lastName, $eZUserId, (int) $newNewsletterUserStatus, $context);
     $resultArray['newsletter_user_object'] = $newsletterUserObject;
     if (is_object($newsletterUserObject) === false) {
         return $resultArray['errors'] = "Can not create new newsletter user with {$email}";
     }
     $newsletterUserId = $newsletterUserObject->attribute('id');
     // list_subscribe
     foreach ($listArray as $listId) {
         $outputFormatArray = $listOutputFormatArray[$listId];
         $status = CjwNewsletterSubscription::STATUS_PENDING;
         $dryRun = false;
         $resultArray['list_subscribe'][$listId] = CjwNewsletterSubscription::createUpdateNewsletterSubscription($listId, $newsletterUserId, $outputFormatArray, $status, $dryRun, $context);
     }
     if ($subscribeOnlyMode === false) {
         $listRemoveArray = array_diff($idArray, $listArray);
         // list_remove by user self
         foreach ($listRemoveArray as $listId) {
             $resultArray['list_remove'][$listId] = CjwNewsletterSubscription::removeSubscriptionByNewsletterUserSelf($listId, $newsletterUserId);
         }
     }
     return $resultArray;
 }
Пример #2
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')) {