298 lines
9.1 KiB
PHP
298 lines
9.1 KiB
PHP
<?php
|
|
require_once("include/globals.php");
|
|
|
|
if (SessionActive() != 1 || ! UserLoggedIn()) {
|
|
header("Location: /");
|
|
exit();
|
|
}
|
|
|
|
|
|
//
|
|
// Process all actions to list and edit records
|
|
//
|
|
$CurrentTable = "email_aliases";
|
|
$DeleteField = "alias,email_addresses";
|
|
$dSeparator = "<br> ";
|
|
$FormFile = "aliases.form.php";
|
|
$TitleText = getLanguageText('TEXT-EMAIL-ALIASES');
|
|
$OrderBy = "alias";
|
|
|
|
|
|
// Start the template and output buffering
|
|
startTemplate();
|
|
$templatePageTitle = "$TitleText " . getLanguageText('TEXT-ADMINISTRATION');
|
|
|
|
|
|
// Ensure that only valid user types have access to this module
|
|
$AllowedUserTypes = array('SuperUser','System Administrator','Communications Administrator');
|
|
if (checkPermission($AllowedUserTypes) != 1) {
|
|
$error_message = getLanguageText('ERRORMSG-ACCESS-DENIED');
|
|
include "form.messages.php";
|
|
endTemplate();
|
|
exit();
|
|
}
|
|
|
|
|
|
// Only schools with email processing enabled can access this program
|
|
if ($school_record['email_processing'] != 'Y') {
|
|
$error_message = getLanguageText('ERRORMSG-NO-ALIASES');
|
|
include "form.messages.php";
|
|
endTemplate();
|
|
exit();
|
|
}
|
|
|
|
|
|
// Check that the email aliases file is defined
|
|
$aliasesFile = $school_record['email_aliases_file'];
|
|
if (strlen($aliasesFile) == 0) {
|
|
$error_message = getLanguageText('ERRORMSG-NO-ALIASES-FILE');
|
|
include "form.messages.php";
|
|
endTemplate();
|
|
exit();
|
|
}
|
|
|
|
|
|
// Check that the aliases file exists
|
|
$aliasesDir = "/etc/exim/domains";
|
|
if (!is_file("$aliasesDir/$aliasesFile")) {
|
|
$error_message = getLanguageText('ERRORMSG-NO-ALIASES-FILE');
|
|
include "form.messages.php";
|
|
endTemplate();
|
|
exit();
|
|
}
|
|
|
|
|
|
if (array_key_exists('naction',$_GET)) $naction = $_GET['naction'];
|
|
if (array_key_exists('naction',$_POST)) $naction = $_POST['naction'];
|
|
|
|
$school_num = $school_record['record_num'];
|
|
|
|
|
|
switch (strtolower($naction)) {
|
|
case "add":
|
|
$next_naction = "insert";
|
|
$active = 'Y';
|
|
|
|
include $FormFile;
|
|
break;
|
|
|
|
case "insert":
|
|
extract($_POST);
|
|
|
|
$alias = strtolower(preg_replace("/@.*/","",$alias));
|
|
$email_addresses = strtolower(str_replace(' ','',$email_addresses));
|
|
|
|
// Validate the data entered
|
|
if (strlen($alias) == 0 || strlen($email_addresses) == 0) {
|
|
$error_message = getLanguageText('ERRORMSG-INCOMPLETE-ALIAS');
|
|
$next_naction = "insert";
|
|
$active = 'Y';
|
|
include $FormFile;
|
|
break;
|
|
}
|
|
|
|
$added_date = date("Y-m-d",time());
|
|
$updated_date = $added_date;
|
|
|
|
// Save the record
|
|
$table = new Table("$CurrentTable");
|
|
$query = $table->BuildInsert();
|
|
db_query($query);
|
|
writeAliases();
|
|
|
|
$form_message = getLanguageText('RECORD-INSERTED-MSG');
|
|
$naction = 'list';
|
|
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
|
|
exit();
|
|
|
|
case "edit":
|
|
$next_naction = "update";
|
|
|
|
// Get current record
|
|
$record_num = intval($_GET['record_num']);
|
|
$query = "select * from $CurrentTable " .
|
|
"where school_num = $school_num " .
|
|
"and record_num = $record_num";
|
|
$results = db_query($query);
|
|
if (db_num_rows($results) == 1) {
|
|
$row = db_fetch_array($results);
|
|
extract($row);
|
|
include $FormFile;
|
|
}
|
|
else {
|
|
$error_message = getLanguageText('ERRORMSG-NOT-FOUND');
|
|
$naction = 'list';
|
|
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
|
|
exit();
|
|
}
|
|
break;
|
|
|
|
case "update":
|
|
extract($_POST);
|
|
|
|
$alias = strtolower(preg_replace("/@.*/","",$alias));
|
|
$email_addresses = str_replace(' ','',$email_addresses);
|
|
$record_num = intval($record_num);
|
|
|
|
// Validate the data entered
|
|
if (strlen($alias) == 0 || strlen($email_addresses) == 0) {
|
|
$error_message = getLanguageText('ERRORMSG-INCOMPLETE-ALIAS');
|
|
$PageTitle = getLanguageText('RECORD-UPDATE-ENTRY') . " $TitleText";
|
|
$ButtonText = $PageTitle;
|
|
$next_naction = "edit";
|
|
$active = 'Y';
|
|
include $FormFile;
|
|
break;
|
|
}
|
|
|
|
$updated_date = date("Y-m-d",time());
|
|
|
|
$table = new Table("$CurrentTable");
|
|
$query = $table->BuildUpdate();
|
|
db_query($query);
|
|
writeAliases();
|
|
|
|
$form_message = getLanguageText('RECORD-UPDATED-MSG');
|
|
$naction = 'list';
|
|
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
|
|
exit();
|
|
|
|
case "delete":
|
|
$record_num = intval($_GET['record_num']);
|
|
|
|
$query = "select * from $CurrentTable " .
|
|
"where school_num = $school_num " .
|
|
"and record_num = $record_num";
|
|
$results = db_query($query);
|
|
if (db_num_rows($results) == 1) {
|
|
$row = db_fetch_array($results);
|
|
extract($row);
|
|
|
|
$dFields = explode(",",$DeleteField);
|
|
$dTitle = "$TitleText ";
|
|
for ($i = 0; $i < count($dFields); $i++) {
|
|
$dTitle .= $row[$dFields[$i]] . $dSeparator;
|
|
}
|
|
|
|
include "delete.form.php";
|
|
}
|
|
else {
|
|
$error_message = getLanguageText('ERRORMSG-NOT-FOUND');
|
|
$naction = 'list';
|
|
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
|
|
exit();
|
|
}
|
|
break;
|
|
|
|
case "delete-confirmed":
|
|
$record_num = intval($_GET['record_num']);
|
|
|
|
// Delete the current record
|
|
$query = "delete from $CurrentTable " .
|
|
"where school_num = $school_num " .
|
|
"and record_num = $record_num";
|
|
db_query($query);
|
|
writeAliases();
|
|
|
|
$form_message = getLanguageText('RECORD-DELETED-MSG');
|
|
$naction = 'list';
|
|
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
|
|
exit();
|
|
|
|
default:
|
|
$naction = "list";
|
|
break;
|
|
}
|
|
|
|
|
|
//
|
|
// List all records if naction is "list"
|
|
//
|
|
if ($naction == "list") {
|
|
|
|
$scriptName = str_replace("/m/data1/app.hotlunches.net/","",__FILE__);
|
|
include "help.docs.php";
|
|
|
|
// Get records to display
|
|
$columnHeaders = array(getLanguageText('TEXT-ALIAS'),
|
|
getLanguageText('TEXT-EMAIL-ADDRESSES'),
|
|
getLanguageText('TEXT-DATE-ADDED'),
|
|
getLanguageText('TEXT-DATE-UPDATED')
|
|
);
|
|
$columnAlign = array("left","left","left","left");
|
|
$query = "select alias,email_addresses,added_date,updated_date,record_num " .
|
|
"from email_aliases " .
|
|
"where school_num = $school_num " .
|
|
"order by alias";
|
|
$records = db_query($query);
|
|
|
|
$results = array();
|
|
while ($row = db_fetch_array($records)) {
|
|
$entry = array();
|
|
$entry[] = $row['alias'];
|
|
if (strlen($row['email_addresses']) < 70) $entry[] = $row['email_addresses'];
|
|
else $entry[] = substr($row['email_addresses'],0,70) . "...";
|
|
$entry[] = $row['added_date'];
|
|
$entry[] = $row['updated_date'];
|
|
$entry[] = $row['record_num'];
|
|
$entry['record_num'] = $row['record_num'];
|
|
|
|
$results[] = $entry;
|
|
}
|
|
|
|
$message_width = $default_data_width;
|
|
include "form.messages.php";
|
|
|
|
echo("<center>\n");
|
|
echo("<p><b>$TitleText List</b></p>\n");
|
|
echo("</center>\n");
|
|
|
|
if (strpos($currentURL,"hotlunches.net") === FALSE) listData($results,$columnHeaders,$action,array(),'Y',$columnAlign);
|
|
else listData($results,$columnHeaders,$action,array(),'N',$columnAlign);
|
|
echo("\n\n<!-- $query -->\n\n");
|
|
echo("</center>\n");
|
|
}
|
|
|
|
|
|
function writeAliases() {
|
|
global $school_record;
|
|
global $school_num;
|
|
global $aliasesDIR;
|
|
|
|
$aliasesFile = $school_record['email_aliases_file'];
|
|
$schoolURL = $school_record['url'];
|
|
$reply_email = $school_record['reply_email'];
|
|
$support_email = $school_record['support_email'];
|
|
|
|
$fp = fopen("$aliasesDIR/$aliasesFile","w");
|
|
|
|
if (!$fp) return;
|
|
|
|
fwrite($fp, "# Email aliases for: $schoolURL\n\n");
|
|
|
|
// Get aliases from the database
|
|
$aliases = db_query("SELECT * FROM email_aliases WHERE school_num = $school_num ORDER BY alias");
|
|
$replyEmail = false;
|
|
$supportEmail = false;
|
|
while ($row = db_fetch_array($aliases)) {
|
|
extract($row);
|
|
fwrite($fp, "$alias: $email_addresses\n");
|
|
if ($alias == 'reply') $replyEmail = true;
|
|
if ($alias == 'support') $supportEmail = true;
|
|
}
|
|
|
|
fwrite($fp, "\n");
|
|
|
|
if (!$replyEmail) fwrite($fp, "reply: $reply_email\n");
|
|
if (!$supportEmail) fwrite($fp, "support: $support_email\n");
|
|
|
|
fwrite($fp, "\n");
|
|
fwrite($fp,"webmaster: mfester\n");
|
|
fwrite($fp,"dmarc: dmarc\n");
|
|
fwrite($fp, "\n");
|
|
}
|
|
|
|
|
|
endTemplate();
|
|
?>
|