} } $tags = GetTagsFromExif($upload); } else { $w = 0; $h = 0; } $message_date = date("Y-m-d H:i:s"); $maxorder = GetMaxMessageOrder($c, $dbh); $query = "INSERT INTO message (channel_id, message_date, message_sender, message_subject, message_order) VALUES ({$c},'" . $message_date . "','" . $alias . "','',{$maxorder})"; $result = mysql_query($query, $dbh); $current_message = mysql_insert_id(); $query = "INSERT INTO attachment (message_id, filename, content_type, original_filename,image_width,image_height,latitude,longitude,date_time) VALUES ({$current_message},'{$filename}','{$att_type}','{$filename}',{$w},{$h},'{$lat}','{$long}','{$datetime}')"; $result = mysql_query($query, $dbh); IncreaseFileIndex($c, $dbh); ProcessMessageTags($tags, $current_message, $dbh); $tags = ""; $msg = "File uploader ... file upload OK."; } } } } } else { $c = -1; $alias = ""; $msg = "File uploader"; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html>
function SendMessageTemplate($filename = "", $to_address = "", $from_address = "", $SubscriberID = "") { global $Responder_ID, $siteURL, $ResponderDirectory; global $MySQL_server, $MySQL_user, $MySQL_password, $MySQL_database; global $DB_LinkID, $charset, $cop, $newline, $blahtest, $table_prefix; global $DB_TimeJoined, $DB_Real_TimeJoined, $DB_SubscriberID; global $DB_EmailAddress, $DB_LastActivity, $DB_FirstName; global $DB_LastName, $CanReceiveHTML; global $DB_IPaddy, $DB_ReferralSource, $DB_UniqueCode; global $DB_ResponderName, $DB_OwnerEmail, $DB_MsgSub; global $DB_OwnerName, $DB_ReplyToEmail, $DB_ResponderDesc; global $DB_OptInRedir, $DB_OptOutRedir, $DB_OptInDisplay, $DB_OptOutDisplay; if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) { $newline = "\r\n"; } elseif (strtoupper(substr(PHP_OS, 0, 3) == 'MAC')) { $newline = "\r"; } else { $newline = PHP_EOL; } if ($filename == "") { die("Message template error!<br>\n"); } $pathinfo = pathinfo($filename); $htmlfilename = $customfilename = $pathinfo['basename']; # MOD 1.6.0: to allow for HTML template locations $htmlfilename = str_replace(".txt", ".html", $htmlfilename); $customhtmlfilename = str_replace(".html", "." . $Responder_ID . ".html", $htmlfilename); $customlocations = array(); $customlocations[] = get_stylesheet_directory() . str_replace('templates/messages/', 'templates/infinity-responder/', $customhtmlfilename); $customlocations[] = get_stylesheet_directory() . str_replace('templates/messages/', 'irmessages/', $customhtmlfilename); $customlocations[] = get_stylesheet_directory() . str_replace('templates/messages/', '/', $customhtmlfilename); $customlocations[] = get_stylesheet_directory() . str_replace('templates/messages/', 'templates/infinity-responder/', $htmlfilename); $customlocations[] = get_stylesheet_directory() . str_replace('templates/messages/', 'irmessages/', $htmlfilename); $customlocations[] = get_stylesheet_directory() . str_replace('templates/messages/', '/', $htmlfilename); $customlocations[] = dirname(__FILE__) . '/' . $htmlfilename; $customlocations = apply_filters('inf_resp_template_hierarchy_html', $customlocations); if (count($customlocations) > 0) { foreach ($customlocations as $customlocation) { if (file_exists($customlocation)) { $htmlfilename = $customlocation; } } } # MOD 1.6.0: to allow for text template locations $customfilename = str_replace(".txt", "." . $Responder_ID . ".txt", $customfilename); $customlocations = array(); $customlocations[] = get_stylesheet_directory() . str_replace('templates/messages/', 'templates/infinity-responder/', $customfilename); $customlocations[] = get_stylesheet_directory() . str_replace('templates/messages/', 'irmessages/', $customfilename); $customlocations[] = get_stylesheet_directory() . str_replace('templates/messages/', '/', $customfilename); $customlocations[] = get_stylesheet_directory() . str_replace('templates/messages/', 'templates/infinity-responder/', $filename); $customlocations[] = get_stylesheet_directory() . str_replace('templates/messages/', 'irmessages/', $filename); $customlocations[] = get_stylesheet_directory() . str_replace('templates/messages/', '/', $filename); $customlocations[] = dirname(__FILE__) . '/' . $htmlfilename; $customlocations = apply_filters('inf_resp_template_hierarchy_text', $customlocations); if (count($customlocations) > 0) { foreach ($customlocations as $customlocation) { if (file_exists($customlocation)) { $filename = $customlocation; } } } $file_contents = GrabFile($filename); if ($file_contents == FALSE) { die("Template {$filename} not found!<br>\n"); } # Separate the subject preg_match("/<SUBJ>(.*?)<\\/SUBJ>/ims", $file_contents, $matches); $MessageInfo['Subject'] = $Send_Subject = $matches[1]; # Seperate the message preg_match("/<MSG>(.*?)<\\/MSG>/ims", $file_contents, $matches); $DB_MsgBodyText = trim($matches[1]); # MOD 1.6.0: do similar for HTML template if it was found if ($htmlfilename != $pathinfo['basename']) { $file_contents = GrabFile($hmtlfilename); if ($file_contents == FALSE) { die("Template {$filename} not found!<br>\n"); } if (stristr($file_contents, '<SUBJ>') && stristr($file_contents, '</SUBJ>') && stristr($file_contents, '<MSG>') && stristr($file_contents, '</MSG>')) { # Separate the subject preg_match("/<SUBJ>(.*?)<\\/SUBJ>/ims", $file_contents, $matches); $MessageInfo['Subject'] = $Send_Subject = $matches[1]; # Seperate the message preg_match("/<MSG>(.*?)<\\/MSG>/ims", $file_contents, $matches); $DB_MsgBodyHTML = trim($matches[1]); } else { $DB_MsgBodyHTML = $file_contents; } } else { # Generate the HTML message $DB_MsgBodyHTML = nl2br($DB_MsgBodyText); } if ($DB_SubscriberID != "") { $SubscriberInfo = GetSubscriberInfo($DB_SubscriberID); } if ($SubscriberID != "") { $SubscriberInfo = GetSubscriberInfo($SubscriberID); } if ($SubscriberInfo['UniqueCode'] != "") { $DB_UniqueCode = $SubscriberInfo['UniqueCode']; } # Generate codes and links $cop = checkit(); $subcode = "s" . $DB_UniqueCode; $unsubcode = "u" . $DB_UniqueCode; # MOD sub links to Wordpress Plugin Handling // $sub_conf_link = $siteURL.$ResponderDirectory."/s.php?c=$subcode"; // $unsub_conf_link = $siteURL.$ResponderDirectory."/s.php?c=$unsubcode"; // $unsub_link = $siteURL.$ResponderDirectory."/s.php?c=$unsubcode"; $sub_conf_link = $siteURL . "/?infresp=s&c={$subcode}"; $unsub_conf_link = $siteURL . "/?infresp=s&c={$unsubcode}"; $unsub_link = $siteURL . "/?infresp=s&c={$unsubcode}"; $UnsubURL = $unsub_link; # Replace unsub and sub/unsub conf links $DB_MsgBodyText = preg_replace('/%sub_conf_url%/i', $sub_conf_link, $DB_MsgBodyText); $DB_MsgBodyText = preg_replace('/%unsub_conf_url%/i', $unsub_conf_link, $DB_MsgBodyText); $DB_MsgBodyText = preg_replace('/%unsub_url%/i', $unsub_link, $DB_MsgBodyText); $DB_MsgBodyHTML = preg_replace('/%sub_conf_url%/i', "<A HREF=\"{$sub_conf_link}\">{$sub_conf_link}</A>", $DB_MsgBodyHTML); $DB_MsgBodyHTML = preg_replace('/%unsub_conf_url%/i', "<A HREF=\"{$unsub_conf_link}\">{$unsub_conf_link}</A>", $DB_MsgBodyHTML); $DB_MsgBodyHTML = preg_replace('/%unsub_url%/i', "<A HREF=\"{$unsub_link}\">{$unsub_link}</A>", $DB_MsgBodyHTML); # Process tags $MessageInfo['ResponderID'] = $Responder_ID; $MessageInfo['BodyText'] = $DB_MsgBodyText; $MessageInfo['BodyHTML'] = $DB_MsgBodyHTML; $message = ProcessMessageTags($MessageInfo, $SubscriberInfo); $DB_MsgBodyText = $message['BodyText']; $DB_MsgBodyHTML = $message['BodyHTML']; $Send_Subject = $message['Subject']; # Set another from if (!isEmpty($from_address)) { $DB_ReplyToEmail = $from_address; } # Set another to if (!isEmpty($to_address)) { $DB_EmailAddress = $to_address; } # Generate the headers $Message_Body = ""; $Message_Headers = "Return-Path: <" . $DB_ReplyToEmail . ">{$newline}"; # $Message_Headers .= "Return-Receipt-To: <" . $DB_ReplyToEmail . ">$newline"; $Message_Headers .= "Envelope-to: {$DB_EmailAddress}{$newline}"; $Message_Headers .= "From: {$DB_OwnerName} <" . $DB_ReplyToEmail . ">{$newline}"; # $Message_Headers .= "Date: " . date('D\, j F Y H:i:s O') . "$newline"; $Message_Headers .= "Date: " . date('r') . "{$newline}"; $Message_Headers .= "Reply-To: {$DB_ReplyToEmail}{$newline}"; $Message_Headers .= "Sender-IP: " . $_SERVER["SERVER_ADDR"] . $newline; $Message_Headers .= "MIME-Version: 1.0{$newline}"; $Message_Headers .= "Priority: normal{$newline}"; $Message_Headers .= "X-Mailer: WP Infinity Responder{$newline}"; # Generate the body if (get_option('inf_resp_mailer') != 'wp_mail') { if ($CanReceiveHTML == 1) { $boundary = md5(time()) . rand(1000, 9999); $Message_Headers .= "Content-Type: multipart/alternative; {$newline} boundary=\"{$boundary}\"{$newline}"; $Message_Body .= "This is a multi-part message in MIME format.{$newline}{$newline}"; $Message_Body .= "--" . $boundary . $newline; $Message_Body .= "Content-type: text/plain; charset={$charset}{$newline}"; $Message_Body .= "Content-Transfer-Encoding: 8bit" . $newline; $Message_Body .= "Content-Disposition: inline{$newline}{$newline}"; $Message_Body .= $DB_MsgBodyText . $newline . $newline; $Message_Body .= "--" . $boundary . $newline; $Message_Body .= "Content-type: text/html; charset={$charset}{$newline}"; $Message_Body .= "Content-Transfer-Encoding: 8bit" . $newline; $Message_Body .= "Content-Disposition: inline{$newline}{$newline}"; $Message_Body .= $DB_MsgBodyHTML . $newline . $newline; } else { $Message_Headers .= "Content-type: text/plain; charset={$charset}{$newline}"; $Message_Headers .= "Content-Transfer-Encoding: 8bit" . $newline; $Message_Body = $DB_MsgBodyText . $newline; } } # Final filtering $Send_Subject = stripnl(str_replace("|", "", $Send_Subject)); $Message_Body = str_replace("|", "", $Message_Body); $Message_Headers = str_replace("|", "", $Message_Headers); $Message_Body = utf8_decode($Message_Body); # Send the mail // echo "Addy: $DB_EmailAddress <br>\n"; // echo "Subj: $Send_Subject <br>\n"; // echo "Head: $Message_Headers <br>\n"; # MOD for sending message via wp_mail /phpmailer if (get_option('inf_resp_mailer') == 'wp_mail') { add_option('inf_resp_owner_email', $DB_OwnerEmail); update_option('inf_resp_owner_email', $DB_OwnerEmail); add_option('inf_resp_owner_name', $DB_OwnerName); update_option('inf_resp_owner_name', $DB_OwnerName); add_filter('wp_mail_from', 'inf_resp_from_email', 100); add_filter('wp_mail_from_name', 'inf_resp_from_name', 100); // echo "Can Receive HTML? ".$CanReceiveHTML."<br>"; if ($CanReceiveHTML == 1) { // echo "Text Body: <textarea>$DB_MsgBodyText</textarea><br>\n"; // echo "HTML Body: <textarea>$DB_MsgBodyHTML</textarea><br>\n"; // echo "---------------------------<br>\n"; add_option('inf_resp_alt_body', $DB_MsgBodyText); update_option('inf_resp_alt_body', $DB_MsgBodyText); add_action('phpmailer_init', 'inf_resp_set_alt_body'); add_action('phpmailer_init', 'inf_resp_set_word_wrap'); $result = wp_mail($DB_EmailAddress, $Send_Subject, $DB_MsgBodyHTML, $Message_Headers, false); } else { // echo "Text Body: <textarea>$DB_MsgBodyText</textarea><br>\n"; // echo "---------------------------<br>\n"; add_action('phpmailer_init', 'inf_resp_set_word_wrap'); $result = wp_mail($DB_EmailAddress, $Send_Subject, $DB_MsgBodyText, $Message_Headers, false); } if (!$result) { echo "Message sending by wp_mail failed!<br>"; $result = mail($DB_EmailAddress, $Send_Subject, $Message_Body, $Message_Headers, "-f {$DB_ReplyToEmail}"); if (!$result) { echo "Message sending by mail failed also!<br>"; echo "Email: " . $DB_EmailAddress . "<br>"; echo "Subject: " . $Send_Subject . "<br>"; echo "Headers: " . $Message_Headers . "<br>"; } } } else { // echo "Body: <textarea>$Message_Body </textarea><br>\n"; // echo "---------------------------<br>\n"; $result = mail($DB_EmailAddress, $Send_Subject, $Message_Body, $Message_Headers, "-f {$DB_ReplyToEmail}"); } # Update the activity row $Set_LastActivity = time(); $infrespsubscribers = $table_prefix . 'InfResp_subscribers'; $query = "UPDATE " . $infrespsubscribers . " SET LastActivity = '{$Set_LastActivity}' WHERE SubscriberID = '{$DB_SubscriberID}'"; $DB_result = mysql_query($query, $DB_LinkID) or die("Invalid query: " . mysql_error()); # Head on back return $result; }
$DB_MsgBodyHTML = $MessageInfo['BodyHTML']; $DB_MsgBodyText = $MessageInfo['BodyText']; $DB_MsgSub = $MessageInfo['Subject']; $Send_Subject = $DB_MsgSub; $subcode = "s" . $DB_UniqueCode; $unsubcode = "u" . $DB_UniqueCode; $UnsubURL = $siteURL . "/?infresp=s&c={$unsubcode}"; # Filter the email address of a few nasties $DB_EmailAddress = stripnl(str_replace("|", "", $DB_EmailAddress)); $DB_EmailAddress = str_replace(">", "", $DB_EmailAddress); $DB_EmailAddress = str_replace("<", "", $DB_EmailAddress); $DB_EmailAddress = str_replace('/', "", $DB_EmailAddress); $DB_EmailAddress = str_replace('..', "", $DB_EmailAddress); # Process the tags $MessageInfo['ResponderID'] = $Responder_ID; $message = ProcessMessageTags($MessageInfo, $SubscriberInfo); $DB_MsgBodyText = stripslashes($message['BodyText']); $DB_MsgBodyHTML = stripslashes($message['BodyHTML']); $Send_Subject = $message['Subject']; # echo "************************"; # echo $DB_MsgBodyHTML; # echo "************************"; # MOD for embedding images with phpmailer if (get_option('inf_resp_embed_images') == 'yes') { $pattern = '/<*img[^>]*src *= *["\']?([^"\']*)/i'; preg_match_all($pattern, $DB_MsgBodyHTML, $images); $imgsrcs = $images[1]; array_unique($imgsrcs); $vi = 0; $imageurl = get_option('inf_resp_image_url'); $imagedir = get_option('inf_resp_image_dir');
function CheckMessages($user, $pass, $c, $folder, $get_tags_from_subject, $server, $dbh, $tz, $get_user_from_message_subject, $get_date_from_exif, $convert_to_mp3, $servpath, $sample_rate, $channel_folder, $static_map_width, $static_map_height, $api_key, $get_reverse_geocoding, $ffmpeg_path) { if ($inbox = imap_open($server, $user, $pass)) { $total = imap_num_msg($inbox); for ($x = 1; $x <= $total; $x++) { $headers = imap_header($inbox, $x); $structure = imap_fetchstructure($inbox, $x); $sections = parse($structure); if (isset($headers->subject)) { $subject = DecodeSubject($headers->subject); } else { $subject = ""; } if ($subject == "ojovoz" && is_array($sections) && sizeof($sections) > 0) { $maxorder = GetMaxMessageOrder($c, $dbh); $query = "INSERT INTO message (channel_id, message_order) VALUES ({$c},{$maxorder})"; $result = mysql_query($query, $dbh); $current_message = mysql_insert_id(); $lat = ""; $long = ""; for ($y = 0; $y < sizeof($sections); $y++) { $type = $sections[$y]["type"]; $encoding = $sections[$y]["encoding"]; $filename = substr($complete_filename, 0, strrpos($complete_filename, ".")); $pid = $sections[$y]["pid"]; $attachment = imap_fetchbody($inbox, $x, $pid); if (strpos($sections[$y]["name"], ".jpg") > 0 && $type == "image/jpeg") { $subfolder = "/image/image"; $extension = ".jpg"; $att_type = 1; } else { if (strpos($sections[$y]["name"], ".wav") > 0 && $type == "application/octet-stream") { $subfolder = "/sound/sound"; $extension = ".wav"; $att_type = 2; } else { if (strpos($sections[$y]["name"], ".amr") > 0 && $type == "application/octet-stream") { $subfolder = "/sound/sound"; $extension = ".amr"; $att_type = 2; } else { if (strpos($sections[$y]["name"], ".mp3") > 0 && $type == "application/octet-stream") { $subfolder = "/sound/sound"; $extension = ".mp3"; $att_type = 2; } else { if (strpos($sections[$y]["name"], ".3gp") > 0 && $type == "application/octet-stream") { $subfolder = "/sound/sound"; $extension = ".3gp"; $att_type = 2; } else { if (strpos($sections[$y]["name"], ".mp4") > 0 && $type == "application/octet-stream") { $subfolder = "/video/video"; $extension = ".mp4"; $att_type = 3; } else { if (strpos($sections[$y]["name"], ".avi") > 0 && $type == "application/octet-stream") { $subfolder = "/video/video"; $extension = ".avi"; $att_type = 3; } else { if ($type == "text/plain" || $type == "text/html") { if ($encoding == "base64") { $text = trim(utf8_decode(imap_base64($attachment))); } else { $text = trim(utf8_decode(decode_ISO88591($attachment))); } $parts = explode(";", $text); $sender = $parts[0]; $date = formatDate($parts[1]); $lat = $parts[2]; if ($lat == "-1.0") { $lat = ""; } $long = $parts[3]; if ($long == "-1.0") { $long = ""; } $tags = $parts[4]; if ($tags == "null") { $tags = ""; } $query = "UPDATE message SET message_date='{$date}', message_sender='{$sender}' WHERE message_id = {$current_message}"; $result = mysql_query($query, $dbh); $att_type = 0; } } } } } } } } if ($att_type > 0) { $index = GetMaxFileIndex($c, $dbh); $file = $folder . $subfolder . $index . $extension; $handle = fopen("channels/" . $file, "wb"); $ok = fwrite($handle, imap_base64($attachment)); fclose($handle); if ($extension == ".jpg") { $sz = getimagesize("channels/" . $file); $w = $sz[0]; $h = $sz[1]; } else { if (($extension == ".amr" || $extension == ".3gp") && $convert_to_mp3 == true) { $file1 = $subfolder . $index . $extension; $file2 = $subfolder . $index . ".mp3"; ConvertAMRToMP3($file1, $file2, $servpath, $ffmpeg_path, $channel_folder, $folder, $sample_rate); $w = 0; $h = 0; $file = $folder . $file2; } else { $w = 0; $h = 0; } } $query = "INSERT INTO attachment (message_id, filename, content_type,image_width,image_height) VALUES ({$current_message},'{$file}','{$att_type}',{$w},{$h})"; $result = mysql_query($query, $dbh); IncreaseFileIndex($c, $dbh); } } if ($lat != "" && $long != "") { $query = "UPDATE attachment SET latitude='{$lat}', longitude='{$long}' WHERE message_id={$current_message}"; $result = mysql_query($query, $dbh); } $sections = NULL; ProcessMessageTags($tags, $current_message, $dbh); } imap_delete($inbox, $x); } imap_close($inbox, CL_EXPUNGE); } }