diff --git a/app/xml_cdr/xml_cdr_extension_summary.php b/app/xml_cdr/xml_cdr_extension_summary.php
index c3fddc3c2b..84563568b2 100644
--- a/app/xml_cdr/xml_cdr_extension_summary.php
+++ b/app/xml_cdr/xml_cdr_extension_summary.php
@@ -26,15 +26,104 @@
require_once "root.php";
require_once "resources/require.php";
-require_once "resources/check_auth.php";
-if (permission_exists('xml_cdr_view')) {
- //access granted
-}
-else {
- echo "access denied";
- exit;
-}
+//check permisisions
+ require_once "resources/check_auth.php";
+ if (permission_exists('xml_cdr_view')) {
+ //access granted
+ }
+ else {
+ echo "access denied";
+ exit;
+ }
+
+//get current extension info
+ $sql = "select ";
+ $sql .= "extension_uuid, ";
+ $sql .= "extension, ";
+ $sql .= "number_alias, ";
+ $sql .= "description ";
+ $sql .= "from ";
+ $sql .= "v_extensions ";
+ $sql .= "where ";
+ $sql .= "enabled = 'true' ";
+ $sql .= "and domain_uuid = '".$_SESSION['domain_uuid']."' ";
+ $sql .= "order by ";
+ $sql .= "extension asc";
+ $prep_statement = $db->prepare(check_sql($sql));
+ $prep_statement->execute();
+ $result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
+ $result_count = count($result);
+ if ($result_count > 0) {
+ foreach($result as $row) {
+ $extensions[$row['extension']]['extension'] = $row['extension'];
+ $extensions[$row['extension']]['extension_uuid'] = $row['extension_uuid'];
+ $extensions[$row['extension']]['number_alias'] = $row['number_alias'];
+ $extensions[$row['extension']]['description'] = $row['description'];
+ }
+ }
+ unset ($sql, $prep_statement, $result, $row_count);
+ // create list of extensions for query below
+ foreach ($extensions as $extension => $blah) {
+ $ext_array[] = $extension;
+ }
+ $ext_list = implode("','", $ext_array);
+
+//calculate the summary data
+ $sql = "select ";
+ $sql .= "caller_id_number, ";
+ $sql .= "destination_number, ";
+ $sql .= "billsec, ";
+ $sql .= "hangup_cause ";
+ $sql .= "from v_xml_cdr ";
+ $sql .= "where ";
+ $sql .= "domain_uuid = '".$_SESSION['domain_uuid']."' ";
+ $sql .= "and ( ";
+ $sql .= " caller_id_number in ('".$ext_list."') or ";
+ $sql .= " destination_number in ('".$ext_list."') ";
+ $sql .= ") ";
+ if (!$include_internal) {
+ $sql .= " and ( direction = 'inbound' or direction = 'outbound' ) ";
+ }
+ if (strlen($start_stamp_begin) == 0 && strlen($start_stamp_end) == 0) {
+ $sql .= "and start_stamp >= '".date('Y-m-d H:i:s.000', strtotime("-1 week"))."' "; // show last 7 days if no range specified
+ }
+ else if (strlen($start_stamp_begin) > 0 && strlen($start_stamp_end) > 0) { $sql .= " and start_stamp BETWEEN '".$start_stamp_begin.":00.000' AND '".$start_stamp_end.":59.999'"; }
+ else {
+ if (strlen($start_stamp_begin) > 0) { $sql .= " and start_stamp >= '".$start_stamp_begin.":00.000'"; }
+ if (strlen($start_stamp_end) > 0) { $sql .= " and start_stamp <= '".$start_stamp_end.":59.999'"; }
+ }
+ //echo $sql."
";
+ $prep_statement = $db->prepare(check_sql($sql));
+ $prep_statement->execute();
+ $result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
+ $result_count = count($result);
+
+ if ($result_count > 0) {
+ foreach($result as $row) {
+ if ($summary[$row['destination_number']]['missed'] == null) {
+ $summary[$row['destination_number']]['missed'] = 0;
+ }
+ if (in_array($row['caller_id_number'], $ext_array)) {
+ $summary[$row['caller_id_number']]['outbound']['count']++;
+ $summary[$row['caller_id_number']]['outbound']['seconds'] += $row['billsec'];
+ }
+ if (in_array($row['destination_number'], $ext_array)) {
+ $summary[$row['destination_number']]['inbound']['count']++;
+ $summary[$row['destination_number']]['inbound']['seconds'] += $row['billsec'];
+ if ($row['billsec'] == "0") {
+ $summary[$row['destination_number']]['missed']++;
+ }
+ }
+ if ($row['hangup_cause'] == "NO_ANSWER") {
+ $summary[$row['destination_number']]['no_answer']++;
+ }
+ if ($row['hangup_cause'] == "USER_BUSY") {
+ $summary[$row['destination_number']]['busy']++;
+ }
+ } //end foreach
+ } //end if results
+ unset ($sql, $prep_statement, $result, $row_count);
//add multi-lingual support
require_once "app_languages.php";
@@ -45,7 +134,7 @@ else {
//additional includes
require_once "resources/header.php";
-// retrieve submitted data
+//retrieve submitted data
$start_stamp_begin = check_str($_REQUEST['start_stamp_begin']);
$start_stamp_end = check_str($_REQUEST['start_stamp_end']);
$include_internal = check_str($_REQUEST['include_internal']);
@@ -116,10 +205,8 @@ else {
echo " ";
echo "
| ".$text['label-extension']." | \n"; echo "".$text['label-number_alias']." | \n"; + echo "".$text['label-missed']." | \n"; + echo "".$text['label-no_answer']." | \n"; + echo "".$text['label-busy']." | \n"; + echo "".$text['label-aloc']." | \n"; echo "".$text['label-inbound_calls']." | \n"; echo "".$text['label-inbound_duration']." | \n"; echo "".$text['label-outbound_calls']." | \n"; echo "".$text['label-outbound_duration']." | \n"; + echo "".$text['label-description']." | \n"; echo "
|---|---|---|---|---|---|---|---|---|---|---|
| ".$extension." | \n"; echo "".$ext['number_alias']." | \n"; + echo "".$summary[$extension]['missed']." | \n"; + echo "".$summary[$extension]['no_answer']." | \n"; + echo "".$summary[$extension]['busy']." | \n"; + echo "".$summary[$extension]['aloc']." | \n"; echo "".(($summary[$extension]['inbound']['count'] != '') ? $summary[$extension]['inbound']['count'] : "0")." | \n"; echo "".(($seconds['inbound'] != '') ? gmdate("G:i:s", $seconds['inbound']) : '0:00:00')." | \n"; echo "".(($summary[$extension]['outbound']['count'] != '') ? $summary[$extension]['outbound']['count'] : "0")." | \n"; echo "".(($seconds['outbound'] != '') ? gmdate("G:i:s", $seconds['outbound']) : '0:00:00')." | \n"; + echo "".$ext['description']." | \n"; echo "