Ejemplo n.º 1
0
 /**
  * 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([]);
 }
Ejemplo n.º 2
0
 /**
  * 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([]);
 }
Ejemplo n.º 4
0
 /**
  * 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'))));
 }