public static function createCopy($id, $model_name, $model_id) { // Get or create model name id $modelMN = new D3filesModelName(); $model_name_id = $modelMN->getByName($model_name, true); $model = D3filesModel::findOne($id); $newModel = new D3filesModel(); $newModel->d3files_id = $model->d3files_id; $newModel->is_file = 0; $newModel->model_name_id = $model_name_id; $newModel->model_id = $model_id; $newModel->save(); }
public function run($id) { // $id here is id for model to which will be attached attachments Yii::$app->response->format = Response::FORMAT_JSON; if (!isset($_FILES['upload_file'])) { throw new NotFoundHttpException(Yii::t('d3files', 'File not uploaded.')); } // If controller actions are not disabled, use $_POST['model_name'] if (!Yii::$app->getModule('d3files')->disableController) { $this->modelName = Yii::$app->request->post('model_name'); } if (empty($this->modelName)) { throw new HttpException(422, Yii::t('d3files', 'mandatory POST parameter modelName is not set')); } // Check access rights to the record the file is attached to D3files::performReadValidation($this->modelName, $id); $tmp_id = uniqid(); $fileHandler = new FileHandler(['model_name' => $this->modelName, 'model_id' => $tmp_id, 'file_name' => $_FILES['upload_file']['name']]); $fileHandler->upload(); $model = new D3files(); $model->file_name = $_FILES['upload_file']['name']; $model->add_datetime = new \yii\db\Expression('NOW()'); $model->user_id = Yii::$app->user->getId(); if ($model->save()) { // Get or create model name id $modelMN = new D3filesModelName(); $model_name_id = $modelMN->getByName($this->modelName, true); $modelM = new D3filesModel(); $modelM->d3files_id = $model->id; $modelM->is_file = 1; $modelM->model_name_id = $model_name_id; $modelM->model_id = $id; $modelM->save(); $fileHandler->rename($model->id); } else { $fileHandler->remove(); throw new HttpException(500, Yii::t('d3files', 'Insert DB record failed')); } $renderParam = ['id' => $model->id, 'file_name' => $model->file_name, 'file_model_id' => $modelM->id]; return $this->controller->renderFile(Yii::$app->getModule('d3files')->getView('d3files/upload'), $renderParam); }
/** * Upload yii\web\UploadedFile * @param UploadedFile $uploadFile * @param string $modelName model name with name space * @param int $modelId * @throws Exception */ public static function saveYii2UploadFile(UploadedFile $uploadFile, $modelName, $modelId) { $fileHandler = new FileHandler(['model_name' => $modelName, 'model_id' => uniqid(), 'file_name' => $uploadFile->name, 'file_types' => '*']); $fileHandler->uploadYii2UloadFile($uploadFile); $model = new D3files(); $model->file_name = $uploadFile->name; $model->add_datetime = new \yii\db\Expression('NOW()'); $model->user_id = \Yii::$app->person->user_id; if ($model->save()) { // Get or create model name id $modelMN = new D3filesModelName(); $model_name_id = $modelMN->getByName($modelName, true); $modelM = new D3filesModel(); $modelM->d3files_id = $model->id; $modelM->is_file = 1; $modelM->model_name_id = $model_name_id; $modelM->model_id = $modelId; $modelM->save(); $fileHandler->rename($model->id); } else { $fileHandler->remove(); throw new Exception(500, Yii::t('d3files', 'Insert DB record failed')); } }