antville/code/SysMgr/objectFunctions.js
2003-11-23 18:48:45 +00:00

250 lines
No EOL
8.7 KiB
JavaScript

/**
* constructor-function
*/
function constructor() {
this.searchSites();
this.searchUsers();
this.searchSyslog();
}
/**
* function manipulates the sites-collection
*/
function searchSites(show, sort, order, keywords) {
// construct the sql-clause for manual subnodeRelation
var sql = "";
if (show == "1")
sql += "WHERE SITE_ISONLINE=1 AND SITE_ISBLOCKED=0 ";
else if (show == "2")
sql += "WHERE SITE_ISONLINE=0 AND SITE_ISBLOCKED=0 ";
else if (show == "3")
sql += "WHERE SITE_ISBLOCKED=1 ";
else if (show == "4")
sql += "WHERE SITE_ISTRUSTED=1 ";
if (keywords) {
// additional keywords are given, so we're using them
var kArray = stripTags(keywords).split(" ");
for (var i in kArray) {
var k = kArray[i];
sql += sql.length > 0 ? "AND " : "WHERE ";
sql += "(SITE_ALIAS LIKE '%" + k + "%' OR SITE_TITLE LIKE '%" + k + "%' OR SITE_TAGLINE LIKE '%" + k + "%') ";
}
}
if (!sort || sort == "0")
sql += "ORDER BY SITE_LASTUPDATE ";
else if (sort == "1")
sql += "ORDER BY SITE_CREATETIME ";
else if (sort == "2")
sql += "ORDER BY SITE_ALIAS ";
else if (sort == "3")
sql += "ORDER BY SITE_TITLE ";
if (!order || order == "0")
sql += "desc ";
else if (order == "1")
sql += "asc ";
// now do the actual search with a manual subnodeRelation
this.sites.subnodeRelation = sql;
return;
}
/**
* function manipulates the users-collection
*/
function searchUsers(show, sort, order, keywords) {
// construct the sql-clause for manual subnodeRelation
var sql = "";
if (show == "1")
sql += "WHERE USER_ISBLOCKED=1 ";
else if (show == "2")
sql += "WHERE USER_ISTRUSTED=1 ";
else if (show == "3")
sql += "WHERE USER_ISSYSADMIN=1 ";
if (keywords) {
// additional keywords are given, so we're using them
if (keywords.charAt(0) == "@") {
// searching for email-addresses
sql += sql.length > 0 ? "AND " : "WHERE ";
sql += "USER_EMAIL LIKE '%" + keywords + "%' ";
} else {
// doing normal keyword-search
var kArray = stripTags(keywords).split(" ");
for (var i in kArray) {
var k = kArray[i];
sql += sql.length > 0 ? "AND " : "WHERE ";
sql += "USER_NAME LIKE '%" + k + "%' ";
}
}
}
if (!sort || sort == "0")
sql += "ORDER BY USER_LASTVISIT ";
else if (sort == "1")
sql += "ORDER BY USER_REGISTERED ";
else if (sort == "2")
sql += "ORDER BY USER_NAME ";
if (!order || order == "0")
sql += "desc ";
else if (order == "1")
sql += "asc ";
// now do the actual search with a manual subnodeRelation
this.users.subnodeRelation = sql;
return;
}
/**
* function manipulates the syslogs-collection
*/
function searchSyslog(show, order, keywords) {
// construct the sql-clause for manual subnodeRelation
var sql = "";
if (show == "1")
sql += "WHERE SYSLOG_TYPE = 'site' ";
else if (show == "2")
sql += "WHERE SYSLOG_TYPE = 'user' ";
else if (show == "3")
sql += "WHERE SYSLOG_TYPE = 'system' ";
if (keywords) {
// additional keywords are given, so we're using them
var kArray = stripTags(keywords).split(" ");
for (var i in kArray) {
var k = kArray[i];
sql += sql.length > 0 ? "AND " : "WHERE ";
sql += "(SYSLOG_OBJECT LIKE '%" + k + "%' OR SYSLOG_ENTRY LIKE '%" + k + "%') ";
}
}
if (!order || order == "0")
sql += "ORDER BY SYSLOG_CREATETIME desc, SYSLOG_ID desc ";
else if (order == "1")
sql += "ORDER BY SYSLOG_CREATETIME asc, SYSLOG_ID asc ";
// now do the actual search with a manual subnodeRelation
this.syslogs.subnodeRelation = sql;
return;
}
/**
* function stores updated site-preferences
*/
function updateSite(param, admin) {
var site = this.sites.get(param.item);
if (!site)
throw new Exception("siteEditMissing");
var trust = parseInt(param.trusted, 10);
var block = parseInt(param.blocked, 10);
if (trust > site.trusted)
this.syslogs.add(new syslog("site", site.alias, "granted trust", admin));
else if (trust < site.trusted)
this.syslogs.add(new syslog("site", site.alias, "revoked trust", admin));
if (block > site.blocked)
this.syslogs.add(new syslog("site", site.alias, "blocked site", admin));
else if (block < site.blocked)
this.syslogs.add(new syslog("site", site.alias, "unblocked site", admin));
site.trusted = trust;
site.blocked = block;
return new Message("update");
}
/**
* function stores updated user
*/
function updateUser(param, admin) {
var u = this.users.get(param.item);
if (!u)
throw new Exception("userEditMissing");
if (u == admin)
throw new Exception("accountModifyOwn");
// check if this is an attempt to remove the last sysadmin
var sysadmin = parseInt(param.sysadmin, 10);
var trust = parseInt(param.trusted, 10);
var block = parseInt(param.blocked, 10);
if (u.sysadmin && this.sysadmins.size() == 1)
throw new Exception("adminDeleteLast");
else {
//logging
if (sysadmin > u.sysadmin)
this.syslogs.add(new syslog("user", u.name, "granted sysadmin-rights", admin));
else if (sysadmin < u.sysadmin)
this.syslogs.add(new syslog("user", u.name, "revoked sysadmin-rights", admin));
u.sysadmin = sysadmin;
}
if (trust > u.trusted)
this.syslogs.add(new syslog("user", u.name, "granted trust", admin));
else if (trust < u.trusted)
this.syslogs.add(new syslog("user", u.name, "revoked trust", admin));
if (block > u.blocked)
this.syslogs.add(new syslog("user", u.name, "blocked user", admin));
else if (block < u.blocked)
this.syslogs.add(new syslog("user", u.name, "unblocked user", admin));
u.trusted = trust;
u.blocked = block;
return new Message("update");
}
/**
* function checks if the system parameters are correct
*/
function evalSystemSetup(param, admin) {
root.sys_title = param.sys_title;
root.sys_url = evalURL(param.sys_url);
if (param.sys_frontSite) {
var s = root.get(param.sys_frontSite);
if (!s)
throw new Exception("systemFrontsiteMissing");
root.sys_frontSite = s;
} else
root.sys_frontSite = null;
// check system email
if (!param.sys_email)
throw new Exception("systemEmailMissing");
evalEmail(param.sys_email);
root.sys_email = param.sys_email;
// e-mail notification
root.sys_allowEmails = param.sys_allowEmails ? parseInt(param.sys_allowEmails, 10) : null;
// store selected locale in this.language and this.country
if (param.locale) {
var loc = param.locale.split("_");
root.sys_language = loc[0];
root.sys_country = loc.length == 2 ? loc[1] : null;
root.cache.locale = null;
}
root.sys_timezone = param.timezone;
root.cache.timezone = null;
// long dateformat
root.longdateformat = param.longdateformat ? param.longdateformat : null;
// short dateformat
root.shortdateformat = param.shortdateformat ? param.shortdateformat : null;
// allow file
root.sys_allowFiles = param.sys_allowFiles ? true : false;
// limiting site-creation
root.sys_limitNewSites = param.sys_limitNewSites ? parseInt(param.sys_limitNewSites, 10) : null;
root.sys_minMemberAge = param.sys_minMemberAge ? parseInt(param.sys_minMemberAge, 10) : null;
root.sys_minMemberSince = param.sys_minMemberSince ? param.sys_minMemberSince.toDate("yyyy-MM-dd HH:mm", root.getTimeZone()) : null;
root.sys_waitAfterNewSite = param.sys_waitAfterNewSite ? parseInt(param.sys_waitAfterNewSite, 10) : null;
// auto-cleanup
root.sys_enableAutoCleanup = param.sys_enableAutoCleanup ? true : false;
root.sys_startAtHour = parseInt(param.sys_startAtHour, 10);
// auto-block
root.sys_blockPrivateSites = param.sys_blockPrivateSites ? true : false;
root.sys_blockWarningAfter = param.sys_blockWarningAfter ? parseInt(param.sys_blockWarningAfter, 10) : null;
root.sys_blockAfterWarning = param.sys_blockAfterWarning ? parseInt(param.sys_blockAfterWarning, 10) : null;
// auto-removal
root.sys_deleteInactiveSites = param.sys_deleteInactiveSites ? true : false;
root.sys_deleteWarningAfter = param.sys_deleteWarningAfter ? parseInt(param.sys_deleteWarningAfter, 10) : null;
root.sys_deleteAfterWarning = param.sys_deleteAfterWarning ? parseInt(param.sys_deleteAfterWarning, 10) : null;
// set the default layout
if (param.layout)
root.layouts.setDefaultLayout(param.layout);
// add a new entry in system-log
this.syslogs.add(new syslog("system", null, "changed system setup", session.user));
// everything fine, so we assign true to root.sys_issetup
root.sys_issetup = true;
return new Message("systemUpdate");
}