Name

sn_ex_sp.KBTranslationInternalUtilSNC

Description

No description available

Script

var KBTranslationInternalUtilSNC = Class.create();
KBTranslationInternalUtilSNC.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
  getTranslatedKbsNotLinkedToTopic: function () {

  	var responseObj = {
  		topicContentMapArr: [],
  		isTranslationPluginInstalled: true,
  		isMultipleLangKBPresent: true
  	};
  	if (!GlidePluginManager.isActive('com.glideapp.knowledge.i18n2')){
  		responseObj.isTranslationPluginInstalled = false;
  		return JSON.stringify(responseObj);
  	}
  	var langCount = 0;
  	var kbGr = new GlideAggregate('kb_knowledge');
  	kbGr.addAggregate('COUNT(DISTINCT','language');
  	kbGr.setGroup(false);
  	kbGr.query();

  	while(kbGr.next()){
  		langCount = kbGr.getAggregate('COUNT(DISTINCT','language');
  	}
  	if(langCount <= 1){
  		responseObj.isMultipleLangKBPresent = false;
  		return JSON.stringify(responseObj);
  	}
  	var topicGr = new GlideRecord('topic');
  	topicGr.query();
  	while (topicGr.next()) {
  		var flag = false;
  		topicContentMap = {
  			topic: topicGr.getDisplayValue(),
  			sys_id: topicGr.getUniqueValue(),
  			unlinkedContent: []
  		};
  		
  		var contentGr = new GlideRecord('m2m_connected_content');
  		contentGr.addQuery('topic', topicGr.getUniqueValue());
  		contentGr.addQuery('content_type', '4c32a92153622010069addeeff7b12a3');
  		contentGr.query();
  		while (contentGr.next()) {
  			var translatedKb = new KBContentTranslationUtil().getTranslatedVersionsFromSysId(contentGr.getValue('knowledge'));
  			
  			while (translatedKb.next()) {
  				var transGr = new GlideRecord('m2m_connected_content');
  				transGr.addQuery('knowledge', translatedKb.getUniqueValue());
  				transGr.addQuery('topic', topicGr.getUniqueValue());
  				transGr.query();
  				
  				if (!transGr.hasNext()) {
  					flag = true;
  					if(topicContentMap.unlinkedContent.indexOf(translatedKb.getDisplayValue()) === -1)
  						topicContentMap.unlinkedContent.push(translatedKb.getDisplayValue());
  				}
  			}
  		}
  		if (flag)
  			responseObj.topicContentMapArr.push(topicContentMap);
  	}
  	return JSON.stringify(responseObj);
  },
  linkAllTranslatedVersionsToTopic: function() {
  	var startMessage = gs.getMessage("Knowledge articles linking process started");
  	gs.addInfoMessage(startMessage);
  	if (!GlidePluginManager.isActive('com.glideapp.knowledge.i18n2')){
  		return gs.getMessage("Translation plugin not installed");
  	}
  	var count = 0;
  	var langCount = 0;
  	var kbGr = new GlideAggregate('kb_knowledge');
  	kbGr.addAggregate('COUNT(DISTINCT','language');
  	kbGr.setGroup(false);
  	kbGr.query();
  	while(kbGr.next()){
  		langCount = kbGr.getAggregate('COUNT(DISTINCT','language');
  	}
  	if(langCount <= 1){
  		return gs.getMessage("Knowledge articles doesn't exist in multiple languages");
  	}
  	var topicGr = new GlideRecord('topic');
  	topicGr.query();
  	while (topicGr.next()) {
  		
  		var contentGr = new GlideRecord('m2m_connected_content');
  		contentGr.addQuery('topic', topicGr.getUniqueValue());
  		contentGr.addQuery('content_type', '4c32a92153622010069addeeff7b12a3');
  		contentGr.query();
  		while (contentGr.next()) {
  			var translatedKb = new KBContentTranslationUtil().getTranslatedVersionsFromSysId(contentGr.getValue('knowledge'));
  			
  			while (translatedKb.next()) {
  				var transGr = new GlideRecord('m2m_connected_content');
  				transGr.addQuery('knowledge', translatedKb.getUniqueValue());
  				transGr.addQuery('topic', topicGr.getUniqueValue());
  				transGr.query();
  				
  				if (!transGr.hasNext()) {
  					var newContentGr = new GlideRecord('m2m_connected_content');
  					newContentGr.initialize();
  					newContentGr.setValue('topic', topicGr.getUniqueValue());
  					newContentGr.setValue('knowledge', translatedKb.getUniqueValue());
  					newContentGr.setValue('content_type', '4c32a92153622010069addeeff7b12a3');
  					newContentGr.insert();
  					count++;
  					gs.info(translatedKb.getDisplayValue() + " was added to "+ topicGr.getDisplayValue()+"("+topicGr.getUniqueValue()+")");
  				}
  			}
  		}
  		
  	}
  	var finishMessage = gs.getMessage("Translated knowledge articles linking is completed. Please check application logs for more details");
  	gs.addInfoMessage(finishMessage);
  	return count;
  },
  type: 'KBTranslationInternalUtilSNC'
});

Sys ID

7a4d31926b42011050bdc141ee44af3c

Offical Documentation

Official Docs: