/** * update * * @param Request $request * @param BoardPermissionHandler $boardPermission * @param string $boardId board id * @return \Illuminate\Http\RedirectResponse */ public function update(Request $request, BoardPermissionHandler $boardPermission, $boardId) { if ($request->get('useCaptcha') === 'true') { $driver = config('captcha.driver'); $captcha = config("captcha.apis.{$driver}.siteKey"); if (!$captcha) { throw new ConfigurationNotExistsException(); } } $config = $this->configHandler->get($boardId); $permissionNames = []; $permissionNames['read'] = ['readMode', 'readRating', 'readUser', 'readExcept']; $permissionNames['list'] = ['listMode', 'listRating', 'listUser', 'listExcept']; $permissionNames['create'] = ['createMode', 'createRating', 'createUser', 'createExcept']; $permissionNames['manage'] = ['manageMode', 'manageRating', 'manageUser', 'manageExcept']; $inputs = $request->except(array_merge(['_token'], $permissionNames['read'], $permissionNames['list'], $permissionNames['create'], $permissionNames['manage'])); foreach ($inputs as $key => $value) { $config->set($key, $value); } foreach ($config->getPureAll() as $key => $value) { if ($config->getParent()->get($key) != null && isset($inputs[$key]) === false) { unset($config[$key]); } } XeDB::beginTransaction(); $config = $this->instanceManager->updateConfig($config->getPureAll()); $boardPermission->set($request, $boardId); XeDB::commit(); return redirect()->to($this->urlHandler->managerUrl('edit', ['boardId' => $boardId])); }
/** * update * * @param string $boardId board id * @return \Illuminate\Http\RedirectResponse */ public function update($boardId) { $config = $this->configHandler->get($boardId); $permissionNames = []; $permissionNames['read'] = ['readMode', 'readRating', 'readUser', 'readExcept']; $permissionNames['list'] = ['listMode', 'listRating', 'listUser', 'listExcept']; $permissionNames['create'] = ['createMode', 'createRating', 'createUser', 'createExcept']; $permissionNames['manage'] = ['manageMode', 'manageRating', 'manageUser', 'manageExcept']; $inputs = Input::except(array_merge(['_token'], $permissionNames['read'], $permissionNames['list'], $permissionNames['create'], $permissionNames['manage'])); //$inputs['extensions'] = isset($inputs['extensions']) ? $inputs['extensions'] : []; foreach ($inputs as $key => $value) { $config->set($key, $value); } $config = $this->instanceManager->updateConfig($config->getPureAll()); // 확장 기능 사용 //$this->extensionHandler->activate($inputs['extensions'], $config); // permission update $grant = new Grant(); foreach ($this->permissionHandler->getActions() as $action) { $permInputs = Input::only($permissionNames[$action]); if ($permInputs[$action . 'Mode'] == 'manual') { $grant = $this->permissionHandler->createGrant($grant, $action, [Grant::RATING_TYPE => $permInputs[$action . 'Rating'], Grant::GROUP_TYPE => isset($permInputs[$action . 'Group']) ? $permInputs[$action . 'Group'] : [], Grant::USER_TYPE => explode(',', $permInputs[$action . 'User']), Grant::EXCEPT_TYPE => explode(',', $permInputs[$action . 'Except'])]); } } $this->permissionHandler->set($boardId, $grant); return Redirect::to($this->urlHandler->managerUrl('edit', ['boardId' => $boardId])); }
/** * trash * * @param Request $request request * @return mixed */ public function trash(Request $request) { $user = Auth::user(); $id = $request->get('id'); $item = $this->handler->getModel($this->config)->find($id); $this->handler->setModelConfig($item, $this->config); if ($user->getRating() != 'super' && $user->getId() != $item->id) { throw new AccessDeniedHttpException(); } $id = $request->get('id'); $author = Auth::user(); $item = $this->handler->getModel($this->config)->find($id); $this->handler->setModelConfig($item, $this->config); // 관리자 또는 본인 글이 아니면 접근 할 수 없음 if ($author->getRating() !== 'super' && $author->getId() != $item->id) { throw new NotFoundDocumentException(); } $this->handler->trash($item, $this->config); return redirect()->to($this->urlHandler->get('index'))->with(['alert' => ['type' => 'success', 'message' => xe_trans('xe::complete')]]); }
/** * 휴지통 이동 * * @return \Illuminate\Http\RedirectResponse|\Xpressengine\Presenter\RendererInterface */ public function trash() { $id = Input::get('id'); $author = Auth::user(); $item = $this->handler->get($id, $this->boardId); // 관리자 또는 본인 글이 아니면 접근 할 수 없음 if ($author->getRating() !== 'super' && $author->getId() != $item->id) { throw new NotFoundDocumentException(); } $config = $this->configHandler->get($item->instanceId); $item = $this->handler->trash($item, $config); // post 로 처리하고.. 이전 페이지로.. 항상 ajax return Redirect::to($this->urlHandler->get('index'))->with(['alert' => ['type' => 'success', 'message' => '벌렸습니다.']]); }