/**
  * 회원의 프로필 이미지를 등록한다.
  *
  * @param UserInterface $user        프로필 이미지를 등록할 회원
  * @param UploadedFile  $profileFile 프로필 이미지 파일
  *
  * @return string 등록한 프로필이미지 ID
  */
 public function updateUserProfileImage(UserInterface $user, UploadedFile $profileFile)
 {
     $disk = array_get($this->profileImgConfig, 'storage.disk');
     $path = array_get($this->profileImgConfig, 'storage.path');
     $size = array_get($this->profileImgConfig, 'size');
     // make fitted image
     /** @var ImageManager $imageManager */
     $imageManager = call_user_func($this->imageManagerResolver);
     $image = $imageManager->make($profileFile->getRealPath());
     $image = $image->fit($size['width'], $size['height']);
     // remove old profile image
     if (!empty($user->profileImageId)) {
         $file = File::find($user->profileImageId);
         if ($file !== null) {
             try {
                 $this->storage->remove($file);
             } catch (\Exception $e) {
             }
         }
     }
     // save image to storage
     $id = $user->getId();
     $file = $this->storage->create($image->encode()->getEncoded(), $path . "/{$id}", $id, $disk);
     return $file->id;
 }
Example #2
0
 public function render()
 {
     $this->loadFiles();
     $args = $this->arguments;
     $seq = $this->seq();
     // set default file upload options
     $fileuploadOptions = ['previewMaxWidth' => 280, 'previewMaxHeight' => 120, 'previewCrop' => false, 'autoUpload' => false, 'acceptFileTypes' => "(\\.|\\/)(.*)\$", 'maxFileSize' => 5000000, 'replaceFileInput' => false, 'disableImageResize' => true, 'imageCrop' => false, 'imageMaxWidth' => 480, 'imageMaxHeight' => 240];
     // set file
     if (isset($args['file'])) {
         $file = File::find($args['file']);
         if ($file === null) {
             unset($args['file']);
         } else {
             $filename = $file->clientname;
             $args['file'] = $filename;
         }
     }
     // resolve arguments
     $fileuploadOptions = array_merge($fileuploadOptions, array_get($args, 'fileuploadOptions', []));
     $args = array_add($args, 'width', 420);
     $args = array_add($args, 'height', 240);
     array_set($fileuploadOptions, 'previewMaxWidth', $args['width']);
     array_set($fileuploadOptions, 'previewMaxHeight', $args['height']);
     $types = array_get($args, 'types');
     if ($types !== null) {
         array_set($fileuploadOptions, 'acceptFileTypes', '(\\.|\\/)(' . implode('|', (array) $types) . ')$');
     }
     array_set($args, 'fileuploadOptions', $fileuploadOptions);
     // render template
     $this->template = \View::make($this->view, ['args' => $args, 'seq' => $seq])->render();
     return parent::render();
 }
 public function updateSetting(SiteHandler $siteHandler, ThemeHandler $themeHandler, Request $request)
 {
     $newConfig = $request->only(['site_title', 'favicon']);
     $oldConfig = $siteHandler->getSiteConfig();
     /* resolve site_title */
     $oldConfig['site_title'] = $newConfig['site_title'];
     /* resolve favicon */
     $uploaded = array_get($newConfig, 'favicon');
     if ($uploaded !== null) {
         // remove old favicon file
         if ($oldId = $oldConfig->get('favicon.id')) {
             $oldId = $oldConfig->get('favicon.id');
             if ($oldId !== null) {
                 $oldFile = File::find($oldId);
                 if ($oldFile !== null) {
                     app('xe.storage')->remove($oldFile);
                 }
             }
         }
         $saved = app('xe.storage')->upload($uploaded, 'filebox');
         $favicon = ['id' => $saved->id, 'filename' => $saved->clientname];
         $media = app('xe.media');
         $mediaFile = null;
         if ($media->is($saved)) {
             $mediaFile = $media->make($saved);
             $favicon['path'] = $mediaFile->url();
         }
         $oldConfig['favicon'] = $favicon;
     }
     $siteHandler->putSiteConfig($oldConfig);
     // resolve index instance
     $indexInstance = $request->get('indexInstance');
     $siteHandler->setHomeInstanceId($indexInstance);
     return \Redirect::back()->with('alert', ['type' => 'success', 'message' => '저장되었습니다.']);
 }
 private function setProfileImageResolverOfUser()
 {
     $default = $this->app['config']['xe.user.profileImage.default'];
     $storage = $this->app['xe.storage'];
     $media = $this->app['xe.media'];
     User::setProfileImageResolver(function ($imageId) use($default, $storage, $media) {
         try {
             if ($imageId !== null) {
                 /** @var Storage $storage */
                 $file = File::find($imageId);
                 if ($file !== null) {
                     /** @var MediaManager $media */
                     $mediaFile = $media->make($file);
                     return asset($mediaFile->url());
                 }
             }
         } catch (\Exception $e) {
         }
         return asset($default);
     });
 }
 /**
  * setting 과정에서 upload되는 파일을 저장한다.
  *
  * @param string       $configId config id
  * @param string       $key      config field key
  * @param UploadedFile $file     file
  *
  * @return array
  */
 protected function saveFile($configId, $key, UploadedFile $file)
 {
     $oldSetting = $this->setting();
     $oldFileId = $oldSetting->get("{$key}.id");
     // remove old file
     if ($oldFileId !== null) {
         $oldFile = File::find($oldFileId);
         if ($oldFile) {
             app('xe.storage')->remove($oldFile);
         }
     }
     // save new file
     $file = app('xe.storage')->upload($file, config('xe.theme.storage.path') . $configId, config('xe.theme.storage.disk'));
     $saved = ['id' => $file->id, 'filename' => $file->clientname];
     $mediaFile = null;
     if (app('xe.media')->is($file)) {
         $mediaFile = app('xe.media')->make($file);
         $saved['path'] = $mediaFile->url();
     }
     return $saved;
 }
 /**
  * get file's source
  *
  * @param string $url url
  * @param string $id  id
  *
  * @return void
  */
 public function fileSource($url, $id)
 {
     $file = File::find($id);
     /** @var \Xpressengine\Media\MediaManager $mediaManager */
     $mediaManager = \App::make('xe.media');
     if ($mediaManager->is($file) === true) {
         $dimension = 'L';
         if (\Agent::isMobile() === true) {
             $dimension = 'M';
         }
         $media = Image::getThumbnail($mediaManager->make($file), PageModule::THUMBNAIL_TYPE, $dimension);
     }
     header('Content-type: ' . $media->mime);
     echo $media->getContent();
 }
 /**
  * setting 과정에서 upload되는 파일을 저장한다.
  *
  * @param              $oldSetting
  * @param string       $key  config field key
  * @param UploadedFile $file file
  * @param string       $path
  * @param string       $disk
  *
  * @return array
  * @internal param string $configId config id
  */
 protected function saveFile($oldSetting, $key, UploadedFile $file, $path, $disk = 'local')
 {
     $oldFileId = $oldSetting->get("{$key}.id");
     // remove old file
     if ($oldFileId !== null) {
         $oldFile = File::find($oldFileId);
         if ($oldFile && file_exists($oldFile->getPathname())) {
             app('xe.storage')->remove($oldFile);
         }
     }
     // save new file
     $file = app('xe.storage')->upload($file, $path, $disk);
     $saved = ['id' => $file->id, 'filename' => $file->clientname];
     $mediaFile = null;
     if (app('xe.media')->is($file)) {
         $mediaFile = app('xe.media')->make($file);
         $saved['path'] = $mediaFile->url();
     }
     return $saved;
 }
 /**
  * file destory
  *
  * @param Storage $storage
  * @param string  $instanceId
  * @param string  $id
  * @return RendererInterface
  */
 public function fileDestroy(Storage $storage, $instanceId, $id)
 {
     if (empty($id) || !($file = File::find($id))) {
         throw new InvalidArgumentException();
     }
     if ($file->userId !== Auth::id()) {
         throw new AccessDeniedHttpException();
     }
     try {
         $result = $storage->remove($file);
     } catch (\Exception $e) {
         $result = false;
     }
     return XePresenter::makeApi(['deleted' => $result]);
 }
 public function file($id)
 {
     $file = File::find($id);
     header('Content-type: ' . $file->mime);
     echo $file->getContent();
 }