コード例 #1
0
ファイル: Validator.php プロジェクト: khongchi/plugin-board
 /**
  * 전달된 rule 에 다이나믹필드 의 rule 을 추가해서 반환
  *
  * @param ConfigEntity $config board config entity
  * @param array        $rules  rule
  * @return array
  */
 public function makeRule(ConfigEntity $config, array $rules = null)
 {
     if ($rules === null) {
         $rules = $this->basic();
     }
     // add dynamic field rule
     /** @var \Xpressengine\Config\ConfigEntity $dynamicFieldConfig */
     foreach ($this->configHandler->getDynamicFields($config) as $dynamicFieldConfig) {
         /** @var \Xpressengine\DynamicField\AbstractType $type */
         $rules = array_merge($rules, $this->dynamicField->getRules($dynamicFieldConfig));
     }
     return $rules;
 }
コード例 #2
0
 /**
  * get articles
  *
  * @param Request                $request         request
  * @param BoardPermissionHandler $boardPermission board permission
  * @param null                   $id              document id
  * @return mixed
  */
 public function articles(Request $request, BoardPermissionHandler $boardPermission, $menuUrl, $id = null)
 {
     if (Gate::denies(BoardPermissionHandler::ACTION_LIST, new Instance($boardPermission->name($this->instanceId)))) {
         throw new AccessDeniedHttpException();
     }
     $query = $this->handler->getModel($this->config)->where('instanceId', $this->instanceId)->visible();
     if ($this->config->get('category') === true) {
         $query->leftJoin('board_category', sprintf('%s.%s', $query->getQuery()->from, 'id'), '=', sprintf('%s.%s', 'board_category', 'targetId'));
     }
     if ($request->has('favorite') === true) {
         $query->leftJoin('board_favorites', sprintf('%s.%s', $query->getQuery()->from, 'id'), '=', sprintf('%s.%s', 'board_favorites', 'targetId'));
         $query->where('board_favorites.userId', Auth::user()->getId());
     }
     $this->handler->makeWhere($query, $request, $this->config);
     $this->handler->makeOrder($query, $request, $this->config);
     // eager loading favorite list
     $query->with(['favorite' => function ($favoriteQuery) {
         $favoriteQuery->where('userId', Auth::user()->getId());
     }, 'slug', 'data']);
     Event::fire('xe.plugin.board.articles', [$query]);
     if ($id !== null) {
         $request->query->set('page', $this->handler->pageResolver($query, $this->config, $id));
     }
     $paginate = $query->paginate($this->config->get('perPage'))->appends($request->except('page'));
     $fieldTypes = (array) $this->configHandler->getDynamicFields($this->config);
     $categories = [];
     if ($this->config->get('category') === true) {
         $categoryItems = Category::find($this->config->get('categoryId'))->items;
         foreach ($categoryItems as $categoryItem) {
             $categories[] = ['value' => $categoryItem->id, 'text' => $categoryItem->word];
         }
     }
     return XePresenter::makeApi(['paginate' => $paginate, 'categories' => $categories, 'fieldTypes' => $fieldTypes]);
 }
コード例 #3
0
 /**
  * 게시판 요약 정보 반환
  *
  * @param string  $instanceId instance id
  * @param Handler $handler    board handler
  * @return string
  */
 public function summary($instanceId, Handler $handler)
 {
     $documentCount = $handler->countByBoardId($instanceId);
     $configs = $this->configHandler->getDynamicFields($this->configHandler->get($instanceId));
     $dynamicFieldCount = count($configs);
     return ['documentCount' => $documentCount, 'dynamicFieldCount' => $dynamicFieldCount];
 }
コード例 #4
0
 /**
  * 게시판 요약 정보 반환
  *
  * @param string  $instanceId instance id
  * @param Handler $handler    board handler
  * @return string
  */
 public function summary($instanceId, Handler $handler)
 {
     $documentCount = $this->document->getModel($instanceId)->where('instanceId', $instanceId)->count();
     $configs = $this->configHandler->getDynamicFields($this->configHandler->get($instanceId));
     $dynamicFieldCount = count($configs);
     return ['documentCount' => $documentCount, 'dynamicFieldCount' => $dynamicFieldCount];
 }
コード例 #5
0
 /**
  * get revision document entity
  *
  * @param string $revisionId revision id
  * @return DocumentEntity
  */
 public function getRevision($revisionId)
 {
     return $this->document->getRevision($revisionId, $this->configHandler->getDynamicFields($this->config->get('boardId')));
 }