10], [['imageFile'], 'file', 'extensions' => 'png, gif, jpg, jpeg', 'skipOnEmpty' => true, 'on' => self::SCENARIO_FULL], [['imageFile'], 'file', 'extensions' => 'png, gif, jpg, jpeg', 'skipOnEmpty' => true, 'on' => self::SCENARIO_PREVIEW], [['imageFile'], 'file', 'extensions' => 'png, gif, jpg, jpeg', 'skipOnEmpty' => true, 'maxFiles' => 10, 'on' => self::SCENARIO_ADDITIONAL] ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'article_media_id' => Yii::t('app', 'ID'), 'article_id' => Yii::t('app', 'Article ID'), 'media_id' => Yii::t('app', 'Media ID'), 'type' => Yii::t('app', 'Type'), 'media_alt' => Yii::t('app', 'Media Alt'), 'media_title' => Yii::t('app', 'Media Title'), 'media_caption' => Yii::t('app', 'Media Caption'), 'imageFile' => Yii::t('app', 'Image File'), ]; } /** * @return \yii\db\ActiveQuery */ public function getArticle() { return $this->hasOne(Article::className(), ['article_id' => 'article_id']); } /** * @return \yii\db\ActiveQuery */ public function getMedia() { return $this->hasOne(Media::className(), ['media_id' => 'media_id']); } public function upload($article_id) { $this->article_id = $article_id; if(is_array($this->imageFile)) { $ok = true; foreach($this->imageFile as $image) { $media_article = clone $this; $media = new Media(); $media->imageFile = $image; $media->upload(); $media_article->media_id = $media->media_id; $ok = $media_article->save() && $ok; unset($media_article); } return $ok; } elseif(!empty($this->imageFile)) { $media = new Media(); $media->imageFile = $this->imageFile; $media->upload(); $this->media_id = $media->media_id; return $this->save(); } } public function replace($article_id, $removeMedia = false) { $this->article_id = $article_id; if($removeMedia && !$this->getIsNewRecord()) { $article_media = ArticleMedia::find()->select('media_id')->where(['article_id' => $this->article_id, 'type' => $this->type, 'language_id' => $this->language_id])->column(); $media = array(); foreach($article_media as $media_id) { $media[] = Media::findOne(['media_id' => $media_id]); } $media = array_unique($media); foreach($media as $one_media) { if($one_media instanceof Media) { $one_media->delete(); } } unset($media); unset($article_media); } if(is_array($this->imageFile)) { $ok = true; foreach($this->imageFile as $image) { $media_article = clone $this; $media = new Media(); $media->imageFile = $image; $media->upload(); $media_article->media_id = $media->media_id; $ok = $media_article->save() && $ok; unset($media_article); } return $ok; } elseif(!empty($this->imageFile)) { ArticleMedia::deleteAll(['article_id' => $this->article_id, 'type' => $this->type, 'language_id' => $this->language_id]); $media = new Media(); $media->imageFile = $this->imageFile; $media->upload(); $this->media_id = $media->media_id; $this->setIsNewRecord(true); return $this->save(); } } }