function getMonitoring($limit, $offset, $filter_field, $filter_value, $extension, $date_initial, $date_final) { $where = ""; $arrParam = array(); if (isset($filter_field) & $filter_field != "") { if ($filter_field == "ext") { $where = " AND (channel like 'SIP/{$filter_value}%' OR dstchannel like 'SIP/{$filter_value}%') "; } elseif ($filter_field == "userfield") { $in_val = strtolower($filter_value); switch ($in_val) { case "outgoing": $where = " AND (userfield like 'audio:O%' OR userfield like 'audio:/var/spool/asterisk/monitor/O%') "; break; case "group": $where = " AND (userfield like 'audio:g%' OR userfield like 'audio:/var/spool/asterisk/monitor/g%') "; break; case "queue": $where = " AND (userfield like 'audio:q%' OR userfield like 'audio:/var/spool/asterisk/monitor/q%') "; break; default: $where = " AND userfield REGEXP '[[:<:]]audio:[0-9]' "; break; } } else { $arrParam[] = "{$filter_value}%"; $where = " AND {$filter_field} like ? AND userfield LIKE 'audio:%' "; } } if (isset($date_initial) & $date_initial != "" && isset($date_final) & $date_final != "") { $arrParam[] = $date_initial; $arrParam[] = $date_final; $where .= " AND (calldate >= ? AND calldate <= ?) "; } else { $date_initial = date('Y-m-d') . " 00:00:00"; $date_final = date('Y-m-d') . " 23:59:59"; $arrParam[] = $date_initial; $arrParam[] = $date_final; $where .= " AND (calldate >= ? AND calldate <= ?) "; } if (isset($extension) & $extension != "") { $arrParam[] = $extension; $arrParam[] = $extension; $where .= " AND (src=? OR dst=?)"; } $arrParam[] = $limit; $arrParam[] = $offset; $query = "SELECT * FROM cdr WHERE userfield <> '' {$where} ORDER BY uniqueid DESC LIMIT ? OFFSET ?"; $result = $this->_DB->fetchTable($query, true, $arrParam); if ($result == FALSE) { $this->errMsg = $this->_DB->errMsg; return false; } //tri require_once "modules/agent_console/getinfo.php"; $oMainConsole = new getInfoMainConsole(); $oMainConsole->callcenter_db_connect($this->getConfig()); $index = 0; foreach ($result as $row) { // get note $arr_note = $oMainConsole->getNoteCdr($row['uniqueid']); // get delivery info $arrDelivery = $oMainConsole->getDeliveryCdr($row['uniqueid']); $result[$index]['note_id'] = $arr_note['call_entry_id']; $result[$index]['note'] = $arr_note['note']; $result[$index]['delivery_id'] = count($arrDelivery) > 0 ? $arrDelivery['id'] : null; $index++; } $oMainConsole->callcenter_db_disconnect(); return $result; }
function getMonitoring($limit, $offset, $filter_field, $filter_value, $extension, $date_initial, $date_final) { $where = ""; $arrParam = array(); if (isset($filter_field) & $filter_field != "") { if ($filter_field == "ext") { $where = " AND (channel like 'SIP/{$filter_value}%' OR dstchannel like 'SIP/{$filter_value}%') "; } elseif ($filter_field == "userfield") { $in_val = strtolower($filter_value); switch ($in_val) { case "outgoing": $where = " AND (userfield like 'audio:O%' OR userfield like 'audio:/var/spool/asterisk/monitor/O%') "; break; case "group": $where = " AND (userfield like 'audio:g%' OR userfield like 'audio:/var/spool/asterisk/monitor/g%') "; break; case "queue": $where = " AND (userfield like 'audio:q%' OR userfield like 'audio:/var/spool/asterisk/monitor/q%') "; break; default: $where = " AND userfield REGEXP '[[:<:]]audio:[0-9]' "; break; } } else { $arrParam[] = "{$filter_value}%"; $where = " AND {$filter_field} like ? "; } } if (isset($date_initial) & $date_initial != "" && isset($date_final) & $date_final != "") { $arrParam[] = $date_initial; $arrParam[] = $date_final; $where .= " AND (calldate >= ? AND calldate <= ?) "; } else { $date_initial = date('Y-m-d') . " 00:00:00"; $date_final = date('Y-m-d') . " 23:59:59"; $arrParam[] = $date_initial; $arrParam[] = $date_final; $where .= " AND (calldate >= ? AND calldate <= ?) "; } if (isset($extension) & $extension != "") { $arrParam[] = $extension; $arrParam[] = $extension; $where .= " AND (src=? OR dst=?)"; } $arrParam[] = $limit; $arrParam[] = $offset; $query = "SELECT * FROM cdr WHERE 1 = 1 {$where} ORDER BY uniqueid DESC LIMIT ? OFFSET ?"; $result = $this->_DB->fetchTable($query, true, $arrParam); if ($result == FALSE) { $this->errMsg = $this->_DB->errMsg; return false; } //tri require_once "modules/agent_console/getinfo.php"; $oMainConsole = new getInfoMainConsole(); $oMainConsole->callcenter_db_connect($this->getConfig()); $index = 0; foreach ($result as $row) { // get note $arr_note = $oMainConsole->getNoteCdr($row['uniqueid']); // get delivery info //$arrDelivery = $oMainConsole->getDeliveryCdr($row['uniqueid']); $result[$index]['note_id'] = $arr_note['call_entry_id']; $result[$index]['note'] = $arr_note['note']; $namefile = basename($result[$index]['userfield']); $namefile = str_replace("audio:", "", $namefile); // handle all situations switch ($result[$index]['dcontext']) { case 'from-internal-xfer': break; case 'from-did-direct': if ($result[$index]['userfield'] == '') { $filename = $this->checkFile(date('Ymd-His', strtotime($result[$index]['calldate'])) . '-' . $result[$index]['uniqueid'] . 'gsm'); if (is_null($filename)) { $result[$index]['userfield'] = ''; } $result[$index]['userfield'] = "audio:" . $filename; break; } break; case 'from-internal': // in case no audio file if ($result[$index]['userfield'] == '') { $filename = $this->checkFile(date('Ymd-His', strtotime($result[$index]['calldate'])) . '-' . $result[$index]['uniqueid'] . 'gsm'); if (is_null($filename)) { $result[$index]['userfield'] = ''; } $result[$index]['userfield'] = "audio:" . $filename; break; } if (substr($namefile, 0, 1) == 'q') { $result[$index]['userfield2'] = $result[$index]['userfield']; $filename = $this->checkFile(date('Ymd-His', strtotime($result[$index]['calldate'])) . '-' . $result[$index]['uniqueid'] . '.gsm'); if (is_null($filename)) { $result[$index]['userfield'] = ''; } else { $result[$index]['userfield'] = "audio:" . $filename; } $result[$index]['dcontext'] = 'from-internal-xfer'; break; } if (!strpos($result[$index]['userfield'], $result[$index]['uniqueid'])) { $filename = $this->checkFile(date('Ymd-His', strtotime($result[$index]['calldate'])) . '-' . $result[$index]['uniqueid'] . '.gsm'); if (is_null($filename)) { $result[$index]['userfield'] = ''; } $result[$index]['userfield'] = "audio:" . $filename; break; } break; case 'ext-queues': if (!strpos($result[$index]['userfield'], $result[$index]['uniqueid'])) { $filename = $this->checkFile("q" . $result[$index]['dst'] . "-" . date('Ymd-His', strtotime($result[$index]['calldate'])) . '-' . $result[$index]['uniqueid'] . '.gsm'); $result[$index]['userfield'] = "audio:/var/spool/asterisk/monitor/" . $filename; break; } break; default: break; } $index++; } $oMainConsole->callcenter_db_disconnect(); return $result; }