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 "»";
}
?>