public function afterSaveCommit(CakeEvent $cakeEvent, Event $event, ArrayObject $options) { if (!empty($event->admin_status_override)) { return; } if ($event->isNew() && !empty($event->parent_event_id)) { //This is an instantiation of a recurring event, so no further //notifications necessary return; } if ($event->status == $event->getOriginal('status') && !$event->isNew()) { //No status change, so no further notifications return; } if (empty($event->club) && !empty($event->club_id)) { //All notification letters refer to event's Club name, //so ensure that club data is available $event->club = $this->Clubs->get($event->club_id); } if ($event->status == 'Pending') { $data = ['settings' => ['to' => TableRegistry::get('Users')->roleEmails(['admin', 'student_admin']), 'subject' => "Club Event Submitted - {$event->title}", 'template' => 'Admin/event_submitted', 'emailFormat' => 'both'], 'vars' => ['modified' => $event->getOriginal('status') == 'Modifications Requested', 'event' => $event]]; QueueBYUEmailTask::createJob($data); } elseif ($event->status == 'Advisor Pending') { $this->Clubs->notifyAdvisor($event->club_id, 'Club Event Submitted', 'Advisor/event_submitted', compact('event')); } elseif ($event->status == 'Modifications Requested') { $this->Clubs->notifyPresident($event->club_id, 'Modifications requested for BYU Club Event', 'Officer/event_modifications_requested', compact('event')); } elseif ($event->status == 'Approved') { //TODO: notfiy advisor AND president $this->instantiateRecurrences($event); } }