public void updateRootKBFolderId(ActionRequest actionRequest, ActionResponse actionResponse) throws PortalException { long kbFolderId = ParamUtil.getLong(actionRequest, "rootKBFolderId"); if (kbFolderId == KBFolderConstants.DEFAULT_PARENT_FOLDER_ID) { return; } KBFolder kbFolder = KBFolderServiceUtil.getKBFolder(kbFolderId); PortalPreferences portalPreferences = PortletPreferencesFactoryUtil.getPortalPreferences( PortalUtil.getLiferayPortletRequest(actionRequest)); portalPreferences.setValue( PortletKeys.KNOWLEDGE_BASE_DISPLAY, "preferredKBFolderURLTitle", kbFolder.getUrlTitle()); String urlTitle = ParamUtil.getString(actionRequest, "urlTitle"); if (Validator.isNull(urlTitle)) { return; } KBArticle kbArticle = KBArticleLocalServiceUtil.fetchKBArticleByUrlTitle( kbFolder.getGroupId(), kbFolder.getUrlTitle(), urlTitle); if (kbArticle == null) { return; } ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY); if (!KBArticlePermission.contains( themeDisplay.getPermissionChecker(), kbArticle, ActionKeys.VIEW)) { return; } actionResponse.setRenderParameter("kbFolderUrlTitle", kbFolder.getUrlTitle()); actionResponse.setRenderParameter("urlTitle", urlTitle); }
protected KBArticle getKBFolderKBArticle(long groupId, long kbFolderId, String kbFolderUrlTitle) throws PortalException { if (Validator.isNotNull(kbFolderUrlTitle)) { KBFolder kbFolder = KBFolderServiceUtil.fetchKBFolderByUrlTitle(groupId, kbFolderId, kbFolderUrlTitle); if (kbFolder != null) { kbFolderId = kbFolder.getKbFolderId(); } } List<KBArticle> kbArticles = KBArticleServiceUtil.getKBArticles( groupId, kbFolderId, WorkflowConstants.STATUS_APPROVED, 0, 1, new KBArticlePriorityComparator(true)); if (!kbArticles.isEmpty()) { return kbArticles.get(0); } List<KBFolder> kbFolders = KnowledgeBaseUtil.getAlternateRootKBFolders(groupId, kbFolderId); for (KBFolder kbFolder : kbFolders) { KBArticle kbArticle = getKBFolderKBArticle(groupId, kbFolder.getKbFolderId(), kbFolder.getUrlTitle()); if (kbArticle != null) { return kbArticle; } } return null; }