diff --git a/app/messages/app_config.php b/app/messages/app_config.php deleted file mode 100644 index 5f8c733ab8..0000000000 --- a/app/messages/app_config.php +++ /dev/null @@ -1,268 +0,0 @@ - diff --git a/app/messages/app_defaults.php b/app/messages/app_defaults.php deleted file mode 100644 index 178a83add5..0000000000 --- a/app/messages/app_defaults.php +++ /dev/null @@ -1,52 +0,0 @@ - - Portions created by the Initial Developer are Copyright (C) 2018 - the Initial Developer. All Rights Reserved. - - Contributor(s): - Mark J Crane -*/ - -//process this code online once -if ($domains_processed == 1) { - - //update default settings - $sql = "update v_default_settings set "; - $sql .= "default_setting_name = 'text' "; - $sql .= "where default_setting_category = 'message' "; - $sql .= "and default_setting_subcategory = 'http_auth_password' "; - $sql .= "and default_setting_name = 'array' "; - $database = new database; - $database->execute($sql); - unset($sql); - - //update domain settings - $sql = "update v_domain_settings set "; - $sql .= "domain_setting_name = 'text' "; - $sql .= "where domain_setting_category = 'message' "; - $sql .= "and domain_setting_subcategory = 'http_auth_password' "; - $sql .= "and domain_setting_name = 'array' "; - $database = new database; - $database->execute($sql); - unset($sql); - -} - -?> diff --git a/app/messages/app_languages.php b/app/messages/app_languages.php deleted file mode 100644 index 9c8125e88a..0000000000 --- a/app/messages/app_languages.php +++ /dev/null @@ -1,874 +0,0 @@ - \ No newline at end of file diff --git a/app/messages/app_menu.php b/app/messages/app_menu.php deleted file mode 100644 index 8c0b87fbad..0000000000 --- a/app/messages/app_menu.php +++ /dev/null @@ -1,21 +0,0 @@ - diff --git a/app/messages/index.php b/app/messages/index.php deleted file mode 100644 index 62137d56c7..0000000000 --- a/app/messages/index.php +++ /dev/null @@ -1,187 +0,0 @@ - - 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"; - -//default authorized to false - $authorized = false; - -//get the user settings - $sql = "select user_uuid, domain_uuid from v_user_settings "; - $sql .= "where user_setting_category = 'message' "; - $sql .= "and user_setting_subcategory = 'key' "; - $sql .= "and user_setting_value = :user_setting_value "; - $sql .= "and user_setting_enabled = 'true' "; - $parameters['user_setting_value'] = $_GET['key']; - $database = new database; - $row = $database->select($sql, $parameters, 'row'); - if (is_array($row) && @sizeof($row) != 0 && is_uuid($row['user_uuid'])) { - $domain_uuid = $row['domain_uuid']; - $user_uuid = $row['user_uuid']; - $authorized = true; - } - unset($sql, $parameters, $row); - -//authorization failed - if (!$authorized) { - //log the failed auth attempt to the system, to be available for fail2ban. - openlog('FusionPBX', LOG_NDELAY, LOG_AUTH); - syslog(LOG_WARNING, '['.$_SERVER['REMOTE_ADDR']."] authentication failed for ".$_GET['key']); - closelog(); - - //send http 404 - header("HTTP/1.0 404 Not Found"); - echo "\n"; - echo "404 Not Found\n"; - echo "\n"; - echo "

404 Not Found

\n"; - echo "
nginx/1.12.1
\n"; - echo "\n"; - echo "\n"; - exit(); - } - -//get the raw input data - $json = file_get_contents('php://input'); - -//decode the json into array - $message = json_decode($json, true); - -//get the source phone number - $phone_number = preg_replace('{[\D]}', '', $message['from']); - -//get the contact uuid - $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 c.domain_uuid = :domain_uuid "; - $parameters['phone_number'] = $phone_number; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $contact_uuid = $database->select($sql, $parameters, 'column'); - unset($sql, $parameters); - -//build message array - $message_uuid = uuid(); - $array['messages'][0]['message_uuid'] = $message_uuid; - $array['messages'][0]['domain_uuid'] = $domain_uuid; - $array['messages'][0]['user_uuid'] = $user_uuid; - $array['messages'][0]['contact_uuid'] = $contact_uuid; - $array['messages'][0]['message_uuid'] = $message_uuid; - $array['messages'][0]['message_type'] = is_array($message['media']) ? 'mms' : 'sms'; - $array['messages'][0]['message_direction'] = 'inbound'; - $array['messages'][0]['message_date'] = 'now()'; - $array['messages'][0]['message_from'] = $message['from']; - $array['messages'][0]['message_to'] = $message['to']; - $array['messages'][0]['message_text'] = $message['text']; - $array['messages'][0]['message_json'] = $json; - -//add the required permission - $p = new permissions; - $p->add("message_add", "temp"); - -//build message media array (if necessary) - if (is_array($message['media'])) { - foreach($message['media'] as $index => $media_url) { - $media_type = pathinfo($media_url, PATHINFO_EXTENSION); - if ($media_type !== 'xml') { - $array['message_media'][$index]['message_media_uuid'] = uuid(); - $array['message_media'][$index]['message_uuid'] = $message_uuid; - $array['message_media'][$index]['domain_uuid'] = $domain_uuid; - $array['message_media'][$index]['user_uuid'] = $user_uuid; - $array['message_media'][$index]['message_media_type'] = $media_type; - $array['message_media'][$index]['message_media_url'] = $media_url; - $array['message_media'][$index]['message_media_content'] = base64_encode(file_get_contents($media_url)); - } - } - - $p->add("message_media_add", "temp"); - } - -//save message to the database - $database = new database; - $database->app_name = 'messages'; - $database->app_uuid = '4a20815d-042c-47c8-85df-085333e79b87'; - $database->save($array); - $result = $database->message; - -//remove the temporary permission - $p->delete("message_add", "temp"); - $p->delete("message_media_add", "temp"); - -//convert the array to json - $array_json = json_encode($array); - -//get the list of extensions using the user_uuid - $sql = "select * from v_domains as d, v_extensions as e "; - $sql .= "where extension_uuid in ( "; - $sql .= " select extension_uuid "; - $sql .= " from v_extension_users "; - $sql .= " where user_uuid = :user_uuid "; - $sql .= ") "; - $sql .= "and e.domain_uuid = d.domain_uuid "; - $sql .= "and e.enabled = 'true' "; - $parameters['user_uuid'] = $user_uuid; - $database = new database; - $extensions = $database->select($sql, $parameters, 'all'); - unset($sql, $parameters); - -//create the event socket connection - if (is_array($extensions)) { - $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); - } - -//send the sip message - if (is_array($extensions) && @sizeof($extensions) != 0) { - foreach ($extensions as $row) { - $domain_name = $row['domain_name']; - $extension = $row['extension']; - $number_alias = $row['number_alias']; - - //send the sip messages - $command = "luarun app/messages/resources/send.lua ".$message["from"]."@".$domain_name." ".$extension."@".$domain_name." '".$message["text"]."'"; - - //send the command - $response = event_socket_request($fp, "api ".$command); - $response = event_socket_request($fp, "api log notice ".$command); - } - } - unset($extensions, $row); - -//set the file - //$file = '/tmp/sms.txt'; - -//save the file - //file_put_contents($file, $json); - -//save the data to the file system - //file_put_contents($file, $json."\n"); - //file_put_contents($file, $array_json."\nfrom: ".$message["from"]." to: ".$message["to"]." text: ".$message["text"]."\n$sql_test\njson: ".$json."\n".$saved_result."\n"); - -?> diff --git a/app/messages/message_edit.php b/app/messages/message_edit.php deleted file mode 100644 index 4a1c4aafd4..0000000000 --- a/app/messages/message_edit.php +++ /dev/null @@ -1,387 +0,0 @@ - - Portions created by the Initial Developer are Copyright (C) 2018-2020 - the Initial Developer. All Rights Reserved. - - Contributor(s): - Mark J Crane -*/ - -//includes - require_once "root.php"; - require_once "resources/require.php"; - require_once "resources/check_auth.php"; - -//check permissions - 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 (is_uuid($_REQUEST["id"])) { - $action = "update"; - $message_uuid = $_REQUEST["id"]; - } - else { - $action = "add"; - } - -//get http post variables and set them to php variables - if (is_array($_POST)) { - $message_uuid = $_POST["message_uuid"]; - $user_uuid = $_POST["user_uuid"]; - $message_type = $_POST["message_type"]; - $message_direction = $_POST["message_direction"]; - $message_date = $_POST["message_date"]; - $message_from = $_POST["message_from"]; - $message_to = $_POST["message_to"]; - $message_text = $_POST["message_text"]; - $message_media_type = $_POST["message_media_type"]; - $message_media_url = $_POST["message_media_url"]; - $message_media_content = $_POST["message_media_content"]; - $message_json = $_POST["message_json"]; - } - -//process the user data and save it to the database - if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { - - //get the uuid from the POST - if ($action == "update") { - $message_uuid = $_POST["message_uuid"]; - } - - //process the http post data by submitted action - if ($_POST['action'] != '' && is_uuid($message_uuid)) { - $array[0]['checked'] = 'true'; - $array[0]['uuid'] = $message_uuid; - - switch ($_POST['action']) { - case 'delete': - if (permission_exists('message_delete')) { - $obj = new messages; - $obj->delete($array); - } - break; - } - - header('Location: messages_log.php'); - exit; - } - - //validate the token - $token = new token; - if (!$token->validate($_SERVER['PHP_SELF'])) { - message::add($text['message-invalid_token'],'negative'); - header('Location: messages_log.php'); - exit; - } - - //check for all required data - $msg = ''; - 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; - } - - //add the message_uuid - if (!is_uuid($_POST["message_uuid"])) { - $message_uuid = uuid(); - } - - //prepare the array - $array['messages'][0]['domain_uuid'] = $_SESSION["domain_uuid"];; - $array['messages'][0]['user_uuid'] = $user_uuid; - $array['messages'][0]['message_uuid'] = $message_uuid; - $array['messages'][0]['message_type'] = $message_type; - $array['messages'][0]['message_direction'] = $message_direction; - $array['messages'][0]['message_date'] = $message_date; - $array['messages'][0]['message_from'] = $message_from; - $array['messages'][0]['message_to'] = $message_to; - $array['messages'][0]['message_text'] = $message_text; - $array['messages'][0]['message_uuid'] = $message_uuid; - - //save to the data - $database = new database; - $database->app_name = 'messages'; - $database->app_uuid = '4a20815d-042c-47c8-85df-085333e79b87'; - $database->save($array); - - //redirect the user - if (isset($action)) { - if ($action == "add") { - message::add($text['message-add']); - } - if ($action == "update") { - message::add($text['message-update']); - } - header('Location: message_edit.php?id='.$message_uuid); - exit; - } - } - -//pre-populate the form - if (is_array($_GET) && $_POST["persistformvar"] != "true") { - $message_uuid = $_GET["id"]; - $sql = "select * from v_messages "; - $sql .= "where message_uuid = :message_uuid "; - $parameters['message_uuid'] = $message_uuid; - $database = new database; - $row = $database->select($sql, $parameters, 'row'); - if (is_array($row) && @sizeof($row) != 0) { - $user_uuid = $row["user_uuid"]; - $message_type = $row["message_type"]; - $message_direction = $row["message_direction"]; - $message_date = $row["message_date"]; - $message_from = $row["message_from"]; - $message_to = $row["message_to"]; - $message_text = $row["message_text"]; - $message_media_type = $row["message_media_type"]; - $message_media_url = $row["message_media_url"]; - $message_media_content = $row["message_media_content"]; - $message_json = $row["message_json"]; - } - unset($sql, $parameters); - } - -//get the users - $sql = "select user_uuid, username from v_users "; - $sql .= "where domain_uuid = :domain_uuid "; - $sql .= "and user_enabled = 'true' "; - $sql .= "order by username asc "; - $parameters['domain_uuid'] = $_SESSION['domain_uuid']; - $database = new database; - $users = $database->select($sql, $parameters, 'all'); - unset($sql, $parameters); - -//create token - $object = new token; - $token = $object->create($_SERVER['PHP_SELF']); - -//include the header - $document['title'] = $text['title-message']; - require_once "resources/header.php"; - -//show the content - echo "
\n"; - - echo "
\n"; - echo "
".$text['title-message']."
\n"; - echo "
\n"; - echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','link'=>'messages_log.php']); - if ($action == 'update' && permission_exists('message_delete')) { - echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'name'=>'btn_delete','style'=>'margin-left: 15px;','onclick'=>"modal_open('modal-delete','btn_delete');"]); - } - echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save','style'=>'margin-left: 15px;']); - echo "
\n"; - echo "
\n"; - echo "
\n"; - - if ($action == 'update' && permission_exists('message_delete')) { - echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'delete','onclick'=>"modal_close();"])]); - } - - 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"; - - if (strlen($message_media_type) > 0) { - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - } - - if ($_GET['debug'] == 'true') { - 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 " ".$text['label-username']."\n"; - echo "\n"; - echo " \n"; - echo "
\n"; - echo $text['description-username']."\n"; - 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_direction']."\n"; - echo "\n"; - echo " \n"; - echo "
\n"; - echo $text['description-message_direction']."\n"; - echo "
\n"; - echo " ".$text['label-message_date']."\n"; - echo "\n"; - echo " \n"; - echo "
\n"; - echo $text['description-message_date']."\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 $text['description-message_text']."\n"; - echo "
\n"; - echo "  \n"; - echo "\n"; - $image_source = 'data: '.mime_content_type($message_media_type).';base64,'.$message_media_content; - echo ""; - echo "
\n"; - echo "
\n"; - echo " ".$text['label-message_media_type']."\n"; - echo "\n"; - echo " \n"; - echo "
\n"; - echo $text['description-message_media_type']."\n"; - echo "
\n"; - echo " ".$text['label-message_media_url']."\n"; - echo "\n"; - echo " \n"; - echo "
\n"; - echo $text['description-message_media_url']."\n"; - echo "
\n"; - echo " ".$text['label-message_media_content']."\n"; - echo "\n"; - echo " \n"; - echo "
\n"; - echo $text['description-message_media_content']."\n"; - echo "
\n"; - echo " ".$text['label-message_json']."\n"; - echo "\n"; - echo " \n"; - echo "
\n"; - echo $text['description-message_json']."\n"; - echo "
\n"; - echo "

\n"; - - echo "\n"; - echo "\n"; - - echo "
"; - -//include the footer - require_once "resources/footer.php"; - -?> \ No newline at end of file diff --git a/app/messages/message_media.php b/app/messages/message_media.php deleted file mode 100644 index 210a46d918..0000000000 --- a/app/messages/message_media.php +++ /dev/null @@ -1,99 +0,0 @@ - - Portions created by the Initial Developer are Copyright (C) 2016-2018 - the Initial Developer. All Rights Reserved. - - Contributor(s): - Mark J Crane -*/ - -//includes - require_once "root.php"; - require_once "resources/require.php"; - -//add multi-lingual support - $language = new text; - $text = $language->get(); - -//get media uuid - $message_media_uuid = $_GET['id']; - $message_media_source = escape($_GET['src']); - $action = $_GET['action']; - -//get media - if (is_uuid($message_media_uuid)) { - - $sql = "select message_media_type, message_media_url, message_media_content "; - $sql .= "from v_message_media "; - $sql .= "where message_media_uuid = :message_media_uuid "; - if (is_uuid($_SESSION['user_uuid'])) { - $sql .= "and user_uuid = :user_uuid "; - $parameters['user_uuid'] = $_SESSION['user_uuid']; - } - $sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) "; - $parameters['message_media_uuid'] = $message_media_uuid; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $media = $database->select($sql, $parameters, 'row'); - unset($sql, $parameters); - - switch (strtolower($media['message_media_type'])) { - case 'jpg': - case 'jpeg': $content_type = 'image/jpg'; break; - case 'png': $content_type = 'image/png'; break; - case 'gif': $content_type = 'image/gif'; break; - case 'aac': $content_type = 'audio/aac'; break; - case 'wav': $content_type = 'audio/wav'; break; - case 'mp3': $content_type = 'audio/mpeg'; break; - case 'mp2': $content_type = 'video/mpeg'; break; - case 'm4v': $content_type = 'video/mp4'; break; - case 'pdf': $content_type = 'application/pdf'; break; - case 'doc': $content_type = 'application/vnd.ms-word'; break; - case 'docx': $content_type = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'; break; - case 'xls': $content_type = 'application/vnd.ms-excel'; break; - case 'xlsx': $content_type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; break; - case 'ppt': $content_type = 'application/vnd.ms-powerpoint'; break; - case 'pptx': $content_type = 'application/vnd.openxmlformats-officedocument.presentationml.presentation'; break; - case 'zip': $content_tyep = 'application/zip'; break; - default: $content_type = 'application/octet-stream'; break; - } - - switch ($action) { - case 'download': - header("Content-type: ".$content_type."; charset=utf-8"); - $filename = $message_media_source != '' ? $message_media_source."_".$message_media_uuid.".".strtolower($media['message_media_type']) : $media['message_media_url']; - header("Content-Disposition: attachment; filename=\"".$filename."\""); - header("Content-Length: ".strlen(base64_decode($media['message_media_content']))); - echo base64_decode($media['message_media_content']); - break; - case 'display': - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo "
\n"; - echo " \n"; - echo "
\n"; - break; - } - - } - -?> diff --git a/app/messages/message_send.php b/app/messages/message_send.php deleted file mode 100644 index d3e8d2f1e6..0000000000 --- a/app/messages/message_send.php +++ /dev/null @@ -1,188 +0,0 @@ - - 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')) { - echo "access denied"; - exit; - } - -//add multi-lingual support - $language = new text; - $text = $language->get(); - -//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_from = $_POST["message_from"]; - $message_to = $_POST["message_to"]; - $message_text = $_POST["message_text"]; - $message_media = $_FILES["message_media"]; - } - -//process the user data and save it to the database - if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { - - //get the source phone number - $phone_number = preg_replace('{[\D]}', '', $message_to); - - //error check - if ( - !is_numeric($message_from) || - !is_numeric($message_to) || - $message_text == '') { - exit; - } - - // handle media (if any) - if (is_array($message_media) && @sizeof($message_media) != 0) { - // reorganize media array, ignore errored files - $f = 0; - foreach ($message_media['error'] as $index => $error) { - if ($error == 0) { - $tmp_media[$f]['uuid'] = uuid(); - $tmp_media[$f]['name'] = $message_media['name'][$index]; - $tmp_media[$f]['type'] = $message_media['type'][$index]; - $tmp_media[$f]['tmp_name'] = $message_media['tmp_name'][$index]; - $tmp_media[$f]['size'] = $message_media['size'][$index]; - $f++; - } - } - $message_media = $tmp_media; - unset($tmp_media, $f); - } - $message_type = is_array($message_media) && @sizeof($message_media) != 0 ? 'mms' : 'sms'; - - //get the contact uuid - $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 like :phone_number "; - $sql .= "and c.domain_uuid = :domain_uuid "; - $parameters['phone_number'] = '%'.$phone_number.'%'; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $contact_uuid = $database->select($sql, $parameters, 'column'); - unset($sql, $parameters); - - //build the message array - $message_uuid = uuid(); - $array['messages'][0]['domain_uuid'] = $_SESSION["domain_uuid"]; - $array['messages'][0]['message_uuid'] = $message_uuid; - $array['messages'][0]['user_uuid'] = $_SESSION["user_uuid"]; - $array['messages'][0]['contact_uuid'] = $contact_uuid; - $array['messages'][0]['message_type'] = $message_type; - $array['messages'][0]['message_direction'] = 'outbound'; - $array['messages'][0]['message_date'] = 'now()'; - $array['messages'][0]['message_from'] = $message_from; - $array['messages'][0]['message_to'] = $message_to; - $array['messages'][0]['message_text'] = $message_text; - - //build message media array (if necessary) - $p = new permissions; - if (is_array($message_media) && @sizeof($message_media) != 0) { - foreach($message_media as $index => $media) { - $array['message_media'][$index]['message_media_uuid'] = $media['uuid']; - $array['message_media'][$index]['message_uuid'] = $message_uuid; - $array['message_media'][$index]['domain_uuid'] = $_SESSION["domain_uuid"]; - $array['message_media'][$index]['user_uuid'] = $_SESSION["user_uuid"]; - $array['message_media'][$index]['message_media_type'] = strtolower(pathinfo($media['name'], PATHINFO_EXTENSION)); - $array['message_media'][$index]['message_media_url'] = $media['name']; - $array['message_media'][$index]['message_media_content'] = base64_encode(file_get_contents($media['tmp_name'])); - } - - $p->add('message_media_add', 'temp'); - } - - //save to the data - $database = new database; - $database->app_name = 'messages'; - $database->app_uuid = '4a20815d-042c-47c8-85df-085333e79b87'; - $database->save($array); - unset($array); - - //remove any temporary permissions - $p->delete('message_media_add', 'temp'); - - //santize the from - $message_from = preg_replace('{[\D]}', '', $message_from); - - //prepare message to send - $message['to'] = $message_to; - $message['text'] = $message_text; - if (is_array($message_media) && @sizeof($message_media) != 0) { - $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? 'https://' : 'http://'; - foreach ($message_media as $index => $media) { - $path = $protocol.$_SERVER['HTTP_HOST'].'/app/messages/message_media.php?id='.$media['uuid'].'&action=download&.'.strtolower(pathinfo($media['name'], PATHINFO_EXTENSION)); - $message['media'][] = $path; - } - } - $http_content = json_encode($message); - - //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']['boolean']; - $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']; - - //exchange variable name with their values - $http_destination = str_replace("\${from}", $message_from, $http_destination); - - //send the message to the provider - $headers[] = "Content-type: ".trim($http_content_type); - if ($http_auth_type == 'basic') { - $headers[] = "Authorization: Basic ".base64_encode($http_auth_user.':'.$http_auth_password); - } - $response = http_request($http_destination, $http_method, $headers, $http_content); - - //redirect the user - return true; - } - -?> \ No newline at end of file diff --git a/app/messages/messages.php b/app/messages/messages.php deleted file mode 100644 index 405cc200ad..0000000000 --- a/app/messages/messages.php +++ /dev/null @@ -1,362 +0,0 @@ - - Portions created by the Initial Developer are Copyright (C) 2016-2020 - the Initial Developer. All Rights Reserved. - - Contributor(s): - Mark J Crane -*/ - -//includes - require_once "root.php"; - require_once "resources/require.php"; - require_once "resources/check_auth.php"; - -//check permissions - if (!permission_exists('message_view')) { - echo "access denied"; - exit; - } - -//add multi-lingual support - $language = new text; - $text = $language->get(); - -//get (from) destinations - $sql = "select destination_number from v_destinations "; - $sql .= "where domain_uuid = :domain_uuid "; - $sql .= "and destination_type_text = 1 "; - $sql .= "and destination_enabled = 'true' "; - $sql .= "order by destination_number asc "; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $rows = $database->select($sql, $parameters, 'all'); - if (is_array($rows) && @sizeof($rows)) { - foreach ($rows as $row) { - $destinations[] = $row['destination_number']; - } - } - unset($sql, $parameters, $rows, $row); - -//get self (primary contact attachment) image - if (!is_array($_SESSION['tmp']['messages']['contact_me'])) { - $sql = "select attachment_filename as filename, attachment_content as image "; - $sql .= "from v_contact_attachments "; - $sql .= "where domain_uuid = :domain_uuid "; - $sql .= "and contact_uuid = :contact_uuid "; - $sql .= "and attachment_primary = 1 "; - $parameters['domain_uuid'] = $_SESSION['domain_uuid']; - $parameters['contact_uuid'] = $_SESSION['user']['contact_uuid']; - $database = new database; - $row = $database->select($sql, $parameters, 'row'); - $_SESSION['tmp']['messages']['contact_me'] = $row; - unset($sql, $parameters, $row); - } - -//additional includes - $document['title'] = $text['title-messages']; - require_once "resources/header.php"; - -//resize thread window on window resize - echo "\n"; - -//styles - echo "\n"; - -//cache self (primary contact attachment) image - if (is_array($_SESSION['tmp']['messages']['contact_me']) && sizeof($_SESSION['tmp']['messages']['contact_me']) != 0) { - $attachment_type = strtolower(pathinfo($_SESSION['tmp']['messages']['contact_me']['filename'], PATHINFO_EXTENSION)); - echo "\n"; - } - -//new message layer - if (permission_exists('message_add')) { - echo "\n"; - } - -//message media layer - echo "\n"; - -//show the content - echo "
\n"; - echo "
".$text['title-messages']."
\n"; - echo "
\n"; - if (permission_exists('message_add')) { - echo button::create(['type'=>'button','label'=>$text['label-new_message'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','onclick'=>"$('#message_new_layer').fadeIn(200); unload_thread();"]); - } - echo button::create(['type'=>'button','label'=>$text['label-log'],'icon'=>'list','link'=>'messages_log.php']); - 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 "
".$text['label-contacts']."".$text['label-messages']."
···
···
\n"; - echo "\n"; - -//js to load messages for clicked number - echo "\n"; - - unset($messages, $message, $numbers, $number); - -//include the footer - require_once "resources/footer.php"; - -?> \ No newline at end of file diff --git a/app/messages/messages_contacts.php b/app/messages/messages_contacts.php deleted file mode 100644 index 8b5c0d974e..0000000000 --- a/app/messages/messages_contacts.php +++ /dev/null @@ -1,243 +0,0 @@ - - Portions created by the Initial Developer are Copyright (C) 2016-2019 - the Initial Developer. All Rights Reserved. - - Contributor(s): - Mark J Crane -*/ - -//includes - require_once "root.php"; - require_once "resources/require.php"; - require_once "resources/check_auth.php"; - -//check permissions - if (!permission_exists('message_view')) { - echo "access denied"; - exit; - } - -//add multi-lingual support - $language = new text; - $text = $language->get(); - -//get selected number/contact - $current_contact = $_GET['sel']; - -//get the list - if (isset($_SESSION['message']['display_last']['text']) && $_SESSION['message']['display_last']['text'] != '') { - $array = explode(' ',$_SESSION['message']['display_last']['text']); - if (is_array($array) && is_numeric($array[0]) && $array[0] > 0) { - if ($array[1] == 'messages') { - $limit = limit_offset($array[0], 0); - } - else { - $since = "and message_date >= :message_date "; - $parameters['message_date'] = date("Y-m-d H:i:s", strtotime('-'.$_SESSION['message']['display_last']['text'])); - } - } - } - if ($limit == '' && $since == '') { $limit = limit_offset(25, 0); } //default (message count) - $sql = "select message_direction, message_from, message_to, contact_uuid "; - $sql .= "from v_messages "; - $sql .= "where user_uuid = :user_uuid "; - $sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) "; - $sql .= $since; - $sql .= "order by message_date desc "; - $sql .= $limit; - $parameters['user_uuid'] = $_SESSION['user_uuid']; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $messages = $database->select($sql, $parameters, 'all'); - unset($sql, $parameters); - -//parse out numbers - if (is_array($messages) && @sizeof($messages) != 0) { - $numbers = []; - foreach($messages as $message) { - $number_from = preg_replace('{[\D]}', '', $message['message_from']); - $number_to = preg_replace('{[\D]}', '', $message['message_to']); - if (!in_array($number_from, $numbers)) { - $numbers[] = $number_from; - } - if (!in_array($number_to, $numbers)) { - $numbers[] = $number_to; - } - switch ($message['message_direction']) { - case 'inbound': - if (!is_uuid($contact[$number_from]['contact_uuid'])) { - $contact[$number_from]['contact_uuid'] = $message['contact_uuid']; - } - break; - case 'outbound': - if (!is_uuid($contact[$number_to]['contact_uuid'])) { - $contact[$number_to]['contact_uuid'] = $message['contact_uuid']; - } - break; - } - unset($number_from, $number_to); - } - } - unset($messages, $message); - -//get contact details, if uuid available - if (is_array($contact) && sizeof($contact) != 0) { - foreach ($contact as $number => $field) { - if (is_uuid($field['contact_uuid'])) { - $sql = "select c.contact_name_given, c.contact_name_family, "; - $sql .= "(select ce.email_address from v_contact_emails as ce where ce.contact_uuid = c.contact_uuid and ce.email_primary = 1) as contact_email "; - $sql .= "from v_contacts as c "; - $sql .= "where c.contact_uuid = :contact_uuid "; - $sql .= "and (c.domain_uuid = :domain_uuid or c.domain_uuid is null) "; - $parameters['contact_uuid'] = $field['contact_uuid']; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $row = $database->select($sql, $parameters, 'row'); - if (is_array($row) && @sizeof($row) != 0) { - $contact[$number]['contact_uuid'] = $field['contact_uuid']; - $contact[$number]['contact_name_given'] = $row['contact_name_given']; - $contact[$number]['contact_name_family'] = $row['contact_name_family']; - $contact[$number]['contact_email'] = $row['contact_email']; - } - unset($sql, $parameters, $row); - } - else { - unset($contact[$number]); - } - } - } - -//get destinations and remove from numbers array - $sql = "select destination_number from v_destinations "; - $sql .= "where domain_uuid = :domain_uuid "; - $sql .= "and destination_enabled = 'true' "; - $sql .= "order by destination_number asc "; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $rows = $database->select($sql, $parameters, 'all'); - if (is_array($rows) && @sizeof($rows)) { - foreach ($rows as $row) { - $destinations[] = $row['destination_number']; - } - } - unset($sql, $parameters, $rows, $row); - - if ( - is_array($numbers) && - @sizeof($numbers) != 0 && - is_array($destinations) && - @sizeof($destinations) != 0 && - !is_null(array_diff($numbers, $destinations)) - ) { - $numbers = array_diff($numbers, $destinations); - } - -//get contact (primary attachment) images and cache them - if (is_array($numbers) && @sizeof($numbers) != 0) { - foreach ($numbers as $number) { - $contact_uuids[] = $contact[$number]['contact_uuid']; - } - if (is_array($contact_uuids) && @sizeof($contact_uuids) != 0) { - $sql = "select contact_uuid as uuid, attachment_filename as filename, attachment_content as image "; - $sql .= "from v_contact_attachments "; - $sql .= "where domain_uuid = :domain_uuid "; - $sql .= "and ("; - foreach ($contact_uuids as $index => $contact_uuid) { - $sql_where[] = "contact_uuid = :contact_uuid_".$index; - $parameters['contact_uuid_'.$index] = $contact_uuid; - } - $sql .= implode(' or ', $sql_where); - $sql .= ") "; - $sql .= "and attachment_primary = 1 "; - $parameters['domain_uuid'] = $_SESSION['domain_uuid']; - $database = new database; - $contact_ems = $database->select($sql, $parameters, 'all'); - if (is_array($contact_ems) && @sizeof($contact_ems) != 0) { - foreach ($contact_ems as $contact_em) { - $_SESSION['tmp']['messages']['contact_em'][$contact_em['uuid']]['filename'] = $contact_em['filename']; - $_SESSION['tmp']['messages']['contact_em'][$contact_em['uuid']]['image'] = $contact_em['image']; - } - } - } - unset($sql, $sql_where, $parameters, $contact_uuids, $contact_ems, $contact_em); - } - -//contacts list - if (is_array($numbers) && @sizeof($numbers) != 0) { - echo "\n"; - foreach($numbers as $number) { - if ($current_contact != '' && $number == $current_contact) { - echo "\n"; - } - echo "
\n"; - $selected = true; - } - else { - echo "
\n"; - $selected = false; - } - //contact image - if (is_array($_SESSION['tmp']['messages']['contact_em'][$contact[$number]['contact_uuid']]) && sizeof($_SESSION['tmp']['messages']['contact_em'][$contact[$number]['contact_uuid']]) != 0) { - $attachment_type = strtolower(pathinfo($_SESSION['tmp']['messages']['contact_em'][$contact[$number]['contact_uuid']]['filename'], PATHINFO_EXTENSION)); - echo "\n"; - echo "\n"; - } - //contact name/number - if ($contact[$number]['contact_name_given'] != '' || $contact[$number]['contact_name_family'] != '') { - echo "
\n"; - echo "
\n"; - echo " ".escape($contact[$number]['contact_name_given'].' '.$contact[$number]['contact_name_family']).'
'; - echo " ".escape(format_phone($number)).'
'; - if (valid_email($contact[$number]['contact_email'])) { - echo "".$text['label-send_email']."
"; - } - if ($selected) { - $contact_name = escape($contact[$number]['contact_name_given'].' '.$contact[$number]['contact_name_family']); - $contact_html = (permission_exists('contact_view') ? "".$contact_name."" : $contact_name)." : ".escape(format_phone($number)).""; - echo "\n"; - } - echo "
\n"; - } - else { - echo escape(format_phone($number)); - if ($selected) { - echo "\n"; - } - } - echo "
\n"; - - echo "\n"; - } - else { - echo "
···
"; - } - - echo "
\n"; - echo " \"".$text['label-refresh_pause']."\" "; - echo "
\n"; - -?> \ No newline at end of file diff --git a/app/messages/messages_log.php b/app/messages/messages_log.php deleted file mode 100644 index ef070cf933..0000000000 --- a/app/messages/messages_log.php +++ /dev/null @@ -1,263 +0,0 @@ - - Portions created by the Initial Developer are Copyright (C) 2016-2020 - the Initial Developer. All Rights Reserved. - - Contributor(s): - Mark J Crane -*/ - -//includes - require_once "root.php"; - require_once "resources/require.php"; - require_once "resources/check_auth.php"; - require_once "resources/paging.php"; - -//check permissions - if (permission_exists('message_view')) { - //access granted - } - else { - echo "access denied"; - exit; - } - -//add multi-lingual support - $language = new text; - $text = $language->get(); - -//get the http post data - if (is_array($_POST['messages'])) { - $action = $_POST['action']; - $search = $_POST['search']; - $messages = $_POST['messages']; - } - -//process the http post data by action - if ($action != '' && is_array($messages) && @sizeof($messages) != 0) { - switch ($action) { - case 'delete': - if (permission_exists('message_delete')) { - $obj = new messages; - $obj->delete($messages); - } - break; - } - - header('Location: messages_log.php'.($search != '' ? '?search='.urlencode($search) : null)); - exit; - } - -//get variables used to control the order - $order_by = $_GET["order_by"]; - $order = $_GET["order"]; - -//add the search term - $search = strtolower($_GET["search"]); - if (strlen($search) > 0) { - $sql_search = " ("; - $sql_search .= "lower(message_type) like :search "; - $sql_search .= "or lower(message_direction) like :search "; - $sql_search .= "or lower(message_from) like :search "; - $sql_search .= "or lower(message_to) like :search "; - $sql_search .= "or lower(message_text) like :search "; - $sql_search .= ") "; - $parameters['search'] = '%'.$search.'%'; - } - -//prepare to page the results - $sql = "select count(*) from v_messages "; - if ($_GET['show'] == "all" && permission_exists('message_all')) { - if (isset($sql_search)) { - $sql .= "where ".$sql_search; - } - } - else { - $sql .= "where user_uuid = :user_uuid "; - $sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) "; - if (isset($sql_search)) { - $sql .= "and ".$sql_search; - } - $parameters['user_uuid'] = $_SESSION['user_uuid']; - $parameters['domain_uuid'] = $domain_uuid; - } - $database = new database; - $num_rows = $database->select($sql, $parameters, 'column'); - -//prepare to page the results - $rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50; - $param = "&search=".$search; - if ($_GET['show'] == "all" && permission_exists('message_all')) { - $param .= "&show=all"; - } - if (isset($_GET['page'])) { - $page = is_numeric($_GET['page']) ? $_GET['page'] : 0; - list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page); - list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true); - $offset = $rows_per_page * $page; - } - -//get the list - $sql = str_replace('count(*)', '*', $sql); - $sql .= "order by message_date desc "; - $sql .= limit_offset($rows_per_page, $offset); - $database = new database; - $messages = $database->select($sql, $parameters, 'all'); - unset($sql, $parameters); - -//create token - $object = new token; - $token = $object->create($_SERVER['PHP_SELF']); - -//include header - $document['title'] = $text['title-message_log']; - require_once "resources/header.php"; - -//define the checkbox_toggle function - echo "\n"; - -//show the content - echo "
\n"; - echo "
".$text['title-message_log']." (".$num_rows.")
\n"; - echo "
\n"; - echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','link'=>'messages.php']); - if (permission_exists('message_delete') && $messages) { - echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'name'=>'btn_delete','style'=>'margin-left: 15px;','onclick'=>"modal_open('modal-delete','btn_delete');"]); - } - echo "\n"; - echo "
\n"; - echo "
\n"; - echo "
\n"; - - if (permission_exists('message_delete') && $messages) { - echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('delete'); list_form_submit('form_list');"])]); - } - - echo "
\n"; - echo "\n"; - echo "\n"; - - echo "\n"; - echo "\n"; - if (permission_exists('message_delete')) { - echo " \n"; - } - echo th_order_by('message_type', $text['label-message_type'], $order_by, $order); - echo th_order_by('message_direction', $text['label-message_direction'], $order_by, $order); - echo th_order_by('message_date', $text['label-message_date'], $order_by, $order); - echo th_order_by('message_from', $text['label-message_from'], $order_by, $order); - echo th_order_by('message_to', $text['label-message_to'], $order_by, $order); - echo th_order_by('message_text', $text['label-message_text'], $order_by, $order, null, "class='pct-20 hide-xs'"); - if (permission_exists('message_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { - echo " \n"; - } - echo "\n"; - - if (is_array($messages) && @sizeof($messages) != 0) { - $x = 0; - foreach ($messages as $row) { - if (permission_exists('message_edit')) { - $list_row_url = "message_edit.php?id=".urlencode($row['message_uuid']); - } - echo "\n"; - if (permission_exists('message_delete')) { - echo " \n"; - } - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - if (permission_exists('message_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { - echo " \n"; - } - echo "\n"; - $x++; - } - unset($messages); - } - - echo "
\n"; - echo " \n"; - echo "  
\n"; - echo " \n"; - echo " \n"; - echo " "; - switch ($row['message_type']) { - case 'sms': echo $text['label-sms']; break; - case 'mms': echo $text['label-mms']; break; - case 'chat': echo $text['label-chat']; break; - } - echo " "; - switch ($row['message_direction']) { - case "inbound": echo $text['label-inbound']; break; - case "outbound": echo $text['label-outbound']; break; - } - echo " "; - $message_date = explode(' ', $row['message_date']); - $message_date = escape($message_date[0])." ".$message_date[1].""; - if (permission_exists('message_edit')) { - echo "".$message_date.""; - } - else { - echo $message_date; - } - echo " ".escape(format_phone($row['message_from']))." ".escape(format_phone($row['message_to']))." ".escape($row['message_text'])." \n"; - echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); - echo "
\n"; - echo "
\n"; - echo "
".$paging_controls."
\n"; - echo "\n"; - echo "
\n"; - -//include the footer - require_once "resources/footer.php"; - -?> \ No newline at end of file diff --git a/app/messages/messages_thread.php b/app/messages/messages_thread.php deleted file mode 100644 index f8f88d8075..0000000000 --- a/app/messages/messages_thread.php +++ /dev/null @@ -1,350 +0,0 @@ - - Portions created by the Initial Developer are Copyright (C) 2016-2020 - the Initial Developer. All Rights Reserved. - - Contributor(s): - Mark J Crane -*/ - -//includes - require_once "root.php"; - require_once "resources/require.php"; - require_once "resources/check_auth.php"; - -//check permissions - if (!permission_exists('message_view')) { - echo "access denied"; - exit; - } - -//add multi-lingual support - $language = new text; - $text = $language->get(); - -//get number of messages to load - $number = preg_replace('{[\D]}', '', $_GET['number']); - $contact_uuid = (is_uuid($_GET['contact_uuid'])) ? $_GET['contact_uuid'] : null; - -//set refresh flag - $refresh = $_GET['refresh'] == 'true' ? true : false; - -//get messages - if (isset($_SESSION['message']['display_last']['text']) && $_SESSION['message']['display_last']['text'] != '') { - $array = explode(' ',$_SESSION['message']['display_last']['text']); - if (is_array($array) && is_numeric($array[0]) && $array[0] > 0) { - if ($array[1] == 'messages') { - $limit = limit_offset($array[0], 0); - } - else { - $since = "and message_date >= :message_date "; - $parameters['message_date'] = date("Y-m-d H:i:s", strtotime('-'.$_SESSION['message']['display_last']['text'])); - } - } - } - if ($limit == '' && $since == '') { $limit = limit_offset(25, 0); } //default (message count) - $sql = "select "; - $sql .= "message_uuid, "; - $sql .= "domain_uuid, "; - $sql .= "user_uuid, "; - $sql .= "contact_uuid, "; - $sql .= "message_type, "; - $sql .= "message_direction, "; - if ($_SESSION['domain']['time_zone']['name'] != '') { - $sql .= "message_date at time zone :time_zone as message_date, "; - } - else { - $sql .= "message_date, "; - } - $sql .= "message_from, "; - $sql .= "message_to, "; - $sql .= "message_text "; - $sql .= "from v_messages "; - $sql .= "where user_uuid = :user_uuid "; - $sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) "; - $sql .= $since; - $sql .= "and (message_from like :message_number or message_to like :message_number) "; - $sql .= "order by message_date desc "; - $sql .= $limit; - if ($_SESSION['domain']['time_zone']['name'] != '') { - $parameters['time_zone'] = $_SESSION['domain']['time_zone']['name']; - } - $parameters['user_uuid'] = $_SESSION['user_uuid']; - $parameters['domain_uuid'] = $domain_uuid; - $parameters['message_number'] = '%'.$number; - $database = new database; - $messages = $database->select($sql, $parameters, 'all'); - unset($sql, $parameters); - - if (is_array($messages) && @sizeof($messages) != 0) { - $messages = array_reverse($messages); - - //get media (if any) - $sql = "select "; - $sql .= "message_uuid, "; - $sql .= "message_media_uuid, "; - $sql .= "message_media_type, "; - $sql .= "length(decode(message_media_content,'base64')) as message_media_size "; - $sql .= "from v_message_media "; - $sql .= "where user_uuid = :user_uuid "; - $sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) "; - $sql .= "and ( "; - foreach ($messages as $index => $message) { - $message_uuids[] = "message_uuid = :message_uuid_".$index; - $parameters['message_uuid_'.$index] = $message['message_uuid']; - } - $sql .= implode(' or ', $message_uuids); - $sql .= ") "; - $sql .= "and message_media_type <> 'txt' "; - $parameters['user_uuid'] = $_SESSION['user_uuid']; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $rows = $database->select($sql, $parameters, 'all'); - unset($sql, $parameters, $index); - - //prep media array - if (is_array($rows) && @sizeof($rows) != 0) { - foreach ($rows as $index => $row) { - $message_media[$row['message_uuid']][$index]['uuid'] = $row['message_media_uuid']; - $message_media[$row['message_uuid']][$index]['type'] = $row['message_media_type']; - $message_media[$row['message_uuid']][$index]['size'] = $row['message_media_size']; - } - } - } - -//css styles - echo "\n"; - - if (!$refresh) { - echo "
\n"; - } - - //output messages - if (is_array($messages) && @sizeof($messages) != 0) { - foreach ($messages as $message) { - //parse from message - if ($message['message_direction'] == 'inbound') { - $message_from = $message['message_to']; - $media_source = format_phone($message['message_from']); - } - if ($message['message_direction'] == 'outbound') { - $message_from = $message['message_from']; - $media_source = format_phone($message['message_to']); - } - - //message bubble - echo ""; - //contact image em - if ($message['message_direction'] == 'inbound') { - if (is_array($_SESSION['tmp']['messages']['contact_em'][$contact_uuid]) && @sizeof($_SESSION['tmp']['messages']['contact_em'][$contact_uuid]) != 0) { - echo "
\n"; - echo "
\n"; - echo "
\n"; - } - } - //contact image me - else { - if (is_array($_SESSION['tmp']['messages']['contact_me']) && @sizeof($_SESSION['tmp']['messages']['contact_me']) != 0) { - echo "
\n"; - echo "
\n"; - echo "
\n"; - } - } - echo "
\n"; - //message - if ($message['message_text'] != '') { - echo "
".str_replace("\n",'
',escape($message['message_text']))."
\n"; - } - //attachments - if (is_array($message_media[$message['message_uuid']]) && @sizeof($message_media[$message['message_uuid']]) != 0) { - - foreach ($message_media[$message['message_uuid']] as $media) { - if ($media['type'] != 'txt') { - if ($media['type'] == 'jpg' || $media['type'] == 'jpeg' || $media['type'] == 'gif' || $media['type'] == 'png') { - echo ""; - } - else { - echo ""; - } - echo ""; - echo "".strtoupper($media['type']).' · '.strtoupper(byte_convert($media['size'])).""; - echo "\n"; - } - } - echo "
\n"; - } - //message when - echo "".(date('m-d-Y') != format_when_local($message['message_date'],'d') ? format_when_local($message['message_date']) : format_when_local($message['message_date'],'t'))."\n"; - echo "
\n"; - echo "
\n"; - } - echo "\n"; - } - - echo "\n"; - - if (!$refresh) { - echo "
\n"; - - if (permission_exists('message_add')) { - //output input form - echo "
\n"; - echo "\n"; - 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 "
"; - echo button::create(['label'=>$text['button-clear'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'reset','onclick'=>"$('#message_text').trigger('focus');"]); - echo " \"".$text['label-refresh_pause']."\""; - echo button::create(['type'=>'submit','label'=>$text['button-send'],'title'=>$text['label-ctrl_enter'],'icon'=>'paper-plane']); - echo "
\n"; - echo "
\n"; - - //js to load messages for clicked number - echo "\n"; - } - } - -?> \ No newline at end of file diff --git a/app/messages/resources/classes/messages.php b/app/messages/resources/classes/messages.php deleted file mode 100644 index d7fa25588c..0000000000 --- a/app/messages/resources/classes/messages.php +++ /dev/null @@ -1,125 +0,0 @@ - - Portions created by the Initial Developer are Copyright (C) 2008-2020 - the Initial Developer. All Rights Reserved. - - Contributor(s): - Mark J Crane -*/ - -//define the messages class -if (!class_exists('messages')) { - class messages { - - /** - * declare private variables - */ - private $app_name; - private $app_uuid; - private $permission_prefix; - private $list_page; - private $table; - private $uuid_prefix; - - /** - * called when the object is created - */ - public function __construct() { - - //assign private variables - $this->app_name = 'messages'; - $this->app_uuid = '4a20815d-042c-47c8-85df-085333e79b87'; - $this->permission_prefix = 'message_'; - $this->list_page = 'messages_log.php'; - $this->table = 'messages'; - $this->uuid_prefix = 'message_'; - - } - - /** - * called when there are no references to a particular object - * unset the variables used in the class - */ - public function __destruct() { - foreach ($this as $key => $value) { - unset($this->$key); - } - } - - /** - * delete records - */ - public function delete($records) { - if (permission_exists($this->permission_prefix.'delete')) { - - //add multi-lingual support - $language = new text; - $text = $language->get(); - - //validate the token - $token = new token; - if (!$token->validate($_SERVER['PHP_SELF'])) { - message::add($text['message-invalid_token'],'negative'); - header('Location: '.$this->list_page); - exit; - } - - //delete multiple records - if (is_array($records) && @sizeof($records) != 0) { - - //build the delete array - foreach ($records as $x => $record) { - if ($record['checked'] == 'true' && is_uuid($record['uuid'])) { - $array[$this->table][$x][$this->uuid_prefix.'uuid'] = $record['uuid']; - $array[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid']; - $array['message_media'][$x][$this->uuid_prefix.'uuid'] = $record['uuid']; - $array['message_media'][$x]['domain_uuid'] = $_SESSION['domain_uuid']; - } - } - - //delete the checked rows - if (is_array($array) && @sizeof($array) != 0) { - - //grant temporary permissions - $p = new permissions; - $p->add('message_media_delete', 'temp'); - - //execute delete - $database = new database; - $database->app_name = $this->app_name; - $database->app_uuid = $this->app_uuid; - $database->delete($array); - unset($array); - - //revoke temporary permissions - $p->delete('message_media_delete', 'temp'); - - //set message - message::add($text['message-delete']); - } - unset($records); - } - } - } //method - - } //class -} - -?> \ No newline at end of file diff --git a/app/messages/resources/images/attachment.png b/app/messages/resources/images/attachment.png deleted file mode 100644 index de7692bf24..0000000000 Binary files a/app/messages/resources/images/attachment.png and /dev/null differ diff --git a/app/messages/resources/images/refresh_active.gif b/app/messages/resources/images/refresh_active.gif deleted file mode 100644 index 305457831c..0000000000 Binary files a/app/messages/resources/images/refresh_active.gif and /dev/null differ diff --git a/app/messages/resources/images/refresh_paused.png b/app/messages/resources/images/refresh_paused.png deleted file mode 100644 index 38937ec1f2..0000000000 Binary files a/app/messages/resources/images/refresh_paused.png and /dev/null differ diff --git a/app/messages/root.php b/app/messages/root.php deleted file mode 100644 index 6fdf32f37b..0000000000 --- a/app/messages/root.php +++ /dev/null @@ -1,90 +0,0 @@ - - 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 - umask(2); - if (!defined("PATH_SEPARATOR")) { - if (strpos($_ENV["OS"], "Win") !== false) { - define("PATH_SEPARATOR", ";"); - } else { - define("PATH_SEPARATOR", ":"); - } - } - - if (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html'; - - // make sure the document_root is set - $_SERVER["SCRIPT_FILENAME"] = str_replace("\\", '/', $_SERVER["SCRIPT_FILENAME"]); - if(PHP_SAPI == 'cli'){ - chdir(pathinfo(realpath($_SERVER["PHP_SELF"]), PATHINFO_DIRNAME)); - $script_full_path = str_replace("\\", '/', getcwd() . '/' . $_SERVER["SCRIPT_FILENAME"]); - $dirs = explode('/', pathinfo($script_full_path, PATHINFO_DIRNAME)); - if (file_exists('/project_root.php')) { - $path = '/'; - } else { - $i = 1; - $path = ''; - while ($i < count($dirs)) { - $path .= '/' . $dirs[$i]; - if (file_exists($path. '/project_root.php')) { - break; - } - $i++; - } - } - $_SERVER["DOCUMENT_ROOT"] = $path; - }else{ - $_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]); - } - $_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]); -// try to detect if a project path is being used - if (!defined('PROJECT_PATH')) { - if (is_dir($_SERVER["DOCUMENT_ROOT"]. '/fusionpbx')) { - define('PROJECT_PATH', '/fusionpbx'); - } elseif (file_exists($_SERVER["DOCUMENT_ROOT"]. '/project_root.php')) { - define('PROJECT_PATH', ''); - } else { - $dirs = explode('/', str_replace('\\', '/', pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME))); - $i = 1; - $path = $_SERVER["DOCUMENT_ROOT"]; - while ($i < count($dirs)) { - $path .= '/' . $dirs[$i]; - if (file_exists($path. '/project_root.php')) { - break; - } - $i++; - } - if(!file_exists($path. '/project_root.php')){ - die("Failed to locate the Project Root by searching for project_root.php please contact support for assistance"); - } - $project_path = str_replace($_SERVER["DOCUMENT_ROOT"], "", $path); - define('PROJECT_PATH', $project_path); - } - $_SERVER["PROJECT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH); - set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER["PROJECT_ROOT"]); - } - -?> \ No newline at end of file