public function onAfterWrite() { $changed = $this->owner->getChangedFields(); if (array_key_exists('NeedsApproval', $changed)) { $before = $changed['NeedsApproval']['before']; $after = $changed['NeedsApproval']['after']; $page = $this->owner->ProfilePage(); $email = $page->EmailType; if ($before == true && $after == false && $email != 'None') { $email = new MemberConfirmationEmail($page, $this->owner); $email->send(); } } }
/** * Attempts to save either a registration or add member form submission * into a new member object, returning NULL on validation failure. * * @return Member|null */ protected function addMember($form) { $member = new Member(); $groupIds = $this->getSettableGroupIdsFrom($form); $form->saveInto($member); $member->ProfilePageID = $this->ID; $member->NeedsValidation = $this->EmailType == 'Validation'; $member->NeedsApproval = $this->RequireApproval; try { $member->write(); } catch (ValidationException $e) { $form->sessionMessage($e->getResult()->message(), 'bad'); return; } // set after member is created otherwise the member object does not exist $member->Groups()->setByIDList($groupIds); // If we require admin approval, send an email to the admin and delay // sending an email to the member. if ($this->RequireApproval) { $groups = $this->ApprovalGroups(); $emails = array(); if ($groups) { foreach ($groups as $group) { foreach ($group->Members() as $_member) { if ($member->Email) { $emails[] = $_member->Email; } } } } if ($emails) { $email = new Email(); $config = SiteConfig::current_site_config(); $approve = Controller::join_links(Director::baseURL(), 'member-approval', $member->ID, '?token=' . $member->ValidationKey); $email->setSubject("Registration Approval Requested for {$config->Title}"); $email->setBcc(implode(',', array_unique($emails))); $email->setTemplate('MemberRequiresApprovalEmail'); $email->populateTemplate(array('SiteConfig' => $config, 'Member' => $member, 'ApproveLink' => Director::absoluteURL($approve))); $email->send(); } } elseif ($this->EmailType != 'None') { $email = new MemberConfirmationEmail($this, $member); $email->send(); } $this->extend('onAddMember', $member); return $member; }
function SaveNewProfile($data, $form) { $groupIds = array(); $member = new Member(); //Check for another member with the same email address if ($existingMember = Member::get_one("Member", "Email = '" . Convert::raw2sql($data['Email']) . "'")) { $form->sessionMessage('Die Emailadresse ist schon in Verwendung.', 'bad'); return $this->redirectBack(); } else { $form->saveInto($member); } $member->NeedsValidation = true; try { $member->write(); } catch (ValidationException $e) { $form->sessionMessage($e->getResult()->message(), 'bad'); return; } foreach ($this->Groups()->column('ID') as $mustId) { $groupIds[] = $mustId; } $member->Groups()->setByIDList($groupIds); $member->write(); $email = new MemberConfirmationEmail($this, $member); $email->send(); if ($this->PostRegistrationTargetID) { $this->redirect($this->PostRegistrationTarget()->Link()); return; } die("no success page set"); }
/** * Updates an existing Member's profile. */ public function save(array $data, Form $form) { $member = Member::currentUser(); if ($member->MembershipStatus === 'Expired' || $member->MembershipStatus === 'Not applied') { $member->MembershipStatus = 'Applied'; $email = new MemberConfirmationEmail($this, $member); $email->send(); $this->sendAdminEmail($member); } $groupIds = $this->getSettableGroupIdsFrom($form, $member); $member->Groups()->setByIDList($groupIds); $form->saveInto($member); try { $member->write(); } catch (ValidationException $e) { $form->sessionMessage($e->getResult()->message(), 'bad'); return $this->redirectBack(); } $form->sessionMessage('Your details have been updated.', 'good'); return $this->redirectBack(); }
/** * Adds new member * * @param array member data. * @return boolean true/false */ public function addMember($data) { if (is_array($data)) { $member = new Member(); $member->Email = $data['ccustemail']; $member->FirstName = ucwords(strtolower($data['ccustfirstname'])); $member->Surname = ucwords(strtolower($data['ccustlastname'])); $member->ClickBankAccountType = 'Paid'; $password = Member::create_new_password(); $member->Password = "******"; /* link to memberprofilepage module */ $profilePage = DataObject::get_one('MemberProfilePage'); $member->ProfilePageID = $profilePage->ID; if ($profilePage->EmailType == 'Validation') { $email = new MemberConfirmationEmail($member->ProfilePage(), $member); $email->send(); $member->NeedsValidation = true; } elseif ($profilePage->EmailType == 'Confirmation') { $email = new MemberConfirmationEmail($member->ProfilePage(), $member); $email->send(); } /* populate new member profile */ $clickBankProfile = new ClickBankMemberProfile(); if ($clickBankProfile) { self::populateFields($clickBankProfile, $data); } $clickBankProfile->write(); $member->ClickBankProfileID = $clickBankProfile->ID; // save new member $member->write(); // assign & update new member to a ClickBank user group $clickBankGroupIds = $profilePage->getClickBankMemberGroups(); if ($clickBankGroupIds) { $member->Groups()->setByIDList($clickBankGroupIds); $member->write(); } // assign & update new member to a regular memberprofile user group $memberGroupIds = $profilePage->getMemberProfileGroups(); if ($memberGroupIds) { $member->Groups()->setByIDList($memberGroupIds); $member->write(); } /* Populate log */ $clickBankIpnLog = new ClickBankIpnLog(); $clickBankIpnLog->MemberID = $member->ID; foreach ($data as $key => $val) { if (isset($clickBankIpnLog->{$key})) { $clickBankIpnLog->{$key} = $val; } } $clickBankIpnLog->write(); return true; } return false; }