/** * @return string */ public function actionUploadImage() { $returnData = []; $className = \Yii::$app->request->get('model_name'); $attribute = \Yii::$app->request->get('attribute'); if ($className && $attribute) { $model = new $className(); $modelName = $model->formName(); $files = UploadedFile::getInstances($model, $attribute); foreach ($files as $file) { $originalName = $file->baseName . '.' . $file->extension; $fileId = FPM::transfer()->saveUploadedFile($file); if ($fileId) { $existModelId = \Yii::$app->request->post('id'); $tempSign = \Yii::$app->request->post('sign'); $savedImage = EntityToFile::add($modelName, $existModelId, $fileId, $tempSign, \Yii::$app->request->get('entity_attribute')); if (!$savedImage) { $returnData['error'][] = 'Не получилось связать файл ' . $originalName . ' с моделью'; } else { $returnData = ['deleteUrl' => ImagesUploadModel::deleteImageUrl(['id' => $savedImage->id]), 'cropUrl' => ImagesUploadModel::getCropUrl(['id' => $savedImage->id]), 'id' => $savedImage->id, 'imgId' => $savedImage->file_id]; } } else { $returnData['error'][] = 'Не получилось сохранить файл ' . $originalName; } } } return Json::encode($returnData); }
/** * @param $sub * @param $module * @param $size * @param $id * @param $baseName * @param $extension * * @return int * @throws InvalidConfigException * @throws NotFoundHttpException * @throws \Exception */ public function actionProcess($sub, $module, $size, $id, $baseName, $extension) { $directory = (string) floor($id / FPM::getFilesPerDirectory()); if ($sub !== $directory) { throw new NotFoundHttpException(Module::t('exception', 'Wrong generated link')); } $fileName = FPM::getOriginalDirectory($id) . DIRECTORY_SEPARATOR . FPM::getOriginalFileName($id, $baseName, $extension); if (file_exists($fileName)) { $data = FPM::transfer()->getData($id); if (strtolower($baseName) !== strtolower($data->base_name)) { throw new NotFoundHttpException(Module::t('exception', 'File not found')); } $config = isset(FPM::m()->imageSections[$module][$size]) ? FPM::m()->imageSections[$module][$size] : null; if (!is_array($config)) { throw new NotFoundHttpException(Module::t('exception', 'Incorrect request')); } $thumbnailFile = FPM::getThumbnailDirectory($id, $module, $size) . DIRECTORY_SEPARATOR . FPM::getThumbnailFileName($id, $baseName, $extension); FileHelper::createDirectory(FPM::getThumbnailDirectory($id, $module, $size)); if (isset($config['action'])) { switch ($config['action']) { case FPM::ACTION_ADAPTIVE_THUMBNAIL: Image::thumbnail($fileName, $config['width'], $config['height'])->save($thumbnailFile)->show($extension); break; case FPM::ACTION_THUMBNAIL: Image::thumbnail($fileName, $config['width'], $config['height'], ManipulatorInterface::THUMBNAIL_INSET)->save($thumbnailFile)->show($extension); break; case FPM::ACTION_CROP: Image::crop($fileName, $config['width'], $config['height'], $config['startX'], $config['startY'])->save($thumbnailFile)->show($extension); break; case FPM::ACTION_CANVAS_THUMBNAIL: Image::canvasThumbnail($fileName, $config['width'], $config['height'])->save($thumbnailFile)->show($extension); break; case FPM::ACTION_FRAME: Image::frame($fileName, 50, 'F00')->save($thumbnailFile)->show($extension); break; case FPM::ACTION_COPY: if (FPM::m()->symLink) { symlink($fileName, $thumbnailFile); } else { copy($fileName, $thumbnailFile); } \Yii::$app->response->sendFile($thumbnailFile); break; default: throw new InvalidConfigException(Module::t('exception', 'Action is incorrect')); break; } } else { throw new InvalidConfigException(Module::t('exception', 'Action not defined')); } } else { throw new NotFoundHttpException(Module::t('exception', 'File not found')); } }
/** * Formats the value as an link tag using FPM module. * @param mixed $value the value to be formatted * @param array $options * @return string the formatted result */ public function asFile($value, $options = []) { if (!$value) { return $this->nullDisplay; } $file = FPM::transfer()->getData($value); if (in_array($file->extension, ['jpg', 'png', 'gif', 'tif', 'bmp'])) { $linkLabel = FPM::image($file->id, 'admin', 'file'); } else { $linkLabel = FPM::getOriginalFileName($file->id, $file->base_name, $file->extension); } return Html::a($linkLabel, FPM::originalSrc($value), ['target' => '_blank']); }
/** * @param $id * * @throws \Exception * @throws \yii\base\InvalidConfigException */ public function delete($id) { $model = FPM::transfer()->getData($id); $config = FPM::m()->imageSections; foreach ($config as $moduleKey => $module) { foreach ($module as $sizeKey => $size) { $fileName = FPM::getThumbnailDirectory($id, $moduleKey, $sizeKey) . FPM::getThumbnailFileName($id, $model->base_name, $model->extension); if (is_file($fileName)) { unlink($fileName); } } } }
/** * @param $attribute * @param array $element * @param ActiveRecord $model * @param string|null $language * * @return string */ public function renderUploadedFile($model, $attribute, $element, $language = null) { $content = ''; if ($element['type'] == static::INPUT_FILE && isset($model->{$attribute}) && $model->{$attribute}) { $file = FPM::transfer()->getData($model->{$attribute}); $content .= Html::beginTag('div', ['class' => 'file-name']); $content .= Html::button(\Yii::t('app', 'Delete file'), ['class' => 'delete-file', 'data' => ['modelName' => $model->className(), 'modelId' => $language ? $model->model_id : $model->id, 'attribute' => $attribute, 'language' => $language]]); if (in_array($file->extension, ['jpg', 'png', 'gif', 'tif', 'bmp'])) { $linkLabel = FPM::image($file->id, 'admin', 'file'); } else { $linkLabel = FPM::getOriginalFileName($file->id, $file->base_name, $file->extension); } $content .= Html::a($linkLabel, FPM::originalSrc($model->{$attribute}), ['target' => '_blank']); $content .= Html::endTag('div'); } return $content; }
/** * * @param $file * * @return int */ protected function getValue($file) { $fileId = \metalguardian\fileProcessor\helpers\FPM::transfer()->saveUploadedFile($file); return $fileId; }