Name
global.KBPortalServiceImpl
Description
Helper API to support Knowledge Service Portal
Script
var KBPortalServiceImpl = Class.create();
KBPortalServiceImpl.prototype = {
LANGUAGE: gs.getProperty('glide.knowman.enable_multi_language_search','false') != 'true' ? (gs.getProperty("glide.knowman.search.default_language") || gs.getUser().getLanguage() || 'en') : "",
VIEW_AS_EXTENSION_POINT : "KBViewAs",
initialize: function() {
},
/**
Calls SNC Class to evaluate the inputs and get all subscribed facets data
**/
getAllFacets: function(keyword,language,variables,query,order,minCount,portalSuffix, parsed){
try{
language = language || this.LANGUAGE;
portalSuffix = portalSuffix || "";
var result = this._getAllFacets(
keyword + '', language + '', variables + '', query + '', order + '', minCount + '', portalSuffix + '', parsed);
return result;
}catch(e){
return [];
}
},
/**
Calls SNC Class to evaluate the inputs and get specific facet data
**/
getFacetByName: function(name,value,keyword,language,variables,query,order,portalSuffix){
try{
language = language || this.LANGUAGE;
portalSuffix = portalSuffix || "";
return this._getFacetByName(
name+'',value+'',keyword+'',language+'',this.str(variables),this.str(query),order+'',portalSuffix+'');
}catch(e){
return [];
}
},
//Returns a JSONArray representation of accessible knowledge bases
getMyKnowledgeBases:function(order,knowledgeBases){
try{
order = order || 'title';
knowledgeBases = knowledgeBases || '';
return this._getMyKnowledgeBases(order+"",knowledgeBases+"");
}catch(e){
return "";
}
},
//Returns a JSONArray representation of keyword suggestions
getKnowledgeSuggestions:function(keyword,language){
try{
language = language || this.LANGUAGE;
return this._getKnowledgeSuggestions(keyword,language);
}catch(e){
return "";
}
},
//Returns a JSONArray representation of accessible knowledge bases
getFeaturedArticles:function(maxValue,displayField,secondaryFields,knowledgeBases){
try{
return this._getFeaturedArticles(maxValue,displayField,secondaryFields,knowledgeBases);
}catch(e){
return [];
}
},
// Find a knowledge item by item number
getKnowledgeSysIDByNumber: function (number) {
var record = new KBCommon().getKnowledgeRecord(number);
return record ? record.getUniqueValue() : null;
},
//Returns a JSONArray representation for Related articles
getRelatedArticles:function(maxValue,displayField,secondaryFields,knowledgeBases,articleSysId,sourceId,sourceTable,sourceColumn,targetColumn,pageID){
return this._getRelatedArticles(maxValue,displayField,secondaryFields,knowledgeBases,articleSysId,sourceId,sourceTable,sourceColumn,targetColumn,pageID);
},
//Returns a JSONArray representation of accessible knowledge bases
getMostViewedArticles:function(maxValue,displayField,secondaryFields,knowledgeBases){
try{
return this._getMostViewedArticles(maxValue,displayField,secondaryFields,knowledgeBases);
}catch(e){
return [];
}
},
//Returns a JSONArray representation of accessible knowledge bases
getMostUsefulArticles:function(maxValue,displayField,secondaryFields,knowledgeBases){
try{
return this._getMostUsefulArticles(maxValue,displayField,secondaryFields,knowledgeBases);
}catch(e){
return [];
}
},
//Return attachment link for given article id
getAttachmentLink:function(articleId){
try{
return this._getAttachmentLink(articleId);
}catch(e){
return "";
}
},
isValidFacetField:function(table,field,maxVal){
var gr = new GlideRecord(table);
gr.setLimit(1);
if(gr.isValidField(field)){
gr.query();
if(gr.next()){
var fieldType = gr.getElement(field).getED().getInternalType();
if(fieldType == 'boolean' || fieldType == 'reference' || (fieldType == 'glide_list' && gr.getElement(field).getED().getReference())){
return true;
}else if(fieldType == 'string' || fieldType == 'integer' || fieldType == 'workflow'){
var fieldChoice = gr.getElement(field).getED().getChoice();
if(fieldChoice == '1' || fieldChoice == '3' || gr.getElement(field).getED().getSqlLength() <= maxVal)
return true;
}
}
}
return false;
},
isMobile: function() {
return (GlideMobileExtensions.getDeviceType() == 'm' || GlideMobileExtensions.getDeviceType() == 'mobile');
},
getNestedCategories : function(parentCatId){
return new SNC.KnowledgeHelper().getNestedCategoryList(parentCatId);
},
/*
* Payload parameters: start, end, keyword, language, variables, order, secondary_fields, resource, attachment
*/
getResultData:function(input){
try{
if(typeof(input) != 'object')
input = new JSON().decode(input);
var queryParams = {};
queryParams.portal_request = true;
// Uncomment below line to get 'tags' in meta response.
//queryParams.portal_tags = true;
queryParams.portal_suffix = input.portal_suffix ? input.portal_suffix : "";
queryParams.variables = input.variables ? input.variables : "";
queryParams.freetext = input.keyword ? input.keyword+'' : "";
queryParams.knowledge_fields = input.knowledge_fields ? input.knowledge_fields+'' : "";
queryParams.social_fields = input.social_fields ? input.social_fields+'' : "";
queryParams.kb_knowledge_encoded_query = input.kb_query || "";
queryParams.index_group = input.index_group || "";
if(input.variables && input.variables.kb_category && input.category_as_tree){
var catIds = this.getNestedCategories(input.variables.kb_category[0]);
if(typeof(catIds) != 'object')
catIds = new JSON().decode(catIds);
catIds.push(input.variables.kb_category[0]);
input.variables.kb_category = catIds;
}
if(input.result_limit)
queryParams.result_limit = input.result_limit || gs.getProperty('glide.knowman.content_block_limit') || 5;
queryParams.searchParameters = {};
queryParams.searchParameters.knowledgeBase = input.knowledge_base ? input.knowledge_base+"" : "";
queryParams.searchParameters.language = input.language ? input.language+'' : this.LANGUAGE;
queryParams.searchParameters.socialqa_encoded_query = input.social_query ? input.social_query : "";
queryParams.searchParameters.pinned_encoded_query = input.kb_query ? input.kb_query : "";
var orderdata = [];
if(input.order){
orderdata = input.order.toString().split(',');
queryParams.order = orderdata[0] || "";
queryParams.order_desc = orderdata[1] || false;
}
var resource = [];
if(input.resource){
if(input.resource.toLowerCase() != 'knowledge') {
resource.push('social');
if(input.resource.toLowerCase() == 'accepted')
queryParams.acceptedAnswersOnly = true;
if(input.resource.toLowerCase() == 'answered')
queryParams.answeredQuestionsOnly = true;
if(input.resource.toLowerCase() == 'unanswered')
queryParams.unansweredQuestionsOnly = true;
}else{
resource.push('knowledge');
}
}
var payload = {
meta : {
window : {
'start' : input.start ? parseInt(input.start) : 0,
'end' : input.end ? parseInt(input.end) : 30
},
includePinnedArticles: true,
applyFilter : true,
searchWhenEmpty : false,
queryForAttachments : input.attachment
},
context : input.context ? input.context : '03ddb541c31121005655107698ba8f7f',
entity : input.entity || '',
query : queryParams ,
resources : resource || [],
debug : false,
searchSource : 'sp_widget',
searchType : 'kb_contextual_search'
};
if(input.ts_query_sysId && input.ts_query_sysId!=""){
payload.meta.ts_query_kbId = input.ts_query_sysId;
}
if(input.hasOwnProperty("metricEntryneeded")){
payload.meta.metricEntryneeded = input.metricEntryneeded;
}
return this._getResult(new JSON().encode(payload));
}catch(e){
return [];
}
},
getFetchCountResponse : function(input){
var response = this.getResultData(input);
var modifiedResponse = {};
if(response.meta)
modifiedResponse.meta = response.meta;
if(response.status)
modifiedResponse.status = response.status;
return modifiedResponse;
},
getAvailableLanguages:function(selectedLang){
try{
var selectLangArray = selectedLang.split(",");
var selectedLangObj = {};
for(var j=0;j<selectLangArray.length;j++){
selectedLangObj[selectLangArray[j]]=true;
}
//Get laguages available in language choices in language field on user table
var choiceList = new GlideChoiceList();
var languages = [];
var defaultLanguage = gs.getProperty('glide.knowman.search.default_language') || gs.getUser().getLanguage() || "en";
var languageStr = "";
if (new GlideRecord('kb_knowledge').isValidField('language')) {
var clg = new GlideChoiceListGenerator('sys_user', 'preferred_language');
clg.setCache(false);
clg.setNone(false);
clg.get(choiceList);
choiceList.removeChoice('NULL_OVERRIDE');
}
if(choiceList){
languageStr = choiceList.toString().replace('[','').replace(']','');
}
if(languageStr && languageStr != ""){
var lanArry = languageStr.split(',');
for(var i=0;i<lanArry.length;i++){
var lang = lanArry[i].split(':');
var obj = {};
obj.label = lang[0].trim();
obj.value = lang[1].trim();
obj.id = lang[1].trim();
if(selectedLangObj.hasOwnProperty(obj.id))
obj.selected = true;
else
obj.selected = false;
if(defaultLanguage.trim() == lang[1].trim())
defaultLanguage = lang[0].trim();
languages.push(obj);
}
}
var result = {};
result.languages = languages;
result.default_language = defaultLanguage;
return result;
}catch(e){
return [];
}
},
canSubscribe:function(){
if(gs.getSession().isLoggedIn() == false)
return false;
if (!GlidePluginManager().isActive('com.snc.knowledge_advanced'))
return false;
if(gs.getProperty('glide.knowman.enable_km_subscription', 'true') == 'false')
return false;
var roles = gs.getProperty('glide.knowman.enable_km_subscription.roles');
if (roles != null && roles != '') {
var hasRole = gs.hasRole(roles);
if (hasRole == false)
return false;
}
return true;
},
canCreateArticle: function(knowledgeBases) {
if(gs.getSession().isLoggedIn() == false)
return false;
if(!new SNC.KnowledgeHelper().getWritableKnowledgeBaseIDs(knowledgeBases || ""))
return false;
return true;
},
canPostQuestion: function(knowledgeBases) {
if(gs.getSession().isLoggedIn() == false)
return false;
if (!GlidePluginManager().isActive('com.snc.knowledge.social_qa.ui') && !GlidePluginManager().isActive('sn_kb_sqa_user_int'))
return false;
knowledgeBases = new SNC.KnowledgeHelper().getReadableKnowledgeBaseIDs(knowledgeBases || "");
if(knowledgeBases){
var kb = new GlideRecord("kb_knowledge_base");
kb.addQuery('sys_id','IN',knowledgeBases);
kb.addQuery('enable_socialqa', true);
kb.addActiveQuery();
kb.setCategory("homepage");
kb.query();
if(!kb.hasNext())
return false;
}else
return false;
return true;
},
// Functions to perform actions on comments
getRootComments : function(articleId){
return new JSON().decode(new SNC.KnowledgeHelper().getRootComments(articleId));
},
getAllComments : function(articleId){
return new JSON().decode(new SNC.KnowledgeHelper().getAllComments(articleId));
},
addComment : function(commentText, articleId, parentId){
if(!(this._checkUserAccess(articleId) && this._canUserAccessComments())) return "";
var gr = new GlideRecord('kb_feedback');
if(parentId)
if(!gr.get(parentId)) return "INVALID_PARENT";
gr.initialize();
gr.user = gs.getUserID();
gr.comments = commentText;
gr.article = articleId;
gr.session_id = gs.getSessionID();
if(parentId) gr.parent_comment = parentId;
var sys_id = gr.insert();
return {
"sys_id": sys_id,
"created_on": new GlideDateTime().toString(),
"comment_text": commentText,
"likes": [],
"user": this.getUserDetails(gs.getUserID()),
"children": [],
"attachments": [],
"parent": parentId
};
},
submitRating : function(rating, articleId){
if(!this._checkUserAccess(articleId)) return false;
var gr = new GlideRecord('kb_feedback');
gr.user = gs.getUserID();
gr.rating = rating;
gr.article = articleId;
gr.session_id = gs.getSessionID();
return gr.insert();
},
deleteComment : function(commentId, articleId){
if(!(this._checkUserAccess(articleId) && this._canUserAccessComments())) return false;
var gr = new GlideRecord("kb_feedback");
var userId = gs.getUserID();
if(!gr.get(commentId)) return true;
if(userId == gr.user.getValue() || new KBCommon().isAdminUser(gr.article) || userId == gr.article.kb_knowledge_base.owner)
return gr.deleteRecord();
return false;
},
likeComment : function(commentId, articleId){
if(!(this._checkUserAccess(articleId) && this._canUserAccessComments())) return false;
var commentGr = new GlideRecord("kb_feedback");
if(!commentGr.get(commentId)) return false;
var gr = new GlideRecord("m2m_kb_feedback_likes");
gr.comment = commentId;
gr.user = gs.getUserID();
var sysId = gr.insert();
if(sysId)
return {
"user": this.getUserDetails(gs.getUserID()),
"sys_id": sysId
};
return false;
},
unLikeComment : function(commentId, articleId){
if(!(this._checkUserAccess(articleId) && this._canUserAccessComments())) return false;
var gr = new GlideRecord("m2m_kb_feedback_likes");
gr.addQuery("comment",commentId);
gr.addQuery("user",gs.getUserID());
gr.query();
if(gr.next()) return gr.deleteRecord();
return false;
},
getUserDetails: function(userId){
return JSON.parse(new SNC.KnowledgeHelper().getUserDetails(userId));
},
isMemberOfAOG: function(current) {
return current.isValidField("ownership_group") && GlidePluginManager.isActive('com.snc.knowledge_advanced') ? (new KBOwnershipGroup().isMemberOfValidOwnershipGroup(current)) : false;
},
saveUsefulWithParams: function(params) {
return new KBAjax().saveUsefulWithParams(params);
},
kbWriteCommentWithParams: function(params) {
return new KBAjax().kbWriteCommentWithParams(params);
},
saveStarRatingWithParams: function(params) {
return new KBAjax().saveStarRatingWithParams(params);
},
_checkUserAccess: function(articleId){
var article = new GlideRecord("kb_knowledge");
if(!article.get(articleId)) {
return false;
}
if(!(article.canRead())) {
return false;
}
return true;
},
_canUserAccessComments: function() {
if (gs.getProperty("glide.knowman.show_user_feedback", "onload") == "never")
return false;
var roles = gs.getProperty('glide.knowman.show_user_feedback.roles');
if(!gs.nil(roles) && !gs.hasRole(roles)) {
return false;
}
return true;
},
_getResult: function(data){
var json = new JSON();
var searchRequest = new SNC.SearchRequest().fromJSON(data);
return json.decode(searchRequest.submit().toJSON());
},
_getMyKnowledgeBases:function(order,knowledgeBases){
var json = new JSON();
var kbData = json.decode(new SNC.KnowledgeHelper().getUserKnowledgeBases(order,knowledgeBases));
if(this.canSubscribe()){
var subs = new ActivitySubscriptionContext();
var knowledgeBaseIds = [];
for(var i = 0; i < kbData.length; i++)
knowledgeBaseIds[i] = kbData[i].sys_id;
var subscriptionStatusForKBs = subs.getSubscriptionService().getSubscriptionStatusForSubObjects(knowledgeBaseIds.join(), "722d67c367003200d358bb2d07415a9c");
for(var i = 0; i < kbData.length; i++)
kbData[i].subscribed = subscriptionStatusForKBs[i]
}
return kbData;
},
_getKnowledgeSuggestions:function(key,lang){
var json = new JSON();
var kbData = json.decode(new SNC.KnowledgeHelper().getJSONAlternatePhrases(key,lang));
return kbData;
},
_getFeaturedArticles:function(maxValue,displayField,secondaryFields,knowledgeBases){
var input = {};
input.keyword = gs.getProperty("glide.knowman.default_keyword") || 'homepage';
input.start = 0;
input.end = maxValue || 30;
input.result_limit = maxValue;
if(secondaryFields)
input.knowledge_fields = secondaryFields;
if(displayField){
input.knowledge_fields = input.knowledge_fields + "," + displayField;
}
input.attachment = false;
input.entity = "pinnedArticles";
input.context = "ac821f40bf003100216a85ce2c0739d2";
if(knowledgeBases)
input.knowledge_base = knowledgeBases || "";
input.metricEntryneeded = false;
return this.getResultData(input);
},
_getRelatedArticles:function(maxValue,displayField,secondaryFields,knowledgeBases,articleSysId,sourceId,sourceTable,sourceColumn,targetColumn,pageID){
var relatedArticles = [];
var sys_id_list=[];
sys_id_list.push(articleSysId);
knowledgeBases = new global.KBKnowledge().getReadableKnowledgeBaseIDs(knowledgeBases || "");
try{
this._getRelatedArticlesFromMapping(displayField,secondaryFields,maxValue,knowledgeBases,sourceId,sourceTable,sourceColumn,targetColumn,sys_id_list,relatedArticles,pageID);
if(GlidePluginManager.isActive('com.snc.knowledge_ml') && relatedArticles.length<maxValue){
this._getKnowledgeSimilarArticles(displayField,secondaryFields,maxValue,knowledgeBases,articleSysId,relatedArticles.length,sys_id_list,relatedArticles,pageID);
}
return relatedArticles;
}
catch(e){
return relatedArticles;
}
},
_getRelatedArticlesFromMapping: function(displayField, secondaryFields, maxValue, knowledgeBases, sourceId, sourceTable, sourceColumn, targetColumn, sys_id_list, relatedArticles, pageID) {
var count = 0;
var versioningEnabled = GlidePluginManager.isActive('com.snc.knowledge_advanced') && gs.getProperty("glide.knowman.versioning.enabled", "true") === "true";
var relKB = new GlideRecord(sourceTable);
relKB.addQuery(sourceColumn, sourceId);
relKB.addActiveQuery();
relKB.orderBy('order');
relKB.query();
var sysIdCount = 0;
var relArtSysIds = [];
var batchSize = maxValue * 4;
while (relKB.next()) {
if (relatedArticles.length >= maxValue)
break;
relArtSysIds.push(relKB[targetColumn] + '');
sysIdCount++;
if (sysIdCount < batchSize && relKB.hasNext()) {
continue;
}
if (relArtSysIds.length <= 0)
break;
sysIdCount = 0;
var curArticles = [];
this._getPublishedArticles(displayField, secondaryFields, knowledgeBases, sys_id_list, pageID, curArticles, relArtSysIds);
if (versioningEnabled) {
/*The related article sysId associated in the kb_2_kb could be outdated, so fetch the latest published article version.*/
this._getLatestPublishedArticles(displayField, secondaryFields, knowledgeBases, sys_id_list, pageID, curArticles, relArtSysIds);
}
relArtSysIds.forEach(function(sysId) {
if (curArticles[sysId] && relatedArticles.length < maxValue) {
curArticles[sysId].order = relatedArticles.length;
relatedArticles.push(curArticles[sysId]);
}
});
relArtSysIds = [];
}
},
_getPublishedArticles: function(displayField, secondaryFields, knowledgeBases, sys_id_list, pageID, curArticles, relArtSysIds) {
var articleGr = new GlideRecord('kb_knowledge');
new global.KBKnowledge().addKnowledgeQueries(articleGr, knowledgeBases, true);
articleGr.addQuery('sys_id', relArtSysIds);
articleGr.addQuery('workflow_state', 'published');
articleGr.query();
while (articleGr.next()) {
if (!articleGr.canRead() || sys_id_list.indexOf(articleGr.getUniqueValue()) >= 0)
continue;
sys_id_list.push(articleGr.getUniqueValue() + '');
curArticles[articleGr.getUniqueValue() + ''] = this._getJSONRecord(1, displayField, secondaryFields, articleGr, pageID);
}
},
_getLatestPublishedArticles: function(displayField, secondaryFields, knowledgeBases, sys_id_list, pageID, curArticles, relArtSysIds) {
var articleGr = new GlideRecord('kb_knowledge');
articleGr.addQuery('sys_id', relArtSysIds);
articleGr.addQuery('workflow_state', 'outdated');
articleGr.query();
while (articleGr.next()) {
if (sys_id_list.indexOf(articleGr.getUniqueValue()) >= 0)
continue;
var grsKbLatest = new GlideRecord("kb_knowledge");
grsKbLatest.addActiveQuery();
grsKbLatest.addQuery('article_id', articleGr.article_id);
grsKbLatest.addQuery('workflow_state', 'published');
grsKbLatest.addQuery("sys_created_on", ">=", articleGr.sys_created_on);
grsKbLatest.addQuery('valid_to', '>=',(new GlideDate()).getLocalDate().getValue());
grsKbLatest.orderByDesc('sys_created_on');
grsKbLatest.setLimit(1);
grsKbLatest.query();
if (grsKbLatest.next() && grsKbLatest.canRead() && sys_id_list.indexOf(grsKbLatest.getUniqueValue() + '') === -1) {
sys_id_list.push(grsKbLatest.getUniqueValue() + '');
curArticles[articleGr.getUniqueValue() + ''] = this._getJSONRecord(1, displayField, secondaryFields, grsKbLatest, pageID);
}
}
},
_getKnowledgeSimilarArticles:function(displayField,secondaryFields,maxValue,knowledgeBases,articleSysId,countFromMappedRelatedArticles,sys_id_list,relatedArticles,pageID){
var gr = new GlideRecord("kb_knowledge");
gr.addQuery('sys_id', articleSysId);
if(knowledgeBases)
gr.addQuery('kb_knowledge_base','IN',knowledgeBases);
gr.query();
if(gr.next()){
var solutionFinder = new sn_ml.SolutionFinder();
var solution = solutionFinder.getSolution("ml_sn_global_knowledge_similar_articles");
if(solution != null){
var inputs = {};
inputs["short_description"] = gr.short_description+"";
var count = parseInt(2*maxValue)+1 + ""; //getting twice then the asked value to get actual count after canRead check
var outcomeArr = solution.predictTextTopN(inputs, count);
var mlPredictor = new MLPredictor();
var articleList = [];
for(var i=0;i<outcomeArr.length;++i){
if(outcomeArr[i].confidence()<mlPredictor.__getPredictionThreshold(solution, outcomeArr[i]))
break;
articleList.push(outcomeArr[i].predictedValue()+"");
}
var article = new GlideRecord("kb_knowledge");
article.addQuery('sys_id', 'IN', articleList);
article.addQuery('sys_id','NOT IN',sys_id_list);
article.addQuery("sys_class_name", "!=", "kb_knowledge_block");
new global.KBKnowledge().addKnowledgeQueries(article, knowledgeBases);
article.query();
while(article.next()){
if (!article.canRead())
continue;
var index=articleList.indexOf(article.sys_id+"");
articleList[index]=this._getJSONRecord(countFromMappedRelatedArticles,displayField,secondaryFields,article,pageID);
}
for(var j=0;j<articleList.length && countFromMappedRelatedArticles<maxValue;++j){
if(typeof articleList[j] != "string"){
articleList[j].order = countFromMappedRelatedArticles-1;
relatedArticles.push(articleList[j]);
++countFromMappedRelatedArticles;
}
}
}
}
},
_getJSONRecord:function(count,displayField,secondaryFields,articleGr,pageID){
var record = {};
record.id = articleGr.sys_id+"";
pageID = pageID || "kb_article_view";
if(pageID == "kb_article_view"){
if(this.isNumberedURLEnabled())
record.link = "?id="+pageID+"&sysparm_article=" + articleGr.getValue("number") + "";
else
record.link = "?id="+pageID+"&sys_kb_id=" + articleGr.sys_id + "";
}
else
record.link = "?id="+pageID+"&sys_kb_id=" + articleGr.sys_id + "";
if (displayField){
if(displayField == "short_description"){
record.display_field = articleGr.getValue("short_description");
}else{
record.display_field = articleGr.getValue(displayField);
}
}
record.order = count;
record.secondary_fields = [];
secondaryFields.forEach(function(key){
var meta={};
meta.name = key;
meta.display_value = articleGr.getDisplayValue(key);
if (articleGr.getElement(key).getED().getInternalType()) {
meta.type = articleGr.getElement(key).getED().getInternalType();
meta.label = articleGr.getElement(key).getED().getLabel();
meta.value = articleGr.getValue(key);
if(displayField != key){
record.secondary_fields.push(meta);
}
}
});
return record;
},
getPortalId: function() {
var httpRequest = GlideTransaction.get().getRequest();
var portalId = "";
portalId = httpRequest.getHeader("x-portal");
if(gs.nil(portalId)){
var xTransactionSrcInfo = httpRequest.getHeader("X-Transaction-Source");
if(!gs.nil(xTransactionSrcInfo)){
var xTransactionSrcInfoArry = xTransactionSrcInfo.split(",");
for(var index=0;index<xTransactionSrcInfoArry.length; index++){
var keyValue = xTransactionSrcInfoArry[index].trim().split("=");
if(keyValue[0]=="Interface-SysID"){
portalId=keyValue[1];
break;
}
}
}
}
return portalId;
},
isNumberedURLEnabled: function() {
var portalId = this.getPortalId();
if (!gs.nil(portalId)) {
var portalIDs = gs.getProperty("glide.knowman.serviceportal.use_numbered_url.portals", "")+"";
return portalIDs.contains(portalId);
}
return false;
},
_getMostViewedArticles:function(maxValue,displayField,secondaryFields,knowledgeBases){
return new JSON().decode(new SNC.KnowledgeHelper().getMostViewedArticles(maxValue+"",displayField+"",secondaryFields+"",knowledgeBases+""));
},
_getMostUsefulArticles:function(maxValue,displayField,secondaryFields,knowledgeBases){
return new JSON().decode(new SNC.KnowledgeHelper().getMostUsefulArticles(maxValue+"",displayField+"",secondaryFields+"",knowledgeBases+""));
},
_getAllFacets: function(keyword,language,variables,query,order,minCount,portalSuffix,parsed){
var result = new SNC.KnowledgeHelper().getAllFacets(keyword,language,variables,query,order,minCount,portalSuffix);
if (parsed)
return new JSON().decode(result + '');
else
return result;
},
_getFacetByName: function(name,value,keyword,language,variables,query,order,portalSuffix){
var result = new SNC.KnowledgeHelper().getFacetByName(name,value,keyword,language,variables,query,order,portalSuffix);
return new JSON().decode(result + '');
},
_getAttachmentLink:function(articleId){
return new SNC.KnowledgeHelper().getAttachmentLink(articleId);
},
//make sure we always get strings from the parameter map
str:function(value) {
if (value){
if(typeof value === 'object')
return new global.JSON().encode(value) + '';
else
return value+'';
}
return '';
},
getServicePortalKnowledgeBases: function(portal) {
return new global.KBKnowledge().getServicePortalKnowledgeBases(portal);
},
getCaseInfo: function(caseSysId, data){
new sn_customerservice.CaseAutoresponder().getCaseInfo(caseSysId, data);
},
performAction: function(input, data){
new sn_customerservice.CaseAutoresponder().performAction(input, data);
},
isUserAllowedToViewAs: function(params){
var article = new GlideRecord("kb_knowledge");
if((!gs.nil(params.sys_kb_id) && article.get(params.sys_kb_id)) || (!gs.nil(params.sysparm_article) && article.get("number", params.sysparm_article))) {
//add code to get KB of an article.
return new JSON().decode(new SNC.KnowledgeHelper().checkLoggedInUserHasAccess(params.view_as_user, params.extension_type, article.kb_knowledge_base + ""));
}
return {hasAccess : false, message : gs.getMessage("You do not have sufficient privileges to view as this user.")};
},
type: 'KBPortalServiceImpl'
};
Sys ID
bc65e4c1db30320099f93691f0b8f58b