Name

sn_cd.cd_MobileContentSecurityUtils

Description

No description available

Script

var cd_MobileContentSecurityUtils = Class.create();
cd_MobileContentSecurityUtils.prototype = {
  initialize: function() {},

  /* function returns user access to Mobile Content
   * @param record sys_id of Mobile Content
   * @return boolean true if user have access
   *                 false if user does not have access
   */
  isContentScheduledForUser: function(contentId) {
      //if User has Scheduled Mobile Content
      var gdtNow = new GlideDateTime();
      var user = gs.getUserID();

      var grContentVisibility = new GlideRecord('sn_cd_content_visibility');
      grContentVisibility.addActiveQuery();
      grContentVisibility.addQuery('content.active', true);
      grContentVisibility.addQuery('content.sys_class_name', 'INSTANCEOF', 'sn_cd_content_mobile');
      grContentVisibility.addNullQuery('approvers').addOrCondition('state', 'published');
      grContentVisibility.addNullQuery('availability_start_date').addOrCondition('availability_start_date', '<=', gdtNow);
      grContentVisibility.addNullQuery('availability_end_date').addOrCondition('availability_end_date', '>=', gdtNow);
      grContentVisibility.addQuery('content', contentId);
      grContentVisibility.query();

      if (grContentVisibility.next()){
          if (this.isValidScheduledContentUser(grContentVisibility, user))
  			return true;
              }

      //if User has running campaign
      var isCampaignPluginActive = GlidePluginManager.isActive('com.sn_content_automation');
      if (isCampaignPluginActive) {
          var campainContentSysIds = new sn_ca.ca_CampaignMobileUtils().getMobileContentSysIds();
          for (var i = 0; i < campainContentSysIds.length; i++)
              if (campainContentSysIds[i] == contentId)
                  return true;

      }
      return false;
  },

  /* function returns user access to Link Content
   * @param record sys_id of Link Content
   * @return boolean true if user have access
   *                 false if user does not have access
   */
  isLinkScheduledForUser: function(linkId) {
  	
  	//if User is using link in Scheduled Mobile Content
      var gdtNow = new GlideDateTime();
      var user = gs.getUserID();

      var grContentVisibility = new GlideRecord('sn_cd_content_visibility');
      grContentVisibility.addActiveQuery();
      grContentVisibility.addQuery('content.active', true);
      grContentVisibility.addQuery('content.sys_class_name', 'INSTANCEOF', 'sn_cd_content_mobile');
      grContentVisibility.addNullQuery('approvers').addOrCondition('state', 'published');
      grContentVisibility.addNullQuery('availability_start_date').addOrCondition('availability_start_date', '<=', gdtNow);
      grContentVisibility.addNullQuery('availability_end_date').addOrCondition('availability_end_date', '>=', gdtNow);
      grContentVisibility.addQuery('content.content_type.category', 'mobile_content');
      grContentVisibility.addQuery('content.ref_sn_cd_content_mobile.url_link.sys_id', linkId).addOrCondition('content.ref_sn_cd_content_mobile.video_link.sys_id', linkId);
      grContentVisibility.query();
      
      if (grContentVisibility.next()){
          if (this.isValidScheduledContentUser(grContentVisibility, user))
  			return true;
              }


      //if User is using link for campaign
      var isCampaignPluginActive = GlidePluginManager.isActive('com.sn_content_automation');
      if (isCampaignPluginActive) {
          var campainContentSysIds = new sn_ca.ca_CampaignMobileUtils().getMobileContentSysIds();
  		var mobileContent = new GlideRecord('sn_cd_content_mobile');
  		mobileContent.addQuery('sys_id', 'IN', campainContentSysIds);			
          mobileContent.addQuery('url_link.sys_id', linkId).addOrCondition('video_link.sys_id', linkId);
  		mobileContent.query();
          if(mobileContent.next())
                  return true;

      }
      return false;

  },
  
  isValidScheduledContentUser: function(scheduledContent, user){
  	var cd_Audience = new sn_cd.cd_Audience();
      
  	return (scheduledContent.getValue('use_adhoc_users') == true && scheduledContent.getValue('users').indexOf(user) != -1) || (scheduledContent.getValue('use_adhoc_users') != true && cd_Audience.isUserInAudience(scheduledContent.getValue("audience"), user));
  },

  type: 'cd_MobileContentSecurityUtils'
};

Sys ID

17467060c3731010a0b3ec4b7d40ddba

Offical Documentation

Official Docs: