} } $userData->sync(); //get new Data inmemory $userData = eZUserSubscriptionData::fetch($http->postVariable('original_email')); } else { //create new $userData = eZUserSubscriptionData::create($http->postVariable('FirstName'), $http->postVariable('Name'), $http->postVariable('Mobile'), $http->postVariable('Email')); //redirect to self if ($userData) { return $Module->redirectTo('/newsletter/modify_subscription/' . $userData->attribute('hash')); } } } if ($Params['hash'] != "") { $userData = eZUserSubscriptionData::fetchByHash($Params['hash']); if (!$userData) { $tpl = eZNewsletterTemplateWrapper::templateInit(); $Result = array(); $Result['left_menu'] = 'design:parts/content/eznewsletter_menu.tpl'; $Result['content'] = $tpl->fetch("design:ezsubscribe/no_subscription.tpl"); $Result['path'] = array(array('url' => false, 'text' => ezpI18n::tr('eznewsletter/modify_subscription', 'No subscription'))); return $Result; } else { $subscriptionList = eZSubscription::fetchListByEmail($userData->attribute('email'), eZSubscription::VersionStatusPublished, array(array(eZSubscription::StatusPending, eZSubscription::StatusApproved, eZSubscription::StatusConfirmed, eZSubscription::StatusRemovedSelf, eZSubscription::StatusRemovedAdmin))); $allowedStatusList = array(eZSubscription::StatusApproved, eZSubscription::StatusPending, eZSubscription::StatusConfirmed, eZSubscription::StatusRemovedSelf, eZSubscription::StatusRemovedAdmin); } } //get new data //all subscriptions $found = false;
function fetchUserDataByEmail($email) { return array('result' => eZUserSubscriptionData::fetchByEmail($email)); }
function sendConfirmation($email, $subscription, $subscribe) { //send mail $res = eZTemplateDesignResource::instance(); $ini = eZINI::instance(); $hostname = eZSys::hostname(); if ($subscribe) { $template = 'design:eznewsletter/sendout/subscription.tpl'; } else { $template = 'design:eznewsletter/sendout/unsubscription.tpl'; } $tpl = eZNewsletterTemplateWrapper::templateInit(); $tpl->setVariable('userData', eZUserSubscriptionData::fetch($email)); $tpl->setVariable('hostname', $hostname); $tpl->setVariable('subscription', $subscription); $subscriptionList = eZSubscriptionList::fetch($subscription->attribute('subscriptionlist_id'), eZSubscriptionList::StatusPublished, true, true); $tpl->setVariable('subscriptionList', $subscriptionList); $templateResult = $tpl->fetch($template); if ($tpl->hasVariable('subject')) { $subject = $tpl->variable('subject'); } $mail = new eZMail(); $mail->setSender($ini->variable('MailSettings', 'EmailSender')); $mail->setReceiver($email); $mail->setBody($templateResult); $mail->setSubject($subject); eZMailTransport::send($mail); }
function userDataByHash($hash) { return array('result' => eZUserSubscriptionData::fetchByHash($hash)); }
static function removeAll($id) { eZPersistentObject::removeObject(eZUserSubscriptionData::definition(), array('id' => $id)); }
$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"; $countResult = $db->arrayQuery($countSQL); $subscriberCount = count($countResult); } $tpl = eZNewsletterTemplateWrapper::templateInit(); if ($http->hasPostVariable('searchString')) { $tpl->setVariable('searchString', $http->postVariable('searchString')); } else { $tpl->setVariable('searchString', ''); } if (isset($subscriberList)) { $tpl->setVariable('subscriberList', $subscriberList); $tpl->setVariable('subscriberCount', $subscriberCount); } else {
function onPublish($attribute, $contentObject, $publishedNodes) { $http = eZHTTPTool::instance(); $userID = $attribute->attribute('contentobject_id'); $data = unserialize($attribute->attribute('data_text')); $avialable = array_merge($data['unregister'], $data['register']); foreach ($avialable as $id) { $subscription = eZSubscription::fetchByUserSubscriptionListID($userID, $id); if (isset($subscription) and $subscription->attribute('status') == eZSubscription::StatusApproved and in_array($id, $data['unregister'])) { $subscription->unsubscribe(); } elseif (isset($subscription) and $subscription->attribute('status') == eZSubscription::StatusRemovedSelf and in_array($id, $data['register'])) { $subscription->setAttribute('status', eZSubscription::StatusApproved); $subscription->sync(); } elseif (!isset($subscription) and in_array($id, $data['register'])) { $list = eZSubscriptionList::fetch($id, eZSubscriptionList::StatusPublished, true, true); if ($list) { $subscription = $list->registerUser($userID); } } if ($subscription) { $version = eZContentObjectVersion::fetchVersion($attribute->attribute('version'), $attribute->attribute('contentobject_id')); $user = eZUser::fetch($attribute->attribute('contentobject_id')); $userData = eZUserSubscriptionData::fetch($user->attribute('email')); $dm = $version->attribute('data_map'); if (!$userData) { $userData = eZUserSubscriptionData::create('', '', '', $user->attribute('email')); } if ($user->attribute('email')) { $userData->updateAttribute('email', $user->attribute('email')); $userData->store(); } if (isset($dm['last_name'])) { $userData->setAttribute('name', $dm['last_name']->attribute('data_text')); $userData->store(); } if (isset($dm['first_name'])) { $userData->setAttribute('firstname', $dm['first_name']->attribute('data_text')); $userData->store(); } if (isset($dm['mobile'])) { $userData->setAttribute('mobile', $dm['mobile']->attribute('data_text')); $userData->store(); } } } $http->removeSessionVariable('register_subscription'); $http->removeSessionVariable('unregister_subscription'); }
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; }
static function create($subscriptionListID, $firstname = '', $name = '', $mobile = '', $email = '', $userID = false) { if (!isset($subscriptionListID)) { return false; } $rows = array('created' => time(), 'creator_id' => eZUser::currentUserID(), 'hash' => md5(mt_rand() . '-' . mt_rand()), 'mobile' => $mobile, 'email' => $email, 'subscriptionlist_id' => $subscriptionListID, 'status' => eZSubscription::VersionStatusDraft); if ($userID !== false) { $rows['user_id'] = $userID; } else { $userData = eZUserSubscriptionData::fetch($email); if (!$userData && $email) { eZUserSubscriptionData::create($firstname, $name, $mobile, $email); } } $subscription = new eZSubscription($rows); $subscription->store(); return $subscription; }