From 3a3be41151321e6ea216197156f260a10de7cb99 Mon Sep 17 00:00:00 2001 From: FusionPBX Date: Sun, 16 Sep 2018 11:01:18 -0600 Subject: [PATCH] Create message_send.php --- app/messages/message_send.php | 289 ++++++++++++++++++++++++++++++++++ 1 file changed, 289 insertions(+) create mode 100644 app/messages/message_send.php diff --git a/app/messages/message_send.php b/app/messages/message_send.php new file mode 100644 index 0000000000..170f35210d --- /dev/null +++ b/app/messages/message_send.php @@ -0,0 +1,289 @@ + + Portions created by the Initial Developer are Copyright (C) 2018 + the Initial Developer. All Rights Reserved. + + Contributor(s): + Mark J Crane +*/ + +//includes + require_once "root.php"; + require_once "resources/require.php"; + +//check permissions + require_once "resources/check_auth.php"; + if (permission_exists('message_add') || permission_exists('message_edit')) { + //access granted + } + else { + echo "access denied"; + exit; + } + +//add multi-lingual support + $language = new text; + $text = $language->get(); + +//action add or update + if (isset($_REQUEST["id"])) { + $action = "update"; + $message_uuid = check_str($_REQUEST["id"]); + $id = check_str($_REQUEST["id"]); + } + else { + $action = "add"; + } + +//define the http request + function http_request($url, $method, $headers = null, $content) { + $options = array( + 'http'=>array( + 'method'=>$method, + 'header'=> $headers, + 'content'=>$content + )); + $context = stream_context_create($options); + $response = file_get_contents($url, false, $context); + if ($response === false) { + throw new Exception("Problem reading data from $url, $php_errormsg"); + } + return $response; + } + +//get http post variables and set them to php variables + if (is_array($_POST)) { + //$message_uuid = check_str($_POST["message_uuid"]); + //$user_uuid = check_str($_POST["user_uuid"]); + $message_type = check_str($_POST["message_type"]); + //$message_date = check_str($_POST["message_date"]); + $message_from = check_str($_POST["message_from"]); + $message_to = check_str($_POST["message_to"]); + $message_text = check_str($_POST["message_text"]); + //$message_media_type = check_str($_POST["message_media_type"]); + //$message_media_url = check_str($_POST["message_media_url"]); + //$message_media_content = check_str($_POST["message_media_content"]); + //$message_json = check_str($_POST["message_json"]); + } + +//process the user data and save it to the database + if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { + + //check for all required data + $msg = ''; + //if (strlen($user_uuid) == 0) { $msg .= $text['message-required']." ".$text['label-user_uuid']."
\n"; } + if (strlen($message_type) == 0) { $msg .= $text['message-required']." ".$text['label-message_type']."
\n"; } + //if (strlen($message_direction) == 0) { $msg .= $text['message-required']." ".$text['label-message_direction']."
\n"; } + //if (strlen($message_date) == 0) { $msg .= $text['message-required']." ".$text['label-message_date']."
\n"; } + if (strlen($message_from) == 0) { $msg .= $text['message-required']." ".$text['label-message_from']."
\n"; } + if (strlen($message_to) == 0) { $msg .= $text['message-required']." ".$text['label-message_to']."
\n"; } + //if (strlen($message_text) == 0) { $msg .= $text['message-required']." ".$text['label-message_text']."
\n"; } + //if (strlen($message_media_type) == 0) { $msg .= $text['message-required']." ".$text['label-message_media_type']."
\n"; } + //if (strlen($message_media_url) == 0) { $msg .= $text['message-required']." ".$text['label-message_media_url']."
\n"; } + //if (strlen($message_media_content) == 0) { $msg .= $text['message-required']." ".$text['label-message_media_content']."
\n"; } + //if (strlen($message_json) == 0) { $msg .= $text['message-required']." ".$text['label-message_json']."
\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; + } + + //get the source phone number + $phone_number = preg_replace('{[\D]}', '', $message_to); + + //get the contact uuid + //$sql = "SELECT trim(c.contact_name_given || ' ' || c.contact_name_family || ' (' || c.contact_organization || ')') AS name, p.phone_number AS number "; + $sql = "SELECT c.contact_uuid "; + $sql .= "FROM v_contacts as c, v_contact_phones as p "; + $sql .= "WHERE p.contact_uuid = c.contact_uuid "; + //$sql .= "and p.phone_number = :phone_number "; + $sql .= "and p.phone_number like '%".$phone_number."%' "; + $sql .= "and c.domain_uuid = '".$domain_uuid."' "; + $prep_statement = $db->prepare($sql); + //$prep_statement->bindParam(':phone_number', $phone_number); + $prep_statement->execute(); + $row = $prep_statement->fetch(PDO::FETCH_NAMED); + $contact_uuid = $row['contact_uuid']; + + //set the message id + $message_uuid = uuid(); + + //build the message array + $message['domain_uuid'] = $_SESSION["domain_uuid"]; + $message['message_uuid'] = uuid(); + $message['user_uuid'] = $_SESSION["user_uuid"]; + $message['contact_uuid'] = $contact_uuid; + $message['message_type'] = $message_type; + $message['message_direction'] = 'outbound'; + $message['message_date'] = 'now()'; + $message['message_from'] = $message_from; + $message['message_to'] = $message_to; + $message['$message_text'] = $message_text; + + //prepare the array + $array['messages'][0] = $message; + + //save to the data + $database = new database; + $database->app_name = 'messages'; + $database->app_uuid = null; + $database->uuid($message_uuid); + $database->save($array); + $message = $database->message; + + //debug info + //echo "
";
+			//print_r($message);
+			//echo "
"; + //exit; + + //santize the from + $message_from = preg_replace('{[\D]}', '', $message_from); + + //send the message to the provider + $array["to"] = $message_to; + $array["text"] = $message_text; + //$array["media"] = ''; + $http_content = json_encode($array); + + //settings needed for REST API + $http_method = $_SESSION['message']['http_method']['text']; + $http_content_type = $_SESSION['message']['http_content_type']['text']; + $http_destination = $_SESSION['message']['http_destination']['text']; + $http_auth_enabled = $_SESSION['message']['http_auth_enabled']['text']; + $http_auth_type = $_SESSION['message']['http_auth_type']['text']; + $http_auth_user = $_SESSION['message']['http_auth_user']['text']; + $http_auth_password = $_SESSION['message']['http_auth_password']['text']; + + //send the message to the provider + $headers[] = "Content-type: ".trim($http_content_type); + if ($http_auth_enabled == 'true' && $http_auth_type == 'basic') { + $headers[] = "Authorization: Basic ".base64_encode($http_auth_username.':'.$http_auth_password); + } + $response = http_request($http_destination, $http_method, $headers, $http_content); + echo $response; + + //redirect the user + $_SESSION["message"] = $text['message-sent']; + header('Location: messages.php'); + return; + } //(is_array($_POST) && strlen($_POST["persistformvar"]) == 0) + +//show the header + require_once "resources/header.php"; + +//show the content + 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['title-message']."

\n"; + echo " "; + //echo " "; + echo "
\n"; + echo " ".$text['label-message_type']."\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo $text['description-message_type']."\n"; + echo "
\n"; + echo " ".$text['label-message_from']."\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo $text['description-message_from']."\n"; + echo "
\n"; + echo " ".$text['label-message_to']."\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo $text['description-message_to']."\n"; + echo "
\n"; + echo " ".$text['label-message_text']."\n"; + echo "\n"; + //echo " \n"; + echo " \n"; + echo "
\n"; + echo $text['description-message_text']."\n"; + echo "
\n"; + echo " \n"; + echo " \n"; + echo "
"; + echo "
"; + echo "

"; + +//include the footer + require_once "resources/footer.php"; + +?>