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'); }
$userData->setAttribute('email', $http->postVariable('Email')); } } if ($http->hasPostVariable('Password1') && $http->postVariable('Password1') != 'password') { if ($http->postVariable('Password1') === $http->postVariable('Password2') && strlen(trim($http->postVariable('Password1'))) > 0) { $userData->setVariable('password', md5($http->postVariable('Password1'))); } else { $warning = ezpI18n::tr('eznewsletter/modify_subscription', 'Password did not match'); } } $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;
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; }