Name
sn_publications.PublicationsQueryProcessor
Description
Ajax helper for showing publicaitons listing.
Script
var PublicationsQueryProcessor = Class.create();
PublicationsQueryProcessor.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
fetchPublications: function() {
var query = this.getParameter("sysparm_query");
var limit = parseInt(this.getParameter("sysparm_limit")) || 20;
var offset = parseInt(this.getParameter("sysparm_offset")) || 0;
var unreadOnly = this.getParameter("sysparm_unread_only") == 'true';
var escapeHTML = this.getParameter("sysparm_escapeHTML") == 'true';
var pubGr = this._runQuery(query, limit, offset, unreadOnly);
var response = {result:[]};
if(unreadOnly) {
response.unreadCount = pubGr.getRowCount();
response.count = this._runQuery(query, limit, offset, false).getRowCount();
}else {
response.unreadCount = this._runQuery(query, limit, offset, true).getRowCount();
response.count = pubGr.getRowCount();
}
while(pubGr.next()) {
var pubUserM2mGr = new GlideRecord('sn_publications_publication_contact_m2m');
var userReadPublication = false;
pubUserM2mGr.addQuery('publication', pubGr.getUniqueValue());
pubUserM2mGr.addQuery('user', gs.getUserID());
pubUserM2mGr.query();
if(pubUserM2mGr.next()) {
userReadPublication = true;
}
var short_desc = pubGr.getValue('short_description');
if(escapeHTML){
short_desc = GlideStringUtil.escapeHTML(short_desc);
}
var pub = {
content: pubGr.getValue('content_type') == 'wiki' ? pubGr.getDisplayValue('wiki') : pubGr.getDisplayValue('text'),
sys_id: pubGr.getUniqueValue(),
category: pubGr.getDisplayValue('category'),
short_description: short_desc,
publish_date: pubGr.getDisplayValue('publish_date'),
expiry_date: pubGr.getDisplayValue('expiry_date'),
read_publication: userReadPublication
};
response.result.push(pub);
}
var json = new global.JSON();
return json.encode(response);
},
_runQuery: function(query, limit, offset, unreadOnly) {
var pubGr = new GlideRecord('sn_publications_publication');
if(query) {
pubGr.addEncodedQuery(query);
}
if(limit) {
pubGr.chooseWindow(offset, limit + offset, true);
gs.info("offset:"+offset);
gs.info("limit:"+limit);
}
if(unreadOnly) {
var subQuery = pubGr.addJoinQuery('sn_publications_publication_contact_m2m', 'sys_id', 'publication');
subQuery.addCondition("user", gs.getUserID());
subQuery.addCondition("viewed_article", false);
}
pubGr.query();
return pubGr;
}
});
Sys ID
fb3d2f56d70112004f1e82285e610331