'png, gif, jpeg, jpg', 'skipOnEmpty' => true], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'media_id' => Yii::t('app', 'media_id'), 'hash' => Yii::t('app', 'hash'), 'extension' => Yii::t('app', 'extension'), ]; } /** * @return \yii\db\ActiveQuery */ public function getArticleCategoryMedia() { return $this->hasMany(ArticleCategoryMedia::className(), ['media_id' => 'media_id']); } /** * @return \yii\db\ActiveQuery */ public function getArticleMedia() { return $this->hasMany(ArticleMedia::className(), ['media_id' => 'media_id']); } public function getArticle() { return $this->hasMany(Article::className(), ['article_id' => 'article_id'])->via('articleMedia'); } public function upload() { if(!empty($this->imageFile) && $this->validate('imageFile')) { $uploaddir = \Yii::getAlias('@saveImageDir'); $this->hash = md5_file($this->imageFile->tempName).\Yii::$app->security->generateRandomString(5); $this->extension = $this->imageFile->extension; if(is_dir($uploaddir.$this->hash)) { return false; } else { if(!mkdir($uploaddir.$this->hash, 0755)) { return false; } } $this->imageFile->saveAs($uploaddir.$this->hash.'/original.'.$this->imageFile->extension, false); if($this->save(false)) { return true; } else { $this->addError('imageFile', \Yii::t('app', 'Cannot load file')); return false; } } else { return false; } } public function delete() { $uploaddir = \Yii::getAlias('@saveImageDir'); if(is_dir($uploaddir.$this->hash)) { $this->removeDir($uploaddir.$this->hash); } return parent::delete(); } public function removeDir($dir) { if($objs = glob($dir."/*")) { foreach($objs as $obj) { is_dir($obj) ? removeDir($obj) : unlink($obj); } } rmdir($dir); } }