/** * approve * * @return \Illuminate\Http\RedirectResponse|Redirect */ public function approve() { // $approved = Input::get('approved'); // $documentIds = Input::get('id'); // $documentIds = is_array($documentIds) ? $documentIds : [$documentIds]; // // $docs = Document::getsByIds($documentIds); // // // foreach ($docs as $doc) { // $doc->approved = $approved; // // Document::put($doc); // } $approved = Input::get('approved'); $documentIds = Input::get('id'); $documentIds = is_array($documentIds) ? $documentIds : [$documentIds]; $items = $this->handler->gets(['ids' => $documentIds], []); foreach ($items as $item) { XeDB::beginTransaction(); $item->approved = $approved; $this->handler->put($item); XeDB::commit(); } return $this->presenter->makeApi([]); // if (Input::get('redirect') != null) { // return redirect(Input::get('redirect')); // } else { // return redirect()->route('manage.xe_board.board.docs.index'); // } return $this->presenter->makeApi([]); }
/** * update * * @param Request $request request * @param Validator $validator validator * @param BoardPermissionHandler $boardPermission board permission handler * @param IdentifyManager $identifyManager identify manager * @return \Xpressengine\Presenter\RendererInterface */ public function update(Request $request, Validator $validator, BoardPermissionHandler $boardPermission, IdentifyManager $identifyManager, $menuUrl) { $user = Auth::user(); $id = $request->get('id'); if ($id === null) { throw new RequiredValueHttpException(['key' => 'id']); } // 글 수정 시 게시판 설정이 아닌 글의 상태에 따른 처리가 되어야 한다. $item = $this->handler->getModel($this->config)->find($id); $this->handler->setModelConfig($item, $this->config); // 비회원이 작성 한 글 인증 if ($this->isManager !== true && $item->isGuest() === true && $identifyManager->identified($item) === false && $user->getRating() != 'super') { return $this->guestId($menuUrl, $item->id, $this->urlHandler->get('edit', ['id' => $item->id])); } // 접근 권한 확인 if ($this->isManager !== true && $item->userId !== $user->getId()) { throw new AccessDeniedHttpException(); } $rules = $validator->getEditRule($user, $this->config); $this->validate($request, $rules); $inputs = $request->all(); $inputs['title'] = htmlspecialchars($request->originAll()['title'], ENT_COMPAT | ENT_HTML401, 'UTF-8', false); $inputs['content'] = purify($request->originAll()['content']); if ($request->get('status') == Board::STATUS_NOTICE && $this->isManager === false) { throw new HaveNoWritePermissionHttpException(['name' => xe_trans('xe::notice')]); } if ($request->get('status') == Board::STATUS_NOTICE) { $item->status = Board::STATUS_NOTICE; } else { if ($request->get('status') != Board::STATUS_NOTICE && $item->status == Board::STATUS_NOTICE) { $item->status = Board::STATUS_PUBLIC; } } // 암호 설정 $oldCertifyKey = $item->certifyKey; if ($item->certifyKey != '' && isset($inputs['certifyKey']) === true && $inputs['certifyKey'] == '') { $inputs['certifyKey'] = $item->certifyKey; } elseif ($item->certifyKey != '' && isset($inputs['certifyKey']) === true && $inputs['certifyKey'] != '') { $inputs['certifyKey'] = $identifyManager->hash($inputs['certifyKey']); } /** @var \Xpressengine\Editor\AbstractEditor $editor */ $editor = XeEditor::get($this->instanceId); $inputs['format'] = $editor->htmlable() ? Board::FORMAT_HTML : Board::FORMAT_NONE; // set file, tag $inputs['_files'] = array_get($inputs, $editor->getFileInputName(), []); $inputs['_hashTags'] = array_get($inputs, $editor->getTagInputName(), []); $board = $this->handler->put($item, $inputs, $this->config); // 비회원 비밀번호를 변경 한 경우 세션 변경 if ($oldCertifyKey != '' && $oldCertifyKey != $board->certifyKey) { $identifyManager->destroy($board); $identifyManager->create($board); } return XePresenter::redirect()->to($this->urlHandler->getSlug($item->boardSlug->slug, $request->query->all()))->setData(['item' => $board]); }
/** * update document approve status * * @return \Illuminate\Http\RedirectResponse|Redirect */ public function approve(Request $request) { $approved = $request->get('approved'); $documentIds = $request->get('id'); $documentIds = is_array($documentIds) ? $documentIds : [$documentIds]; $items = Board::find($documentIds); foreach ($items as $item) { $this->handler->setModelConfig($item, $this->configHandler->get($item->instanceId)); $this->handler->put($item, ['approve' => $approved]); } return $this->presenter->makeApi([]); }
/** * update * * @return \Illuminate\Http\RedirectResponse */ public function update() { /** @var \Xpressengine\Http\Request $request */ $request = app('request'); $user = Auth::user(); $id = $request->get('id'); if ($id === null) { throw new RequiredValueException(); } // 글 수정 시 게시판 설정이 아닌 글의 상태에 따른 처리가 되어야 한다. $item = $this->handler->get($id, $this->boardId); $doc = $item->getDocument(); // 비회원이 작성 한 글 인증 // 비회원이 작성 한 글일 때 인증페이지로 이동 /** @var \Xpressengine\Plugins\Board\IdentifyManager $identifyManager */ $identifyManager = app('xe.board.identify'); if ($doc->isGuest() === true && $identifyManager->identified($item) === false && $user->getRating() != 'super') { $e = new InvalidIdentifyException(); throw $e; } /** @var \Xpressengine\Plugins\Board\Validator $validator */ $validator = app('xe.board.validator'); $rules = $validator->makeRule($this->config); if ($user instanceof Guest) { $rules = array_merge($rules, $validator->guestUpdate()); } $this->validate($request, $rules); $inputs = $request->all(); // replace purifying content to origin content value $inputs['content'] = $request->originAll()['content']; foreach ($this->handler->documentFilter($inputs) as $name => $value) { $doc->{$name} = $value; } // 공지 $doc->notice(false); if ($request->get('status') == 'notice' && $this->isManager) { $doc->notice(true); } $item->setDocument($doc); /** @var \Xpressengine\Storage\Storage $storage */ if (($fileIds = $request->get('_files')) !== null) { $storage = app('xe.storage'); $item->setFiles($storage->getsIn($fileIds)); } // 암호 설정 if ($doc->certifyKey != '') { $doc->certifyKey = $identifyManager->hash($doc->certifyKey); } // 비회원 글 수정시 비밀번호를 입력 안한 경우 원래 비밀번호로 설 $origin = $doc->getOriginal(); if ($origin['certifyKey'] != '' && $doc->certifyKey == '') { $doc->certifyKey = $origin['certifyKey']; } $item->setDocument($doc); XeDB::beginTransaction(); $this->handler->put($item); $doc = $item->getDocument(); // 비회원 비밀번호를 변경 한 경우 세션 변경 if ($origin['certifyKey'] != '' && $origin['certifyKey'] != $doc->certifyKey) { $identifyManager->destroy($item); $identifyManager->create($item); } // 태그 등록 /** @var \Xpressengine\Tag\TagHandler $tag */ $tag = app('xe.tag'); $hashTags = array_unique(Input::get('hashTags', [])); $tag->set($this->boardId, $doc->id, $hashTags); XeDB::commit(); return Redirect::to($this->urlHandler->getShow($item, $this->urlHandler->queryStringToArray(Input::get('queryString')))); }