Replaced settings functions with Settings class

This commit is contained in:
Dmitriy Simushev 2012-07-16 14:26:53 +00:00
parent 3929f26791
commit be696ee3da
37 changed files with 142 additions and 273 deletions

View File

@ -37,8 +37,7 @@ if(!$lang || !locale_exists($lang)) {
$groupid = verifyparam( "group", "/^\d{1,8}$/", ""); $groupid = verifyparam( "group", "/^\d{1,8}$/", "");
if($groupid) { if($groupid) {
loadsettings(); if(Settings::get('enablegroups') == '1') {
if($settings['enablegroups'] == '1') {
$group = group_by_id($groupid); $group = group_by_id($groupid);
if(!$group) { if(!$group) {
$groupid = ""; $groupid = "";

View File

@ -23,8 +23,7 @@ require_once('libs/expand.php');
require_once('libs/captcha.php'); require_once('libs/captcha.php');
require_once('libs/invitation.php'); require_once('libs/invitation.php');
loadsettings(); if(Settings::get('enablessl') == "1" && Settings::get('forcessl') == "1") {
if($settings['enablessl'] == "1" && $settings['forcessl'] == "1") {
if(!is_secure_request()) { if(!is_secure_request()) {
$requested = $_SERVER['PHP_SELF']; $requested = $_SERVER['PHP_SELF'];
if($_SERVER['REQUEST_METHOD'] == 'GET' && $_SERVER['QUERY_STRING']) { if($_SERVER['REQUEST_METHOD'] == 'GET' && $_SERVER['QUERY_STRING']) {
@ -47,7 +46,7 @@ if( !isset($_GET['token']) || !isset($_GET['thread']) ) {
$groupid = ""; $groupid = "";
$groupname = ""; $groupname = "";
$group = NULL; $group = NULL;
if($settings['enablegroups'] == '1') { if(Settings::get('enablegroups') == '1') {
$groupid = verifyparam( "group", "/^\d{1,8}$/", ""); $groupid = verifyparam( "group", "/^\d{1,8}$/", "");
if($groupid) { if($groupid) {
$group = group_by_id($groupid); $group = group_by_id($groupid);
@ -67,7 +66,7 @@ if( !isset($_GET['token']) || !isset($_GET['thread']) ) {
$email = getparam("email"); $email = getparam("email");
$referrer = urldecode(getparam("referrer")); $referrer = urldecode(getparam("referrer"));
if($settings['usercanchangename'] == "1" && isset($_POST['name'])) { if(Settings::get('usercanchangename') == "1" && isset($_POST['name'])) {
$newname = getparam("name"); $newname = getparam("name");
if($newname != $visitor['name']) { if($newname != $visitor['name']) {
$data = strtr(base64_encode(myiconv($webim_encoding,"utf-8",$newname)), '+/=', '-_,'); $data = strtr(base64_encode(myiconv($webim_encoding,"utf-8",$newname)), '+/=', '-_,');
@ -95,8 +94,8 @@ if( !isset($_GET['token']) || !isset($_GET['thread']) ) {
} }
$invitation_state = invitation_state($_SESSION['visitorid']); $invitation_state = invitation_state($_SESSION['visitorid']);
$visitor_is_invited = $settings['enabletracking'] && $invitation_state['invited'] && !$invitation_state['threadid']; $visitor_is_invited = Settings::get('enabletracking') && $invitation_state['invited'] && !$invitation_state['threadid'];
if($settings['enablepresurvey'] == '1' && !(isset($_POST['survey']) && $_POST['survey'] == 'on') && !$visitor_is_invited) { if(Settings::get('enablepresurvey') == '1' && !(isset($_POST['survey']) && $_POST['survey'] == 'on') && !$visitor_is_invited) {
$page = array(); $page = array();
setup_logo($group); setup_logo($group);
setup_survey($visitor['name'], $email, $groupid, $info, $referrer); setup_survey($visitor['name'], $email, $groupid, $info, $referrer);

View File

@ -295,7 +295,7 @@ function add_canned_messages($link){
function check_status() function check_status()
{ {
global $page, $webimroot, $settings, $dbversion; global $page, $webimroot, $dbversion;
$page['done'][] = getlocal2("install.0.php", array(phpversion())); $page['done'][] = getlocal2("install.0.php", array(phpversion()));
@ -343,9 +343,8 @@ function check_status()
mysql_close($link); mysql_close($link);
loadsettings(); Settings::set('dbversion', $dbversion);
$settings['dbversion'] = $dbversion; Settings::update();
update_settings();
} }
check_status(); check_status();

View File

@ -46,8 +46,7 @@ function store_message($name, $email, $info, $message,$groupid,$referrer) {
$groupid = ""; $groupid = "";
$groupname = ""; $groupname = "";
$group = NULL; $group = NULL;
loadsettings(); if(Settings::get('enablegroups') == '1') {
if($settings['enablegroups'] == '1') {
$groupid = verifyparam( "group", "/^\d{1,8}$/", ""); $groupid = verifyparam( "group", "/^\d{1,8}$/", "");
if($groupid) { if($groupid) {
$group = group_by_id($groupid); $group = group_by_id($groupid);
@ -77,7 +76,7 @@ if( !$email ) {
} }
} }
if($settings["enablecaptcha"] == "1" && can_show_captcha()) { if(Settings::get("enablecaptcha") == "1" && can_show_captcha()) {
$captcha = getparam('captcha'); $captcha = getparam('captcha');
$original = isset($_SESSION["mibew_captcha"]) ? $_SESSION["mibew_captcha"] : ""; $original = isset($_SESSION["mibew_captcha"]) ? $_SESSION["mibew_captcha"] : "";
if(empty($original) || empty($captcha) || $captcha != $original) { if(empty($original) || empty($captcha) || $captcha != $original) {
@ -93,7 +92,7 @@ if( count($errors) > 0 ) {
exit; exit;
} }
$message_locale = $settings['left_messages_locale']; $message_locale = Settings::get('left_messages_locale');
if(!locale_exists($message_locale)) { if(!locale_exists($message_locale)) {
$message_locale = $home_locale; $message_locale = $home_locale;
} }
@ -115,7 +114,7 @@ if (isset($group) && !empty($group['vcemail'])) {
} }
if (empty($inbox_mail)) { if (empty($inbox_mail)) {
$inbox_mail = $settings['email']; $inbox_mail = Settings::get('email');
} }
if($inbox_mail) { if($inbox_mail) {

View File

@ -175,7 +175,7 @@ function get_messages($threadid, $meth, $isuser, &$lastid)
function print_thread_messages($thread, $token, $lastid, $isuser, $format, $agentid = null) function print_thread_messages($thread, $token, $lastid, $isuser, $format, $agentid = null)
{ {
global $webim_encoding, $webimroot, $connection_timeout, $settings; global $webim_encoding, $webimroot, $connection_timeout;
$threadid = $thread['threadid']; $threadid = $thread['threadid'];
$istyping = abs($thread['current'] - $thread[$isuser ? "lpagent" : "lpuser"]) < $connection_timeout $istyping = abs($thread['current'] - $thread[$isuser ? "lpagent" : "lpuser"]) < $connection_timeout
&& $thread[$isuser ? "agentTyping" : "userTyping"] == "1" ? "1" : "0"; && $thread[$isuser ? "agentTyping" : "userTyping"] == "1" ? "1" : "0";
@ -190,7 +190,6 @@ function print_thread_messages($thread, $token, $lastid, $isuser, $format, $agen
} }
print("</thread>"); print("</thread>");
} else if ($format == "html") { } else if ($format == "html") {
loadsettings();
$output = get_messages($threadid, "html", $isuser, $lastid); $output = get_messages($threadid, "html", $isuser, $lastid);
start_html_output(); start_html_output();
@ -200,7 +199,7 @@ function print_thread_messages($thread, $token, $lastid, $isuser, $format, $agen
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">" . "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">" .
"<html>\n<head>\n" . "<html>\n<head>\n" .
"<link href=\"$webimroot/styles/default/chat.css\" rel=\"stylesheet\" type=\"text/css\">\n" . "<link href=\"$webimroot/styles/default/chat.css\" rel=\"stylesheet\" type=\"text/css\">\n" .
"<meta http-equiv=\"Refresh\" content=\"" . $settings['updatefrequency_oldchat'] . "; URL=$url&amp;sn=11\">\n" . "<meta http-equiv=\"Refresh\" content=\"" . Settings::get('updatefrequency_oldchat') . "; URL=$url&amp;sn=11\">\n" .
"<meta http-equiv=\"Pragma\" content=\"no-cache\">\n" . "<meta http-equiv=\"Pragma\" content=\"no-cache\">\n" .
"<title>chat</title>\n" . "<title>chat</title>\n" .
"</head>\n" . "</head>\n" .
@ -219,11 +218,13 @@ function print_thread_messages($thread, $token, $lastid, $isuser, $format, $agen
function get_user_name($username, $addr, $id) function get_user_name($username, $addr, $id)
{ {
global $settings; return str_replace(
loadsettings(); "{addr}", $addr,
return str_replace("{addr}", $addr, str_replace(
str_replace("{id}", $id, "{id}", $id,
str_replace("{name}", $username, $settings['usernamepattern']))); str_replace("{name}", $username, Settings::get('usernamepattern'))
)
);
} }
function is_ajax_browser($browserid, $ver, $useragent) function is_ajax_browser($browserid, $ver, $useragent)
@ -306,27 +307,26 @@ function needsFramesrc()
function setup_logo($group = NULL) function setup_logo($group = NULL)
{ {
global $page, $settings; global $page;
loadsettings();
$toplevelgroup = (!$group)?array():get_top_level_group($group); $toplevelgroup = (!$group)?array():get_top_level_group($group);
$page['ct.company.name'] = topage(empty($toplevelgroup['vctitle'])?$settings['title']:$toplevelgroup['vctitle']); $page['ct.company.name'] = topage(empty($toplevelgroup['vctitle'])?Settings::get('title'):$toplevelgroup['vctitle']);
$page['ct.company.chatLogoURL'] = topage(empty($toplevelgroup['vclogo'])?$settings['logo']:$toplevelgroup['vclogo']); $page['ct.company.chatLogoURL'] = topage(empty($toplevelgroup['vclogo'])?Settings::get('logo'):$toplevelgroup['vclogo']);
$page['webimHost'] = topage(empty($toplevelgroup['vchosturl'])?$settings['hosturl']:$toplevelgroup['vchosturl']); $page['webimHost'] = topage(empty($toplevelgroup['vchosturl'])?Settings::get('hosturl'):$toplevelgroup['vchosturl']);
} }
function setup_leavemessage($name, $email, $message, $groupid, $groupname, $info, $referrer, $canshowcaptcha) function setup_leavemessage($name, $email, $message, $groupid, $groupname, $info, $referrer, $canshowcaptcha)
{ {
global $settings, $page; global $page;
$page['formname'] = topage($name); $page['formname'] = topage($name);
$page['formemail'] = topage($email); $page['formemail'] = topage($email);
$page['formmessage'] = $message ? topage($message) : ""; $page['formmessage'] = $message ? topage($message) : "";
$page['showcaptcha'] = $settings["enablecaptcha"] == "1" && $canshowcaptcha ? "1" : ""; $page['showcaptcha'] = Settings::get("enablecaptcha") == "1" && $canshowcaptcha ? "1" : "";
$page['formgroupid'] = $groupid; $page['formgroupid'] = $groupid;
$page['formgroupname'] = $groupname; $page['formgroupname'] = $groupname;
$page['forminfo'] = topage($info); $page['forminfo'] = topage($info);
$page['referrer'] = urlencode(topage($referrer)); $page['referrer'] = urlencode(topage($referrer));
if ($settings['enablegroups'] == '1') { if (Settings::get('enablegroups') == '1') {
$groups = setup_groups_select($groupid, false); $groups = setup_groups_select($groupid, false);
if ($groups) { if ($groups) {
$page['groups'] = $groups['select']; $page['groups'] = $groups['select'];
@ -339,7 +339,7 @@ function setup_leavemessage($name, $email, $message, $groupid, $groupname, $info
function setup_survey($name, $email, $groupid, $info, $referrer) function setup_survey($name, $email, $groupid, $info, $referrer)
{ {
global $settings, $page; global $page;
$page['formname'] = topage($name); $page['formname'] = topage($name);
$page['formemail'] = topage($email); $page['formemail'] = topage($email);
@ -347,7 +347,7 @@ function setup_survey($name, $email, $groupid, $info, $referrer)
$page['forminfo'] = topage($info); $page['forminfo'] = topage($info);
$page['referrer'] = urlencode(topage($referrer)); $page['referrer'] = urlencode(topage($referrer));
if ($settings['enablegroups'] == '1' && $settings["surveyaskgroup"] == "1") { if (Settings::get('enablegroups') == '1' && Settings::get('surveyaskgroup') == '1') {
$groups = setup_groups_select($groupid, true); $groups = setup_groups_select($groupid, true);
if ($groups) { if ($groups) {
$page['groups'] = $groups['select']; $page['groups'] = $groups['select'];
@ -356,15 +356,13 @@ function setup_survey($name, $email, $groupid, $info, $referrer)
} }
} }
$page['showemail'] = $settings["surveyaskmail"] == "1" ? "1" : ""; $page['showemail'] = Settings::get("surveyaskmail") == "1" ? "1" : "";
$page['showmessage'] = $settings["surveyaskmessage"] == "1" ? "1" : ""; $page['showmessage'] = Settings::get("surveyaskmessage") == "1" ? "1" : "";
$page['showname'] = $settings['usercanchangename'] == "1" ? "1" : ""; $page['showname'] = Settings::get('usercanchangename') == "1" ? "1" : "";
} }
function setup_groups_select($groupid, $markoffline) function setup_groups_select($groupid, $markoffline)
{ {
global $settings;
$showgroups = ($groupid == '')?true:group_has_children($groupid); $showgroups = ($groupid == '')?true:group_has_children($groupid);
if (!$showgroups) { if (!$showgroups) {
return false; return false;
@ -384,7 +382,7 @@ function setup_groups_select($groupid, $markoffline)
if ($k['inumofagents'] == 0 || ($groupid && $k['parent'] != $groupid && $k['groupid'] != $groupid )) { if ($k['inumofagents'] == 0 || ($groupid && $k['parent'] != $groupid && $k['groupid'] != $groupid )) {
continue; continue;
} }
if ($k['ilastseen'] !== NULL && $k['ilastseen'] < $settings['online_timeout']) { if ($k['ilastseen'] !== NULL && $k['ilastseen'] < Settings::get('online_timeout')) {
if (!$selectedgroupid) { if (!$selectedgroupid) {
$selectedgroupid = $k['groupid']; // select first online group $selectedgroupid = $k['groupid']; // select first online group
} }
@ -408,8 +406,7 @@ function setup_groups_select($groupid, $markoffline)
function setup_chatview_for_user($thread, $level) function setup_chatview_for_user($thread, $level)
{ {
global $page, $webimroot, $settings; global $page, $webimroot;
loadsettings();
$page = array(); $page = array();
if (! empty($thread['groupid'])) { if (! empty($thread['groupid'])) {
$group = group_by_id($thread['groupid']); $group = group_by_id($thread['groupid']);
@ -427,12 +424,12 @@ function setup_chatview_for_user($thread, $level)
$page['ct.chatThreadId'] = $thread['threadid']; $page['ct.chatThreadId'] = $thread['threadid'];
$page['ct.token'] = $thread['ltoken']; $page['ct.token'] = $thread['ltoken'];
$page['ct.user.name'] = htmlspecialchars(topage($thread['userName'])); $page['ct.user.name'] = htmlspecialchars(topage($thread['userName']));
$page['canChangeName'] = $settings['usercanchangename'] == "1"; $page['canChangeName'] = Settings::get('usercanchangename') == "1";
$page['chat.title'] = topage(empty($group['vcchattitle'])?$settings['chattitle']:$group['vcchattitle']); $page['chat.title'] = topage(empty($group['vcchattitle'])?Settings::get('chattitle'):$group['vcchattitle']);
$page['chat.close.confirmation'] = getlocal('chat.close.confirmation'); $page['chat.close.confirmation'] = getlocal('chat.close.confirmation');
setup_logo($group); setup_logo($group);
if ($settings['sendmessagekey'] == 'enter') { if (Settings::get('sendmessagekey') == 'enter') {
$page['send_shortcut'] = "Enter"; $page['send_shortcut'] = "Enter";
$page['ignorectrl'] = 1; $page['ignorectrl'] = 1;
} else { } else {
@ -443,20 +440,19 @@ function setup_chatview_for_user($thread, $level)
$params = "thread=" . $thread['threadid'] . "&amp;token=" . $thread['ltoken']; $params = "thread=" . $thread['threadid'] . "&amp;token=" . $thread['ltoken'];
$page['mailLink'] = "$webimroot/client.php?" . $params . "&amp;level=$level&amp;act=mailthread"; $page['mailLink'] = "$webimroot/client.php?" . $params . "&amp;level=$level&amp;act=mailthread";
if ($settings['enablessl'] == "1" && !is_secure_request()) { if (Settings::get('enablessl') == "1" && !is_secure_request()) {
$page['sslLink'] = get_app_location(true, true) . "/client.php?" . $params . "&amp;level=$level"; $page['sslLink'] = get_app_location(true, true) . "/client.php?" . $params . "&amp;level=$level";
} }
$page['isOpera95'] = is_agent_opera95(); $page['isOpera95'] = is_agent_opera95();
$page['neediframesrc'] = needsFramesrc(); $page['neediframesrc'] = needsFramesrc();
$page['frequency'] = $settings['updatefrequency_chat']; $page['frequency'] = Settings::get('updatefrequency_chat');
} }
function setup_chatview_for_operator($thread, $operator) function setup_chatview_for_operator($thread, $operator)
{ {
global $page, $webimroot, $company_logo_link, $webim_encoding, $company_name, $settings; global $page, $webimroot, $company_logo_link, $webim_encoding, $company_name;
loadsettings();
$page = array(); $page = array();
if (! is_null($thread['groupid'])) { if (! is_null($thread['groupid'])) {
$group = group_by_id($thread['groupid']); $group = group_by_id($thread['groupid']);
@ -470,11 +466,11 @@ function setup_chatview_for_operator($thread, $operator)
$page['ct.chatThreadId'] = $thread['threadid']; $page['ct.chatThreadId'] = $thread['threadid'];
$page['ct.token'] = $thread['ltoken']; $page['ct.token'] = $thread['ltoken'];
$page['ct.user.name'] = htmlspecialchars(topage(get_user_name($thread['userName'], $thread['remote'], $thread['userid']))); $page['ct.user.name'] = htmlspecialchars(topage(get_user_name($thread['userName'], $thread['remote'], $thread['userid'])));
$page['chat.title'] = topage(empty($group['vcchattitle'])?$settings['chattitle']:$group['vcchattitle']); $page['chat.title'] = topage(empty($group['vcchattitle'])?Settings::get('chattitle'):$group['vcchattitle']);
$page['chat.close.confirmation'] = getlocal('chat.close.confirmation'); $page['chat.close.confirmation'] = getlocal('chat.close.confirmation');
setup_logo($group); setup_logo($group);
if ($settings['sendmessagekey'] == 'enter') { if (Settings::get('sendmessagekey') == 'enter') {
$page['send_shortcut'] = "Enter"; $page['send_shortcut'] = "Enter";
$page['ignorectrl'] = 1; $page['ignorectrl'] = 1;
} else { } else {
@ -482,14 +478,14 @@ function setup_chatview_for_operator($thread, $operator)
$page['ignorectrl'] = 0; $page['ignorectrl'] = 0;
} }
if ($settings['enablessl'] == "1" && !is_secure_request()) { if (Settings::get('enablessl') == "1" && !is_secure_request()) {
$page['sslLink'] = get_app_location(true, true) . "/operator/agent.php?thread=" . $thread['threadid'] . "&amp;token=" . $thread['ltoken']; $page['sslLink'] = get_app_location(true, true) . "/operator/agent.php?thread=" . $thread['threadid'] . "&amp;token=" . $thread['ltoken'];
} }
$page['isOpera95'] = is_agent_opera95(); $page['isOpera95'] = is_agent_opera95();
$page['neediframesrc'] = needsFramesrc(); $page['neediframesrc'] = needsFramesrc();
$page['historyParams'] = array("userid" => "" . $thread['userid']); $page['historyParams'] = array("userid" => "" . $thread['userid']);
$page['historyParamsLink'] = add_params($webimroot . "/operator/userhistory.php", $page['historyParams']); $page['historyParamsLink'] = add_params($webimroot . "/operator/userhistory.php", $page['historyParams']);
if ($settings['enabletracking']) { if (Settings::get('enabletracking')) {
$visitor = track_get_visitor_by_threadid($thread['threadid']); $visitor = track_get_visitor_by_threadid($thread['threadid']);
$page['trackedParams'] = array("visitor" => "" . $visitor['visitorid']); $page['trackedParams'] = array("visitor" => "" . $visitor['visitorid']);
$page['trackedParamsLink'] = add_params($webimroot . "/operator/tracked.php", $page['trackedParams']); $page['trackedParamsLink'] = add_params($webimroot . "/operator/tracked.php", $page['trackedParams']);
@ -512,7 +508,7 @@ function setup_chatview_for_operator($thread, $operator)
$page['redirectLink'] = "$webimroot/operator/agent.php?" . $params . "&amp;act=redirect"; $page['redirectLink'] = "$webimroot/operator/agent.php?" . $params . "&amp;act=redirect";
$page['namePostfix'] = ""; $page['namePostfix'] = "";
$page['frequency'] = $settings['updatefrequency_chat']; $page['frequency'] = Settings::get('updatefrequency_chat');
} }
function update_thread_access($threadid, $params) function update_thread_access($threadid, $params)
@ -619,8 +615,8 @@ function close_thread($thread, $isuser)
function close_old_threads() function close_old_threads()
{ {
global $state_closed, $state_left, $state_chatting, $settings; global $state_closed, $state_left, $state_chatting;
if ($settings['thread_lifetime'] == 0) { if (Settings::get('thread_lifetime') == 0) {
return; return;
} }
@ -641,7 +637,7 @@ function close_old_threads()
':next_revision' => next_revision(), ':next_revision' => next_revision(),
':state_closed' => $state_closed, ':state_closed' => $state_closed,
':state_left' => $state_left, ':state_left' => $state_left,
':thread_lifetime' => $settings['thread_lifetime'] ':thread_lifetime' => Settings::get('thread_lifetime')
) )
); );
} }
@ -721,14 +717,14 @@ function do_take_thread($threadid, $operatorId, $operatorName, $chatstart = fals
function reopen_thread($threadid) function reopen_thread($threadid)
{ {
global $state_queue, $state_loading, $state_waiting, $state_chatting, $state_closed, $state_left, $kind_events, $settings; global $state_queue, $state_loading, $state_waiting, $state_chatting, $state_closed, $state_left, $kind_events;
$thread = thread_by_id($threadid); $thread = thread_by_id($threadid);
if (!$thread) if (!$thread)
return FALSE; return FALSE;
if ($settings['thread_lifetime'] != 0 && abs($thread['lpuser'] - time()) > $settings['thread_lifetime'] && abs($thread['lpagent'] - time()) > $settings['thread_lifetime']) { if (Settings::get('thread_lifetime') != 0 && abs($thread['lpuser'] - time()) > Settings::get('thread_lifetime') && abs($thread['lpagent'] - time()) > Settings::get('thread_lifetime')) {
return FALSE; return FALSE;
} }
@ -806,8 +802,8 @@ function check_for_reassign($thread, $operator)
function check_connections_from_remote($remote) function check_connections_from_remote($remote)
{ {
global $settings, $state_closed, $state_left; global $state_closed, $state_left;
if ($settings['max_connections_from_one_host'] == 0) { if (Settings::get('max_connections_from_one_host') == 0) {
return true; return true;
} }
@ -820,7 +816,7 @@ function check_connections_from_remote($remote)
); );
if ($result && isset($result['opened'])) { if ($result && isset($result['opened'])) {
return $result['opened'] < $settings['max_connections_from_one_host']; return $result['opened'] < Settings::get('max_connections_from_one_host');
} }
return true; return true;
} }

View File

@ -64,6 +64,7 @@ Class Settings {
'logo' => '', 'logo' => '',
'usernamepattern' => '{name}', 'usernamepattern' => '{name}',
'chatstyle' => 'default', 'chatstyle' => 'default',
'invitationstyle' => 'default',
'chattitle' => 'Live Support', 'chattitle' => 'Live Support',
'geolink' => 'http://api.hostip.info/get_html.php?ip={ip}', 'geolink' => 'http://api.hostip.info/get_html.php?ip={ip}',
'geolinkparams' => 'width=440,height=100,toolbar=0,scrollbars=0,location=0,status=1,menubar=0,resizable=1', 'geolinkparams' => 'width=440,height=100,toolbar=0,scrollbars=0,location=0,status=1,menubar=0,resizable=1',

View File

@ -20,6 +20,7 @@ session_start();
require_once(dirname(__FILE__) . '/converter.php'); require_once(dirname(__FILE__) . '/converter.php');
require_once(dirname(__FILE__) . '/config.php'); require_once(dirname(__FILE__) . '/config.php');
require_once(dirname(__FILE__) . '/classes/database.php'); require_once(dirname(__FILE__) . '/classes/database.php');
require_once(dirname(__FILE__) . '/classes/settings.php');
$version = '1.6.5'; $version = '1.6.5';
$jsver = "165"; $jsver = "165";
@ -563,85 +564,13 @@ function date_to_text($unixtime)
$dbversion = '1.6.3'; $dbversion = '1.6.3';
$featuresversion = '1.6.4'; $featuresversion = '1.6.4';
$settings = array(
'dbversion' => 0,
'featuresversion' => 0,
'title' => 'Your Company',
'hosturl' => 'http://mibew.org',
'logo' => '',
'usernamepattern' => '{name}',
'chatstyle' => 'default',
'chattitle' => 'Live Support',
'geolink' => 'http://api.hostip.info/get_html.php?ip={ip}',
'geolinkparams' => 'width=440,height=100,toolbar=0,scrollbars=0,location=0,status=1,menubar=0,resizable=1',
'max_uploaded_file_size' => 100000,
'max_connections_from_one_host' => 10,
'thread_lifetime' => 600,
'email' => '', /* inbox for left messages */
'left_messages_locale' => $home_locale,
'sendmessagekey' => 'center',
'enableban' => '0',
'enablessl' => '0',
'forcessl' => '0',
'usercanchangename' => '1',
'enablegroups' => '0',
'enablegroupsisolation' => '0',
'enablestatistics' => '1',
'enabletracking' => '0',
'enablepresurvey' => '1',
'surveyaskmail' => '0',
'surveyaskgroup' => '1',
'surveyaskmessage' => '0',
'enablepopupnotification' => '0',
'showonlineoperators' => '0',
'enablecaptcha' => '0',
'online_timeout' => 30, /* Timeout (in seconds) when online operator becomes offline */
'updatefrequency_operator' => 2,
'updatefrequency_chat' => 2,
'updatefrequency_oldchat' => 7,
'updatefrequency_tracking' => 10,
'visitors_limit' => 20, /* Number of visitors to look over */
'invitation_lifetime' => 60, /* Lifetime for invitation to chat */
'tracking_lifetime' => 600, /* Time to store tracked old visitors' data */
);
$settingsloaded = false;
$settings_in_db = array();
function loadsettings()
{
global $settingsloaded, $settings_in_db, $settings;
if ($settingsloaded) {
return;
}
$settingsloaded = true;
$db = Database::getInstance();
$rows = $db->query(
"select vckey,vcvalue from {chatconfig}",
NULL,
array('return_rows' => Database::RETURN_ALL_ROWS)
);
foreach ($rows as $row) {
$name = $row['vckey'];
$settings[$name] = $row['vcvalue'];
$settings_in_db[$name] = true;
}
}
function getchatstyle() function getchatstyle()
{ {
global $settings;
$chatstyle = verifyparam("style", "/^\w+$/", ""); $chatstyle = verifyparam("style", "/^\w+$/", "");
if ($chatstyle) { if ($chatstyle) {
return $chatstyle; return $chatstyle;
} }
loadsettings(); return Settings::get('chatstyle');
return $settings['chatstyle'];
} }
function jspath() function jspath()

View File

@ -27,8 +27,7 @@ function demo_print_message($msg, $format)
function demo_process_thread($act, $outformat, $lastid, $isuser, $canpost, $istyping, $postmessage) function demo_process_thread($act, $outformat, $lastid, $isuser, $canpost, $istyping, $postmessage)
{ {
global $kind_for_agent, $kind_info, $kind_events, $kind_user, $kind_agent, $webimroot, $settings; global $kind_for_agent, $kind_info, $kind_events, $kind_user, $kind_agent, $webimroot;
loadsettings();
if ($act == "refresh" || $act == "post") { if ($act == "refresh" || $act == "post") {
$lastid++; $lastid++;
if ($outformat == "xml") { if ($outformat == "xml") {
@ -42,7 +41,7 @@ function demo_process_thread($act, $outformat, $lastid, $isuser, $canpost, $isty
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">" . "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">" .
"<html>\n<head>\n" . "<html>\n<head>\n" .
"<link href=\"$webimroot/styles/default/chat.css\" rel=\"stylesheet\" type=\"text/css\">\n" . "<link href=\"$webimroot/styles/default/chat.css\" rel=\"stylesheet\" type=\"text/css\">\n" .
"<meta http-equiv=\"Refresh\" content=\"" . $settings['updatefrequency_oldchat'] . "; URL=$url&amp;sn=11\">\n" . "<meta http-equiv=\"Refresh\" content=\"" . Settings::get('updatefrequency_oldchat') . "; URL=$url&amp;sn=11\">\n" .
"<meta http-equiv=\"Pragma\" content=\"no-cache\">\n" . "<meta http-equiv=\"Pragma\" content=\"no-cache\">\n" .
"<title>chat</title>\n" . "<title>chat</title>\n" .
"</head>\n" . "</head>\n" .

View File

@ -17,7 +17,6 @@
function generate_button($title, $locale, $style, $invitationstyle, $group, $inner, $showhost, $forcesecure, $modsecurity) function generate_button($title, $locale, $style, $invitationstyle, $group, $inner, $showhost, $forcesecure, $modsecurity)
{ {
global $settings;
$link = get_app_location($showhost, $forcesecure) . "/client.php"; $link = get_app_location($showhost, $forcesecure) . "/client.php";
if ($locale) if ($locale)
$link = append_query($link, "locale=$locale"); $link = append_query($link, "locale=$locale");
@ -30,14 +29,14 @@ function generate_button($title, $locale, $style, $invitationstyle, $group, $inn
$jslink = append_query("'" . $link, "url='+escape(document.location.href$modsecfix)+'&amp;referrer='+escape(document.referrer$modsecfix)"); $jslink = append_query("'" . $link, "url='+escape(document.location.href$modsecfix)+'&amp;referrer='+escape(document.referrer$modsecfix)");
$temp = get_popup($link, "$jslink", $temp = get_popup($link, "$jslink",
$inner, $title, "webim", "toolbar=0,scrollbars=0,location=0,status=1,menubar=0,width=640,height=480,resizable=1"); $inner, $title, "webim", "toolbar=0,scrollbars=0,location=0,status=1,menubar=0,width=640,height=480,resizable=1");
if ($settings['enabletracking']) { if (Settings::get('enabletracking')) {
$temp = preg_replace('/^(<a )/', '\1id="mibewAgentButton" ', $temp); $temp = preg_replace('/^(<a )/', '\1id="mibewAgentButton" ', $temp);
$temp .= '<div id="mibewinvitation"></div><script type="text/javascript">var mibewInviteStyle = \'@import url('; $temp .= '<div id="mibewinvitation"></div><script type="text/javascript">var mibewInviteStyle = \'@import url(';
$temp .= get_app_location($showhost, $forcesecure); $temp .= get_app_location($showhost, $forcesecure);
$temp .= '/styles/invitations/'; $temp .= '/styles/invitations/';
$temp .= ($invitationstyle?$invitationstyle:(array_key_exists('invitationstyle', $settings)?$settings['invitationstyle']:'default')); $temp .= ($invitationstyle?$invitationstyle:(Settings::get('invitationstyle')));
$temp .= '/invite.css);\'; var mibewRequestTimeout = '; $temp .= '/invite.css);\'; var mibewRequestTimeout = ';
$temp .= $settings['updatefrequency_tracking']; $temp .= Settings::get('updatefrequency_tracking');
$temp .= '*1000; var mibewRequestUrl = \''; $temp .= '*1000; var mibewRequestUrl = \'';
$temp .= get_app_location($showhost, $forcesecure); $temp .= get_app_location($showhost, $forcesecure);
$temp .= '/request.php?entry=\' + escape(document.referrer) + \'&lang=ru\'</script><script type="text/javascript" src="'; $temp .= '/request.php?entry=\' + escape(document.referrer) + \'&lang=ru\'</script><script type="text/javascript" src="';

View File

@ -37,7 +37,7 @@ function get_group_name($group)
function setup_group_settings_tabs($gid, $active) function setup_group_settings_tabs($gid, $active)
{ {
global $page, $webimroot, $settings; global $page, $webimroot;
if ($gid) { if ($gid) {
$page['tabs'] = array( $page['tabs'] = array(
getlocal("page_group.tab.main") => $active != 0 ? "$webimroot/operator/group.php?gid=$gid" : "", getlocal("page_group.tab.main") => $active != 0 ? "$webimroot/operator/group.php?gid=$gid" : "",
@ -50,9 +50,8 @@ function setup_group_settings_tabs($gid, $active)
function get_operator_groupslist($operatorid) function get_operator_groupslist($operatorid)
{ {
global $settings;
$db = Database::getInstance(); $db = Database::getInstance();
if ($settings['enablegroups'] == '1') { if (Settings::get('enablegroups') == '1') {
$groupids = array(0); $groupids = array(0);
$allgroups = $db->query( $allgroups = $db->query(
"select groupid from {chatgroupoperator} where operatorid = ? order by groupid", "select groupid from {chatgroupoperator} where operatorid = ? order by groupid",

View File

@ -162,20 +162,17 @@ function get_operators_from_adjacent_groups($operator)
function operator_is_online($operator) function operator_is_online($operator)
{ {
global $settings; return $operator['time'] < Settings::get('online_timeout');
return $operator['time'] < $settings['online_timeout'];
} }
function operator_is_available($operator) function operator_is_available($operator)
{ {
global $settings; return $operator['istatus'] == 0 && $operator['time'] < Settings::get('online_timeout') ? "1" : "";
return $operator['istatus'] == 0 && $operator['time'] < $settings['online_timeout'] ? "1" : "";
} }
function operator_is_away($operator) function operator_is_away($operator)
{ {
global $settings; return $operator['istatus'] != 0 && $operator['time'] < Settings::get('online_timeout') ? "1" : "";
return $operator['istatus'] != 0 && $operator['time'] < $settings['online_timeout'] ? "1" : "";
} }
function operator_is_disabled($operator) function operator_is_disabled($operator)
@ -255,8 +252,6 @@ function notify_operator_alive($operatorid, $istatus)
function has_online_operators($groupid = "") function has_online_operators($groupid = "")
{ {
global $settings;
loadsettings();
$db = Database::getInstance(); $db = Database::getInstance();
$query = "select count(*) as total, min(unix_timestamp(CURRENT_TIMESTAMP)-unix_timestamp(dtmlastvisited)) as time from {chatoperator}"; $query = "select count(*) as total, min(unix_timestamp(CURRENT_TIMESTAMP)-unix_timestamp(dtmlastvisited)) as time from {chatoperator}";
@ -265,7 +260,7 @@ function has_online_operators($groupid = "")
"({chatgroup}.groupid = :groupid or {chatgroup}.parent = :groupid) and {chatoperator}.operatorid = " . "({chatgroup}.groupid = :groupid or {chatgroup}.parent = :groupid) and {chatoperator}.operatorid = " .
"{chatgroupoperator}.operatorid and istatus = 0"; "{chatgroupoperator}.operatorid and istatus = 0";
} else { } else {
if ($settings['enablegroups'] == 1) { if (Settings::get('enablegroups') == 1) {
$query .= ", {chatgroupoperator} where {chatoperator}.operatorid = " . $query .= ", {chatgroupoperator} where {chatoperator}.operatorid = " .
"{chatgroupoperator}.operatorid and istatus = 0"; "{chatgroupoperator}.operatorid and istatus = 0";
} else { } else {
@ -278,14 +273,11 @@ function has_online_operators($groupid = "")
array(':groupid'=>$groupid), array(':groupid'=>$groupid),
array('return_rows' => Database::RETURN_ONE_ROW) array('return_rows' => Database::RETURN_ONE_ROW)
); );
return $row['time'] < $settings['online_timeout'] && $row['total'] > 0; return $row['time'] < Settings::get('online_timeout') && $row['total'] > 0;
} }
function is_operator_online($operatorid) function is_operator_online($operatorid)
{ {
global $settings;
loadsettings();
$db = Database::getInstance(); $db = Database::getInstance();
$row = $db->query( $row = $db->query(
"select count(*) as total, " . "select count(*) as total, " .
@ -295,7 +287,7 @@ function is_operator_online($operatorid)
array('return_rows' => Database::RETURN_ONE_ROW) array('return_rows' => Database::RETURN_ONE_ROW)
); );
return $row['time'] < $settings['online_timeout'] && $row['total'] == 1; return $row['time'] < Settings::get('online_timeout') && $row['total'] == 1;
} }
function get_operator_name($operator) function get_operator_name($operator)
@ -384,8 +376,7 @@ function logout_operator()
function setup_redirect_links($threadid, $operator, $token) function setup_redirect_links($threadid, $operator, $token)
{ {
global $page, $webimroot, $settings; global $page, $webimroot;
loadsettings();
$operator_in_isolation = in_isolation($operator); $operator_in_isolation = in_isolation($operator);
@ -395,7 +386,7 @@ function setup_redirect_links($threadid, $operator, $token)
$groupscount = 0; $groupscount = 0;
$groups = array(); $groups = array();
if ($settings['enablegroups'] == "1") { if (Settings::get('enablegroups') == "1") {
$groupslist = $operator_in_isolation?get_groups_for_operator($operator, true):get_groups(true); $groupslist = $operator_in_isolation?get_groups_for_operator($operator, true):get_groups(true);
foreach ($groupslist as $group) { foreach ($groupslist as $group) {
if ($group['inumofagents'] == 0) { if ($group['inumofagents'] == 0) {
@ -417,7 +408,7 @@ function setup_redirect_links($threadid, $operator, $token)
$params = array('thread' => $threadid, 'token' => $token); $params = array('thread' => $threadid, 'token' => $token);
foreach ($operators as $agent) { foreach ($operators as $agent) {
$params['nextAgent'] = $agent['operatorid']; $params['nextAgent'] = $agent['operatorid'];
$status = $agent['time'] < $settings['online_timeout'] $status = $agent['time'] < Settings::get('online_timeout')
? ($agent['istatus'] == 0 ? ($agent['istatus'] == 0
? getlocal("char.redirect.operator.online_suff") ? getlocal("char.redirect.operator.online_suff")
: getlocal("char.redirect.operator.away_suff") : getlocal("char.redirect.operator.away_suff")
@ -431,13 +422,13 @@ function setup_redirect_links($threadid, $operator, $token)
$page['redirectToAgent'] = $agent_list; $page['redirectToAgent'] = $agent_list;
$group_list = ""; $group_list = "";
if ($settings['enablegroups'] == "1") { if (Settings::get('enablegroups') == "1") {
$params = array('thread' => $threadid, 'token' => $token); $params = array('thread' => $threadid, 'token' => $token);
foreach ($groups as $group) { foreach ($groups as $group) {
$params['nextGroup'] = $group['groupid']; $params['nextGroup'] = $group['groupid'];
$status = $group['ilastseen'] !== NULL && $group['ilastseen'] < $settings['online_timeout'] $status = $group['ilastseen'] !== NULL && $group['ilastseen'] < Settings::get('online_timeout')
? getlocal("char.redirect.operator.online_suff") ? getlocal("char.redirect.operator.online_suff")
: ($group['ilastseenaway'] !== NULL && $group['ilastseenaway'] < $settings['online_timeout'] : ($group['ilastseenaway'] !== NULL && $group['ilastseenaway'] < Settings::get('online_timeout')
? getlocal("char.redirect.operator.away_suff") ? getlocal("char.redirect.operator.away_suff")
: ""); : "");
$group_list .= "<li><a href=\"" . add_params($webimroot . "/operator/redirect.php", $params) . $group_list .= "<li><a href=\"" . add_params($webimroot . "/operator/redirect.php", $params) .
@ -473,19 +464,17 @@ function is_capable($perm, $operator)
function in_isolation($operator) function in_isolation($operator)
{ {
global $settings, $can_administrate; global $can_administrate;
loadsettings(); return (!is_capable($can_administrate, $operator) && Settings::get('enablegroups') && Settings::get('enablegroupsisolation'));
return (!is_capable($can_administrate, $operator) && $settings['enablegroups'] && $settings['enablegroupsisolation']);
} }
function prepare_menu($operator, $hasright = true) function prepare_menu($operator, $hasright = true)
{ {
global $page, $settings, $can_administrate; global $page, $can_administrate;
$page['operator'] = topage(get_operator_name($operator)); $page['operator'] = topage(get_operator_name($operator));
if ($hasright) { if ($hasright) {
loadsettings(); $page['showban'] = Settings::get('enableban') == "1";
$page['showban'] = $settings['enableban'] == "1"; $page['showstat'] = Settings::get('enablestatistics') == "1";
$page['showstat'] = $settings['enablestatistics'] == "1";
$page['showadmin'] = is_capable($can_administrate, $operator); $page['showadmin'] = is_capable($can_administrate, $operator);
$page['currentopid'] = $operator['operatorid']; $page['currentopid'] = $operator['operatorid'];
} }

View File

@ -17,8 +17,7 @@
function setup_operator_settings_tabs($opId, $active) function setup_operator_settings_tabs($opId, $active)
{ {
global $page, $webimroot, $settings; global $page, $webimroot;
loadsettings();
if ($opId) { if ($opId) {
$page['tabs'] = array( $page['tabs'] = array(

View File

@ -15,28 +15,16 @@
* limitations under the License. * limitations under the License.
*/ */
function update_settings()
{
global $settings, $settings_in_db;
$db = Database::getInstance();
foreach ($settings as $key => $value) {
if (!isset($settings_in_db[$key])) {
$db->query("insert into {chatconfig} (vckey) values (?)", array($key));
}
$db->query("update {chatconfig} set vcvalue=? where vckey=?", array($value, $key));
}
}
function setup_settings_tabs($active) function setup_settings_tabs($active)
{ {
global $settings, $page, $webimroot; global $page, $webimroot;
$page['tabs'] = array( $page['tabs'] = array(
getlocal("page_settings.tab.main") => $active != 0 ? "$webimroot/operator/settings.php" : "", getlocal("page_settings.tab.main") => $active != 0 ? "$webimroot/operator/settings.php" : "",
getlocal("page_settings.tab.features") => $active != 1 ? "$webimroot/operator/features.php" : "", getlocal("page_settings.tab.features") => $active != 1 ? "$webimroot/operator/features.php" : "",
getlocal("page_settings.tab.performance") => $active != 2 ? "$webimroot/operator/performance.php" : "", getlocal("page_settings.tab.performance") => $active != 2 ? "$webimroot/operator/performance.php" : "",
getlocal("page_settings.tab.themes") => $active != 3 ? "$webimroot/operator/themes.php" : "", getlocal("page_settings.tab.themes") => $active != 3 ? "$webimroot/operator/themes.php" : "",
); );
if ($settings['enabletracking']) { if (Settings::get('enabletracking')) {
$page['tabs'][getlocal("page_settings.tab.invitationthemes")] = ($active != 4 ? "$webimroot/operator/invitationthemes.php" : ""); $page['tabs'][getlocal("page_settings.tab.invitationthemes")] = ($active != 4 ? "$webimroot/operator/invitationthemes.php" : "");
} }
} }

View File

@ -29,12 +29,12 @@ function get_statistics_query($type)
function setup_statistics_tabs($active) function setup_statistics_tabs($active)
{ {
global $settings, $page, $webimroot; global $page, $webimroot;
$page['tabs'] = array( $page['tabs'] = array(
getlocal("report.bydate.title") => $active != 0 ? "$webimroot/operator/statistics.php".get_statistics_query('bydate') : "", getlocal("report.bydate.title") => $active != 0 ? "$webimroot/operator/statistics.php".get_statistics_query('bydate') : "",
getlocal("report.byoperator.title") => $active != 1 ? "$webimroot/operator/statistics.php".get_statistics_query('byagent') : "" getlocal("report.byoperator.title") => $active != 1 ? "$webimroot/operator/statistics.php".get_statistics_query('byagent') : ""
); );
if ($settings['enabletracking']) { if (Settings::get('enabletracking')) {
$page['tabs'][getlocal("report.bypage.title")] = ($active != 2 ? "$webimroot/operator/statistics.php".get_statistics_query('bypage') : ""); $page['tabs'][getlocal("report.bypage.title")] = ($active != 2 ? "$webimroot/operator/statistics.php".get_statistics_query('bypage') : "");
} }
} }

View File

@ -47,10 +47,16 @@ function get_useragent_version($userAgent)
function get_user_addr($addr) function get_user_addr($addr)
{ {
global $settings; if (Settings::get('geolink') && preg_match("/(\\d+\\.\\d+\\.\\d+\\.\\d+)/", $addr, $matches)) {
if ($settings['geolink'] && preg_match("/(\\d+\\.\\d+\\.\\d+\\.\\d+)/", $addr, $matches)) {
$userip = $matches[1]; $userip = $matches[1];
return get_popup(str_replace("{ip}", $userip, $settings['geolink']), '', htmlspecialchars($addr), "GeoLocation", "ip$userip", $settings['geolinkparams']); return get_popup(
str_replace("{ip}", $userip, Settings::get('geolink')),
'',
htmlspecialchars($addr),
"GeoLocation",
"ip$userip",
Settings::get('geolinkparams')
);
} }
return htmlspecialchars($addr); return htmlspecialchars($addr);
} }

View File

@ -58,10 +58,8 @@ foreach( $output as $msg ) {
$history .= $msg; $history .= $msg;
} }
loadsettings();
$subject = getstring("mail.user.history.subject"); $subject = getstring("mail.user.history.subject");
$body = getstring2("mail.user.history.body", array($thread['userName'],$history,$settings['title'],$settings['hosturl']) ); $body = getstring2("mail.user.history.body", array($thread['userName'],$history,Settings::get('title'),Settings::get('hosturl')) );
webim_mail($email, $webim_mailbox, $subject, $body); webim_mail($email, $webim_mailbox, $subject, $body);

View File

@ -25,8 +25,7 @@ require_once('../libs/expand.php');
$operator = check_login(); $operator = check_login();
loadsettings(); if (Settings::get('enablessl') == "1" && Settings::get('forcessl') == "1") {
if ($settings['enablessl'] == "1" && $settings['forcessl'] == "1") {
if (!is_secure_request()) { if (!is_secure_request()) {
$requested = $_SERVER['PHP_SELF']; $requested = $_SERVER['PHP_SELF'];
if ($_SERVER['REQUEST_METHOD'] == 'GET' && $_SERVER['QUERY_STRING']) { if ($_SERVER['REQUEST_METHOD'] == 'GET' && $_SERVER['QUERY_STRING']) {

View File

@ -48,10 +48,9 @@ if (!$op) {
$ext = strtolower(substr($orig_filename, 1 + strrpos($orig_filename, "."))); $ext = strtolower(substr($orig_filename, 1 + strrpos($orig_filename, ".")));
$new_file_name = "$opId.$ext"; $new_file_name = "$opId.$ext";
loadsettings();
$file_size = $_FILES['avatarFile']['size']; $file_size = $_FILES['avatarFile']['size'];
if ($file_size == 0 || $file_size > $settings['max_uploaded_file_size']) { if ($file_size == 0 || $file_size > Settings::get('max_uploaded_file_size')) {
$errors[] = failed_uploading_file($orig_filename, "errors.file.size.exceeded"); $errors[] = failed_uploading_file($orig_filename, "errors.file.size.exceeded");
} elseif (!in_array($ext, $valid_types)) { } elseif (!in_array($ext, $valid_types)) {
$errors[] = failed_uploading_file($orig_filename, "errors.invalid.file.type"); $errors[] = failed_uploading_file($orig_filename, "errors.invalid.file.type");

View File

@ -26,8 +26,6 @@ $operator = check_login();
force_password($operator); force_password($operator);
csrfchecktoken(); csrfchecktoken();
loadsettings();
$errors = array(); $errors = array();
$page = array(); $page = array();

View File

@ -22,7 +22,6 @@ require_once('../libs/pagination.php');
$operator = check_login(); $operator = check_login();
csrfchecktoken(); csrfchecktoken();
loadsettings();
$stringid = verifyparam("key", "/^\d{0,9}$/", ""); $stringid = verifyparam("key", "/^\d{0,9}$/", "");

View File

@ -34,22 +34,21 @@ $options = array(
'enablepopupnotification', 'showonlineoperators', 'enablepopupnotification', 'showonlineoperators',
'enablecaptcha'); 'enablecaptcha');
loadsettings(); if (Settings::get('featuresversion') != $featuresversion) {
if ($settings['featuresversion'] != $featuresversion) { Settings::set('featuresversion',$featuresversion);
$settings['featuresversion'] = $featuresversion; Settings::update();
update_settings();
} }
$params = array(); $params = array();
foreach ($options as $opt) { foreach ($options as $opt) {
$params[$opt] = $settings[$opt]; $params[$opt] = Settings::get($opt);
} }
if (isset($_POST['sent'])) { if (isset($_POST['sent'])) {
if (is_capable($can_administrate, $operator)) { if (is_capable($can_administrate, $operator)) {
foreach ($options as $opt) { foreach ($options as $opt) {
$settings[$opt] = verifyparam($opt, "/^on$/", "") == "on" ? "1" : "0"; Settings::set($opt,(verifyparam($opt, "/^on$/", "") == "on" ? "1" : "0"));
} }
update_settings(); Settings::update();
header("Location: $webimroot/operator/features.php?stored"); header("Location: $webimroot/operator/features.php?stored");
exit; exit;
} else { } else {

View File

@ -24,8 +24,6 @@ require_once('../libs/styles.php');
$operator = check_login(); $operator = check_login();
force_password($operator); force_password($operator);
loadsettings();
$imageLocales = get_image_locales_map("../locales"); $imageLocales = get_image_locales_map("../locales");
$image = verifyparam(isset($_GET['image']) ? "image" : "i", "/^\w+$/", "webim"); $image = verifyparam(isset($_GET['image']) ? "image" : "i", "/^\w+$/", "webim");
if (!isset($imageLocales[$image])) { if (!isset($imageLocales[$image])) {
@ -84,7 +82,7 @@ $page['formhostname'] = $showhost;
$page['formsecure'] = $forcesecure; $page['formsecure'] = $forcesecure;
$page['formmodsecurity'] = $modsecurity; $page['formmodsecurity'] = $modsecurity;
$page['enabletracking'] = $settings['enabletracking']; $page['enabletracking'] = Settings::get('enabletracking');
prepare_menu($operator); prepare_menu($operator);
start_html_output(); start_html_output();

View File

@ -44,14 +44,12 @@ if (isset($_GET['act']) && $_GET['act'] == 'del') {
function is_online($group) function is_online($group)
{ {
global $settings; return $group['ilastseen'] !== NULL && $group['ilastseen'] < Settings::get('online_timeout') ? "1" : "";
return $group['ilastseen'] !== NULL && $group['ilastseen'] < $settings['online_timeout'] ? "1" : "";
} }
function is_away($group) function is_away($group)
{ {
global $settings; return $group['ilastseenaway'] !== NULL && $group['ilastseenaway'] < Settings::get('online_timeout') ? "1" : "";
return $group['ilastseenaway'] !== NULL && $group['ilastseenaway'] < $settings['online_timeout'] ? "1" : "";
} }

View File

@ -24,8 +24,6 @@ require_once('../libs/pagination.php');
$operator = check_login(); $operator = check_login();
force_password($operator); force_password($operator);
loadsettings();
setlocale(LC_TIME, getstring("time.locale")); setlocale(LC_TIME, getstring("time.locale"));
$page = array(); $page = array();

View File

@ -21,17 +21,16 @@ require_once('../libs/operator.php');
$operator = check_login(); $operator = check_login();
force_password($operator); force_password($operator);
loadsettings();
$isonline = is_operator_online($operator['operatorid']); $isonline = is_operator_online($operator['operatorid']);
$page = array( $page = array(
'version' => $version, 'version' => $version,
'localeLinks' => get_locale_links("$webimroot/operator/index.php"), 'localeLinks' => get_locale_links("$webimroot/operator/index.php"),
'needUpdate' => $settings['dbversion'] != $dbversion, 'needUpdate' => Settings::get('dbversion') != $dbversion,
'needChangePassword' => $operator['vcpassword'] == md5(''), 'needChangePassword' => $operator['vcpassword'] == md5(''),
'profilePage' => "$webimroot/operator/operator.php?op=".$operator['operatorid'], 'profilePage' => "$webimroot/operator/operator.php?op=".$operator['operatorid'],
'updateWizard' => "$webimroot/install/", 'updateWizard' => "$webimroot/install/",
'newFeatures' => $settings['featuresversion'] != $featuresversion, 'newFeatures' => Settings::get('featuresversion') != $featuresversion,
'featuresPage' => "$webimroot/operator/features.php", 'featuresPage' => "$webimroot/operator/features.php",
'isOnline' => $isonline 'isOnline' => $isonline
); );

View File

@ -21,8 +21,6 @@ require_once('../libs/operator.php');
$operator = check_login(); $operator = check_login();
loadsettings();
$visitorid = verifyparam("visitor", "/^\d{1,8}$/"); $visitorid = verifyparam("visitor", "/^\d{1,8}$/");
$errors = array(); $errors = array();

View File

@ -21,8 +21,6 @@ require_once('../libs/operator.php');
$operator = check_login(); $operator = check_login();
loadsettings();
$visitorid = verifyparam("visitor", "/^\d{1,8}$/"); $visitorid = verifyparam("visitor", "/^\d{1,8}$/");
if (!invitation_invite($visitorid, $operator['operatorid'])) { if (!invitation_invite($visitorid, $operator['operatorid'])) {
@ -31,7 +29,7 @@ if (!invitation_invite($visitorid, $operator['operatorid'])) {
$page = array(); $page = array();
$page['visitor'] = $visitorid; $page['visitor'] = $visitorid;
$page['frequency'] = $settings['updatefrequency_operator']; $page['frequency'] = Settings::get('updatefrequency_operator');
start_html_output(); start_html_output();
require('../view/invite.php'); require('../view/invite.php');

View File

@ -31,10 +31,9 @@ $options = array(
'updatefrequency_tracking', 'visitors_limit', 'invitation_lifetime', 'updatefrequency_tracking', 'visitors_limit', 'invitation_lifetime',
'tracking_lifetime', 'thread_lifetime' ); 'tracking_lifetime', 'thread_lifetime' );
loadsettings();
$params = array(); $params = array();
foreach ($options as $opt) { foreach ($options as $opt) {
$params[$opt] = $settings[$opt]; $params[$opt] = Settings::get($opt);
} }
if (isset($_POST['onlinetimeout'])) { if (isset($_POST['onlinetimeout'])) {
@ -68,7 +67,7 @@ if (isset($_POST['onlinetimeout'])) {
$errors[] = getlocal("settings.wrong.threadlifetime"); $errors[] = getlocal("settings.wrong.threadlifetime");
} }
if ($settings['enabletracking']) { if (Settings::get('enabletracking')) {
$params['updatefrequency_tracking'] = getparam('frequencytracking'); $params['updatefrequency_tracking'] = getparam('frequencytracking');
if (!is_numeric($params['updatefrequency_tracking'])) { if (!is_numeric($params['updatefrequency_tracking'])) {
@ -94,9 +93,9 @@ if (isset($_POST['onlinetimeout'])) {
if (count($errors) == 0) { if (count($errors) == 0) {
foreach ($options as $opt) { foreach ($options as $opt) {
$settings[$opt] = $params[$opt]; Settings::set($opt,$params[$opt]);
} }
update_settings(); Settings::update();
header("Location: $webimroot/operator/performance.php?stored"); header("Location: $webimroot/operator/performance.php?stored");
exit; exit;
} }
@ -110,7 +109,7 @@ $page['formthreadlifetime'] = $params['thread_lifetime'];
$page['formonehostconnections'] = $params['max_connections_from_one_host']; $page['formonehostconnections'] = $params['max_connections_from_one_host'];
$page['formthreadlifetime'] = $params['thread_lifetime']; $page['formthreadlifetime'] = $params['thread_lifetime'];
if ($settings['enabletracking']) { if (Settings::get('enabletracking')) {
$page['formfrequencytracking'] = $params['updatefrequency_tracking']; $page['formfrequencytracking'] = $params['updatefrequency_tracking'];
$page['formvisitorslimit'] = $params['visitors_limit']; $page['formvisitorslimit'] = $params['visitors_limit'];
@ -119,7 +118,7 @@ if ($settings['enabletracking']) {
} }
$page['enabletracking'] = $settings['enabletracking']; $page['enabletracking'] = Settings::get('enabletracking');
$page['stored'] = isset($_GET['stored']); $page['stored'] = isset($_GET['stored']);

View File

@ -33,16 +33,14 @@ $options = array(
'email', 'title', 'logo', 'hosturl', 'usernamepattern', 'email', 'title', 'logo', 'hosturl', 'usernamepattern',
'chatstyle', 'chattitle', 'geolink', 'geolinkparams', 'sendmessagekey'); 'chatstyle', 'chattitle', 'geolink', 'geolinkparams', 'sendmessagekey');
loadsettings(); if (Settings::get('enabletracking')) {
if ($settings['enabletracking']) {
$options[] = 'invitationstyle'; $options[] = 'invitationstyle';
$invitationstylelist = get_style_list("../styles/invitations"); $invitationstylelist = get_style_list("../styles/invitations");
} }
$params = array(); $params = array();
foreach ($options as $opt) { foreach ($options as $opt) {
$params[$opt] = $settings[$opt]; $params[$opt] = Settings::get($opt);
} }
if (isset($_POST['email']) && isset($_POST['title']) && isset($_POST['logo'])) { if (isset($_POST['email']) && isset($_POST['title']) && isset($_POST['logo'])) {
@ -61,7 +59,7 @@ if (isset($_POST['email']) && isset($_POST['title']) && isset($_POST['logo'])) {
$params['chatstyle'] = $stylelist[0]; $params['chatstyle'] = $stylelist[0];
} }
if ($settings['enabletracking']) { if (Settings::get('enabletracking')) {
$params['invitationstyle'] = verifyparam("invitationstyle", "/^\w+$/", $params['invitationstyle']); $params['invitationstyle'] = verifyparam("invitationstyle", "/^\w+$/", $params['invitationstyle']);
if (!in_array($params['invitationstyle'], $invitationstylelist)) { if (!in_array($params['invitationstyle'], $invitationstylelist)) {
$params['invitationstyle'] = $invitationstylelist[0]; $params['invitationstyle'] = $invitationstylelist[0];
@ -82,9 +80,9 @@ if (isset($_POST['email']) && isset($_POST['title']) && isset($_POST['logo'])) {
if (count($errors) == 0) { if (count($errors) == 0) {
foreach ($options as $opt) { foreach ($options as $opt) {
$settings[$opt] = $params[$opt]; Settings::set($opt,$params[$opt]);
} }
update_settings(); Settings::update();
header("Location: $webimroot/operator/settings.php?stored"); header("Location: $webimroot/operator/settings.php?stored");
exit; exit;
} }
@ -102,9 +100,9 @@ $page['formchattitle'] = topage($params['chattitle']);
$page['formsendmessagekey'] = $params['sendmessagekey']; $page['formsendmessagekey'] = $params['sendmessagekey'];
$page['availableChatStyles'] = $stylelist; $page['availableChatStyles'] = $stylelist;
$page['stored'] = isset($_GET['stored']); $page['stored'] = isset($_GET['stored']);
$page['enabletracking'] = $settings['enabletracking']; $page['enabletracking'] = Settings::get('enabletracking');
if ($settings['enabletracking']) { if (Settings::get('enabletracking')) {
$page['forminvitationstyle'] = $params['invitationstyle']; $page['forminvitationstyle'] = $params['invitationstyle'];
$page['availableInvitationStyles'] = $invitationstylelist; $page['availableInvitationStyles'] = $invitationstylelist;
} }

View File

@ -48,7 +48,6 @@ if ($show == 'chat' || $show == 'mail' || $show == 'leavemessage' || $show == 'l
exit; exit;
} }
if ($show == 'survey') { if ($show == 'survey') {
loadsettings();
setup_survey("Visitor", "", "", "", "http://google.com"); setup_survey("Visitor", "", "", "", "http://google.com");
setup_logo(); setup_logo();
expand("../styles/dialogs", "$preview", "$show.tpl"); expand("../styles/dialogs", "$preview", "$show.tpl");

View File

@ -24,7 +24,6 @@ $operator = check_login();
$page = array(); $page = array();
loadsettings();
setlocale(LC_TIME, getstring("time.locale")); setlocale(LC_TIME, getstring("time.locale"));
function thread_info($id) function thread_info($id)

View File

@ -22,10 +22,9 @@ require_once('../libs/track.php');
$operator = check_login(); $operator = check_login();
loadsettings();
setlocale(LC_TIME, getstring("time.locale")); setlocale(LC_TIME, getstring("time.locale"));
if ($settings['enabletracking'] == "0") { if (Settings::get('enabletracking') == "0") {
die("Tracking disabled!"); die("Tracking disabled!");
} }

View File

@ -49,8 +49,7 @@ $threadstate_key = array(
function thread_to_xml($thread) function thread_to_xml($thread)
{ {
global $state_chatting, $threadstate_to_string, $threadstate_key, global $state_chatting, $threadstate_to_string, $threadstate_key,
$webim_encoding, $operator, $settings, $webim_encoding, $operator, $can_viewthreads, $can_takeover;
$can_viewthreads, $can_takeover;
$state = $threadstate_to_string[$thread['istate']]; $state = $threadstate_to_string[$thread['istate']];
$result = "<thread id=\"" . $thread['threadid'] . "\" stateid=\"$state\""; $result = "<thread id=\"" . $thread['threadid'] . "\" stateid=\"$state\"";
if ($state == "closed") if ($state == "closed")
@ -72,11 +71,11 @@ function thread_to_xml($thread)
&& is_capable($can_viewthreads, $operator)) { && is_capable($can_viewthreads, $operator)) {
$result .= " canview=\"true\""; $result .= " canview=\"true\"";
} }
if ($settings['enableban'] == "1") { if (Settings::get('enableban') == "1") {
$result .= " canban=\"true\""; $result .= " canban=\"true\"";
} }
$banForThread = $settings['enableban'] == "1" ? ban_for_addr($thread['remote']) : false; $banForThread = Settings::get('enableban') == "1" ? ban_for_addr($thread['remote']) : false;
if ($banForThread) { if ($banForThread) {
$result .= " ban=\"blocked\" banid=\"" . $banForThread['banid'] . "\""; $result .= " ban=\"blocked\" banid=\"" . $banForThread['banid'] . "\"";
} }
@ -116,7 +115,7 @@ function thread_to_xml($thread)
function print_pending_threads($groupids, $since) function print_pending_threads($groupids, $since)
{ {
global $webim_encoding, $settings, $state_closed, $state_left; global $webim_encoding, $state_closed, $state_left;
$db = Database::getInstance(); $db = Database::getInstance();
$revision = $since; $revision = $since;
@ -127,7 +126,7 @@ function print_pending_threads($groupids, $since)
($since <= 0 ($since <= 0
? "AND istate <> :state_closed AND istate <> :state_left " ? "AND istate <> :state_closed AND istate <> :state_left "
: "") . : "") .
($settings['enablegroups'] == '1' (Settings::get('enablegroups') == '1'
? "AND (groupid is NULL" . ($groupids ? "AND (groupid is NULL" . ($groupids
? " OR groupid IN ($groupids) OR groupid IN (SELECT parent FROM {chatgroup} WHERE groupid IN ($groupids)) " ? " OR groupid IN ($groupids) OR groupid IN (SELECT parent FROM {chatgroup} WHERE groupid IN ($groupids)) "
: "") . : "") .
@ -161,7 +160,7 @@ function print_pending_threads($groupids, $since)
function print_operators($operator) function print_operators($operator)
{ {
global $webim_encoding, $settings; global $webim_encoding;
echo "<operators>"; echo "<operators>";
$list_options = in_isolation($operator)?array('isolated_operator_id' => $operator['operatorid']):array(); $list_options = in_isolation($operator)?array('isolated_operator_id' => $operator['operatorid']):array();
@ -220,7 +219,7 @@ function visitor_to_xml($visitor)
function print_visitors() function print_visitors()
{ {
global $webim_encoding, $settings, $state_closed, $state_left; global $webim_encoding, $state_closed, $state_left;
$db = Database::getInstance(); $db = Database::getInstance();
@ -231,14 +230,14 @@ function print_visitors()
"AND (threadid IS NULL OR " . "AND (threadid IS NULL OR " .
"(SELECT count(*) FROM {chatthread} WHERE threadid = {chatsitevisitor}.threadid " . "(SELECT count(*) FROM {chatthread} WHERE threadid = {chatsitevisitor}.threadid " .
"AND istate <> {$state_closed} AND istate <> {$state_left}) = 0)", "AND istate <> {$state_closed} AND istate <> {$state_left}) = 0)",
array($settings['tracking_lifetime']) array(Settings::get('tracking_lifetime'))
); );
// Remove old invitations // Remove old invitations
$db->query( $db->query(
"UPDATE {chatsitevisitor} SET invited = 0, invitationtime = NULL, invitedby = NULL". "UPDATE {chatsitevisitor} SET invited = 0, invitationtime = NULL, invitedby = NULL".
" WHERE threadid IS NULL AND (UNIX_TIMESTAMP(CURRENT_TIMESTAMP) - UNIX_TIMESTAMP(invitationtime)) > ?", " WHERE threadid IS NULL AND (UNIX_TIMESTAMP(CURRENT_TIMESTAMP) - UNIX_TIMESTAMP(invitationtime)) > ?",
array($settings['invitation_lifetime']) array(Settings::get('invitation_lifetime'))
); );
// Remove associations of visitors with closed threads // Remove associations of visitors with closed threads
@ -252,7 +251,7 @@ function print_visitors()
$db->query( $db->query(
"DELETE FROM {visitedpage} WHERE (UNIX_TIMESTAMP(CURRENT_TIMESTAMP) - UNIX_TIMESTAMP(visittime)) > ? " . "DELETE FROM {visitedpage} WHERE (UNIX_TIMESTAMP(CURRENT_TIMESTAMP) - UNIX_TIMESTAMP(visittime)) > ? " .
" AND visitorid NOT IN (SELECT visitorid FROM {chatsitevisitor})", " AND visitorid NOT IN (SELECT visitorid FROM {chatsitevisitor})",
array($settings['tracking_lifetime']) array(Settings::get('tracking_lifetime'))
); );
$query = "SELECT visitorid, userid, username, unix_timestamp(firsttime), unix_timestamp(lasttime), " . $query = "SELECT visitorid, userid, username, unix_timestamp(firsttime), unix_timestamp(lasttime), " .
@ -260,7 +259,7 @@ function print_visitors()
"FROM {chatsitevisitor} " . "FROM {chatsitevisitor} " .
"WHERE threadid IS NULL " . "WHERE threadid IS NULL " .
"ORDER BY invited, lasttime DESC, invitations"; "ORDER BY invited, lasttime DESC, invitations";
$query .= ($settings['visitors_limit'] == '0') ? "" : " LIMIT " . $settings['visitors_limit']; $query .= (Settings::get('visitors_limit') == '0') ? "" : " LIMIT " . Settings::get('visitors_limit');
$rows = $db->query($query, NULL, array('return_rows' => Database::RETURN_ALL_ROWS)); $rows = $db->query($query, NULL, array('return_rows' => Database::RETURN_ALL_ROWS));
@ -282,7 +281,6 @@ $status = verifyparam("status", "/^\d{1,2}$/", 0);
$showonline = verifyparam("showonline", "/^1$/", 0); $showonline = verifyparam("showonline", "/^1$/", 0);
$showvisitors = verifyparam("showvisitors", "/^1$/", 0); $showvisitors = verifyparam("showvisitors", "/^1$/", 0);
loadsettings();
if (!isset($_SESSION["${mysqlprefix}operatorgroups"])) { if (!isset($_SESSION["${mysqlprefix}operatorgroups"])) {
$_SESSION["${mysqlprefix}operatorgroups"] = get_operator_groupslist($operator['operatorid']); $_SESSION["${mysqlprefix}operatorgroups"] = get_operator_groupslist($operator['operatorid']);
} }

View File

@ -22,7 +22,6 @@ require_once('../libs/userinfo.php');
require_once('../libs/pagination.php'); require_once('../libs/pagination.php');
$operator = check_login(); $operator = check_login();
loadsettings();
$page = array(); $page = array();

View File

@ -26,16 +26,15 @@ $status = isset($_GET['away']) ? 1 : 0;
notify_operator_alive($operator['operatorid'], $status); notify_operator_alive($operator['operatorid'], $status);
loadsettings();
$_SESSION["${mysqlprefix}operatorgroups"] = get_operator_groupslist($operator['operatorid']); $_SESSION["${mysqlprefix}operatorgroups"] = get_operator_groupslist($operator['operatorid']);
$page = array(); $page = array();
$page['havemenu'] = isset($_GET['nomenu']) ? "0" : "1"; $page['havemenu'] = isset($_GET['nomenu']) ? "0" : "1";
$page['showpopup'] = $settings['enablepopupnotification'] == '1' ? "1" : "0"; $page['showpopup'] = Settings::get('enablepopupnotification') == '1' ? "1" : "0";
$page['frequency'] = $settings['updatefrequency_operator']; $page['frequency'] = Settings::get('updatefrequency_operator');
$page['istatus'] = $status; $page['istatus'] = $status;
$page['showonline'] = $settings['showonlineoperators'] == '1' ? "1" : "0"; $page['showonline'] = Settings::get('showonlineoperators') == '1' ? "1" : "0";
$page['showvisitors'] = $settings['enabletracking'] == '1' ? "1" : "0"; $page['showvisitors'] = Settings::get('enabletracking') == '1' ? "1" : "0";
prepare_menu($operator); prepare_menu($operator);
start_html_output(); start_html_output();

View File

@ -21,11 +21,9 @@ require_once('libs/operator.php');
require_once('libs/track.php'); require_once('libs/track.php');
require_once('libs/request.php'); require_once('libs/request.php');
loadsettings();
$invited = FALSE; $invited = FALSE;
$operator = array(); $operator = array();
if ($settings['enabletracking'] == '1') { if (Settings::get('enabletracking') == '1') {
$entry = isset($_GET['entry']) ? $_GET['entry'] : ""; $entry = isset($_GET['entry']) ? $_GET['entry'] : "";
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ""; $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : "";

View File

@ -82,8 +82,7 @@ if( $act == "refresh" ) {
} else if( $act == "rename" ) { } else if( $act == "rename" ) {
loadsettings(); if( Settings::get('usercanchangename') != "1" ) {
if( $settings['usercanchangename'] != "1" ) {
show_error("server: forbidden to change name"); show_error("server: forbidden to change name");
} }