Name
sn_grc.ContentScopingAjax
Description
General AJAX utilities for GRC
Script
var ContentScopingAjax = Class.create();
ContentScopingAjax.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
associateContentToProfileTypes: function() {
var m2m;
var contentId = this.getParameter('sysparm_contentId');
var contentName = this.getParameter('sysparm_contentName');
var selectedPTsIds = this.getParameter('sysparm_selectedPTsIds');
var selectedPTsList = selectedPTsIds.split(',');
for (var i = 0; i < selectedPTsList.length; i++) {
if (contentName == 'sn_compliance_policy_statement') {
m2m = new GlideRecord('sn_compliance_m2m_statement_profile_type');
m2m.sn_compliance_statement = contentId;
}
else if (contentName == 'sn_risk_definition') {
m2m = new GlideRecord('sn_risk_m2m_risk_definition_profile_type');
m2m.statement = contentId;
}
m2m.sn_grc_profile_type = selectedPTsList[i];
m2m.insert();
}
},
createProfileAndScope: function() {
var contentId = this.getParameter('sysparm_contentId');
var contentName = this.getParameter('sysparm_contentName');
var profileName = this.getParameter('sysparm_profile_name');
var owner = this.getParameter('sysparm_owner');
var table = this.getParameter('sysparm_table');
var appliesTo = this.getParameter('sysparm_applies_to');
// Create profile if it doesnt already exist
var profileId = this.createProfile(table, appliesTo, owner, profileName);
// Create profile type if it doesnt already exist
this.createProfileType(profileId, profileName, contentName, contentId);
return true;
},
createProfile: function(table, appliesTo, owner, profileName) {
var profileId = '';
var profile = new GlideRecord("sn_grc_profile");
profile.addQuery('table', table);
profile.addQuery('applies_to', appliesTo);
profile.setLimit(1);
profile.query();
if(profile.next())
profileId = profile.getUniqueValue();
else {
profile = new GlideRecord("sn_grc_profile");
profile.table = table;
profile.applies_to = appliesTo;
profile.owned_by = owner;
profile.name = profileName;
profileId = profile.insert();
}
return profileId;
},
createProfileType: function(profileId, profileName, contentName, contentId) {
var profileTypeId = '';
var profileType = new GlideRecord('sn_grc_profile_type');
if(profileType.get("name", profileName))
profileTypeId = profileType.getUniqueValue();
else {
profileType.name = profileName;
profileTypeId = profileType.insert();
}
var profileToProfileType = new GlideRecord('sn_grc_m2m_profile_profile_type');
profileToProfileType.profile = profileId;
profileToProfileType.profile_type = profileTypeId;
profileToProfileType.insert();
var contentToProfileType;
if (contentName == 'sn_compliance_policy_statement') {
contentToProfileType = new GlideRecord('sn_compliance_m2m_statement_profile_type');
contentToProfileType.sn_compliance_statement = contentId;
}
else if (contentName == 'sn_risk_definition') {
contentToProfileType = new GlideRecord('sn_risk_m2m_risk_definition_profile_type');
contentToProfileType.statement = contentId;
}
contentToProfileType.sn_grc_profile_type = profileTypeId;
contentToProfileType.insert();
},
type: 'ContentScopingAjax'
});
Sys ID
31be3ff8d7800300bbc783e80e6103c1