public function updateConfig(Request $request) { /** @var \Xpressengine\Config\ConfigManager $configManager */ $configManager = app('xe.config'); $configManager->put('openseminar', ['document_point' => $request->get('document_point'), 'comment_point' => $request->get('comment_point')]); return Redirect::to(route('manage.openseminar_1212.index')); }
public function index(Request $request) { // filter input $field = []; $field['component'] = $request->get('component'); $field['status'] = $request->get('status'); $field['keyword'] = $request->get('query'); if ($field['keyword'] === '') { $field['keyword'] = null; } $collection = Plugin::getAllPlugins(true); $plugins = $collection->fetch($field); $componentTypes = $this->getComponentTypes(); return Presenter::make('index', ['plugins' => $plugins, 'componentTypes' => $componentTypes]); }
public function createSetting(Request $request, ThemeHandler $themeHandler) { $instanceId = $request->get('theme'); $title = $request->get('title'); $theme = $themeHandler->getTheme($instanceId); $configs = $themeHandler->getThemeConfigList($theme->getId()); $last = array_pop($configs); $lastId = $last->name; $prefix = $themeHandler->getConfigId($theme->getId()); $id = str_replace([$prefix, $themeHandler->configDelimiter], '', $lastId); $id = (int) $id + 1; $newId = $instanceId . $themeHandler->configDelimiter . $id; $themeHandler->setThemeConfig($newId, '_configTitle', $title); return redirect()->route('settings.theme.config', ['theme' => $newId])->with('alert', ['type' => 'success', 'message' => '생성되었습니다.']); }
public function handle(Request $request, Closure $next) { app('events')->listen('locale.changed', function ($locale) { app('xe.translator')->setLocale($locale); }); // check locale at request & set locale $locale = $request->get('_l'); if (!$locale) { $locale = $request->cookie('locale', app('xe.translator')->getLocale()); } app()->setLocale($locale); app('cookie')->queue(cookie()->forever('locale', $locale)); app('router')->matched(function ($route, $request) use($locale) { $key = self::class . '://' . $request->method() . '/' . $route->getPath() . '/' . $locale; app('xe.translator')->setCurrentCacheKey($key); }); if ($request->has('xe_use_request_preprocessor') && $this->available()) { $this->prepare($request); } /** @var Response $response */ $response = $next($request); if ($request->has('xe_use_request_preprocessor') && $this->available()) { $this->conduct($request); } return $response; }
public function install(Request $request, PluginHandler $handler, PluginProvider $provider, ComposerFileWriter $writer, SessionManager $session) { $id = $request->get('pluginId'); $handler->getAllPlugins(true); if ($handler->getPlugin($id) !== null) { throw new HttpException(422, 'Plugin already installed.'); } // 자료실에서 플러그인 정보 조회 $pluginData = $provider->find($id); if ($pluginData === null) { throw new HttpException(422, "Can not find the plugin(" . $id . ") that should be installed from the Market-place."); } $title = $pluginData->title; $name = $pluginData->name; $version = $pluginData->latest_release->version; $operation = $handler->getOperation($writer); if ($operation['status'] === ComposerFileWriter::STATUS_RUNNING) { throw new HttpException(422, "이미 진행중인 요청이 있습니다."); } $timeLimit = config('xe.plugin.operation.time_limit'); $writer->reset()->cleanOperation(); $writer->install($name, $version, Carbon::now()->addSeconds($timeLimit)->toDateTimeString())->write(); $this->reserveOperation($writer, $timeLimit); $session->flash('alert', ['type' => 'success', 'message' => '새로운 플러그인을 설치중입니다.']); return XePresenter::makeApi(['type' => 'success', 'message' => '새로운 플러그인을 설치중입니다.']); }
public function updateSetting(Request $request) { $themeHandler = app('xe.theme'); $siteHandler = app('xe.site'); $newConfig = $request->only(['site_title', 'favicon']); $config = app('xe.site')->getSiteConfig(); // resolve site_title $config['site_title'] = $newConfig['site_title']; // resolve favicon $uploadedFavicon = array_get($newConfig, 'favicon'); if ($uploadedFavicon !== null) { // remove old favicon file if (isset($config['favicon'])) { $oldLogoFileId = $config['favicon']; $oldLogoFile = Storage::get($oldLogoFileId); Storage::remove($oldLogoFile); } $favicon = Storage::upload($uploadedFavicon, 'filebox'); $config['favicon'] = $favicon->id; } $siteHandler->putSiteConfig($config); // resolve index instance $indexInstance = $request->get('indexInstance'); $siteHandler->setHomeInstanceId($indexInstance); // resolve theme $theme = $request->only(['theme_desktop', 'theme_mobile']); $theme = ['desktop' => $theme['theme_desktop'], 'mobile' => $theme['theme_mobile']]; $themeHandler->setSiteTheme($theme); return \Redirect::back()->with('alert', ['type' => 'success', 'message' => '저장되었습니다.']); }
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' => '저장되었습니다.']); }
public function getEdit(Request $request) { $themeId = $request->get('theme'); $fileName = $request->get('file'); $type = $request->get('type', 'template'); // TODO: validate themeid, fileName if ($themeId === null) { $e = new InvalidArgumentHttpException(); $e->setMessage('잘못된 요청입니다.'); throw $e; } $theme = \Theme::getTheme($themeId); /** @var ThemeEntity $theme */ $files = $theme->getEditFiles(); if ($fileName === null) { $fileName = key($files[$type]); } if (!is_writable($files[$type][$fileName])) { \View::share('_alert', ['type' => 'danger', 'message' => '파일을 수정할 권한이 없습니다. 웹서버의 계정이 편집할 파일의 쓰기(w)권한을 가지고 있어야 합니다.']); } $fileContent = file_get_contents($files[$type][$fileName]); $editFile = ['fileName' => $fileName, 'path' => $files[$type][$fileName], 'content' => $fileContent]; return \Presenter::make('theme.edit', ['theme' => $theme, 'files' => $files, 'editFile' => $editFile, 'type' => $type]); }
/** * set current page * * @param Request $request request * @param Handler $handler handler * @param ConfigHandler $configHandler config handler * @param BoardSlug $slug slug model * @return void */ protected function setCurrentPage(Request $request, Handler $handler, ConfigHandler $configHandler, BoardSlug $slug) { $instanceId = $slug->instanceId; // 이 slug 가 포함된 페이지 출력 $config = $configHandler->get($instanceId); $query = $handler->getModel($config)->where('instanceId', $instanceId)->visible(); $orderType = $request->get('orderType', ''); if ($orderType === '' && $config->get('orderType') != null) { $orderType = $config->get('orderType', ''); } if ($orderType == '') { $query->where('head', '>=', $slug->board->head); } elseif ($orderType == 'assentCount') { $query->where('assentCount', '>', $slug->board->assentCount)->orWhere(function ($query) use($slug) { $query->where('assentCount', '=', $slug->board->assentCount); $query->where('head', '>=', $slug->board->head); }); } elseif ($orderType == 'recentlyCreated') { $query->where(Board::CREATED_AT, '>', $slug->board->{Board::CREATED_AT})->orWhere(function ($query) use($slug) { $query->where(Board::CREATED_AT, '=', $slug->board->{Board::CREATED_AT}); $query->where('head', '>=', $slug->board->head); }); } elseif ($orderType == 'recentlyUpdated') { $query->where(Board::UPDATED_AT, '>', $slug->board->{Board::UPDATED_AT})->orWhere(function ($query) use($slug) { $query->where(Board::UPDATED_AT, '=', $slug->board->{Board::UPDATED_AT}); $query->where('head', '>=', $slug->board->head); }); } Event::fire('xe.plugin.board.archive', [$query, $slug->board]); $count = $query->count() ?: 1; $page = (int) ($count / $config->get('perPage')); if ($count % $config->get('perPage') != 0) { ++$page; } $request->query->set('page', $page); }
/** * delete group * * @param Request $request * * @return \Illuminate\Http\RedirectResponse * @throws Exception */ public function destroy(Request $request) { $groupIds = $request->get('id'); $joinConfig = \app('xe.config')->get('user.join'); $joinGroup = $joinConfig->get('joinGroup'); $groups = $this->groups->query()->whereIn('id', $groupIds)->get(); XeDB::beginTransaction(); try { foreach ($groups as $group) { if ($joinGroup !== $group->id) { $this->groups->delete($group); } } } catch (Exception $e) { XeDB::rollBack(); throw $e; } XeDB::commit(); return redirect()->back()->with('alert', ['type' => 'success', 'message' => '삭제되었습니다.']); }
/** * get voted user list * * @param Request $request * @param $menuUrl * @param $option * @param $id * @return mixed */ public function votedUserList(Request $request, $menuUrl, $option, $id) { $startId = $request->get('startId'); $limit = $request->get('limit', 10); $item = $this->handler->getModel($this->config)->find($id); $this->handler->setModelConfig($item, $this->config); $counter = $this->handler->getVoteCounter(); $logModel = $counter->newModel(); $query = $logModel->where('counterName', $counter->getName())->where('targetId', $id)->where('counterOption', $option); if ($startId != null) { $query->where('id', '<', $startId); } $logs = $query->orderBy('id', 'desc')->take($limit)->get(); $list = []; foreach ($logs as $log) { /** @var User $user */ $user = $log->user; $profilePage = '#'; if ($user->getId() != '') { $profilePage = route('member.profile', ['member' => $user->getId()]); } $list[] = ['id' => $user->getId(), 'displayName' => $user->getDisplayName(), 'profileImage' => $user->getProfileImage(), 'createdAt' => (string) $log->createdAt, 'profilePage' => $profilePage]; } $nextStartId = 0; if (count($logs) == $limit) { $nextStartId = $logs->last()->id; } return XePresenter::makeApi(['item' => $item, 'list' => $list, 'nextStartId' => $nextStartId]); }
/** * 인터셥센을 이용해 서드파티가 처리할 수 있도록 메소드 사용 * * @param Builder $query board model query builder * @param Request $request request * @param ConfigEntity $config board config entity * @return Builder */ public function makeOrder(Builder $query, Request $request, ConfigEntity $config) { $orderType = $request->get('orderType', ''); if ($orderType === '' && $config->get('orderType') != null) { $orderType = $config->get('orderType', ''); } if ($orderType == '') { $query->orderBy('head', 'desc'); } elseif ($orderType == 'assentCount') { $query->orderBy('assentCount', 'desc')->orderBy('head', 'desc'); } elseif ($orderType == 'recentlyCreated') { $query->orderBy(Board::CREATED_AT, 'desc')->orderBy('head', 'desc'); } elseif ($orderType == 'recentlyUpdated') { $query->orderBy(Board::UPDATED_AT, 'desc')->orderBy('head', 'desc'); } $query->getProxyManager()->orders($query->getQuery(), $request->all()); return $query; }
/** * move to copy * * @return \Illuminate\Http\RedirectResponse|Redirect */ public function copy(Request $request) { $documentIds = $request->get('id'); $documentIds = is_array($documentIds) ? $documentIds : [$documentIds]; $instanceId = $request->get('instanceId'); $config = $this->configHandler->get($instanceId); if ($config === null) { throw new NotFoundConfigHttpException(['instanceId' => $instanceId]); } $items = Board::find($documentIds); foreach ($items as $item) { $this->handler->setModelConfig($item, $this->configHandler->get($item->instanceId)); $user = new Guest(); if ($item->userId != '') { $user = User::find($item->userId); } $this->handler->copy($item, $user, $config); } Session::flash('alert', ['type' => 'success', 'message' => xe_trans('xe::processed')]); return $this->presenter->makeApi([]); }
/** * destroy * * @return \Xpressengine\Presenter\RendererInterface */ public function destroy(Request $request) { /** * @var \Xpressengine\DynamicField\DynamicFieldHandler $dynamicField */ $dynamicField = app('xe.dynamicField'); /** * @var \Xpressengine\DynamicField\ConfigHandler $configHandler */ $configHandler = $dynamicField->getConfigHandler(); $config = $configHandler->get($request->get('group'), $request->get('id')); $dynamicField->setConnection(XeDB::connection($request->get('databaseName'))); $dynamicField->drop($config); return XePresenter::makeApi(['id' => $request->get('id')]); }
/** * 멘션 suggestion 리스트 * * @param Request $request * @return mixed */ public function mention(Request $request) { $suggestions = []; $string = $request->get('string'); $users = User::where('displayName', 'like', $string . '%')->where('id', '<>', Auth::user()->getId())->get(); foreach ($users as $user) { $suggestions[] = ['id' => $user->getId(), 'displayName' => $user->getDisplayName(), 'profileImage' => $user->profileImage]; } return XePresenter::makeApi($suggestions); }
public function children(Request $request, $id) { if ($request->get('id') === null) { $children = Category::find($id)->getProgenitors(); } else { /** @var CategoryItem $item */ if (!($item = CategoryItem::find($request->get('id')))) { throw new InvalidArgumentHttpException(); } $children = $item->getChildren(); } foreach ($children as $child) { $child->readableWord = xe_trans($child->word); } return XePresenter::makeApi($children->toArray()); }
public function storeCategory(Request $request, CategoryHandler $categoryHandler) { $input = ['name' => $request->get('categoryName')]; $category = $categoryHandler->create($input); return XePresenter::makeApi($category->getAttributes()); }