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 = MemberConfirmationEmail::create($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 = MemberConfirmationEmail::create($this, $member); $email->send(); } $this->extend('onAddMember', $member); return $member; }