} $add_custom = ' <tr> <td class="bar-search" align="left" bgcolor="#777777"> <font face="verdana" size="1" color="#ffffff"><b> ' . __('Поиск') . '</b></font> </td> <td align="left" bgcolor="#eeeeee"> <table width="100%" border="0" cellspacing="0" cellpadding="0" bgcolor="#eeeeee"><tr> <td class="bar-search" align="left"> ' . __('По телефону') . ': <input type="text" NAME="callerid" value="' . $callerid . '"> ' . __('По имени клиента') . ': <input type="text" NAME="clientname" value="' . $clientname . '"> ' . __('Выбор оператора или группы') . ': <select name="sipusr"> <OPTION value="">' . __('Все') . '</option> '; $queues = values("SELECT * FROM " . $conf_realtime_db . ".queues WHERE 1 ORDER BY name"); $input_lines = get_params_array(0, 'input_lines'); for ($i = 0; $i < count($queues); $i++) { for ($n = 0; $n < count($input_lines); $n++) { $ar = explode(':', $input_lines[$n]); if ($queues[$i]["name"] == $ar[2]) { $links[] = array($ar[1], $ar[0]); } } } for ($i = 0; $i < count($links); $i++) { if ($sipusr == $links[$i][0]) { $sel = ' selected'; } else { $sel = ''; } $add_custom .= '<OPTION value="' . $links[$i][0] . '"' . $sel . '>' . __($links[$i][1]) . '</option>
} if (!isset($sort)) { $sort = 'calldate'; } if (!in_array($sort, array('calldate', 'src', 'dst', 'duration', 'billsec', 'disposition'))) { $sort = 'calldate'; } if ($sort == "calldate") { $sort = 'calldate DESC'; } $aLinkParams = 'index.php?module=' . $sModule . '&page=' . $page . '&sort=calldate&link=1'; //////////***************************************************/////////////// list($cdr_restr, $cs_restr) = get_filters("periods,dates,status,directions,serchbynumber,perpage"); // GET FILTERS AND THEM RESULT if ($posted == 1) { if ($usr_restrictions = get_params_array(0, "cdr_restrictions")) { $usr_restr = ' AND (' . $usr_restrictions[0] . ')'; } else { $usr_restr = ''; } //echo '123'.$cdr_restr . $usr_restr .'456'; $duration_select = values("SELECT COUNT(*) AS c, SUM(duration) AS dur, SUM(billsec) AS bill, AVG(duration) AS avgdur, AVG(billsec) AS avgbill FROM " . $conf_cdr_db . ".cdr WHERE" . $cdr_restr . $usr_restr . " ORDER BY " . $sort); if (count($duration_select) > 0) { $dur_sec = $duration_select[0]['dur']; $avg_dur = $duration_select[0]['avgdur']; $bill_sec = $duration_select[0]['bill']; $avg_bill = $duration_select[0]['avgbill']; $cal_num = $duration_select[0]['c']; } else { $dur_sec = 0; $avg_dur = 0;
function queue_operators_stat($current_queue = '%') { $cur_date = Date("Y-m-d"); $opers = values("SELECT * FROM `" . conf_cdr_db . "`.`QueueMember` WHERE Queue LIKE '" . $current_queue . "' GROUP BY Name ORDER BY Name"); $opts = array('incoming_count', 'incoming_duration', 'incoming_avg_duration', 'outgoing_calls', 'outgoing_duration', 'outgoing_calls_answered', 'picked_count', 'maxhold', 'current_status', 'status_time', 'status_info'); $hiden_agents = get_params_array('monitor', 'hidden_agents'); for ($i = 0; $i < count($opers); $i++) { for ($n = 0; $n < count($opts); $n++) { if (!in_array($opers[$i]['Name'], $hiden_agents)) { $a[$opers[$i]['Name']][$opts[$n]] = 0; } } } for ($i = 0; $i < count($opers); $i++) { if ($opers[$i]['Paused'] == 0) { $a[$opers[$i]['Name']]['current_status'] = $opers[$i]['Status']; } else { $a[$opers[$i]['Name']]['current_status'] = 9; } } $shown_agents = array_keys($a); $incoming = values("SELECT agent, COUNT(*) AS incoming_count, SUM(callduration) AS incoming_duration, AVG(callduration) AS incoming_avg_duration, MAX(holdtime) AS maxhold FROM " . conf_realtime_db . ".call_status WHERE timestamp BETWEEN '" . $cur_date . " 00:00:00' AND '" . $cur_date . " 23:59:59' AND queue LIKE '" . $current_queue . "' GROUP BY agent ORDER BY agent"); $picked = values("SELECT agent, COUNT(*) AS picked_count FROM " . conf_realtime_db . ".call_status WHERE timestamp BETWEEN '" . $cur_date . " 00:00:00' AND '" . $cur_date . " 23:59:59' AND queue LIKE '" . $current_queue . "' AND (status='COMPLETEAGENT' OR status='COMPLETECALLER' OR status='CONNECT') GROUP BY agent ORDER BY agent"); $servicelevel = values("SELECT agent, COUNT(*) AS picked_in20s_count FROM `" . conf_realtime_db . "`.`call_status` WHERE `queue` LIKE '" . $current_queue . "' AND holdtime<=20 AND `timestamp` BETWEEN '" . $cur_date . " 00:00:00' AND '" . $cur_date . " 23:59:59' GROUP BY agent ORDER BY agent"); $agents_query = ''; for ($i = 0; $i < count($shown_agents); $i++) { $agents_query .= " OR src='" . $shown_agents[$i] . "'"; } if ($agents_query == '') { $agents_query = 0; } else { $agents_query = substr($agents_query, 4); } $out_calls = values("SELECT src AS agent, COUNT(*) AS outgoing_calls, SUM(duration) AS outgoing_duration FROM `cdr` WHERE (" . $agents_query . ") AND calldate BETWEEN '" . $cur_date . " 00:00:00' AND '" . $cur_date . " 23:59:59' GROUP BY src"); $out_calls_answered = values("SELECT src AS agent, COUNT(*) AS outgoing_calls_answered FROM `cdr` WHERE (" . $agents_query . ") AND calldate BETWEEN '" . $cur_date . " 00:00:00' AND '" . $cur_date . " 23:59:59' AND disposition='ANSWERED' GROUP BY src"); for ($i = 0; $i < count($incoming); $i++) { $a[$incoming[$i]['agent']]['incoming_count'] = $incoming[$i]['incoming_count']; $a[$incoming[$i]['agent']]['incoming_duration'] = $incoming[$i]['incoming_duration']; $a[$incoming[$i]['agent']]['incoming_avg_duration'] = round($incoming[$i]['incoming_avg_duration']); $a[$incoming[$i]['agent']]['maxhold'] = $incoming[$i]['maxhold']; } for ($i = 0; $i < count($picked); $i++) { $a[$picked[$i]['agent']]['picked_count'] = $picked[$i]['picked_count']; } for ($i = 0; $i < count($servicelevel); $i++) { $a[$servicelevel[$i]['agent']]['picked_in20s_count'] = $servicelevel[$i]['picked_in20s_count']; } for ($i = 0; $i < count($out_calls); $i++) { $a[$out_calls[$i]['agent']]['outgoing_calls'] = $out_calls[$i]['outgoing_calls']; $a[$out_calls[$i]['agent']]['outgoing_duration'] = $out_calls[$i]['outgoing_duration']; } for ($i = 0; $i < count($out_calls_answered); $i++) { $a[$out_calls_answered[$i]['agent']]['outgoing_calls_answered'] = $out_calls_answered[$i]['outgoing_calls_answered']; } return $a; }