%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/UserMessage.php |
<?php namespace humhub\modules\mail\models; use Yii; use humhub\modules\user\models\User; use humhub\components\ActiveRecord; /** * This class represents the relation between users and conversations. * * This is the model class for table "user_message". * * The followings are the available columns in table 'user_message': * @property integer $message_id * @property integer $user_id * @property integer $is_originator * @property string $last_viewed * @property string $created_at * @property integer $created_by * @property string $updated_at * @property integer $updated_by * * @property-read Message $message * * @package humhub.modules.mail.models * @since 0.5 */ class UserMessage extends ActiveRecord { /** * @return string the associated database table name */ public static function tableName() { return 'user_message'; } /** * @return array validation rules for model attributes. */ public function rules() { return [ [['message_id', 'user_id'], 'required'], [['message_id', 'user_id', 'is_originator', 'created_by', 'updated_by'], 'integer'], [['last_viewed', 'created_at', 'updated_at'], 'safe'], ]; } public function getMessage() { return $this->hasOne(Message::class, ['id' => 'message_id']); } public function getUser() { return $this->hasOne(User::class, ['id' => 'user_id']); } /** * @return array customized attribute labels (name=>label) */ public function attributeLabels() { return [ 'message_id' => Yii::t('MailModule.base', 'Message'), 'user_id' => Yii::t('MailModule.base', 'User'), 'is_originator' => Yii::t('MailModule.base', 'Is Originator'), 'last_viewed' => Yii::t('MailModule.base', 'Last Viewed'), 'created_at' => Yii::t('MailModule.base', 'Created At'), 'created_by' => Yii::t('MailModule.base', 'Created By'), 'updated_at' => Yii::t('MailModule.base', 'Updated At'), 'updated_by' => Yii::t('MailModule.base', 'Updated By'), ]; } /** * Returns the new message count for given User Id * * @param int $userId * @return int */ public static function getNewMessageCount($userId = null) { if ($userId === null) { $userId = Yii::$app->user->id; } if($userId instanceof User) { $userId = $userId->id; } return static::findByUser($userId) ->andWhere("message.updated_at > user_message.last_viewed OR user_message.last_viewed IS NULL") ->andWhere(["<>", 'message.updated_by', $userId])->count(); } public static function findByUser($userId = null, $orderBy = 'message.updated_at DESC') { if ($userId === null) { $userId = Yii::$app->user->id; } if($userId instanceof User) { $userId = $userId->id; } return static::find()->joinWith('message') ->where(['user_message.user_id' => $userId]) ->orderBy('message.updated_at DESC'); } public function isUnread($userId = null) { if ($userId === null) { $userId = Yii::$app->user->id; } if($this->message->lastEntry && ($this->message->lastEntry->user_id === $userId)) { return false; } return $this->message->updated_at > $this->last_viewed; } }