Portions created by the Initial Developer are Copyright (C) 2008-2019 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane Luis Daniel Lucio Quiroz Call Block is written by Gerrit Visser */ //includes require_once "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; //check permissions if (!permission_exists('call_block_edit') && !permission_exists('call_block_add')) { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get(); //define the call_block_get_extensions function function call_block_get_extensions($select_extension) { global $text; //list voicemail $sql = "select extension, user_context, description from v_extensions "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "and enabled = 'true' "; $sql .= "order by extension asc "; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $database = new database; $result = $database->select($sql, $parameters); if (is_array($result) && sizeof($result) != 0) { echo "\n"; foreach ($result as &$row) { $extension = $row["extension"]; $context = $row["user_context"]; $description = $row["description"]; $selected = $extension == $select_extension ? "selected='selected'" : null; echo "\n"; } echo "\n"; } } //action add or update if (is_uuid($_REQUEST["id"])) { $action = "update"; $call_block_uuid = $_REQUEST["id"]; } else { $action = "add"; } //get http post variables and set them to php variables if (count($_POST) > 0) { $call_block_name = $_POST["call_block_name"]; $call_block_number = $_POST["call_block_number"]; $call_block_action = $_POST["call_block_action"]; $call_block_enabled = $_POST["call_block_enabled"]; } //handle the http post if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { $msg = ''; if ($action == "update") { //$call_block_uuid = check_str($_POST["call_block_uuid"]); } //check for all required data if (strlen($call_block_name) == 0) { $msg .= $text['label-provide-name']."
\n"; } if ($action == "add") { if (strlen($call_block_number) == 0) { $msg .= $text['label-provide-number']."
\n"; } } if (strlen($call_block_enabled) == 0) { $msg .= $text['label-provide-enabled']."
\n"; } if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) { require_once "resources/header.php"; require_once "resources/persist_form_var.php"; echo "
\n"; echo "
\n"; echo $msg."
"; echo "
\n"; persistformvar($_POST); echo "
\n"; require_once "resources/footer.php"; return; } //add or update the database if (is_array($_POST) && sizeof($_POST) != 0 && $_POST["persistformvar"] != "true") { //ensure call block is enabled in the dialplan if ($action == "add" || $action == "update") { $sql = "select dialplan_uuid from v_dialplans where true "; $sql .= "and domain_uuid = :domain_uuid "; $sql .= "and app_uuid = 'b1b31930-d0ee-4395-a891-04df94599f1f' "; $sql .= "and dialplan_enabled <> 'true' "; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $database = new database; $rows = $database->select($sql, $parameters); if (is_array($rows) && sizeof($rows) != 0) { foreach ($rows as $index => $row) { $array['dialplans'][$index]['dialplan_uuid'] = $row['dialplan_uuid']; $array['dialplans'][$index]['dialplan_enabled'] = 'true'; } $p = new permissions; $p->add('dialplan_edit', 'temp'); $database = new database; $database->save($array); unset($array); $p->delete('dialplan_edit', 'temp'); } } if ($action == "add") { $array['call_block'][0]['call_block_uuid'] = uuid(); $array['call_block'][0]['domain_uuid'] = $_SESSION['domain_uuid']; $array['call_block'][0]['call_block_name'] = $call_block_name; $array['call_block'][0]['call_block_number'] = $call_block_number; $array['call_block'][0]['call_block_count'] = 0; $array['call_block'][0]['call_block_action'] = $call_block_action; $array['call_block'][0]['call_block_enabled'] = $call_block_enabled; $array['call_block'][0]['date_added'] = time(); $database = new database; $database->app_name = 'call_block'; $database->app_uuid = '9ed63276-e085-4897-839c-4f2e36d92d6c'; $database->save($array); $response = $database->message; unset($array); message::add($text['label-add-complete']); header("Location: call_block.php"); return; } if ($action == "update") { $sql = "select c.call_block_number, d.domain_name "; $sql .= "from v_call_block as c "; $sql .= "join v_domains as d on c.domain_uuid = d.domain_uuid "; $sql .= "where c.domain_uuid = :domain_uuid "; $sql .= "and c.call_block_uuid = :call_block_uuid "; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $parameters['call_block_uuid'] = $call_block_uuid; $database = new database; $result = $database->select($sql, $parameters); if (is_array($result) && sizeof($result) != 0) { //set the domain_name $domain_name = $result[0]["domain_name"]; //clear the cache $cache = new cache; $cache->delete("app:call_block:".$domain_name.":".$call_block_number); } unset($sql, $parameters); $array['call_block'][0]['call_block_uuid'] = $call_block_uuid; $array['call_block'][0]['domain_uuid'] = $_SESSION['domain_uuid']; $array['call_block'][0]['call_block_name'] = $call_block_name; $array['call_block'][0]['call_block_number'] = $call_block_number; $array['call_block'][0]['call_block_action'] = $call_block_action; $array['call_block'][0]['call_block_enabled'] = $call_block_enabled; $array['call_block'][0]['date_added'] = time(); $database = new database; $database->app_name = 'call_block'; $database->app_uuid = '9ed63276-e085-4897-839c-4f2e36d92d6c'; $database->save($array); $response = $database->message; unset($array); message::add($text['label-update-complete']); header("Location: call_block.php"); return; } } } //pre-populate the form if (count($_GET) > 0 && $_POST["persistformvar"] != "true") { $call_block_uuid = $_GET["id"]; $sql = "select * from v_call_block "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "and call_block_uuid = :call_block_uuid "; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $parameters['call_block_uuid'] = $call_block_uuid; $database = new database; $row = $database->select($sql, $parameters, 'row'); if (is_array($row) && sizeof($row) != 0) { $call_block_name = $row["call_block_name"]; $call_block_number = $row["call_block_number"]; $call_block_action = $row["call_block_action"]; $blocked_call_destination = $row["blocked_call_destination"]; $call_block_enabled = $row["call_block_enabled"]; } unset($sql, $parameters, $row); } //show the header require_once "resources/header.php"; //show the content echo ""; // Show last 5-10 calls first, with add button echo "
\n"; echo "\n"; echo "\n"; if ($action == "add") { echo "\n"; } if ($action == "update") { echo "\n"; } echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo " \n"; echo " \n"; echo " "; echo "
".$text['label-edit-add']."".$text['label-edit-edit'].""; echo " "; echo " \n"; echo "
\n"; if ($action == "add") { echo $text['label-add-note']."

\n"; } if ($action == "update") { echo $text['label-edit-note']."

\n"; } echo "
\n"; echo " ".$text['label-number']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-number']."\n"; echo "
\n"; echo "
\n"; echo " ".$text['label-name']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-name']."\n"; echo "
\n"; echo " ".$text['label-action']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-action']."\n"; echo "\n"; echo "
\n"; echo " ".$text['label-enabled']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-enable']."\n"; echo "\n"; echo "
\n"; if ($action == "update") { echo " \n"; } echo "
"; echo " \n"; echo "
"; echo "

"; echo "
"; //get recent calls from the db (if not editing an existing call block record) if (!is_uuid($_REQUEST["id"])) { $sql = "select caller_id_number, caller_id_name, start_epoch, direction, hangup_cause, duration, billsec, xml_cdr_uuid "; $sql .= "from v_xml_cdr where true "; $sql .= "and domain_uuid = :domain_uuid "; $sql .= "and direction != 'outbound' "; $sql .= "order by start_stamp desc "; $sql .= limit_offset($_SESSION['call_block']['recent_call_limit']['text']); $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $database = new database; $database = new database; $result = $database->select($sql, $parameters); unset($sql, $parameters); echo "".$text['label-edit-add-recent'].""; echo "

"; echo "\n"; echo "\n"; echo th_order_by('caller_id_name', $text['label-name'], $order_by, $order); echo th_order_by('caller_id_number', $text['label-number'], $order_by, $order); echo th_order_by('start_stamp', $text['label-called-on'], $order_by, $order); echo th_order_by('duration', $text['label-duration'], $order_by, $order); echo "\n"; echo ""; $c = 0; $row_style["0"] = "row_style0"; $row_style["1"] = "row_style1"; if (is_array($result) && sizeof($result) != 0) { foreach($result as $row) { $tr_onclick = " onclick=\"call_block_recent('".escape($row['xml_cdr_uuid'])."','".urlencode(escape($row['caller_id_name']))."');\" "; if (strlen($row['caller_id_number']) >= 7) { if (defined('TIME_24HR') && TIME_24HR == 1) { $tmp_start_epoch = date("j M Y H:i:s", $row['start_epoch']); } else { $tmp_start_epoch = date("j M Y h:i:sa", $row['start_epoch']); } echo "\n"; if ( file_exists($_SERVER["DOCUMENT_ROOT"]."/themes/".$_SESSION['domain']['template']['name']."/images/icon_cdr_inbound_missed.png") && file_exists($_SERVER["DOCUMENT_ROOT"]."/themes/".$_SESSION['domain']['template']['name']."/images/icon_cdr_inbound_connected.png") && file_exists($_SERVER["DOCUMENT_ROOT"]."/themes/".$_SESSION['domain']['template']['name']."/images/icon_cdr_local_failed.png") && file_exists($_SERVER["DOCUMENT_ROOT"]."/themes/".$_SESSION['domain']['template']['name']."/images/icon_cdr_local_connected.png") ) { echo " \n"; } else { echo " "; } echo " \n"; echo " \n"; echo " \n"; $seconds = ($row['hangup_cause']=="ORIGINATOR_CANCEL") ? $row['duration'] : $row['billsec']; //If they cancelled, show the ring time, not the bill time. echo " \n"; echo " "; echo "\n"; $c = $c == 1 ? 0 : 1; } } unset($result); } echo "
  
"; switch ($row['direction']) { case "inbound" : if ($row['billsec'] == 0) echo "".$text[\n"; else echo "".$text[\n"; break; case "local" : if ($row['billsec'] == 0) echo "".$text[\n"; else echo "".$text[\n"; break; } echo "  "; echo $row['caller_id_name'].' '; echo " "; if (is_numeric($row['caller_id_number'])) { echo format_phone($row['caller_id_number']).' '; } else { echo $row['caller_id_number'].' '; } echo " ".$tmp_start_epoch."".gmdate("G:i:s", $seconds).""; if (if_group("admin") || if_group("superadmin")) { echo " ".$v_link_label_view.""; } echo "".$v_link_label_add.""; echo "
"; echo "
"; } //include the footer require_once "resources/footer.php"; ?>