/** * Creates an instance of NfyDbMessage model. The passed message body may be modified, @see formatMessage(). * This method may be overriden in extending classes. * @param string $body message body * @return NfyDbMessage */ protected function createMessage($body, $object_pk = null, $subject_pk = null) { $message_body = new NfyMessageBody; $message_body->setAttributes(array( 'body' => $body, 'object_pk'=>$object_pk ), false); if (!$message_body->save()){ Yii::log(Yii::t('NfyModule.app', "Not sending message '{msg}' to queue {queue_label}.", array('{msg}' => $body, '{queue_label}' => $this->label)), CLogger::LEVEL_INFO, 'nfy'); return; } $message = new NfyDbMessage; $message->setAttributes(array( 'queue_id' => $this->id, 'timeout' => $this->timeout, 'sender_id' => Yii::app()->hasComponent('user') ? Yii::app()->user->getId() : null, 'status' => NfyMessage::AVAILABLE, 'message_body_id'=>$message_body->id, 'body'=>$body, 'object_pk'=>$object_pk, 'subject_pk'=>$subject_pk ), true); return $this->formatMessage($message); }
public function beforeDelete(){ if(parent::beforeDelete()){ $check = NfyDbMessage::model()->countByAttributes(array('message_body_id'=>$this->message_body_id), 'id != :id', array(':id'=>(int)$this->id)); if(empty($check)){ NfyMessageBody::model()->deleteByPk($this->message_body_id); } return true; } return false; }