Mibew Messenger Community
Contributions => Plugins, tips, and tricks => Topic started by: simplyfat on May 20, 2009, 03:08:32 AM
-
i have two companies with one common backoffice/callcenter. there is no obvious relation between these two, so customers of company 1 should not see company name 2 in the live chat window and vice versa. the operators should not have to login into seperate consoles for each companies.
so here is my hack:
1) create a file called "custom.php" somewhere
function text_verwursten($key, $val, $locale) {
$company = getCompanyDetails();
switch ($key) {
case 'chat.window.title.agent': case 'chat.window.title.user': case 'site.title':
return $company['name'];
case 'mail.user.history.subject':
return $company['name'] . ': ' . ($locale == 'de' ? 'Chat-Protokoll' : 'dialog history');
case 'site.url':
return $company['url'];
default:
return $val;
}
}
function settings_verwursten($key, $val) {
$company = getCompanyDetails();
switch ($key) {
case 'hosturl':
return $company['url'];
case 'title':
return $company['name'];
case 'logo':
return $company['logo'];
case 'email':
return $company['email'];
case 'chattitle':
return $company['name'] . ' ' . $val;
default:
return $val;
}
}
function getCompanyDetails() {
$ret = array();
switch ($_SERVER['SERVER_NAME']) {
case 'support.company1.com':
$ret['name'] = 'Company 1';
$ret['url'] = 'http://www.company1.com/';
$ret['email'] = 'mail@company1.com';
$ret['logo'] = 'http://www.company1.com/images/logo.jpg';
break;
default:
$ret['name'] = 'Company 2';
$ret['url'] = 'http://www.company2.com/';
$ret['email'] = 'mail@company2.com';
$ret['logo'] = 'http://www.company2.com/images/logo.jpg';
}
return $ret;
}
2) go to webim/libs/common.php
3) add "require_once('/path/to/custom.php');" at the top
4) change one line in "load_messages"-function (see comment "CUSTOM")
function load_messages($locale) {
global $messages, $webim_encoding, $output_encoding;
$hash = array();
$current_encoding = $webim_encoding;
$fp = fopen(dirname(__FILE__)."/../locales/$locale/properties", "r");
while (!feof($fp)) {
$line = fgets($fp, 4096);
$keyval = split("=", $line, 2 );
if( isset($keyval[1]) ) {
$keyval[1] = text_verwursten($keyval[0], $keyval[1], $locale); // CUSTOM
if($keyval[0] == 'encoding') {
$current_encoding = trim($keyval[1]);
} else if($keyval[0] == 'output_encoding') {
$output_encoding[$locale] = trim($keyval[1]);
} else if( $current_encoding == $webim_encoding ) {
$hash[$keyval[0]] = str_replace("\\n", "\n",trim($keyval[1]));
} else {
$hash[$keyval[0]] = myiconv($current_encoding, $webim_encoding, str_replace("\\n", "\n",trim($keyval[1])));
}
}
}
fclose($fp);
$messages[$locale] = $hash;
}
5) change one line in "loadsettings"-function (see comment "CUSTOM")
function loadsettings() {
global $settingsloaded, $settings_in_db, $settings;
if($settingsloaded) {
return;
}
$settingsloaded = true;
$link = connect();
$sqlresult = mysql_query('select vckey,vcvalue from chatconfig',$link) or die(' Query failed: '.mysql_error().": ".$query);
while ($row = mysql_fetch_array($sqlresult, MYSQL_ASSOC)) {
$name = $row['vckey'];
$settings[$name] = settings_verwursten($name, $row['vcvalue']); // CUSTOM
$settings_in_db[$name] = true;
}
mysql_free_result($sqlresult);
mysql_close($link);
}
-
Thanks for sharing the above mentioned codes.
-
Hi
that is a very interesting hack no doubt :-)
So using your hack, with just one installation of webim we could attend "n" diferent sites?
And if so, how we could generate diferent codes to put the on/off line imagens on those sites?
Thanks
-
this hack does only work with 1 company which has n different brandings. however you can use the group feature to have different on-/offline realms.
it is NOT suitable for a hosted solution or similar where many different companies use the service, because every operator can see each other.
-
Hello,
I need this feature for my clients. I am having few projects, and own operators. I need separated per domain site but every data are in one domain (satellite).
Does anyone can write that for money? Regards.
-
Hello,
I just want to ask if is there any way that a certain operator can access only the group he is intended to operate?
Because as what I have experienced in here is that administrator can only limit the function of the operator but can not designate on who is the person to chat and who is obliged to chat to a certain group of user. I have browse all links in the administrators area but there is no feature there to create a group and designate an operator of that group.
Any help is greatly appreciated.
Thanks.
-
To answer the question above, I have found a (temporary) solution:
Change line 46 in operator/users.php to:
$page['showpopup'] = $settings['enablepopupnotification'] == '1' && $_SESSION['operatorgroups'] != "" ? "1" : "0";
This probably doesn't cover all bases, but it's a starting point that has so far worked for me.
-
Is there any official feature from mibew concerning this case?
we have multiple WebSites :
http://www.site1.com
http://www.site2.com
http://www.site3.com
Can all visitors from these sites be shown in operator's window with according domains (site1.com, site2.com...).
We need to see from which site the visitor has come