Name

global.PPMUserProfiles

Description

No description available

Script

var PPMUserProfiles = Class.create();
PPMUserProfiles.prototype = {
  initialize: function() {
      this.appLiveProfile = new GlideappLiveProfile();
  },
  getSingleProfile: function(userId) {
  	if(userId) {
  		var profile = this.getProfiles([userId])[0];
  		return profile;
  	} else {
  		return {};
  	}
  },
  getGroupName: function(groupId){
  	var gr=new GlideRecord('sys_user_group');
  	gr.get(groupId);
  	return gr.getDisplayValue();
  },
   getGroupProfiles : function(memberIds) {
      PPMDebug.log("Into PPMUserProfiles.getProfiles -> " + memberIds.join(","));
      var self = this;
      var mems = [], missedMemberIds = [];
      for (var i = 0; i < memberIds.length; i++) {
          var profile = {};
          var userId = memberIds[i];
          var profileId = this.appLiveProfile.getID(userId);
          if(JSUtil.notNil(profileId)) {
              var name = this.getGroupName(userId);
              profile = this.generateProfileFromCache(userId, profileId, name);
  			if(profile.imgUrl && profile.imgUrl.indexOf("default") > 0) {
  				profile.imgUrl = this.getAvatarFromDB(userId, 'sys_user_group');
  			}
              mems.push(profile);
          } else {
              missedMemberIds.push(memberIds[i]);
          }
      }
      PPMDebug.log("Into PPMUserProfiles.getProfiles From Cache -> " + (new JSON()).encode(mems));
      PPMDebug.log("Into PPMUserProfiles.getProfiles Missed Memebers -> " + (new JSON()).encode(missedMemberIds));
      if(missedMemberIds.length > 0) {
          for (var i = 0; i < missedMemberIds.length; i++) {
              var grUser = new GlideRecord('sys_user_group');
              grUser.get(missedMemberIds[i]);
              var name = grUser.getValue("name");
              var profile = self.generateProfile(missedMemberIds[i], 'sys_user_group', missedMemberIds[i], name);
              mems.push(profile);
          }
      }
      return mems;
  },   
  getProfiles : function(memberIds) {
      PPMDebug.log("Into PPMUserProfiles.getProfiles -> " + memberIds.join(","));
      var self = this;
      var mems = [], missedMemberIds = [];
      for (var i = 0; i < memberIds.length; i++) {
          var profile = {};
          var userId = memberIds[i];
          var profileId = this.appLiveProfile.getID(userId);
          if(JSUtil.notNil(profileId)) {
              var name = this.appLiveProfile.getName(profileId);
              profile = this.generateProfileFromCache(userId, profileId, name);
  			if(profile.imgUrl && profile.imgUrl.indexOf("default") > 0) {
  				profile.imgUrl = this.getAvatarFromDB(userId, 'sys_user');
  			}
              mems.push(profile);
          } else {
              missedMemberIds.push(memberIds[i]);
          }
      }
      PPMDebug.log("Into PPMUserProfiles.getProfiles From Cache -> " + (new JSON()).encode(mems));
      PPMDebug.log("Into PPMUserProfiles.getProfiles Missed Memebers -> " + (new JSON()).encode(missedMemberIds));
      if(missedMemberIds.length > 0) {
          for (var i = 0; i < missedMemberIds.length; i++) {
              var grUser = new GlideRecord('sys_user');
              grUser.get(missedMemberIds[i]);
              var name = grUser.getValue("name");
              var profile = self.generateProfile(missedMemberIds[i], 'sys_user', missedMemberIds[i], name);
              mems.push(profile);
          }
      }
      return mems;
  },

  getProfile: function (userId, userName) {
      PPMDebug.log("Into PPMUserProfiles.getProfile -> " + userId + " - " + userName);
      var name = String(userName);
      var profile = {};
      profile.id = userId;
      profile.text = name;
      profile.imgUrl = '';

      name = name.replace(/[^\w\s\.]\w+[^\w\s\.]|[^\w\s\.]/, "");
      name = name.replace(/\s+/, ' ');
      var parts = name.split(' ');
  	if(parts[0] && parts[1]) {
  		profile.initials = (parts[0].substring(0, 1) + parts[1].substring(0,1)).toUpperCase();
  	} else {
  		profile.initials = parts[0].substring(0, 1).toUpperCase();
  	}
      
      return profile;
  },

  getAvatarFromDB: function (profileId, profileTable) {
      PPMDebug.log("Into PPMUserProfiles.getAvatarFromDB -> " + profileId + " - " + profileTable);
      var gr = new GlideRecord('sys_attachment');
      gr.addQuery('table_sys_id', profileId);
      gr.addQuery('table_name', 'ZZ_YY' + profileTable);
      gr.query();
      if ( gr.next() )
          return (gr.sys_id + '.iix');
  	
      return "";
  },
  
  generateProfile: function(userId, profileTable, profileId, name) {
      PPMDebug.log("Into PPMUserProfiles.generateProfile -> " + userId + " - " + profileTable + " - " + profileId + " - " + name);
      var profile = this.getProfile(userId, name);
      profile.imgUrl = this.getAvatarFromDB(profileId, profileTable);
      return profile;
  },

  generateProfileFromCache: function (userId, profileId, name) {
      PPMDebug.log("Into PPMUserProfiles.generateProfileFromCache -> " + userId + " - " + profileId + " - " + name);
      var profile = this.getProfile(userId, name);
      var avatar = this.appLiveProfile.getAvatar(profileId);
      profile.imgUrl = avatar;
      return profile;
  },
  
  type: 'PPMUserProfiles'
};

Sys ID

18c890a00b013200acc30e7363673a6e

Offical Documentation

Official Docs: