250 lines
No EOL
8.7 KiB
JavaScript
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");
|
|
} |