| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 | 
							- <?php
 
- namespace common\models;
 
- use common\components\notify\Parser;
 
- use common\modules\book\models\Book;
 
- use common\modules\book\models\BookChapter;
 
- use common\modules\user\behaviors\UserBehavior;
 
- use yii\behaviors\TimestampBehavior;
 
- use yii\helpers\Html;
 
- use yii\helpers\Json;
 
- /**
 
-  * This is the model class for table "{{%notify}}".
 
-  *
 
-  * @property integer $id
 
-  * @property integer $from_uid
 
-  * @property integer $to_uid
 
-  * @property string $content
 
-  * @property integer $created_at
 
-  * @property integer $category_id
 
-  * @property string $extra
 
-  */
 
- class Notify extends \yii\db\ActiveRecord
 
- {
 
-     /* @var Parser */
 
-     public $parser;
 
-     /**
 
-      * @inheritdoc
 
-      */
 
-     public static function tableName()
 
-     {
 
-         return '{{%notify}}';
 
-     }
 
-     /**
 
-      * @inheritdoc
 
-      */
 
-     public function rules()
 
-     {
 
-         return [
 
-             [['to_uid', 'from_uid', 'category_id'], 'required'],
 
-             [['from_uid', 'to_uid', 'read'], 'integer'],
 
-             [['from_uid'], 'default', 'value' => 0], // 0是系统信息
 
-             [['extra'], 'string']
 
-         ];
 
-     }
 
-     /**
 
-      * @inheritdoc
 
-      */
 
-     public function attributeLabels()
 
-     {
 
-         return [
 
-             'id' => 'ID',
 
-             'from_uid' => 'From Uid',
 
-             'to_uid' => 'To Uid',
 
-             'category_id' => '通知类型',
 
-             'read' => '是否读过',
 
-             'created_at' => 'Created At',
 
-         ];
 
-     }
 
-     public function behaviors()
 
-     {
 
-         return [
 
-             [
 
-                 'class' => TimestampBehavior::className(),
 
-                 'updatedAtAttribute' => false
 
-             ],
 
-             UserBehavior::className()
 
-         ];
 
-     }
 
-     public function getCategory()
 
-     {
 
-         return $this->hasOne(NotifyCategory::className(), ['id' => 'category_id']);
 
-     }
 
-     public function getTitle()
 
-     {
 
-         $item = [
 
-             'from' => $this->from,
 
-             'to' => $this->to,
 
-             'extra' => Json::decode($this->extra),
 
-             'text' => $this->category->title
 
-         ];
 
-         $this->parser = new Parser();
 
-         return $this->parser->parse($item);
 
-     }
 
-     public function getEntity()
 
-     {
 
-         $extra = Json::decode($this->extra);
 
-         switch ($this->category_id) {
 
-             case NotifyCategory::REWARD:
 
-                 return Html::a($extra['article_title'], ['/article/view', 'id' => $extra['article_id']]);
 
-                 break;
 
-             case NotifyCategory::UP_ARTICLE:
 
-                 return Html::a($extra['entity_title'], ['/article/view', 'id' => $extra['entity_id']]);
 
-                 break;
 
-             case NotifyCategory::UP_COMMENT:
 
-                 if ($extra['entity'] == 'common\\models\\Article') {
 
-                     return Html::a($extra['comment_title'], ['/article/view', 'id' => $extra['entity_id'], '#' => 'comment-' . $extra['comment_id']]);
 
-                 } else {
 
-                     return Html::a($extra['comment_title'], ['/suggest/index', 'id' => $extra['entity_id'], '#' => 'comment-' . $extra['comment_id']]);
 
-                 }
 
-                 break;
 
-             case NotifyCategory::FAVOURITE:
 
-                 return Html::a($extra['entity_title'], ['/article/view', 'id' => $extra['entity_id']]);
 
-                 break;
 
-             case NotifyCategory::COMMENT_ARTICLE:
 
-                 return Html::a($extra['entity_title'], ['/article/view', 'id' => $extra['entity_id']]);
 
-                 break;
 
-             case NotifyCategory::COMMENT_SUGGEST:
 
-                 return Html::a($extra['entity_title'], ['/suggest/view', 'id' => $extra['entity_id']]);
 
-                 break;
 
-             default:
 
-                 return '';
 
-                 break;
 
-         }
 
-     }
 
-     public function getContent()
 
-     {
 
-         $item = [
 
-             'from' => $this->from,
 
-             'to' => $this->to,
 
-             'extra' => Json::decode($this->extra),
 
-             'text' => $this->category->content
 
-         ];
 
-         $this->parser = new Parser();
 
-         return $this->parser->parse($item);
 
-     }
 
-     public function getLink()
 
-     {
 
-         $extra = Json::decode($this->extra);
 
-         switch ($this->category_id) {
 
-             case NotifyCategory::SUGGEST:
 
-                 return ['/suggest/view', 'id' => $extra['entity_id']];
 
-                 break;
 
-             case NotifyCategory::MESSAGE:
 
-                 return ['/message/index'];
 
-                 break;
 
-             case NotifyCategory::COMMENT_ARTICLE:
 
-                 return ['/article/view', 'id' => $extra['entity_id'], '#' => 'comment-' . $extra['comment_id']];
 
-                 break;
 
-             case NotifyCategory::COMMENT_SUGGEST:
 
-                 return ['/suggest/view', 'id' => $extra['entity_id'], '#' => 'comment-' . $extra['comment_id']];
 
-                 break;
 
-             case NotifyCategory::REPLY:
 
-                 if ($extra['entity'] == 'common\\models\\Article') {
 
-                     return ['/article/view', 'id' => $extra['entity_id'], '#' => 'comment-' . $extra['comment_id']];
 
-                 }else if ($extra['entity'] == 'common\\modules\\book\\models\\Book') {
 
-                     return ['/book/view', 'id' => $extra['entity_id'], '#' => 'comment-' . $extra['comment_id']];
 
-                 }else if ($extra['entity'] == 'common\\modules\\book\\models\\BookChapter') {
 
-                     return ['/book/chapter', 'id' => $extra['entity_id'], '#' => 'comment-' . $extra['comment_id']];
 
-                 } else if ($extra['entity'] == 'common\\models\\Suggest') {
 
-                     return ['/suggest/view', 'id' => $extra['entity_id'], '#' => 'comment-' . $extra['comment_id']];
 
-                 }
 
-                 break;
 
-             default:
 
-                 return '';
 
-                 break;
 
-         }
 
-     }
 
-     public function afterSave($insert, $changedAttributes)
 
-     {
 
-         parent::afterSave($insert, $changedAttributes);
 
-         if ($insert) {
 
-             if ($this->to->isConfirmed) {
 
-                 \Yii::$app->mailer->compose()
 
-                     ->setTo($this->to->email)
 
-                     ->setSubject($this->from->username . ' ' . $this->getTitle())
 
-                     ->setTextBody($this->getContent())
 
-                     ->send();
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |