Name

global.KBKnowledgeKeywordSNC

Description

No description available

Script

KBKnowledgeKeywordSNC = Class.create();

KBKnowledgeKeywordSNC.prototype =  Object.extendsObject(KBCommon, {
  
  PATH_TO_OWNER: "knowledge.kb_knowledge_base.owner",
  PATH_TO_MANAGERS: "knowledge.kb_knowledge_base.kb_managers",
  PATH_TO_OWNER_FROM_KNOWLEDGE: "kb_knowledge_base.owner",
  PATH_TO_MANAGERS_FROM_KNOWLEDGE: "kb_knowledge_base.kb_managers",
  PATH_TO_OWNER_FROM_KB: "owner",
  PATH_TO_MANAGERS_FROM_KB: "kb_managers",
    	
  /**
   * If the user is a owner/ manager of the KB or knowledge_admin 
   * they should be able to create kb_knowledge_keyword record
   *
   * @param GlideRecord: knowledgeKeywordGr
   * @return Boolean: can logged in user pin an article
   */
  canCreate: function(glideRecord) {	

      if (gs.hasRole("knowledge_admin"))
      	return true;

      //check can create for table list view and for new record from kb_knowledge_keyword
      if (glideRecord === null|| typeof glideRecord === "undefined" || glideRecord.getRecordClassName() === "kb_knowledge_keyword")         {
          return new KBKnowledgeBase().isManagerOfAny(gs.getUserID());
      }
      
      //check can create for related list view on kb_knowledge record
      if (glideRecord.getRecordClassName() == "kb_knowledge"){
          var kbKnowledgeKeyword = new GlideRecord("kb_knowledge_keyword");
          if (kbKnowledgeKeyword.get("knowledge", glideRecord.sys_id))
          	return false;
          
          return this.isKnowledgeBaseOwner(glideRecord, this.PATH_TO_OWNER_FROM_KNOWLEDGE)|| this.isKnowledgeBaseManager(glideRecord,this.PATH_TO_MANAGERS_FROM_KNOWLEDGE);
      }
      
      //check can create for related list view on kb_knowledge_base record
      if (glideRecord.getRecordClassName() == "kb_knowledge_base"){
          return this.isKnowledgeBaseOwner(glideRecord, this.PATH_TO_OWNER_FROM_KB)|| this.isKnowledgeBaseManager(glideRecord,this.PATH_TO_MANAGERS_FROM_KB);
      }
  	
      return false;
  },
  
  /**
   * If the user is a knowledge_admin or manager/owner of any knowledge base
   * they should be able read
   *
   * @param GlideRecord: knowledgeKeywordGr
   * @return Boolean: can logged in user read the record
   */
  canRead: function(knowledgeKeywordGr) {
      if (gs.hasRole("knowledge_admin"))
          return true;
  
      return new KBKnowledgeBase().isManagerOfAny(gs.getUserID());		
  },
  
  /**
   * If the user is knowledge_admin or owner/ manager of the KB
   * they should be able to write
   *
   * @param GlideRecord: knowledgeKeywordGr
   * @return Boolean: can logged in user read the record
   */
  canWrite: function(knowledgeKeywordGr) {
  	if (gs.hasRole("knowledge_admin"))
          return true;
  	
      if (knowledgeKeywordGr.isNewRecord())
          return this.canCreate(knowledgeKeywordGr);
  	
      return (this.isKnowledgeBaseOwner(knowledgeKeywordGr, this.PATH_TO_OWNER) ||
  		this.isKnowledgeBaseManager(knowledgeKeywordGr, this.PATH_TO_MANAGERS));	       
  },
  
  /**
   * If the user is a owner/ manager of the KB or knowledge_admin
   * they should be able to delete
   *
   * @param GlideRecord: knowledgeKeywordGr
   * @return Boolean: can logged in user delete the category
   */
  canDelete: function(knowledgeKeywordGr) {
  	if (gs.hasRole("knowledge_admin"))
          return true;
  	
       return (this.isKnowledgeBaseOwner(knowledgeKeywordGr, this.PATH_TO_OWNER) ||
  		this.isKnowledgeBaseManager(knowledgeKeywordGr, this.PATH_TO_MANAGERS));	
  },
  
  
  /**
   * Get all the the sys_ids of articles which are not featured and which beloongs to the knowledge base 
   * that the current user is a manager or owner of
   * Note: knowledge_admin gets all knowledge bases
   *
   * @return Array of sys ids
   */
  getAvailableArticleIds: function() {
  	var result = [];
  	var kbGr = new GlideRecord("kb_knowledge_keyword");
  	kbGr.query();
  	while (kbGr.next()) {
  		result.push(kbGr.knowledge+"");
  	}
  	
  	kbGr = new GlideRecord("kb_knowledge");
  	var userId = gs.getUserID();
  	if (!gs.hasRole("knowledge_admin")) {
  		var qc = kbGr.addQuery("kb_knowledge_base.owner", "CONTAINS", userId);
  		qc.addOrCondition("kb_knowledge_base.kb_managers", "CONTAINS", userId);
  	}
  	kbGr.addQuery("sys_id", "NOT IN", result.join());
  	kbGr.query();
  	
  	result = [];
  	while (kbGr.next()) {
  		result.push(kbGr.sys_id+"");
  	}
  	
  	return result;
  },
  
  
  /**
   * Get all the the sys_ids of KnowledgeBases for which user can create featured content
   * Note: knowledge_admin gets all knowledge bases
   *
   * @return Array of sys ids
   */
  getAvailableKbIds: function() {
  	var result = [];
  	var kbGr = new GlideRecord("kb_knowledge_base");
  	var userId = gs.getUserID();
  	if (!gs.hasRole("knowledge_admin")) {
  		var qc = kbGr.addQuery("owner", "CONTAINS", userId);
  		qc.addOrCondition("kb_managers", "CONTAINS", userId);
  	}
  	kbGr.query();
  	while (kbGr.next()) {
  		result.push(kbGr.sys_id+"");
  	}
  	return result;
  },

  type: "KBKnowledgeKeywordSNC"
});

Sys ID

5ee03e33d733210013ab49547e610303

Offical Documentation

Official Docs: