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 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 "
\"".$text['label-refresh_pause']."\"
\n"; echo "
\n"; //js to load messages for clicked number echo "\n"; } } ?>