/** * 회원의 프로필 이미지를 등록한다. * * @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; }
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(); }