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