Files
HotLunches/email-quicksend.php
T
2026-10-19 15:22:52 -07:00

173 lines
6.3 KiB
PHP

<?php
require_once("include/globals.php");
//require("include/sendmail.php");
require_once("include/quicksend.php");
if (SessionActive() != 1 || ! UserLoggedIn()) {
header("Location: /");
exit();
}
// Ensure that only admin users have access to this module
$AllowedUserTypes = array('SuperUser','System Administrator','Communications Administrator');
if (checkPermission($AllowedUserTypes) != 1) {
echo("<br>\n");
$error_message = getLanguageText('ERRORMSG-ACCESS-DENIED');
include "form.messages.php";
return;
}
$PrimaryTable = "contacts";
$FormFile = "email-quicksend-form.php";
//
// Process requests to send quick emails to contacts
//
switch ($naction) {
case "confirm":
$table = new Table("$PrimaryTable");
$next_naction = "confirm";
extract($_POST);
// insert new category, if input field entered
if ($category_num == 'Add Other...' || !$category_num) {
unset ($category_num);
if ($category_add) {
db_query("INSERT INTO categories SET category='$category_add', active='Y'");
$category_num = db_insert_id();
}
}
// insert new industry, if input field entered
if ($industry_num == 'Add Other...' || !$industry_num) {
unset ($industry_num);
if ($industry_add) {
db_query("INSERT INTO industries SET industry='$industry_add', active='Y'");
$industry_num = db_insert_id();
}
}
// insert new region, if input field entered
if ($region_num == 'Add Other...' || !$region_num) {
unset ($region_num);
if ($region_add) {
db_query("INSERT INTO regions SET region='$region_add', active='Y'");
$region_num = db_insert_id();
}
}
// find contact if exists
$searchSQL = "WHERE email='$email' ";
// if group specified (staff - theirs, admin - any) add to search sql
if ($group_num > 0) {
$searchSQL .= "AND (group_num='$group_num' OR group_num='0')";
}
$query = "SELECT record_num FROM $PrimaryTable {$searchSQL} LIMIT 1";
$cid = db_getVal("SELECT record_num FROM $PrimaryTable {$searchSQL} LIMIT 1");
if (!$cid) {
// insert into contacts table
$query = $table->BuildInsert();
db_query($query);
$cid = db_insert_id();
echo("<p class='success'>Contact $email has been INSERTED<br>Email has been sent for processing</p>\n");
}
else {
// update record fields only if set
if (!$name) unset($name);
if (!$title) unset($title);
if (!$phone) unset($phone);
if (!$url) unset($url);
if (!$email) unset($email);
if (!$company) unset($company);
if (!$address) unset($address);
if (!$city) unset($city);
if (!$province) unset($province);
if (!$country) unset($country);
if (!$postal) unset($postal);
if (!$category_num) unset($category_num);
if (!$industry_num) unset($industry_num);
if (!$region_num) unset($region_num);
if (!$active) unset($active);
// update group only if set to public
if ($group_num != '0') unset($group_num);
// set the record_num for the update
$record_num = $cid;
$query = $table->BuildUpdate();
db_query($query);
echo("<p class='success'>Contact $email has been UPDATED<br>Email has been sent for processing</p>\n");
}
// Define email category and description
$Category = "Quick Send";
$Description = "Quick Send to contact $email";
// Define the default query to be used
$Parameters = "";
$EmailField = "email";
$Query = "SELECT * FROM $PrimaryTable WHERE $EmailField='$email' AND active!='N' LIMIT 1";
$num_rows = 1;
// Get the message to send
$content = db_query("SELECT * FROM formatted_content WHERE record_num = '$MessageID'");
$row = db_fetch_array($content);
$EmailSubject = db_escape_string($row["content_id"]);
$EmailMessage = db_escape_string($row["content"]);
// Process logged in user's details into email message
$ufields = array("first_name","last_name","email","title");
for ($i = 0; $i < count($ufields); $i++) {
$fname = $ufields[$i];
$EmailMessage = preg_replace('/({|%7[Bb])users.' . $fname . '(}|%7[Dd])/',$_SESSION['UserInfo'][$fname],$EmailMessage);
}
// Process custom fields into email message
foreach ($_POST as $fieldname => $fieldvalue) {
if (preg_matches('^custom_([a-z0-9_]+)$', $fieldname, $matches)) {
$field_code = $matches[1];
$fieldvalue = db_escape_string(nl2br($fieldvalue));
$EmailMessage = preg_replace('/({|%7b)custom\.[a-z]+\.' . $field_code . '(}|%7d)/',$fieldvalue,$EmailMessage);
}
}
$Category = db_escape_string($Category);
$Description = db_escape_string($Description);
$ReplyDescription = db_escape_string($ReplyDescription);
// make the attachments list
$attachList = '';
if (count($attachments) > 0) {
$attachList = implode(",", $attachments);
}
$groupid = $_SESSION['UserInfo']['group_num'];
// Write email_header record
$Query = db_escape_string($Query);
$equery = "INSERT INTO email_header " .
"(category, description, reply_address, reply_description, email_message_id, subject, message_text, email_template, " .
"posted, send_after, matching_records, processed_records, sent_successfully, skipped, errors, email_field_name, primary_table, " .
"query, parameters, status, sender_id, attachments, group_num) " .
"VALUES ('$Category', '$Description', '$ReplyTo', '$ReplyDescription', '$MessageID', '$EmailSubject', '$EmailMessage', '$EmailTemplate', " .
"now(), now(), '$num_rows', 0, 0, 0, 0, '$EmailField', '$PrimaryTable', '$Query', '$Parameters', 'completed', '$loggedInId', '$attachList', " .
"'$groupid')";
quickEmail($equery);
include $FormFile;
break;
default:
include $FormFile;
break;
}
?>