This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. ------------------------------------------------------------------------------- */ include ("/var/lib/asterisk/config/include/reverseLookup.php"); $rawLog = parseLog($callerlog); function removeAreacode($number) { global $VARS; return preg_replace("#^" . $VARS["ASTERISK_AREA_CODE"] . "#", "", $number); } for ($i = 0; $i < count($rawLog); $i++) { if ($rawLog[$i]["lastapp"] == 'VoiceMailMain') { continue; } elseif ($_GET["action"] == "missed") { if ($rawLog[$i]["disposition"] == "ANSWERED" || $rawLog[$i]["disposition"] == "FAILED" || $rawLog[$i]["dcontext"] == "outgoing" || $rawLog[$i]["dcontext"] == "default") continue; } elseif ($_GET["action"] == "outgoing") { if ($rawLog[$i]["dcontext"] == "incoming") continue; } elseif ($_GET["action"] == "incoming") { if ($rawLog[$i]["dcontext"] == "outgoing" || $rawLog[$i]["dcontext"] == "default") continue; } $log[] = $rawLog[$i]; } #$log = array_reverse($log); if (isset ($_GET["callID"])) { //soll Uebersicht angezeigt werden? $call = $log[$_GET["callID"]]; if (empty ($call["src"])) $cid = "unbekannt"; else $cid = $call["src"]; $start = formatDateString(strtotime($call["start"])); $end = formatDateString(strtotime($call["end"])); if (empty ($call["billsec"])) $answer = "Nicht abgehoben"; else { $answer = $call["duration"] - $call["billsec"]; $answer .= " Sek."; } echo "

Anruf von $cid am $start

"; $t = new table; $t->tdId = "protocol"; $t->thId = "protocolDetailed"; $t->innerBorder = FALSE; $t->setCol("Von:", "header"); $t->setCol($cid); $t->setRow(); $t->setCol("An:", "header"); $t->setCol($call["dst"]); $t->setRow(); $t->setCol("Anfang:", "header"); $t->setCol($start); $t->setRow(); $t->setCol("Ende:", "header"); $t->setCol($end); $t->setRow(); $t->setCol("Dauer:", "header"); $t->setCol(date("i:s", $call["duration"]) . " Min."); $t->setRow(); $t->setCol("Abgehoben nach:", "header"); $t->setCol($answer); $t->setRow(); $t->setCol("Aktion: ", "header"); $t->setCol(getStatus($call)); if (is_file("/var/spool/asterisk/monitor/" . $call["uniqueid"] . ".wav")) { $t->setRow(); $t->setCol("Aufzeichnung: ", "header"); $t->setCol(""); } $t->show(); } else { echo "

Protokoll

"; if ($_GET["action"] == "missed") $title = "Verpasste Anrufe"; elseif ($_GET["action"] == "outgoing") $title = "Ausgegangene Anrufe"; elseif ($_GET["action"] == "incoming") $title = "Eingegangene Anrufe"; echo "

$title

"; $t = new table; $t->tdId = "protocol"; $t->thId = "protocol"; $t->innerBorder = FALSE; $t->setCol("MSN", "header"); $t->setCol("", "header"); $t->setCol("CallerID", "header"); $t->setCol("CbC", "header"); $t->setCol("Uhrzeit", "header"); $t->setCol("Status", "header"); $t->setCol("Funktionen", "header"); $t->setRow(); $maxPerPage = 20; if (!isset ($_GET["scroll"])) $scroll = 0; else $scroll = $_GET["scroll"]; for ($i = count($log) - $scroll * $maxPerPage; $i > count($log) - $scroll * $maxPerPage - $maxPerPage; $i--) { if (!isset ($log[$i])) continue; if ($log[$i]["dcontext"] == "outgoing" || $log[$i]["dcontext"] == "default") { $extNumber = removeAreacode($log[$i]["dst"]); $intNumber = removeAreacode($log[$i]["src"]); $arrow = "=>"; $direction = DIR_OUTGOING; if ($log[$i]["userfield"] == "preselection" && preg_match("#^010#", $extNumber)) { $cbc = "Manuell"; } elseif (empty ($log[$i]["userfield"]) || $log[$i]["userfield"] == "preselection") { $cbc = "Presel."; } else $cbc = $log[$i]["userfield"]; } elseif ($log[$i]["dcontext"] = "incoming") { $extNumber = removeAreacode($log[$i]["src"]); $intNumber = removeAreacode($log[$i]["dst"]); $arrow = "<="; $direction = DIR_INCOMING; if ($log[$i]["userfield"] == "preselection" && preg_match("#^010#", $extNumber)) { $cbc = "Manuell"; } elseif (empty ($log[$i]["userfield"])) { $cbc = "-"; } else $cbc = $log[$i]["userfield"]; } if ($extNumber == "" || $extNumber == "unknown") { $extNumber = "unbekannt"; } else { $callback = " Wählen"; } if ($direction == DIR_INCOMING) { if (preg_match('#"(.*)" <.*>#', $log[$i]["clid"], $matches)) { $name = $matches[1]; } // else { // list ($name) = lookupName($extNumber); // } if ($name) { $callerIDNameStart = ""; $callerIDNameEnd = ""; } } $t->setCol($intNumber); $t->setCol($arrow); $t->setCol($callerIDNameStart . $extNumber . $callerIDNameEnd); $t->setCol($cbc); $t->setCol(date("d.m.y H:i", strtotime($log[$i]["start"]))); $status = getStatus($log[$i]); $t->setCol($status); $t->setCol("Details$callback"); $t->setRow(); unset ($callback); unset ($play); unset ($callerIDNameStart); unset ($callerIDNameEnd); unset ($matches); unset ($name); } $t->show(); echo "Seite "; $tmp = $_GET["scroll"] - 1; if ($_GET["scroll"] > 1) echo "« "; for ($i = 0; $i < count($log) - 1; $i += $maxPerPage) { $page = $i / $maxPerPage +1; if (($_GET["scroll"] + 1) == $page) { $strongStart = ""; $strongEnd = ""; } else { unset ($strongStart); unset ($strongEnd); } $tmp = $page -1; echo "" . $strongStart . $page . $strongEnd . " "; } $tmp = $_GET["scroll"] + 1; if ($_GET["scroll"] < $page -1) echo "»"; } ?>