%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/mail/models/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/mail/models/MessageEntry.php |
<?php
namespace humhub\modules\mail\models;
use humhub\components\ActiveRecord;
use humhub\modules\content\widgets\richtext\RichText;
use humhub\modules\mail\live\UserMessageDeleted;
use humhub\modules\user\models\User;
use Yii;
/**
* This class represents a message within a conversation.
*
* The followings are the available columns in table 'message_entry':
* @property integer $id
* @property integer $message_id
* @property integer $user_id
* @property integer $file_id
* @property string $content
* @property string $created_at
* @property integer $created_by
* @property string $updated_at
* @property integer $updated_by
*
* The followings are the available model relations:
* @property Message $message
* @property User $user
* @property File $file
*
* @package humhub.modules.mail.models
* @since 0.5
*/
class MessageEntry extends ActiveRecord
{
/**
* @return string the associated database table name
*/
public static function tableName()
{
return 'message_entry';
}
/**
* @param \humhub\modules\mail\models\Message $message
* @param User $user
* @param $content
* @return static
*/
public static function createForMessage(Message $message, User $user, $content)
{
// Attach Message Entry
return new static([
'message_id' => $message->id,
'user_id' => $user->id,
'content' => $content
]);
}
/**
* @return array validation rules for model attributes.
*/
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return [
[['message_id', 'user_id', 'content'], 'required'],
[['message_id', 'user_id', 'file_id', 'created_by', 'updated_by'], 'integer'],
[['created_at', 'updated_at'], 'safe'],
];
}
public function getUser()
{
return $this->hasOne(User::class, ['id' => 'user_id']);
}
public function getMessage()
{
return $this->hasOne(Message::class, ['id' => 'message_id']);
}
public function beforeSave($insert)
{
if ($this->isNewRecord) {
// Updates the updated_at attribute
$this->message->save();
}
return parent::beforeSave($insert);
}
public function afterSave($insert, $changedAttributes)
{
RichText::postProcess($this->content, $this);
parent::afterSave($insert, $changedAttributes); // TODO: Change the autogenerated stub
}
public function afterDelete()
{
foreach ($this->message->users as $user) {
Yii::$app->live->send(new UserMessageDeleted([
'contentContainerId' => $user->contentcontainer_id,
'message_id' => $this->message_id,
'entry_id' => $this->id,
'user_id' => $user->id
]));
}
parent::afterDelete();
}
/**
* Notify User in this message entry
*/
public function notify(bool $isNewConversation = false)
{
$messageNotification = new MessageNotification($this->message, $this);
$messageNotification->isNewConversation = $isNewConversation;
$messageNotification->notifyAll();
}
public function canEdit()
{
return $this->created_by == Yii::$app->user->id;
}
}