BlameableBehavior::className(), 'createdByAttribute' => 'user_id', 'updatedByAttribute' => false, ], ]; } /** * @inheritdoc */ public function rules() { return [ [['files'], 'file', 'maxSize' => 5242880], [['status'], 'integer'], [['name'], 'string', 'max' => 50], [['dir'], 'string', 'max' => 255], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'file_id' => 'File ID', 'status' => 'Status', 'name' => 'Name', 'dir' => 'Dir', ]; } /** * @param UploadedFile $file * @return int file id in model File */ public function saveFile(UploadedFile $file){ $imgDir = Yii::getAlias('@storage/'.'user_'.\Yii::$app->user->id.'/files/'); $uploadName = preg_replace('/\s/', '_', $file->baseName).'_'. time().'.'.$file->extension; $uploadName = Tools::translit($uploadName, 'letter'); if(!is_dir($imgDir)) { mkdir($imgDir, 0755, true); } if($file->saveAs($imgDir.$uploadName)){ $this->dir = '/storage/user_'.\Yii::$app->user->id.'/files/'.$uploadName; $this->name = preg_replace('/\s/', '_', $file->baseName).'.'.$file->extension; $this->save(); return $this->file_id; } } /** * Extends ActiveRecord::delete() method, also deletes file from file system * * @see ActiveRecord::delete() * @return false|int * @throws \Exception */ public function delete() { if(!empty($this->dir)) { if(file_exists(Yii::getAlias('@documentRoot').$this->dir)) { unlink(Yii::getAlias('@documentRoot').$this->dir); } } return parent::delete(); } }