5 Star 16 Fork 18

flymotes/FSlmx

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
FS_domains_cp.php 45.62 KB
一键复制 编辑 原始数据 按行查看 历史
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665
<?php
set_time_limit(600);
session_start();
date_default_timezone_set('Asia/Shanghai');
header("Content-type: text/html; charset=utf-8");
define("ESL_HOST", @$_SESSION['ESL_HOST']);
define("ESL_PORT", @$_SESSION['ESL_PORT']);
define("ESL_PASSWORD",@$_SESSION['ESL_PASSWORD']);
include 'Shoudian_db.php';
//-------------------修改或添加域信息-----当存在 $_GET['editDomain']------------------------------------------------------------------
if (isset($_GET['editDomain'])){
function xmlentities($string){ //不允许 < > " 三种符号
$value = str_replace(array("<",">",'"'),'_', $string);
return $value;
}
$id = intval($_GET['editDomain']);
$showinfo = "";
if ($id){
$result = $mysqli->query("select * from fs_domains where id = $id");
$sql = "update fs_domains set ";
$sql_end = " where id = $id";
$showinfo .=" id $id 更新 ";
}else{
$result = false;
$sql = "insert into fs_domains (`domain_id`,`domain_name`,`level`,`parent_id`,`create_date`,`last_date`,`user_prefix`,`group_prefix`,`DID`,`agent_login`,`agent_out`,`agent_break`,`callcenter_config`,`ivr_config`) values(";
$sql_end = " )";
$showinfo .=" 添加 ";
}
$fail = 0;
if ($result)
$row = $result->fetch_array();
else
$row = array();
$ext_result = $mysqli->query("select `id`,`domain_id`,`parent_id`,`enabled`,`domain_name` from fs_domains order by id DESC");
$domains = result_fetch_all($ext_result,MYSQLI_NUM);
$domain_up = "<option value=''>[无上级域]</option>";
$domain_lists = array();
foreach ($domains as $one){
$domain_lists[$one[0]] = $one[1];
if ($one[0] != $id && $one[3])
$domain_up .= "<option value='$one[0] $one[1]'>[$one[0]] $one[4]</option>";
}
unset($domains);
if (!empty($_POST)){
$domain_name = $_POST['domain_name'];
$group_prefix = intval($_POST['group_prefix']);
$user_prefix = intval($_POST['user_prefix']);
$domain_id = $_POST['domain_id'];
$did = intval($_POST['did']);
$agent_login = intval($_POST['agent_login']);
$agent_out = intval($_POST['agent_out']);
$agent_break = intval($_POST['agent_break']);
if (empty($domain_id) || empty($domain_name)) {
$showinfo .= "<span class='bgred'>必须提交域名及域标识!</span><br/>";
$fail = 1;
}
$check_ = [];
if (!$did || $did>999999 || $did<1000 ) {
$showinfo .= "<span class='bgred'>DID必须提交,且为4-6位的整数!</span><br/>";
$fail = 1;
}
if (!$group_prefix || !$user_prefix || $group_prefix>999 || $user_prefix>999) {
$showinfo .= "<span class='bgred'>用户前缀和组前缀须设置为最多3位数字,且不能为0 不能相同!</span><br/>";
$fail = 1;
}
if (!$agent_login || !$agent_break || !$agent_out || $agent_login>100 || $agent_out>100 || $agent_break>100) {
$showinfo .= "<span class='bgred'>坐席签入\签出\示忙的号码设置为最多2位数字,且不能为0 不能相同!</span><br/>";
$fail = 1;
}
$check_[$did] = "";
$check_[$user_prefix] = "";
$check_[$group_prefix] = "";
$check_[$agent_login] = "";
$check_[$agent_out] = "";
$check_[$agent_break] = "";
if (count($check_)<6){
$showinfo .= "<span class='bgred'>坐席签入\签出\示忙的号码,用户前缀和组前缀,DID,存在重复设置!</span><br/>";
$fail = 1;
}
$callcenter= ['strategy'=> $_POST['strategy'],'moh-sound'=>xmlentities($_POST['moh-sound']),'record-template'=>xmlentities($_POST['record-template']),'time-base-score'=>$_POST['time-base-score'],'max-wait-time'=>intval($_POST['max-wait-time']),'max-wait-time-with-no-agent'=>intval($_POST['max-wait-time-with-no-agent']),'max-wait-time-with-no-agent-time-reached'=>intval($_POST['max-wait-time-with-no-agent-time-reached']),'tier-rules-apply'=>$_POST['tier-rules-apply'],'tier-rule-wait-second'=>intval($_POST['tier-rule-wait-second']),'tier-rule-wait-multiply-level'=>$_POST['tier-rule-wait-multiply-level'],'tier-rule-no-agent-no-wait'=>$_POST['tier-rule-no-agent-no-wait'],'abandoned-resume-allowed'=>$_POST['abandoned-resume-allowed'],'discard-abandoned-after'=>intval($_POST['discard-abandoned-after'])];
$cc = $callcenter;
$callcenter = $mysqli->real_escape_string(json_encode($callcenter));
$menu = [];
if (is_array(@$_POST['menu'])){
foreach ($_POST['menu'] as $one){
if ($one['d'] != ''){
$one['d'] = xmlentities($one['d']);
$one['p'] = xmlentities($one['p']);
$menu[] = $one;
}
}
if ($menu)
$_POST['menu'] = $menu;
unset($a);
}else $_POST['menu'] = [];
$ivr =['greet-long' =>xmlentities($_POST['greet-long']),'timeout' => intval($_POST['timeout']),'greet-short' => xmlentities($_POST['greet-short']),'max-timeouts' => intval($_POST['max-timeouts']),'invalid-sound' => xmlentities($_POST['invalid-sound']),'exit-sound' => xmlentities($_POST['exit-sound']),'digit-len' => intval($_POST['digit-len']), 'inter-digit-timeout' =>intval($_POST['inter-digit-timeout']),'confirm-key'=>xmlentities($_POST['confirm-key']),'max-failures'=>intval($_POST['max-failures']),'menu'=>$_POST['menu']];
$ivr1 = $ivr;
$ivr = $mysqli->real_escape_string(json_encode($ivr));
$validRegExp = '/^[a-z0-9\-\_\.]+$/';
$prefixlen = strlen($_POST['domain_id']);
if ($prefixlen && ($prefixlen>100 || !preg_match($validRegExp, $_POST['domain_id']))) {
$showinfo .= "<span class='bgred'>域标识必须是小写字母数字!且不得超过100位,请修改域名称</span><br/>";
$fail = 1;
$prefix = "";
}
if ($id==0 && array_search($domain_id, $domain_lists)!==false){
$showinfo .= "<span class='bgred'>域标识必须唯一,请修改域名称</span><br/>";
$fail = 1;
}
$domain_name = $mysqli->real_escape_string($domain_name);
$domain_id = $mysqli->real_escape_string($domain_id);
if (!empty($_POST['parent_id'])){
$temp = explode(" ", $_POST['parent_id']);
$parent_id = intval($temp[0]);
$domain_up = $_POST['parent_id'];
}else {
$domain_up = " <span class=\"smallgray smallsize-font\"> *无上级域* </span>";
$parent_id = 0;
}
$level = intval($_POST['level']);
if ($level>120)
$level = 120;
elseif ($level<0)
$level = 0;
if (isset($_POST['gw']))
$gwname="'".implode("','", $_POST['gw'])."'";
else
$gwname ="";
$change_user = 0;
if ($id && ($_POST['domain_id']!=@$row['domain_id'])){
$change_user = 1;
$olddid = @$row['domain_id'];
$showinfo .= "<span class='bgblue'>域标识已经修改!将同步修改相关数据!</span><br/>";
}
if ($id)
$sql .= "`domain_id`='$domain_id',`domain_name`='$domain_name',`level`=$level,`parent_id`=$parent_id,`last_date`=now(),`user_prefix`='$user_prefix',`group_prefix`='$group_prefix',`DID`='$did',`agent_out`='$agent_out',`agent_login`='$agent_login',`agent_break`='$agent_break',`callcenter_config`='$callcenter',`ivr_config`='$ivr'";
else
$sql .= "'$domain_id','$domain_name',$level,'$parent_id',now(),now(),'$user_prefix','$group_prefix',$did,$agent_login,$agent_out,$agent_break,'$callcenter',$ivr";
$gwold= $dmold ="";
$didoldfile = "<input type=\"hidden\" name=\"didoldfile\" value=\"$_POST[didoldfile]\">";
}else{
$domain_name = @$row['domain_name'];
$domain_id = @$row['domain_id'];
$level = (@$row['level']?$row['level']:50);
$user_prefix = (@$row['user_prefix']?$row['user_prefix']:8);
$group_prefix = (@$row['group_prefix']?$row['group_prefix']:9);
$parent_id = intval(@$row['parent_id']);
$did = @$row['DID'];
$agent_login = @$row['agent_login'];
$agent_out = @$row['agent_out'];
$agent_break = @$row['agent_break'];
$callcenter = @$row['callcenter_config'];
$ivr = @$row['ivr_config'];
$gwname = $gwold = "";
$dmold = $domain_name.$domain_id.$level.$user_prefix.$parent_id.$group_prefix.$did.$agent_login.$agent_out.$agent_break.$callcenter.$ivr;
$domain_up = "<select name='parent_id' id='parent_id' class='inputline1'>$domain_up</select><script>";
$cc = $ivr1= false;
if ($callcenter)
$cc = json_decode($callcenter,true);
if ($ivr)
$ivr1 = json_decode($ivr,true);
if (!is_array($cc))
$cc = ['strategy'=>'longest-idle-agent','moh-sound'=>'$${hold_music}','record-template'=>'$${recordings_dir}/${strftime(%Y-%m-%d-%H-%M-%S)}.${destination_number}.${caller_id_number}.${uuid}.wav','time-base-score'=>'system','max-wait-time'=>0,'max-wait-time-with-no-agent'=>0,'max-wait-time-with-no-agent-time-reached'=>5,'tier-rules-apply'=>'false','tier-rule-wait-second'=>300,'tier-rule-wait-multiply-level'=>'false','tier-rule-no-agent-no-wait'=>'false','abandoned-resume-allowed'=>'false','discard-abandoned-after'=>60];
if (!is_array($ivr1))
$ivr1 =['greet-long' =>'','timeout' => '','greet-short' => '','max-timeouts' => '','invalid-sound' => '', 'exit-sound' => '','digit-len' => '', 'inter-digit-timeout' => '','confirm-key'=>'','max-failures'=>''];
$menu = isset($ivr1['menu'])?$ivr1['menu']:[];
if ($parent_id)
$domain_up .= "$('#parent_id').val('$parent_id $domain_lists[$parent_id]');</script>";
else
$domain_up .="$('#parent_id').val('');</script>";
$gwold = "<input type=\"hidden\" name=\"dmold\" value=\"$dmold\">";
$didoldfile = "<input type=\"hidden\" name=\"didoldfile\" value=\"{$level}_{$did}\">";
}
$menuHtml = $maDefault = "";
$menucount = count($menu);
if ($menu){
foreach ($menu as $k =>$one){
$k++;
$menuHtml .="<p class='pcenter'><select name='menu[$k][a]' id='ma$k'><option value='menu-exec-app'>执行app</option><option value='menu-exec-api'>执行api</option><option value='menu-play-sound'>播放声音</option><option value='menu-sub'>调子菜单</option><option value='menu-say-phrase'>播放宏</option><option value='menu-back'>返回上级</option><option value='menu-top'>回主菜单</option><option value='menu-exit'>退出菜单</option></select> 按键 <input name='menu[$k][d]' value='$one[d]'> 参数 <input name='menu[$k][p]' value='$one[p]' size=60> <span onclick='remove(this)' style='cursor:pointer;' title='删除'>&otimes;</span></p>";
$maDefault .= "\$(\"#ma$k option[value=$one[a]]\").attr(\"selected\", \"selected\");";
}
}
$html = <<<HTML
<tr class='bg1'><td width=80><em>域名称</em></td><td><input id="domain_name" name="domain_name" size="30" maxlength="20" value="$domain_name" onclick="this.select();" class="inputline1"/> <span class="smallgray smallsize-font"> * 长度不得超过20可中英文不得重复</span></td></tr>
<tr class='bg2'><td><em>域标识</em></td><td><input id="domain_id" name="domain_id" value="$domain_id" size=80 class="inputline1" readonly="readonly" /> <span class="smallgray smallsize-font"> * 不可编辑请点击 &raquo; <button type='button' onclick="getinfo($('#domain_name').val());">由域名称生成标识</button></span></td></tr>
<tr class='bg1'><td><em>上级域</em></td><td>$domain_up <span class="smallgray smallsize-font"> * 若是下级域请选择其上级的域否则忽略之</span></td></tr>
<tr class='bg2'><td><em>信息项</em>$gwold $didoldfile</td><td style='line-height:20pt;'><em>level</em> <input id="level" name="level" value="$level" size=2 class="inputline1" /> &nbsp; <em>用户前缀</em> <input id="user_prefix" name="user_prefix" value="$user_prefix" size=4 maxlength="4" class="inputline1" /> &nbsp; <em>组前缀</em> <input id="group_prefix" name="group_prefix" value="$group_prefix" size=4 maxlength="4" class="inputline1" /><span class="smallgray smallsize-font"> * 用户前缀和组前缀用来在拨号时区分用户和组的前缀数字不得相同不得为空</span>
<br/></td>
<tr class='bg1'><td><em>呼叫中心</em></td><td style='line-height:25pt;'><em>DID号码</em> <input id="did" name="did" value="$did" size=4 maxlength="4" class="inputline1" /><span class="smallgray smallsize-font"> * DID是呼入用户ID4-6位数字这里将配置为调用呼叫中心的接入号全平台唯一不得为空</span>
<br/><em>坐席 签入号</em> <input id="agent_login" name="agent_login" value="$agent_login" size=3 maxlength="3" class="inputline1" /> &nbsp; <em>签出号</em> <input id="agent_out" name="agent_out" value="$agent_out" size=3 maxlength="3" class="inputline1" /> <em>示忙\休息</em> <input id="agent_break" name="agent_break" value="$agent_break" size=3 maxlength="3" class="inputline1" /><span class="smallgray smallsize-font"> * 最多3位数字呼叫中心坐席进行 签入\签出\示忙\休息 操作时拨打示闲=签入</span><br/>
<em>振铃策略strategy</em><select name='strategy' id='strategy' class='inputline1'><option value='ring-all'>所有坐席振铃</option><option value='longest-idle-agent'>空闲时长最长振铃</option><option value='round-robin'>轮循振铃</option><option value='top-down'>顺序振铃</option><option value='agent-with-least-talk-time'>通话时长最小振铃</option><option value='agent-with-fewest-calls'>接听最少振铃</option><option value='sequentially-by-agent-order'>优先级振铃</option><option value='random'>随机振铃</option><option value='ring-progressively'>渐进振铃</option></select>
<em>等待音乐moh-sound</em> <input id="moh-sound" name="moh-sound" value="{$cc['moh-sound']}" class="inputline1" /> <em>时间积分time-base-score</em><select name='time-base-score' id='time-base-score' class='inputline1'><option value='queue'>不增加积分</option><option value='system'>进入系统时积分</option></select><br/>
<em>录音设置record-template</em> <input id="record-template" name="record-template" value="{$cc['record-template']}" class="inputline1" style="width:510pt;"/><br/>
<em>最大超时max-wait-time</em> <input id="max-wait-time" name="max-wait-time" value="{$cc['max-wait-time']}" class="inputline1" size=1 /> <em>无成员超时max-wait-time-with-no-agent</em> <input id="max-wait-time-with-no-agent" name="max-wait-time-with-no-agent" value="{$cc['max-wait-time-with-no-agent']}" class="inputline1" size=1 /> <em>无成员超时后延迟max-wait-time-with-no-agent-time-reached</em> <input id="max-wait-time-with-no-agent-time-reached" name="max-wait-time-with-no-agent-time-reached" value="{$cc['max-wait-time-with-no-agent-time-reached']}" class="inputline1" size=1 /><br/>
<em>梯队匹配tier-rules-apply</em><select name='tier-rules-apply' id='tier-rules-apply' class='inputline1'><option value='false'>不启动tier规则</option><option value='true'>匹配规则tier-rule*</option></select>
<em>梯队等待tier-rule-wait-second</em> <input id="tier-rule-wait-second" name="tier-rule-wait-second" value="{$cc['tier-rule-wait-second']}" class="inputline1" size=1 /> <em>梯队等级等待tier-rule-wait-multiply-level</em><select name='tier-rule-wait-multiply-level' id='tier-rule-wait-multiply-level' class='inputline1'><option value='false'>不启用</option><option value='true'>启用</option></select><br/>
<em>跳过无座席tier-rule-no-agent-no-wait</em><select name='tier-rule-no-agent-no-wait' id='tier-rule-no-agent-no-wait' class='inputline1'><option value='false'>不启用</option><option value='true'>启用</option></select>
<em>呼入丢弃恢复abandoned-resume-allowed</em><select name='abandoned-resume-allowed' id='abandoned-resume-allowed' class='inputline1'><option value='false'>不恢复</option><option value='true'>可恢复</option></select>
<em>呼入丢弃超时discard-abandoned-after</em> <input id="discard-abandoned-after" name="discard-abandoned-after" value="{$cc['discard-abandoned-after']}" class="inputline1" size=1 />
</td></tr><script>var num=$menucount;$('#strategy').val('$cc[strategy]');$('#time-base-score').val('{$cc['time-base-score']}');$('#tier-rules-apply').val('{$cc['tier-rules-apply']}');$('#tier-rule-wait-multiply-level').val('{$cc['tier-rule-wait-multiply-level']}');$('#abandoned-resume-allowed').val('{$cc['abandoned-resume-allowed']}');$('#tier-rule-no-agent-no-wait').val('{$cc['tier-rule-no-agent-no-wait']}');</script>
<tr><td><em>IVR菜单</em></td><td style='line-height:25pt;'><span class="smallred smallsize-font"> * 下面 欢迎及操作提示语音 菜单项 没有填时ivr无效其他项不填或0则忽略时间为毫秒如果单纯设接入时重复播放语音请设置上面 呼叫中心 等待音乐</span><br/>欢迎及操作提示语音 <input id="greet-long" name="greet-long" value="{$ivr1['greet-long']}" class="inputline1" /> 若在总超时时间 <input id="timeout" name="timeout" value="{$ivr1['timeout']}" class="inputline1" size=1 /> 内未输入播放待输入提示语音 <input id="greet-short" name="greet-short" value="{$ivr1['greet-short']}" class="inputline1" /><br/>若用户一直未输入系统在播放 <input id="max-timeouts" name="max-timeouts" value="{$ivr1['max-timeouts']}" class="inputline1" size=1 /> -1次待输入提示语音后关闭ivr<br/>如果用户在总超时时间内输入了错误信息系统会播放输入错误语音 <input id="invalid-sound" name="invalid-sound" value="{$ivr1['invalid-sound']}" class="inputline1" />最多允许输入错误 <input id="max-failures" name="max-failures" value="{$ivr1['max-failures']}" class="inputline1" size=1 /> <br/>退出时播放结束语音 <input id="exit-sound" name="exit-sound" value="{$ivr1['exit-sound']}" class="inputline1" /> 菜单长度 <input id="digit-len" name="digit-len" value="{$ivr1['digit-len']}" class="inputline1" size=1 /> 位数字等待输入超时 <input id="inter-digit-timeout" name="inter-digit-timeout" value="{$ivr1['inter-digit-timeout']}" class="inputline1" size=1 /> 输入按<input id="confirm-key" name="confirm-key" value="{$ivr1['confirm-key']}" class="inputline1" size=1 />键结束(默认#) <br/> --->>> <input type='button' value='添加菜单项' onclick='add(num)'> <span class="smallgray smallsize-font"> 按键是数值如 23 或 正则如 /^(10[01][0-9])$/ ,app参数如 transfer 9996 XML default 或 bridge sofia/gateway/xx/123456789 ,调菜单和宏用其名</span><span id='menu_area'>$menuHtml</span></td></tr>
<script type="text/javascript">
$maDefault
//添加一行<tr>
function add() {
num++;
var content = "<p class='pcenter'>";
content += "<select name='menu["+num+"][a]'><option value='menu-exec-app'>执行app</option><option value='menu-exec-api'>执行api</option><option value='menu-play-sound'>播放声音</option><option value='menu-sub'>调子菜单</option><option value='menu-say-phrase'>播放宏</option><option value='menu-back'>返回上级</option><option value='menu-top'>回主菜单</option><option value='menu-exit'>退出菜单</option></select> 按键 <input name='menu["+num+"][d]'> 参数 <input name='menu["+num+"][p]' size=60> <span onclick='remove(this)' style='cursor:pointer;' title='删除'>&otimes;</span>";
content +="</p>"
$("#menu_area").append(content);
}
//删除当前行
function remove(obj) {
$(obj).parent().remove();
}
</script>
HTML;
$submitbutton = "<input type=\"submit\" value=\"确认提交\" />";
if (!empty($_POST)){
$submitbutton = ' <a href="?editDomain='.$id.'">刷新页面</a>';
$sql .= $sql_end;
$result = false;
if ($domain_name.$domain_id.$level.$user_prefix.$parent_id.$group_prefix.$did.$agent_login.$agent_out.$agent_break.$callcenter==$_POST['dmold']){
$showinfo .= "<span class='bgblue'>未修改数据不会提交更新!</span><br/>";
}elseif (!$fail)
$result = $mysqli->query($sql);
if ($result){
if ("{$level}_{$did}" != $_POST['didoldfile'] ){
$result = @unlink($_SESSION['conf_dir']."/dialplan/public/$_POST[didoldfile].xml");
$showinfo .= "<span class='bggreen'>原域的DID拨号计划被成功删除!</span><br/>";
}
$showinfo .= "<span class='bggreen'>操作成功!</span>";
if ($change_user){
$mysqli->query("update fs_gateways set `domain_id`= '$domain_id' where `domain_id`='$olddid' ");
$mysqli->query("update fs_users set `domain_id`='$domain_id' where `domain_id`='$olddid' ");
$mysqli->query("update fs_groups set `domain_id`='$domain_id' where `domain_id`='$olddid' ");
}
}else
$showinfo .= "<span class='bgred'>操作失败!{$mysqli->error}</span>";
}
echo <<<HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type content=text/html;charset=utf-8"/>
<link rel="stylesheet" type="text/css" href="main.css"/><script type="text/javascript" src="jquery.js"></script>
<script>function getinfo(sid){if (sid=='') {alert ('没有填写域名称,请先填写域名称!');}else \$.post( "Yurun/get_py.php", {string: sid}).done(function( data ) { $('#domain_id').val(data);});}</script>
</head><body><p class='pcenter' style='font-size:18pt;'>域详细信息设置 <a style='font-size:10pt;' href='?'>&raquo;&nbsp;返回域主控页</a></p><form method="post" id="formarea"><table class="tablegreen" width="1000" align="center"><th colspan=2>$showinfo</th>$html<tr class='bg1'><th></th><th><span class="smallgray smallsize-font"> **用户标识拨打两个*加用户id), **12345 为对12345的呼出通话进行强行代接 </span> &nbsp; $submitbutton</th></tr></table></form></body></html>
HTML;
exit;
}
//-----------域管理---------ajax提交部署、停用、启用、禁用、删除等域的相关操作-------------------------------------------
$ext_result = $mysqli->query("select `domain_name`,`id` from fs_domains");
$exts = result_fetch_all($ext_result,MYSQLI_NUM);
$dmlist = array();
foreach ($exts as $one)
$dmlist[$one[1]] = $one[0];
//应用部署及停用,ESL
if (empty($_SESSION['POST_submit_once']) && isset($_POST['yid'])){
if (in_array($_POST['en0'],array("88","99"))) {
$name = $_POST['en1'];
require_once "detect_switch.php";
$result = $mysqli->query("select * from fs_domains where domain_id = '$name' and `enabled`=1");
$row = $result->fetch_array();
$file_dir = @$_SESSION['conf_dir']."/directory/".$row['domain_id'].".xml";
$file_dia = @$_SESSION['conf_dir']."/dialplan/".$row['domain_id'].".xml";
$file_cc = @$_SESSION['conf_dir']."/autoload_configs/callcenter.conf.xml";
$file_did = @$_SESSION['conf_dir']."/dialplan/public/$row[level]_$row[DID].xml";
$file_diadir = @$_SESSION['conf_dir']."/dialplan/".$row['domain_id'];
$file_ivr = @$_SESSION['conf_dir']."/ivr_menus/$row[domain_id].xml";
if (empty($row['domain_id']))
die("操作域不可用!请先启用!");
$_SESSION['POST_submit_once']=1;
if ($_POST['en0']=="99" && is_file($file_dir)){
$result = @unlink($file_dir);
if ($result){
@unlink($file_dia);
@unlink($file_did);
@unlink($file_ivr);
$info = new detect_switch();
$info->run('reloadxml','',0);
$info->run("api","callcenter_config queue unload agents@$row[domain_id]",0);
die(" $name 域已被停用!");
}else
die("$name 域数据无法清除,无法停用!");
}else{
//这里是初始化一个路由列表备用
$ext_result = $mysqli->query("select * from fs_gateways where `enabled`=0"); //域中使用的路由必须是没有被平台使用的
$exts = result_fetch_all($ext_result);
$gwlist = array();
foreach ($exts as $one)
$gwlist[$one['gatewayname']] = $one;
$file =__DIR__.'/.Config';
if (is_file($file))
$ini_conf = @unserialize(file_get_contents($file));
else
$ini_conf = false;
$context ="<include>\n<context name=\"$row[domain_id]\">\n<extension name=\"unloop\">\n<condition field=\"\${unroll_loops}\" expression=\"^true$\"/>\n<condition field=\"\${sip_looped_call}\" expression=\"^true$\">\n<action application=\"deflect\" data=\"\${destination_number}\"/>\n</condition>\n</extension>\n<X-PRE-PROCESS cmd=\"include\" data=\"$row[domain_id]/*.xml\"/>\n<extension name=\"intercept-ext\">\n<condition field=\"destination_number\" expression=\"^\\*\\*(\\d+)\$\">\n<action application=\"answer\"/>\n<action application=\"intercept\" data=\"\${hash(select/\${domain_name}-last_dial_ext/\$1)}\"/>\n<action application=\"sleep\" data=\"2000\"/>\n</condition>\n</extension>\n<extension name=\"global\" continue=\"true\">\n<condition field=\"\${rtp_has_crypto}\" expression=\"^(\$\${rtp_sdes_suites})\$\" break=\"never\">\n<action application=\"set\" data=\"rtp_secure_media=true\"/>\n</condition>\n<condition field=\"\${endpoint_disposition}\" expression=\"^(DELAYED NEGOTIATION)\"/>\n<condition field=\"\${switch_r_sdp}\" expression=\"(AES_CM_128_HMAC_SHA1_32|AES_CM_128_HMAC_SHA1_80)\" break=\"never\">\n<action application=\"set\" data=\"rtp_secure_media=true\"/>\n</condition>\n<condition>\n<action application=\"hash\" data=\"insert/\${domain_name}-last_dial/\${caller_id_number}/\${destination_number}\"/>\n<action application=\"hash\" data=\"insert/\${domain_name}-last_dial/global/\${uuid}\"/>\n<action application=\"export\" data=\"RFC2822_DATE=\${strftime(%a, %d %b %Y %T %z)}\"/>\n</condition>\n</extension>\n<extension name=\"Local_Extension\">\n<condition field=\"destination_number\" expression=\"^$row[user_prefix](\d{1,20})$\">\n<action application=\"export\" data=\"dialed_extension=$1\"/>\n<action application=\"set\" data=\"ringback=\${us-ring}\"/>\n<action application=\"set\" data=\"transfer_ringback=\$\${hold_music}\"/>\n<action application=\"set\" data=\"call_timeout=30\"/>\n<!-- <action application=\"set\" data=\"sip_exclude_contact=\${network_addr}\"/> -->\n<action application=\"set\" data=\"hangup_after_bridge=true\"/>\n<action application=\"set\" data=\"continue_on_fail=true\"/>\n<action application=\"hash\" data=\"insert/\${domain_name}-call_return/\${dialed_extension}/\${caller_id_number}\"/>\n<action application=\"hash\" data=\"insert/\${domain_name}-last_dial_ext/\${dialed_extension}/\${uuid}\"/>\n<action application=\"set\" data=\"called_party_callgroup=\${user_data(\${dialed_extension}@\${domain_name} var callgroup)}\"/>\n<action application=\"hash\" data=\"insert/\${domain_name}-last_dial_ext/\${called_party_callgroup}/\${uuid}\"/>\n<action application=\"hash\" data=\"insert/\${domain_name}-last_dial_ext/global/\${uuid}\"/>\n<action application=\"export\" data=\"nolocal:rtp_secure_media=\${user_data(\${dialed_extension}@\${domain_name} var rtp_secure_media)}\"/>\n<action application=\"hash\" data=\"insert/\${domain_name}-last_dial/\${called_party_callgroup}/\${uuid}\"/>\n<action application=\"bridge\" data=\"user/\${dialed_extension}@\${domain_name}\"/>\n</condition>\n</extension>\n";
$xml = "<include>\n<domain name=\"$row[domain_id]\">\n<params>\n<param name=\"dial-string\" value=\"{^^:sip_invite_domain=\${dialed_domain}:presence_id=\${dialed_user}@\${dialed_domain}}\${sofia_contact(*/\${dialed_user}@\${dialed_domain})},\${verto_contact(\${dialed_user}@\${dialed_domain})}\"/>\n<param name=\"jsonrpc-allowed-methods\" value=\"verto\"/>\n<param name=\"allow-empty-password\" value=\"false\"/>\n</params>\n<variables>\n<variable name=\"record_stereo\" value=\"true\"/>\n<variable name=\"default_areacode\" value=\"\$\${default_areacode}\"/>\n<variable name=\"language\" value=\"zh\"/>\n<variable name=\"default_language\" value=\"zh\"/>\n<variable name=\"transfer_fallback_extension\" value=\"operator\"/>\n</variables>\n<groups>\n<group name=\"default\">\n<users>";
// 处理用户账号-------------------------
$result = $mysqli->query("select `user_name`,`user_id`,`password`,`group_id`,`reverse_user`, `reverse_pwd`,`dial_str`,`user_context`,`gateway`,`variables`,`cidr` from fs_users where `domain_id` = '$row[domain_id]' and `enabled`=1 order by group_id");
$groups = array();
$usrstr = "\n";
while (($row0 = $result->fetch_array())!==false) {
if (!$row0) break;
$usrstr .= "<user id=\"$row0[user_id]\"";
if ($row0['cidr'])
$usrstr .=" cidr=\"$row0[cidr]\">\n";
else
$usrstr .= ">\n";
$usrstr .= "<params>\n";
$usrstr .= "<param name=\"password\" value=\"$row0[password]\"/>\n"; // <param name="a1-hash" value="538db5a1dcf95cd9df62bf2ff0466c4b"/> // == md5(username:domain:password)
$usrstr .= "<param name=\"vm-password\" value=\"$row0[password]\"/>\n";
if ($row0['dial_str'])
$usrstr .= "<param name=\"dial-string\" value=\"$row0[dial_str]\"/>\n";
if ($row0['reverse_user'])
$usrstr .= "<param name=\"reverse-auth-user\" value=\"$row0[reverse_user]\" />\n<param name=\"reverse-auth-pass\" value=\"$row0[reverse_pwd]\" />";
$usrstr .= "</params>\n<variables>\n";
if ($row0['variables']){
$temp = explode("\n", $row0['variables']);
foreach ($temp as $one){
$var = explode("===", trim($one));
if (isset($var[1]))
$usrstr .= "<variable name=\"$var[0]\" value=\"$var[1]\"/>\n";
else
$usrstr .= "<variable name=\"$var[0]\"/>\n";
}
}else{
$usrstr .= "<variable name=\"toll_allow\" value=\"domestic,international,local\"/>\n";
$usrstr .= "<variable name=\"accountcode\" value=\"$row0[user_id]\"/>\n";
$usrstr .= "<variable name=\"effective_caller_id_name\" value=\" $row0[user_name] \"/>\n";
$usrstr .= "<variable name=\"effective_caller_id_number\" value=\"$row0[user_id]\"/>\n";
$usrstr .= "<variable name=\"outbound_caller_id_name\" value=\"\$\${outbound_caller_name}\"/>\n";
$usrstr .= "<variable name=\"outbound_caller_id_number\" value=\"\$\${outbound_caller_id}\"/>\n";
}
if ($row0['user_context'])
$usrstr .= "<variable name=\"user_context\" value=\"$row0[user_context]\"/>\n";
else
$usrstr .= "<variable name=\"user_context\" value=\"$row[domain_id]\"/>\n";
$usrstr .= "<variable name=\"callgroup\" value=\"$row[domain_id]\"/>\n"; //把代答组设置为域ID ,代答组的人可以代答呼叫;
if ($row0['gateway']){
$usrstr .= "<variable name=\"register-gateway\" value=\"$row0[gateway]\"/>\n";
$usrstr .= "</variables>\n";
$lab = array("gatewayname","realm", "username","password","register","from-user","from-domain","regitster-proxy","outbound-proxy","expire-seconds","caller-id-in-from","extension","proxy","register-transport","retry-seconds","contact-params","ping","addon","variables");
$gws = explode(",",$row0['gateway']);
if ($gws){
$usrstr .="<gateways>\n";
foreach ($gws as $one){
if (!isset($gwlist[$one]))
continue;
$i = 0;
foreach ($lab as $key){
if ($i==0)
$usrstr .=" <gateway name=\"{$gwlist[$one]['gatewayname']}\">\n";
elseif($i<5)
$usrstr .= " <param name=\"$key\" value=\"" . $gwlist[$one][$key] . "\"/>\n";
elseif(!empty($gwlist[$one][$key]))
if ($key=='variables' || $key=='addon' )
$usrstr .= "{$gwlist[$one][$key]}\n";
else
$usrstr .= " <param name=\"$key\" value=\"" . $gwlist[$one][$key] . "\"/>\n";
$i++;
}
$usrstr .= " </gateway>\n";
}
$usrstr .="</gateways>\n";
}
}else
$usrstr .= "</variables>\n";
$usrstr .="</user>\n";
//将用户加入定义的组
if ($row0['group_id']){
$g = explode(",", $row0['group_id']);
foreach ($g as $one){
if (isset($groups[$one]))
$groups[$one] .= " <user id=\"$row0[user_id]\" type=\"pointer\"/>\n";
else
$groups[$one] = " <user id=\"$row0[user_id]\" type=\"pointer\"/>\n";
}
}
}
$xml .= "$usrstr</users>\n</group>\n";
// 处理组--------------------------------------
$result = $mysqli->query("select `group_id`,`calltype`,`calltimeout` from fs_groups where `domain_id` = '$row[domain_id]' and `enabled`=1");
while (($row1 = $result->fetch_array())!==false) {
if (!$row1) break;
$xml .= "\n <group name=\"$row1[group_id]\">\n";
if (isset($groups[$row1['group_id']]))
$xml .= " <users>\n".$groups[$row1['group_id']]." </users>\n";
$context .= "\n<extension name=\"Group $row1[group_id]\">\n<condition field=\"destination_number\" expression=\"^$row[group_prefix]$row1[group_id]$\">\n<action application=\"set\" data=\"hangup_after_bridge=true\"/>\n<action application=\"set\" data=\"continue_on_fail=true\"/>\n<action application=\"set\" data=\"originate_continue_on_timeout=true\"/>\n<action application=\"set\" data=\"call_timeout=$row1[calltimeout]\"/>\n<action application=\"bridge\" data=\"\${group_call($row1[group_id]@\${domain_name}$row1[calltype])}\"/>\n<action application=\"transfer\" data=\"$row1[group_id] XML default\"/>\n<action application=\"hangup\"/>\n</condition>\n</extension>\n";
$xml .= " </group>\n";
}
$xml .= "</groups>\n</domain>\n</include>";
// 处理IVR-------------------------------------------------
$ivr = $row['ivr_config'];
if ($ivr)
$ivr = json_decode($ivr,true);
if (is_array($ivr)){
$menuContent = "";
$ivr_xml ="<include>\n <menu name=\"ivr_$row[domain_id]\"";
foreach ($ivr as $k=>$one)
if (!is_array($one)){
if ($k=='greet-long' && empty($one)){ //说明语音没有就忽略ivr
$ivr = false;
break;
}elseif (empty($one)) //设置值为0或空的 忽略这个设置,注意,也不允许为0
continue;
$ivr_xml .= "\n $k=\"$one\"";
}else
foreach ($one as $menu){
$mp = "";
if ($menu['p'])
$mp = "param=\"$menu[p]\"";
$menuContent .="\n <entry action=\"$menu[a]\" digits=\"$menu[d]\" $mp/>";
}
if ($menuContent)
$ivr_xml .= ">$menuContent \n </menu>\n</include>";
else $ivr = false;
}else
$ivr = false;
// 处理呼叫中心-------------------------------------
//这里初始化一个callcenter的队列列表备用
$ext_result = $mysqli->query("select `domain_id`,`callcenter_config` from fs_domains where `enabled`=1"); //域中使用的路由必须是没有被平台使用的
$cc_conf = [];
while (($row0 = $ext_result->fetch_array(MYSQLI_NUM))!==false) {
if (!$row0) break;
$cc_conf[$row0[0]] = $row0[1];
}
$callcenter_str_fail = ""; //呼叫失败后全部坐席都拨打一下? <action application="bridge" data="{leg_timeout=15,ignore_early_media=true}${group_call(default@${domain_name})}"/>
if ($ivr)
$ivr_dia = " <action application=\"answer\"/>\n <action application=\"sleep\" data=\"500\"/>\n <action application=\"ivr\" data=\"ivr_$row[domain_id]\"/>\n";
else
$ivr_dia = " <action application=\"set\" data=\"cc_export_vars=domain_name,call_timeout,rid,origination_caller_id_number,origination_caller_id_name\"/>\n <action application=\"callcenter\" data=\"agents@$row[domain_id]\"/>\n";
$did = '<include>
<extension name="public_did_'.$row['domain_id'].'">
<condition field="destination_number" expression="^('.$row['DID'].')$">
<action application="set" data="domain_name='.$row['domain_id'].'"/>
<action application="set" data="call_timeout=10"/>
<action application="set" data="rid=${uuid}"/>
<action application="set" data="origination_caller_id_name=${caller_id_name}"/>
<action application="set" data="origination_caller_id_number=${caller_id_number}"/>
'.$ivr_dia.$callcenter_str_fail.'
</condition>
</extension>
</include>';
$cc = '<configuration name="callcenter.conf" description="CallCenter">
<settings>';
if (!empty($ini_conf['odbcdsn']))
$cc .="\n<param name=\"odbc-dsn\" value=\"$ini_conf[odbcdsn]\"/>";
$cc .="\n</settings>\n\n<queues>\n";
foreach ($cc_conf as $k=>$v){
$cc .="\n<queue name=\"agents@$k\">\n";
$temp = json_decode($v,true);
if (is_array($temp))
foreach ($temp as $k1=>$v1)
$cc .="<param name=\"$k1\" value=\"$v1\"/>\n";
$cc .="</queue>\n";
}
$cc .="\n</queues>\n\n<agents>\n</agents>\n\n<tiers>\n</tiers>\n\n</configuration>";
$context .='
<extension name="callcenter_'.$row['domain_id'].'">
<condition field="destination_number" expression="^(callcenter)$">
<action application="set" data="domain_name='.$row['domain_id'].'"/>
<action application="set" data="call_timeout=10"/>
<action application="set" data="rid=${uuid}"/>
<action application="set" data="origination_caller_id_name=${caller_id_name}"/>
<action application="set" data="origination_caller_id_number=${caller_id_number}"/>
<action application="set" data="cc_export_vars=domain_name,call_timeout,rid,origination_caller_id_number,origination_caller_id_name"/>
<action application="callcenter" data="agents@'.$row['domain_id'].'"/>
</condition>
</extension>
<extension name="agent_login">
<condition field="destination_number" expression="^'.$row['agent_login'].'$">
<action application="set" data="res=${callcenter_config(agent set status ${caller_id_number}@${domain_name} \'Available\')}" />
<action application="answer" data=""/>
<action application="sleep" data="500"/>
<action application="playback" data="ivr/ivr-you_are_now_logged_in.wav"/>
<action application="hangup" data=""/>
</condition>
</extension>
<extension name="agent_break">
<condition field="destination_number" expression="^'.$row['agent_break'].'$">
<action application="set" data="res=${callcenter_config(agent set status ${caller_id_number}@${domain_name} \'On Break\')}" />
<action application="answer" data=""/>
<action application="sleep" data="500"/>
<action application="playback" data="ivr/set_busy_success.wav"/>
<action application="hangup" data=""/>
</condition>
</extension>
<extension name="agent_logoff">
<condition field="destination_number" expression="^'.$row['agent_out'].'$">
<action application="set" data="res=${callcenter_config(agent set status ${caller_id_number}@${domain_name} \'Logged Out\')}" />
<action application="answer" data=""/>
<action application="sleep" data="500"/>
<action application="playback" data="ivr/ivr-you_are_now_logged_out.wav"/>
<action application="hangup" data=""/>
</condition>
</extension>
</context>
</include>';
$result = @file_put_contents($file_dir, $xml);
unset($xml);
if ($result){
@file_put_contents($file_dia, $context);
@file_put_contents($file_did, $did);
@file_put_contents($file_cc, $cc);
if ($ivr)
@file_put_contents($file_ivr, $ivr_xml);
if (!is_dir($file_diadir))
mkdir($file_diadir);
$info = new detect_switch();
$info->run("reloadxml","",0);
$info->run("api","callcenter_config queue load agents@$row[domain_id]",0);
die(" $name 域已被添加并更新状态!");
}else
die("$name 域数据添加失败!");
}
}
die("信息不完整,非法提交操作!");
}
//删除域记录
if (!empty($_POST['del'])){
$id = intval($_POST['did']);
$result = $mysqli->query("select `domain_id` from fs_domains where id = $id and `enabled`=0");
$row = $result->fetch_array();
if (!empty($row[0])){
$mysqli->query("delete from fs_domains where id = $id limit 1");
$mysqli->query("update fs_gateways set domain_id='',domain_user='' where domain_id = '$row[0]'");
$mysqli->query("update fs_groups set `domain_id`='' where `domain_id` = '$row[0]' ");
$mysqli->query("update fs_users set `domain_id`='',`group_id` = '' where `domain_id` = '$row[0]' ");
die("id $id 操作完毕");
}
die("要删除的域,必须已被禁用!");
}
//设置启用或禁用
if (empty($_SESSION['POST_submit_once']) && !empty($_POST['sid'])){
$id = intval($_POST['sid']);
$to = !empty($_POST['en1'])? 1 : (!empty($_POST['en9'])? 9 : 0 );
if ($to === 1){
$_SESSION['POST_submit_once']=1;
$mysqli->query("update fs_domains set `enabled` = 1 where id = $id limit 1");
die("id $id 设置为可用完毕");
}else{
$_SESSION['POST_submit_once']=1;
$mysqli->query("update fs_domains set `enabled` = 0 where id = $id limit 1");
die("id $id 设置为禁用完毕");
}
}
//----------------------显示----------域列表--------------------------------------------------------------------------------------
$_SESSION['POST_submit_once']=0;
echo "<html xmlns=http://www.w3.org/1999/xhtml><head><meta http-equiv=Content-Type content=\"text/html;charset=utf-8\">
<link rel=\"stylesheet\" type=\"text/css\" href=\"main.css\"/><script src=\"jquery.js\"></script><script>
function del(sid){var a = confirm(\"警告!!\\n删除操作同时也会清除本域全部的组及用户设置,不可撤销!!\\n你确认提交?\");if (a) { \$.post( \"FS_domains_cp.php\", { did: sid, del: \"1\" })
.done(function( data ) { alert( \"删除成功!\" + data);$('#info'+sid).html('已经删除!'); });} }
function en0(sid){\$.post( \"FS_domains_cp.php\", { sid: sid, en0: \"1\" })
.done(function( data ) { alert( \"禁用操作 \" + data);window.location.reload();});}
function en1(sid){\$.post( \"FS_domains_cp.php\", { sid: sid, en1: \"1\" })
.done(function( data ) { alert( \"启用操作 \" + data);window.location.reload();});}
function en88(sid,lab){\$.post( \"FS_domains_cp.php\", { yid: sid, en0: \"88\", en1: lab})
.done(function( data ) { alert( \"应用部署 \" + data);window.location.reload();});}
function en99(sid,lab){\$.post( \"FS_domains_cp.php\", { yid: sid, en0: \"99\",en1: lab})
.done(function( data ) { alert( \"停用操作 \" + data);window.location.reload();});}
</script></head><body>";
$where = " where 1 ";
$showget = "<span class='smallred smallsize-font'> ";
if (!empty($_GET['gwname'])){
$temp = $mysqli->real_escape_string($_GET['gwname']);
$where .= " and `domain_name` like '%$temp%' ";
$showget .=" 域名称包含 '$temp' ";
}
$count = 20;
$getstr = "";
$totle = $mysqli->query("select count(*) from fs_domains $where");
$row = $totle->fetch_array(MYSQLI_NUM);
$totle = $row[0];
$pages = ceil($totle/$count);
if (empty($_GET['p']))
$p = 0;
else{
$p = intval($_GET['p']);
if ($p>$pages)
$p = $pages;
if ($p<0)
$p = 0;
}
$showget .= " ($totle 条,$pages 页)</span>";
echo '<p class="pcenter" style="font-size:18pt;">域管理控制台 '.$showget.' <a style="font-size:12pt;" href="?editDomain=0">【新建域】</a> &nbsp; <a style="font-size:10pt;" href="FS_callcenter_cp.php">【呼叫中心】</a> &nbsp; &nbsp; <a style="font-size:10pt;" href="index.php">返回主控</a></p><table class="tablegreen" width="90%" align="center"><th colspan=7><form method="get">域名称:<input id="gwname" name="gwname" value="" size=10> <input type="submit" value="确认"> <a href="?">【看全部】</a> </form></th>';
$result = $mysqli->query("select * from fs_domains $where ORDER BY id DESC LIMIT ".($p*$count).",$count");
while (($row = $result->fetch_array())!==false) {
if (!$row)
die('<tr><td colspan=7 align=center><span class="smallred smallsize-font"> *域新建后默认被禁用,需启用后方可应用!已应用的域可获取信息 或 停用;域设置后需启用,并需在拨号计划 或 用户管理中进行调用<br/> *必须先设置internal,禁用 force-register-domain force-subscription-domain force-register-db-domain,否则域/组/用户 设置均无效!!</span></td></tr></table><p class=\'red\'><a href="?list=1&p='.($p-1<0?0:$p-1).$getstr.'">前一页</a> '.($p==0?1:$p+1).' <a href="?p='.($p+1>$pages?$pages:$p+1).$getstr.'">下一页</a>
跳转到:<input id="topage" name="togape" value="" size=4><input type="submit" value="确认" onclick="pa = document.getElementById(\'topage\').value-1;
window.location.href=\'?p=\'+pa+\''.$getstr.'\';return false;"/></p></body></html>');
else{
if ($row['enabled']){
$file_ = @$_SESSION['conf_dir']."/directory/".$row['domain_id'].".xml";
if (is_file($file_)){
$showalert= ' <span class="bggreen">已应用 </span>&nbsp; '.$row['id'].' &nbsp; <em class=\'red\'>'.$row['domain_name'].'</em>';
$showtools=" <input type='button' onclick=\"this.value='连接中,请等待反馈...';$(this).attr('disabled','true');en99($row[id],'$row[domain_id]')\" value='停用'/>";
}else{
$showalert= ' <span class="bgblue">已停用 </span>&nbsp; '.$row['id'].' &nbsp; <em class=\'red\'>'.$row['domain_name'].'</em>';
$showtools="<input type='button' onclick=\"this.value='连接中,请等待反馈...';$(this).attr('disabled','true');en88($row[id],'$row[domain_id]')\" value='部署应用'/> &nbsp; <input type='button' onclick=\"en0($row[id])\" value='禁止'/>";
}
}else
$showalert= ' <span class="bgred">已禁止 </span>&nbsp; '.$row['id'].' &nbsp; <em class=\'red\'>'.$row['domain_name'].'</em>';
$totle = $mysqli->query("SELECT `enabled` ,COUNT(*) FROM fs_groups WHERE `domain_id` = '$row[domain_id]' GROUP BY `enabled` order by `enabled` ");
$dialplans = result_fetch_all($totle);
unset($totle);
$totle = array('0'=>0,'1'=>0);
foreach ($dialplans as $one){
if ($one[0]=='1') $totle['1']=$one[1];
else $totle[$one[0]]=$one[1];
}
$showguser = "含组:可用<strong> $totle[1] </strong> 不可用<strong> $totle[0] </strong> <a href='FS_groups_cp.php?dmid=$row[domain_id]'>&raquo;&nbsp;管理组</a>";
$totle = $mysqli->query("SELECT `enabled` ,COUNT(*) FROM fs_users WHERE `domain_id` = '$row[domain_id]' GROUP BY `enabled` order by `enabled` ");
$dialplans = result_fetch_all($totle);
unset($totle);
$totle = array('0'=>0,'1'=>0);
foreach ($dialplans as $one){
if ($one[0]=='1') $totle['1']=$one[1];
else $totle[$one[0]]=$one[1];
}
$showuser = "含用户:可用<strong> $totle[1] </strong> 不可用<strong> $totle[0] </strong> <a href='FS_users_cp.php?dmid=$row[domain_id]'>&raquo;&nbsp;管理用户</a>";
if ($row['parent_id'])
$showu = " 上级域:<strong>".$dmlist[$row['parent_id']]."</strong>";
else
$showu = "<span class=\"smallgray smallsize-font\">无上级域</span>";
$options = "Level:<strong>".$row["level"]."</strong>";
$options .= " &nbsp; DID:<strong>".$row["DID"]."</strong>";
$bgcolor = fmod($row['id'],2)>0?"class='bg1'":"class='bg2'";
echo "<tr $bgcolor><td>$showalert</td><td>域标识:<a href='FS_files_edit.php?domain=$row[domain_id]'><strong>$row[domain_id]</strong></a></td><td> $showu</td><td> $showguser</td><td> $showuser</td><td>$options</td><td><a href='?editDomain=$row[id]'>详情及修改...</a> <span id='info$row[id]' style='font-size:9pt;color:red;'>";
if ($row['enabled']){
echo $showtools;
}else
echo " <button onclick=\"en1($row[id])\">启用</button> <button onclick=\"del($row[id])\">删除</button>";
echo "</span></td></tr>";
}
}
$mysqli->close();
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
PHP
1
https://gitee.com/flymotes/FSlmx.git
git@gitee.com:flymotes/FSlmx.git
flymotes
FSlmx
FSlmx
master

搜索帮助