show group name on leave message page, pass group id and referrer through leavemessage, clear group if redirected to operator not from the group, improved leave message after survey

git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@625 c66351dc-e62f-0410-b875-e3a5c0b9693f
This commit is contained in:
Evgeny Gryaznov 2009-08-11 15:06:46 +00:00
parent d9870f6835
commit da0f99f530
7 changed files with 95 additions and 55 deletions

View File

@ -41,50 +41,34 @@ if($settings['enablessl'] == "1" && $settings['forcessl'] == "1") {
if( !isset($_GET['token']) || !isset($_GET['thread']) ) { if( !isset($_GET['token']) || !isset($_GET['thread']) ) {
$chatstyle = verifyparam( "style", "/^\w+$/", "");
$info = getgetparam('info');
$email = getgetparam('email');
$thread = NULL; $thread = NULL;
$firstmessage = NULL;
if( isset($_SESSION['threadid']) ) { if( isset($_SESSION['threadid']) ) {
$thread = reopen_thread($_SESSION['threadid']); $thread = reopen_thread($_SESSION['threadid']);
} }
if( !$thread ) { if( !$thread ) {
$groupid = ""; $groupid = "";
$groupname = "";
if($settings['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);
if(!$group) { if(!$group) {
$groupid = ""; $groupid = "";
} else {
$groupname = get_group_name($group);
} }
} }
} }
if(!has_online_operators($groupid)) {
$page = array();
setup_logo();
$page['formname'] = topage(getgetparam('name'));
$page['formemail'] = topage($email);
$page['showcaptcha'] = $settings["enablecaptcha"] == "1" && can_show_captcha() ? "1" : "";
$page['info'] = topage($info);
expand("styles", getchatstyle(), "leavemessage.tpl");
exit;
}
$visitor = visitor_from_request(); $visitor = visitor_from_request();
$referer = isset($_GET['url']) ? $_GET['url'] :
(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : "");
if(isset($_GET['referrer']) && $_GET['referrer']) {
$referer .= "\n".$_GET['referrer'];
}
if($settings['enablepresurvey'] == '1') {
if(isset($_POST['survey']) && $_POST['survey'] == 'on') { if(isset($_POST['survey']) && $_POST['survey'] == 'on') {
$firstmessage = getparam("message"); $firstmessage = getparam("message");
$info = getparam("info"); $info = getparam("info");
$email = getparam("email"); $email = getparam("email");
$referrer = urldecode(getparam("referrer"));
if($settings['usercanchangename'] == "1" && isset($_POST['name'])) { if($settings['usercanchangename'] == "1" && isset($_POST['name'])) {
$newname = getparam("name"); $newname = getparam("name");
if($newname != $visitor['name']) { if($newname != $visitor['name']) {
@ -93,14 +77,31 @@ if( !isset($_GET['token']) || !isset($_GET['thread']) ) {
$visitor['name'] = $newname; $visitor['name'] = $newname;
} }
} }
$referer = urldecode(getparam("referrer"));
} else { } else {
$firstmessage = NULL;
$info = getgetparam('info');
$email = getgetparam('email');
$referrer = isset($_GET['url']) ? $_GET['url'] :
(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : "");
if(isset($_GET['referrer']) && $_GET['referrer']) {
$referrer .= "\n".$_GET['referrer'];
}
}
if(!has_online_operators($groupid)) {
$page = array(); $page = array();
setup_logo(); setup_logo();
setup_survey($visitor['name'], $email, $groupid, $info, $referer); setup_leavemessage($visitor['name'],$email,$firstmessage,$groupid,$groupname,$info,$referrer,can_show_captcha());
expand("styles", getchatstyle(), "survey.tpl"); expand("styles", getchatstyle(), "leavemessage.tpl");
exit; exit;
} }
if($settings['enablepresurvey'] == '1' && !(isset($_POST['survey']) && $_POST['survey'] == 'on')) {
$page = array();
setup_logo();
setup_survey($visitor['name'], $email, $groupid, $info, $referrer);
expand("styles", getchatstyle(), "survey.tpl");
exit;
} }
$remoteHost = get_remote_host(); $remoteHost = get_remote_host();
@ -111,11 +112,11 @@ if( !isset($_GET['token']) || !isset($_GET['thread']) ) {
mysql_close($link); mysql_close($link);
die("number of connections from your IP is exceeded, try again later"); die("number of connections from your IP is exceeded, try again later");
} }
$thread = create_thread($groupid,$visitor['name'], $remoteHost, $referer,$current_locale,$visitor['id'], $userbrowser,$state_loading,$link); $thread = create_thread($groupid,$visitor['name'], $remoteHost, $referrer,$current_locale,$visitor['id'], $userbrowser,$state_loading,$link);
$_SESSION['threadid'] = $thread['threadid']; $_SESSION['threadid'] = $thread['threadid'];
if( $referer ) { if( $referrer ) {
post_message_($thread['threadid'],$kind_for_agent,getstring2('chat.came.from',array($referer)),$link); post_message_($thread['threadid'],$kind_for_agent,getstring2('chat.came.from',array($referrer)),$link);
} }
post_message_($thread['threadid'],$kind_info,getstring('chat.wait'),$link); post_message_($thread['threadid'],$kind_info,getstring('chat.wait'),$link);
if($email) { if($email) {
@ -133,6 +134,7 @@ if( !isset($_GET['token']) || !isset($_GET['thread']) ) {
$threadid = $thread['threadid']; $threadid = $thread['threadid'];
$token = $thread['ltoken']; $token = $thread['ltoken'];
$level = get_remote_level($_SERVER['HTTP_USER_AGENT']); $level = get_remote_level($_SERVER['HTTP_USER_AGENT']);
$chatstyle = verifyparam( "style", "/^\w+$/", "");
header("Location: $webimroot/client.php?thread=$threadid&token=$token&level=$level".($chatstyle ? "&style=$chatstyle" : "")); header("Location: $webimroot/client.php?thread=$threadid&token=$token&level=$level".($chatstyle ? "&style=$chatstyle" : ""));
exit; exit;
} }

View File

@ -22,19 +22,22 @@
require_once('libs/common.php'); require_once('libs/common.php');
require_once('libs/chat.php'); require_once('libs/chat.php');
require_once('libs/expand.php'); require_once('libs/expand.php');
require_once('libs/groups.php');
require_once('libs/captcha.php'); require_once('libs/captcha.php');
$errors = array(); $errors = array();
$page = array(); $page = array();
function store_message($name, $email, $info, $message) { function store_message($name, $email, $info, $message,$groupid,$referrer) {
global $state_left, $current_locale, $kind_for_agent, $kind_user; global $state_left, $current_locale, $kind_for_agent, $kind_user;
$groupid = 0;
$remoteHost = get_remote_host(); $remoteHost = get_remote_host();
$userbrowser = $_SERVER['HTTP_USER_AGENT']; $userbrowser = $_SERVER['HTTP_USER_AGENT'];
$visitor = visitor_from_request(); $visitor = visitor_from_request();
$link = connect(); $link = connect();
$thread = create_thread($groupid,$name,$remoteHost,"",$current_locale,$visitor['id'], $userbrowser,$state_left,$link); $thread = create_thread($groupid,$name,$remoteHost,$referrer,$current_locale,$visitor['id'], $userbrowser,$state_left,$link);
if( $referrer ) {
post_message_($thread['threadid'],$kind_for_agent,getstring2('chat.came.from',array($referrer)),$link);
}
if($email) { if($email) {
post_message_($thread['threadid'],$kind_for_agent,getstring2('chat.visitor.email',array($email)),$link); post_message_($thread['threadid'],$kind_for_agent,getstring2('chat.visitor.email',array($email)),$link);
} }
@ -45,10 +48,26 @@ function store_message($name, $email, $info, $message) {
mysql_close($link); mysql_close($link);
} }
$groupid = "";
$groupname = "";
loadsettings();
if($settings['enablegroups'] == '1') {
$groupid = verifyparam( "group", "/^\d{1,8}$/", "");
if($groupid) {
$group = group_by_id($groupid);
if(!$group) {
$groupid = "";
} else {
$groupname = get_group_name($group);
}
}
}
$email = getparam('email'); $email = getparam('email');
$visitor_name = getparam('name'); $visitor_name = getparam('name');
$message = getparam('message'); $message = getparam('message');
$info = getparam('info'); $info = getparam('info');
$referrer = urldecode(getparam("referrer"));
if( !$email ) { if( !$email ) {
$errors[] = no_field("form.field.email"); $errors[] = no_field("form.field.email");
@ -62,7 +81,6 @@ if( !$email ) {
} }
} }
loadsettings();
if($settings["enablecaptcha"] == "1" && can_show_captcha()) { if($settings["enablecaptcha"] == "1" && can_show_captcha()) {
$captcha = getparam('captcha'); $captcha = getparam('captcha');
$original = $_SESSION['captcha']; $original = $_SESSION['captcha'];
@ -73,11 +91,7 @@ if($settings["enablecaptcha"] == "1" && can_show_captcha()) {
} }
if( count($errors) > 0 ) { if( count($errors) > 0 ) {
$page['formname'] = topage($visitor_name); setup_leavemessage($visitor_name,$email,$message,$groupid,$groupname,$info,$referrer,can_show_captcha());
$page['formemail'] = $email;
$page['formmessage'] = topage($message);
$page['showcaptcha'] = $settings["enablecaptcha"] == "1" && can_show_captcha() ? "1" : "";
$page['info'] = topage($info);
setup_logo(); setup_logo();
expand("styles", getchatstyle(), "leavemessage.tpl"); expand("styles", getchatstyle(), "leavemessage.tpl");
exit; exit;
@ -88,7 +102,7 @@ if(!locale_exists($message_locale)) {
$message_locale = $home_locale; $message_locale = $home_locale;
} }
store_message($visitor_name, $email, $info, $message); store_message($visitor_name, $email, $info, $message, $groupid, $referrer);
$subject = getstring2_("leavemail.subject", array($visitor_name), $message_locale); $subject = getstring2_("leavemail.subject", array($visitor_name), $message_locale);
$body = getstring2_("leavemail.body", array($visitor_name,$email,$message,$info ? "$info\n" : ""), $message_locale); $body = getstring2_("leavemail.body", array($visitor_name,$email,$message,$info ? "$info\n" : ""), $message_locale);

View File

@ -280,6 +280,18 @@ function setup_logo() {
$page['webimHost'] = topage($settings['hosturl']); $page['webimHost'] = topage($settings['hosturl']);
} }
function setup_leavemessage($name, $email, $message, $groupid, $groupname, $info, $referrer,$canshowcaptcha) {
global $settings, $page;
$page['formname'] = topage($name);
$page['formemail'] = topage($email);
$page['formmessage'] = $message ? topage($message) : "";
$page['showcaptcha'] = $settings["enablecaptcha"] == "1" && $canshowcaptcha ? "1" : "";
$page['formgroupid'] = $groupid;
$page['formgroupname'] = $groupname;
$page['forminfo'] = topage($info);
$page['referrer'] = urlencode(topage($referrer));
}
function setup_survey($name, $email, $groupid, $info, $referrer) { function setup_survey($name, $email, $groupid, $info, $referrer) {
global $settings, $page; global $settings, $page;
@ -300,10 +312,11 @@ function setup_survey($name, $email, $groupid, $info, $referrer) {
continue; continue;
} }
if($k['ilastseen'] !== NULL && $k['ilastseen'] < $settings['online_timeout']) { if($k['ilastseen'] !== NULL && $k['ilastseen'] < $settings['online_timeout']) {
$groupname .= " (online)";
if(!$groupid) { if(!$groupid) {
$groupid = $k['groupid']; // select first online group $groupid = $k['groupid']; // select first online group
} }
} else {
$groupname .= " (offline)";
} }
$isselected = $k['groupid'] == $groupid; $isselected = $k['groupid'] == $groupid;
$val .= "<option value=\"".$k['groupid']."\"".($isselected ? " selected=\"selected\"" : "").">$groupname</option>"; $val .= "<option value=\"".$k['groupid']."\"".($isselected ? " selected=\"selected\"" : "").">$groupname</option>";

View File

@ -67,8 +67,13 @@ if(isset($_GET['nextGroup'])) {
$page['message'] = getlocal2("chat.redirected.content",array(topage(get_operator_name($nextOperator)))); $page['message'] = getlocal2("chat.redirected.content",array(topage(get_operator_name($nextOperator))));
if( $thread['istate'] == $state_chatting ) { if( $thread['istate'] == $state_chatting ) {
$link = connect(); $link = connect();
commit_thread( $threadid, $threadupdate = array("istate" => $state_waiting, "nextagent" => $nextid, "agentId" => 0);
array("istate" => $state_waiting, "nextagent" => $nextid, "agentId" => 0), $link); if($thread['groupid'] != 0) {
if(FALSE === select_one_row("select groupid from chatgroupoperator where operatorid = $nextid and groupid = ".$thread['groupid'], $link)) {
$threadupdate['groupid'] = 0;
}
}
commit_thread( $threadid, $threadupdate, $link);
post_message_($thread['threadid'], $kind_events, post_message_($thread['threadid'], $kind_events,
getstring2_("chat.status.operator.redirect", getstring2_("chat.status.operator.redirect",
array(get_operator_name($operator)),$thread['locale']), $link); array(get_operator_name($operator)),$thread['locale']), $link);

View File

@ -44,6 +44,8 @@
<form name="leaveMessageForm" method="post" action="${webimroot}/leavemessage.php"> <form name="leaveMessageForm" method="post" action="${webimroot}/leavemessage.php">
<input type="hidden" name="style" value="${styleid}"/> <input type="hidden" name="style" value="${styleid}"/>
<input type="hidden" name="info" value="${page:info}"/> <input type="hidden" name="info" value="${page:info}"/>
<input type="hidden" name="referrer" value="${page:referrer}"/>
${if:formgroupid}<input type="hidden" name="group" value="${form:groupid}"/>${endif:formgroupid}
<table width="100%" cellspacing="0" cellpadding="0" border="0"> <table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr> <tr>
<td valign="top" height="150" style="padding:5px"> <td valign="top" height="150" style="padding:5px">
@ -68,7 +70,7 @@
${endif:webimHost} ${endif:webimHost}
${endif:ct.company.chatLogoURL} ${endif:ct.company.chatLogoURL}
</td> </td>
<td nowrap="nowrap" style="padding-right:10px"><span style="font-size:16px;font-weight:bold;color:#525252">${msg:leavemessage.title}</span></td> <td nowrap="nowrap" style="padding-right:10px"><span style="font-size:16px;font-weight:bold;color:#525252">${if:formgroupname}${form:groupname}: ${endif:formgroupname}${msg:leavemessage.title}</span></td>
</tr> </tr>
</table> </table>
<table cellspacing="0" cellpadding="0" border="0" id="header" class="bg_domain"> <table cellspacing="0" cellpadding="0" border="0" id="header" class="bg_domain">

View File

@ -29,12 +29,14 @@
<form name="leaveMessageForm" method="post" action="${webimroot}/leavemessage.php"> <form name="leaveMessageForm" method="post" action="${webimroot}/leavemessage.php">
<input type="hidden" name="style" value="${styleid}"/> <input type="hidden" name="style" value="${styleid}"/>
<input type="hidden" name="info" value="${page:info}"/> <input type="hidden" name="info" value="${page:info}"/>
<input type="hidden" name="referrer" value="${page:referrer}"/>
${if:formgroupid}<input type="hidden" name="group" value="${form:groupid}"/>${endif:formgroupid}
<table width="100%" style="height:100%;" cellspacing="0" cellpadding="0" border="0"> <table width="100%" style="height:100%;" cellspacing="0" cellpadding="0" border="0">
<tr><td colspan="3" height="15"></td></tr> <tr><td colspan="3" height="15"></td></tr>
<tr> <tr>
<td height="40"></td> <td height="40"></td>
<td class="window"> <td class="window">
<h1>${msg:leavemessage.title}</h1> <h1>${if:formgroupname}${form:groupname}: ${endif:formgroupname}${msg:leavemessage.title}</h1>
</td> </td>
<td></td> <td></td>
</tr> </tr>

View File

@ -10,10 +10,12 @@
<form name="leaveMessageForm" method="post" action="${webimroot}/leavemessage.php"> <form name="leaveMessageForm" method="post" action="${webimroot}/leavemessage.php">
<input type="hidden" name="style" value="${styleid}"/> <input type="hidden" name="style" value="${styleid}"/>
<input type="hidden" name="info" value="${page:info}"/> <input type="hidden" name="info" value="${page:info}"/>
<input type="hidden" name="referrer" value="${page:referrer}"/>
${if:formgroupid}<input type="hidden" name="group" value="${form:groupid}"/>${endif:formgroupid}
<table cellpadding="0" cellspacing="5" border="0" width="100%"> <table cellpadding="0" cellspacing="5" border="0" width="100%">
<tr> <tr>
<td colspan="2"> <td colspan="2">
<h1>${msg:leavemessage.title}</h1> <h1>${if:formgroupname}${form:groupname}: ${endif:formgroupname}${msg:leavemessage.title}</h1>
</td> </td>
</tr> </tr>
<tr> <tr>