From 79b6aba1991296eabb231fb148b33cfc8c71a337 Mon Sep 17 00:00:00 2001 From: Mark Crane Date: Fri, 14 Sep 2012 20:50:34 +0000 Subject: [PATCH] Call Flows - directs calls to a destination or alternate destination. A phone call to the feature code will toggle the call between the two destinations. Commonly used for Day/Night mode. --- app/call_flows/app_config.php | 92 +++++++++ app/call_flows/call_flow_delete.php | 36 ++++ app/call_flows/call_flow_edit.php | 307 ++++++++++++++++++++++++++++ app/call_flows/call_flows.php | 165 +++++++++++++++ app/call_flows/root.php | 50 +++++ 5 files changed, 650 insertions(+) create mode 100644 app/call_flows/app_config.php create mode 100644 app/call_flows/call_flow_delete.php create mode 100644 app/call_flows/call_flow_edit.php create mode 100644 app/call_flows/call_flows.php create mode 100644 app/call_flows/root.php diff --git a/app/call_flows/app_config.php b/app/call_flows/app_config.php new file mode 100644 index 0000000000..525357facd --- /dev/null +++ b/app/call_flows/app_config.php @@ -0,0 +1,92 @@ + \ No newline at end of file diff --git a/app/call_flows/call_flow_delete.php b/app/call_flows/call_flow_delete.php new file mode 100644 index 0000000000..637cbb1a76 --- /dev/null +++ b/app/call_flows/call_flow_delete.php @@ -0,0 +1,36 @@ +0) { + $id = check_str($_GET["id"]); +} + +if (strlen($id)>0) { + //delete call_flow + $sql = "delete from v_call_flows "; + $sql .= "where domain_uuid = '$domain_uuid' "; + $sql .= "and call_flow_uuid = '$id' "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + unset($sql); +} + +//redirect the user + require_once "includes/header.php"; + echo "\n"; + echo "
\n"; + echo "Delete Complete\n"; + echo "
\n"; + require_once "includes/footer.php"; + return; + +?> \ No newline at end of file diff --git a/app/call_flows/call_flow_edit.php b/app/call_flows/call_flow_edit.php new file mode 100644 index 0000000000..26370632cf --- /dev/null +++ b/app/call_flows/call_flow_edit.php @@ -0,0 +1,307 @@ +0) { + $call_flow_extension = check_str($_POST["call_flow_extension"]); + $call_flow_feature_code = check_str($_POST["call_flow_feature_code"]); + $call_flow_status = check_str($_POST["call_flow_status"]); + $call_flow_app = check_str($_POST["call_flow_app"]); + $call_flow_pin_number = check_str($_POST["call_flow_pin_number"]); + $call_flow_data = check_str($_POST["call_flow_data"]); + $call_flow_anti_app = check_str($_POST["call_flow_anti_app"]); + $call_flow_anti_data = check_str($_POST["call_flow_anti_data"]); + $call_flow_description = check_str($_POST["call_flow_description"]); + } + +if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { + + $msg = ''; + if ($action == "update") { + $call_flow_uuid = check_str($_POST["call_flow_uuid"]); + } + + //check for all required data + //if (strlen($call_flow_extension) == 0) { $msg .= "Please provide: Extension
\n"; } + //if (strlen($call_flow_feature_code) == 0) { $msg .= "Please provide: Feature Code
\n"; } + //if (strlen($call_flow_status) == 0) { $msg .= "Please provide: Status
\n"; } + //if (strlen($call_flow_app) == 0) { $msg .= "Please provide: Application
\n"; } + //if (strlen($call_flow_pin_number) == 0) { $msg .= "Please provide: PIN Number
\n"; } + //if (strlen($call_flow_data) == 0) { $msg .= "Please provide: Application Data
\n"; } + //if (strlen($call_flow_anti_app) == 0) { $msg .= "Please provide: Alternate Application
\n"; } + //if (strlen($call_flow_anti_data) == 0) { $msg .= "Please provide: Application Data
\n"; } + //if (strlen($call_flow_description) == 0) { $msg .= "Please provide: Description
\n"; } + if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) { + require_once "includes/header.php"; + require_once "includes/persistformvar.php"; + echo "
\n"; + echo "
\n"; + echo $msg."
"; + echo "
\n"; + persistformvar($_POST); + echo "
\n"; + require_once "includes/footer.php"; + return; + } + + //add or update the database + if ($_POST["persistformvar"] != "true") { + if ($action == "add" && permission_exists('call_flow_add')) { + $sql = "insert into v_call_flows "; + $sql .= "("; + $sql .= "domain_uuid, "; + $sql .= "call_flow_uuid, "; + $sql .= "call_flow_extension, "; + $sql .= "call_flow_feature_code, "; + $sql .= "call_flow_status, "; + $sql .= "call_flow_app, "; + $sql .= "call_flow_pin_number, "; + $sql .= "call_flow_data, "; + $sql .= "call_flow_anti_app, "; + $sql .= "call_flow_anti_data, "; + $sql .= "call_flow_description "; + $sql .= ")"; + $sql .= "values "; + $sql .= "("; + $sql .= "'$domain_uuid', "; + $sql .= "'".uuid()."', "; + $sql .= "'$call_flow_extension', "; + $sql .= "'$call_flow_feature_code', "; + $sql .= "'$call_flow_status', "; + $sql .= "'$call_flow_app', "; + $sql .= "'$call_flow_pin_number', "; + $sql .= "'$call_flow_data', "; + $sql .= "'$call_flow_anti_app', "; + $sql .= "'$call_flow_anti_data', "; + $sql .= "'$call_flow_description' "; + $sql .= ")"; + $db->exec(check_sql($sql)); + unset($sql); + + require_once "includes/header.php"; + echo "\n"; + echo "
\n"; + echo "Add Complete\n"; + echo "
\n"; + require_once "includes/footer.php"; + return; + } //if ($action == "add") + + if ($action == "update" && permission_exists('call_flow_edit')) { + $sql = "update v_call_flows set "; + $sql .= "call_flow_extension = '$call_flow_extension', "; + $sql .= "call_flow_feature_code = '$call_flow_feature_code', "; + $sql .= "call_flow_status = '$call_flow_status', "; + $sql .= "call_flow_app = '$call_flow_app', "; + $sql .= "call_flow_pin_number = '$call_flow_pin_number', "; + $sql .= "call_flow_data = '$call_flow_data', "; + $sql .= "call_flow_anti_app = '$call_flow_anti_app', "; + $sql .= "call_flow_anti_data = '$call_flow_anti_data', "; + $sql .= "call_flow_description = '$call_flow_description' "; + $sql .= "where domain_uuid = '$domain_uuid' "; + $sql .= "and call_flow_uuid = '$call_flow_uuid'"; + $db->exec(check_sql($sql)); + unset($sql); + + require_once "includes/header.php"; + echo "\n"; + echo "
\n"; + echo "Update Complete\n"; + echo "
\n"; + require_once "includes/footer.php"; + return; + } //if ($action == "update") + } //if ($_POST["persistformvar"] != "true") +} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) + +//pre-populate the form + if (count($_GET)>0 && $_POST["persistformvar"] != "true") { + $call_flow_uuid = check_str($_GET["id"]); + $sql = "select * from v_call_flows "; + $sql .= "where domain_uuid = '$domain_uuid' "; + $sql .= "and call_flow_uuid = '$call_flow_uuid' "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(); + foreach ($result as &$row) { + $call_flow_extension = $row["call_flow_extension"]; + $call_flow_feature_code = $row["call_flow_feature_code"]; + $call_flow_status = $row["call_flow_status"]; + $call_flow_app = $row["call_flow_app"]; + $call_flow_pin_number = $row["call_flow_pin_number"]; + $call_flow_data = $row["call_flow_data"]; + $call_flow_anti_app = $row["call_flow_anti_app"]; + $call_flow_anti_data = $row["call_flow_anti_data"]; + $call_flow_description = $row["call_flow_description"]; + break; //limit to 1 row + } + unset ($prep_statement); + } + +//show the header + require_once "includes/header.php"; + +//show the content + echo "
"; + echo "\n"; + echo "\n"; + echo " "; + echo " "; + echo "
\n"; + echo "
"; + + 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 "\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 "
Call Flow
\n"; + echo " Extension:\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo "\n"; + echo "
\n"; + echo " Feature Code:\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo "\n"; + echo "
\n"; + echo " Status:\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo "\n"; + echo "
\n"; + echo " Application:\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo "\n"; + echo "
\n"; + echo " PIN Number:\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo "\n"; + echo "
\n"; + echo " Application Data:\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo "\n"; + echo "
\n"; + echo " Alternate Application:\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo "\n"; + echo "
\n"; + echo " Application Data:\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo "\n"; + echo "
\n"; + echo " Description:\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo "\n"; + echo "
\n"; + if ($action == "update") { + echo " \n"; + } + echo " \n"; + echo "
"; + echo ""; + + echo "
"; + echo "
"; + +//include the footer + require_once "includes/footer.php"; +?> \ No newline at end of file diff --git a/app/call_flows/call_flows.php b/app/call_flows/call_flows.php new file mode 100644 index 0000000000..6bb13a32de --- /dev/null +++ b/app/call_flows/call_flows.php @@ -0,0 +1,165 @@ +"; + echo "\n"; + echo "\n"; + echo " "; + echo ""; + echo "
\n"; + echo "
"; + + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "
Call Flows 
\n"; + echo " Direct calls between two destinations by calling a feature code.

\n"; + echo "
\n"; + + //prepare to page the results + $sql = "select count(*) as num_rows from v_call_flows "; + $sql .= "where domain_uuid = '$domain_uuid' "; + if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; } + $prep_statement = $db->prepare($sql); + if ($prep_statement) { + $prep_statement->execute(); + $row = $prep_statement->fetch(PDO::FETCH_ASSOC); + if ($row['num_rows'] > 0) { + $num_rows = $row['num_rows']; + } + else { + $num_rows = '0'; + } + } + + //prepare to page the results + $rows_per_page = 10; + $param = ""; + $page = $_GET['page']; + if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; } + list($paging_controls, $rows_per_page, $var3) = paging($num_rows, $param, $rows_per_page); + $offset = $rows_per_page * $page; + + //get the list + $sql = "select * from v_call_flows "; + $sql .= "where domain_uuid = '$domain_uuid' "; + if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; } + $sql .= "limit $rows_per_page offset $offset "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(); + $result_count = count($result); + unset ($prep_statement, $sql); + + $c = 0; + $row_style["0"] = "row_style0"; + $row_style["1"] = "row_style1"; + + echo "
\n"; + echo "\n"; + echo "\n"; + echo th_order_by('call_flow_status', 'Status', $order_by, $order); + echo th_order_by('call_flow_extension', 'Extension', $order_by, $order); + echo th_order_by('call_flow_feature_code', 'Feature Code', $order_by, $order); + echo th_order_by('call_flow_app', 'Application', $order_by, $order); + //echo th_order_by('call_flow_pin_number', 'PIN Number', $order_by, $order); + echo th_order_by('call_flow_data', 'Application Data', $order_by, $order); + echo th_order_by('call_flow_anti_app', 'Alternate Application', $order_by, $order); + echo th_order_by('call_flow_anti_data', 'Application Data', $order_by, $order); + echo th_order_by('call_flow_description', 'Description', $order_by, $order); + echo "\n"; + echo "\n"; + + if ($result_count > 0) { + foreach($result as $row) { + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + //echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "\n"; + if ($c==0) { $c=1; } else { $c=0; } + } //end foreach + unset($sql, $result, $row_count); + } //end if results + + echo "\n"; + echo "\n"; + echo "\n"; + + echo "
\n"; + if (permission_exists('call_flow_add')) { + echo " $v_link_label_add\n"; + } + else { + echo "  \n"; + } + echo "
"; + if ($row['call_flow_status'] != "false") { + echo "On"; + } + else { + echo "Off"; + } + echo " \n"; + echo " ".$row['call_flow_extension']." ".$row['call_flow_feature_code']." ".$row['call_flow_app']." ".$row['call_flow_pin_number']." ".$row['call_flow_data']." ".$row['call_flow_anti_app']." ".$row['call_flow_anti_data']." ".$row['call_flow_description']." \n"; + if (permission_exists('call_flow_edit')) { + echo " $v_link_label_edit\n"; + } + if (permission_exists('call_flow_delete')) { + echo " $v_link_label_delete\n"; + } + echo "
\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "
 $paging_controls\n"; + if (permission_exists('call_flow_add')) { + echo " $v_link_label_add\n"; + } + else { + echo "  \n"; + } + echo "
\n"; + echo "
"; + echo "
"; + echo "

"; + echo "

"; + + echo "
"; + echo ""; + echo "

"; + +//include the footer + require_once "includes/footer.php"; +?> \ No newline at end of file diff --git a/app/call_flows/root.php b/app/call_flows/root.php new file mode 100644 index 0000000000..7b882438ea --- /dev/null +++ b/app/call_flows/root.php @@ -0,0 +1,50 @@ + + Portions created by the Initial Developer are Copyright (C) 2008-2012 + the Initial Developer. All Rights Reserved. + + Contributor(s): + Mark J Crane +*/ + +// make sure the PATH_SEPARATOR is defined + if (!defined("PATH_SEPARATOR")) { + if ( strpos( $_ENV[ "OS" ], "Win" ) !== false ) { define("PATH_SEPARATOR", ";"); } else { define("PATH_SEPARATOR", ":"); } + } + +// make sure the document_root is set + $_SERVER["SCRIPT_FILENAME"] = str_replace("\\", "/", $_SERVER["SCRIPT_FILENAME"]); + $_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]); + $_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]); + //echo "DOCUMENT_ROOT: ".$_SERVER["DOCUMENT_ROOT"]."
\n"; + //echo "PHP_SELF: ".$_SERVER["PHP_SELF"]."
\n"; + //echo "SCRIPT_FILENAME: ".$_SERVER["SCRIPT_FILENAME"]."
\n"; + +// if the project directory exists then add it to the include path otherwise add the document root to the include path + if (is_dir($_SERVER["DOCUMENT_ROOT"].'/fusionpbx')){ + if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', '/fusionpbx'); } + set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER["DOCUMENT_ROOT"].'/fusionpbx' ); + } + else { + if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); } + set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] ); + } + +?> \ No newline at end of file