Пример #1
0
 /**
  * @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'));
     }
 }
Пример #3
0
 /**
  * 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);
             }
         }
     }
 }
Пример #5
0
 /**
  * @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;
 }