/** * @param $message * @param OphCoMessaging_Message_MessageType $type * @param string $source * @param string $alertAddress * * @return Element_OphCoMessaging_Message * * @throws \CDbException * @throws \Exception */ public function save($message = '', $source = '') { $messageEvent = new \Event(); $messageEvent->episode_id = $this->episode->id; $messageEvent->created_user_id = $messageEvent->last_modified_user_id = $this->sender->id; $messageEvent->event_date = date('Y-m-d'); $messageEvent->event_type_id = $this->getEventType()->id; $messageEvent->is_automated = 1; $messageEvent->automated_source = $source; if ($messageEvent->save(true, null, true)) { $messageEvent->refresh(); $messageElement = new Element_OphCoMessaging_Message(); $messageElement->event_id = $messageEvent->id; $messageElement->created_user_id = $messageElement->last_modified_user_id = $this->sender->id; $messageElement->for_the_attention_of_user_id = $this->recipient->id; $messageElement->message_type_id = $this->type->id; if ($this->messageTemplate) { $messageElement->message_text = $this->renderTemplate(); } else { $messageElement->message_text = $message; } if (!$messageElement->save()) { throw new \CDbException('Element save failed: ' . print_r($messageElement->getErrors(), true)); } } else { throw new \CDbException('Event save failed: ' . print_r($messageEvent->getErrors(), true)); } return $messageElement; }