#
# in config.php you'll need something like this:
#
-# $GLOBALS['email_templates'] = [
-# 'slug' => [
-# 'title' => "Title shown in admin only",
-# 'description' => "explain (for admins) what this template is for",
-# 'variables' => [
-# ['name', "explan (for admins) what this variable is for"],
-# ['verbing', "admins can put these variables into the template"]
-# ],
-# 'subject' => "email subject",
-# 'content' => "Hi, ~name~ this is the email body, thanks for ~verbing~!",
-# 'from_addr' => 'noreply@airservices.info',
-# 'to_addr' => 'optional@to.address' # optional
-# ]
-# # , 'slug2' => ...
-# ];
+# $GLOBALS['email_templates'] = [
+# 'slug' => [
+# 'title' => "Title shown in admin only",
+# 'description' => "explain (for admins) what this template is for",
+# 'variables' => [
+# ['name', "explan (for admins) what this variable is for"],
+# ['verbing', "admins can put these variables into the template"]
+# ],
+# 'subject' => "email subject",
+# 'content' => "Hi, ~name~ this is the email body, thanks for ~verbing~!",
+# 'from_addr' => 'noreply@airservices.info',
+# 'to_addr' => 'optional@to.address' # optional
+# ]
+# # , 'slug2' => ...
+# ];
# To save results to a database, you'll need to create the email_templates table.
# The file admin_email_templates.sql should help with this
$GLOBALS['admin_email_templates_field_to_caption'] = array(
- 'slug' => 'Slug',
- 'notes' => 'Notes',
- 'from_addr' => 'From Address',
- 'to_addr' => 'To Address',
- 'cc_addr' => 'Cc Address',
- 'bcc_addr' => 'Bcc Address',
- 'subject' => 'Subject',
- 'content' => 'Content'
+ 'slug' => 'Slug',
+ 'notes' => 'Notes',
+ 'from_addr' => 'From Address',
+ 'to_addr' => 'To Address',
+ 'cc_addr' => 'Cc Address',
+ 'bcc_addr' => 'Bcc Address',
+ 'subject' => 'Subject',
+ 'content' => 'Content'
);
function admin_email_templates_get_fields() {
- $data = array();
-
- # slug is cut in *_main()
- $data['notes'] = format_unix(_REQUEST_cut('notes'));
- $data['to_addr'] = format_email(trim(_REQUEST_cut('to_addr')));
- $data['from_addr'] = format_email(trim(_REQUEST_cut('from_addr')));
- $data['cc_addr'] = format_email(trim(_REQUEST_cut('cc_addr')));
- $data['bcc_addr'] = format_email(trim(_REQUEST_cut('bcc_addr')));
- $data['subject'] = format_oneline(trim(_REQUEST_cut('subject')));
- $data['content'] = format_unix(_REQUEST_cut('content'));
-
- return $data;
+ $data = array();
+
+ # slug is cut in *_main()
+ $data['notes'] = format_unix(_REQUEST_cut('notes'));
+ $data['to_addr'] = format_email(trim(_REQUEST_cut('to_addr')));
+ $data['from_addr'] = format_email(trim(_REQUEST_cut('from_addr')));
+ $data['cc_addr'] = format_email(trim(_REQUEST_cut('cc_addr')));
+ $data['bcc_addr'] = format_email(trim(_REQUEST_cut('bcc_addr')));
+ $data['subject'] = format_oneline(trim(_REQUEST_cut('subject')));
+ $data['content'] = format_unix(_REQUEST_cut('content'));
+
+ return $data;
}
function admin_email_templates_main() {
- session_auth_must('admin_email_templates');
+ session_auth_must('admin_email_templates');
- $slug = _REQUEST_cut('slug');
- if ($slug && isset($GLOBALS['email_templates'][$slug])) {
- return admin_email_templates_main_form($slug);
- }
+ $slug = _REQUEST_cut('slug');
+ if ($slug && isset($GLOBALS['email_templates'][$slug])) {
+ return admin_email_templates_main_form($slug);
+ }
- # default action:
- return admin_email_templates_main_listing();
+ # default action:
+ return admin_email_templates_main_listing();
}
function admin_email_templates_main_sort_title($a, $b) {
- return strcasecmp($a['title'], $b['title']);
+ return strcasecmp($a['title'], $b['title']);
}
function admin_email_templates_main_sort_title_reverse($a, $b) {
- return strcasecmp($b['title'], $a['title']);
+ return strcasecmp($b['title'], $a['title']);
}
function admin_email_templates_main_sort_subject($a, $b) {
- return strcasecmp($a['subject'], $b['subject']);
+ return strcasecmp($a['subject'], $b['subject']);
}
function admin_email_templates_main_sort_subject_reverse($a, $b) {
- return strcasecmp($b['subject'], $a['subject']);
+ return strcasecmp($b['subject'], $a['subject']);
}
function admin_email_templates_main_listing() {
- $data = array();
- $reverse = '';
- $sort = _REQUEST_cut('sort');
- if ($sort && substr($sort, 0, 1) === '-') {
- $sort = substr($sort, 1);
- $reverse = "_reverse";
- } else {
- $data["sorting-by-$sort"] = '-';
- }
- $legal_sorts = array('title', 'subject');
- if (!$sort || !in_array($sort, $legal_sorts)) {
- $sort = 'title';
- }
-
- $data['rows'] = array();
-
- $rows = db_get_assocs('email_templates', 'slug,from_addr,cc_addr,bcc_addr,subject');
- $by_slug = array();
- foreach ($rows as $row) {
- $by_slug[$row['slug']] = $row;
- }
- foreach ($GLOBALS['email_templates'] as $slug => $row) {
- $out = array('slug' => $slug);
- # defaults from config
- foreach($row as $k => $v) {
- $out[$k] = $v;
- }
- # overwrite with db (if it's in the db)
- if ($by_slug[$slug]) {
- foreach($by_slug[$slug] as $k => $v) {
- $out[$k] = $v;
- }
- }
- $data['rows'][] = $out;
- }
-
- usort($data['rows'], "admin_email_templates_main_sort_$sort$reverse");
-
- tem_set('listings', $data);
+ $data = array();
+ $reverse = '';
+ $sort = _REQUEST_cut('sort');
+ if ($sort && substr($sort, 0, 1) === '-') {
+ $sort = substr($sort, 1);
+ $reverse = "_reverse";
+ } else {
+ $data["sorting-by-$sort"] = '-';
+ }
+ $legal_sorts = array('title', 'subject');
+ if (!$sort || !in_array($sort, $legal_sorts)) {
+ $sort = 'title';
+ }
+
+ $data['rows'] = array();
+
+ $rows = db_get_assocs('email_templates', 'slug,from_addr,cc_addr,bcc_addr,subject');
+ $by_slug = array();
+ foreach ($rows as $row) {
+ $by_slug[$row['slug']] = $row;
+ }
+ foreach ($GLOBALS['email_templates'] as $slug => $row) {
+ $out = array('slug' => $slug);
+ # defaults from config
+ foreach($row as $k => $v) {
+ $out[$k] = $v;
+ }
+ # overwrite with db (if it's in the db)
+ if ($by_slug[$slug]) {
+ foreach($by_slug[$slug] as $k => $v) {
+ $out[$k] = $v;
+ }
+ }
+ $data['rows'][] = $out;
+ }
+
+ usort($data['rows'], "admin_email_templates_main_sort_$sort$reverse");
+
+ tem_set('listings', $data);
}
function admin_email_templates_main_form($slug) {
- if (isset($_POST['subject'])) {
- $data = admin_email_templates_get_fields();
- $data['slug'] = $slug;
-
- $all_good = true;
- $email_fields = ['from', 'to', 'cc', 'bcc'];
- foreach ($email_fields as &$field) {
- $value = $data[$field . '_addr'];
- if (strlen($value)) {
- if (!email_header($value)) {
- $pretty = ucfirst($field) . ':';
- message("ERROR: invalid value in \"$pretty\" field. Be very careful with formatting, and only put one address in this field.");
- $all_good = false;
- }
- }
- } unset($field);
-
- if (strlen($data['from_addr']) == 0) {
- message("ERROR: the \"From:\" field is required.");
- $all_good = false;
- }
-
- if (strlen($data['to_addr']) == 0 && isset($GLOBALS['email_templates'][$slug]['to_addr'])) {
- message("ERROR: the \"To:\" field is required for this template.");
- $all_good = false;
- }
- if ($all_good) {
- if (0 < db_count('email_templates', 'where slug=%"', $slug)) {
- db_update_assoc('email_templates', $data, 'where slug=%"', $slug);
- } else {
- db_insert_assoc('email_templates', $data);
- }
- message('Email template updated.');
- if ($error !== true) {
- return './admin_email_templates';
- }
- } else {
- $custom = $data;
- }
- } else {
- $custom = db_get_assoc('email_templates', ADMIN_EMAIL_TEMPLATES_DB_FIELDS, 'where slug=%"', $slug);
- }
-
- $out = array('slug' => $slug);
- # defaults from globals
- foreach($GLOBALS['email_templates'][$slug] as $k => $v) {
- $out[$k] = $v;
- }
- # show 'to_addr' field if it's relevant
- if (isset($out['to_addr'])) {
- $out['want_to_addr'] = true;
- }
- # override with db values
- if ($custom) {
- foreach($custom as $k => $v) {
- $out[$k] = $v;
- }
- }
- tem_set('form', $out);
+ if (isset($_POST['subject'])) {
+ $data = admin_email_templates_get_fields();
+ $data['slug'] = $slug;
+
+ $all_good = true;
+ $email_fields = ['from', 'to', 'cc', 'bcc'];
+ foreach ($email_fields as &$field) {
+ $value = $data[$field . '_addr'];
+ if (strlen($value)) {
+ if (!email_header($value)) {
+ $pretty = ucfirst($field) . ':';
+ message("ERROR: invalid value in \"$pretty\" field. Be very careful with formatting, and only put one address in this field.");
+ $all_good = false;
+ }
+ }
+ } unset($field);
+
+ if (strlen($data['from_addr']) == 0) {
+ message("ERROR: the \"From:\" field is required.");
+ $all_good = false;
+ }
+
+ if (strlen($data['to_addr']) == 0 && isset($GLOBALS['email_templates'][$slug]['to_addr'])) {
+ message("ERROR: the \"To:\" field is required for this template.");
+ $all_good = false;
+ }
+ if ($all_good) {
+ if (0 < db_count('email_templates', 'where slug=%"', $slug)) {
+ db_update_assoc('email_templates', $data, 'where slug=%"', $slug);
+ } else {
+ db_insert_assoc('email_templates', $data);
+ }
+ message('Email template updated.');
+ if ($error !== true) {
+ return './admin_email_templates';
+ }
+ } else {
+ $custom = $data;
+ }
+ } else {
+ $custom = db_get_assoc('email_templates', ADMIN_EMAIL_TEMPLATES_DB_FIELDS, 'where slug=%"', $slug);
+ }
+
+ $out = array('slug' => $slug);
+ # defaults from globals
+ foreach($GLOBALS['email_templates'][$slug] as $k => $v) {
+ $out[$k] = $v;
+ }
+ # show 'to_addr' field if it's relevant
+ if (isset($out['to_addr'])) {
+ $out['want_to_addr'] = true;
+ }
+ # override with db values
+ if ($custom) {
+ foreach($custom as $k => $v) {
+ $out[$k] = $v;
+ }
+ }
+ tem_set('form', $out);
}