+
+# helper for email_with_template() below
+function get_email_template($slug, $template_variables, $to_addr) {
+ # defaults
+ $out = array(
+ 'subject' => $GLOBALS['email_templates'][$slug]['subject'],
+ 'content' => $GLOBALS['email_templates'][$slug]['content'],
+ 'from_addr' => $GLOBALS['email_templates'][$slug]['from_addr'],
+ 'to_addr' => '',
+ 'cc_addr' => '',
+ 'bcc_addr' => ''
+ );
+ if (isset($GLOBALS['email_templates'][$slug]['to_addr'])) {
+ $out['to_addr'] = $GLOBALS['email_templates'][$slug]['to_addr'];
+ } else {
+ if ($to_addr == null) {
+ die("ERROR: email_with_template(\"$slug\") needs a to_addr (put in \$GLOBALS['email_templates']['$slug'] or pass as argument)");
+ }
+ }
+ # override with DB (if it exists)
+ $row = db_get_assoc('email_templates', 'from_addr,to_addr,cc_addr,bcc_addr,subject,content', 'where slug=%"', $slug);
+ if ($row) {
+ foreach($row as $key => $value) {
+ $out[$key] = $value;
+ }
+ }
+ # argument wins no matter what
+ if ($to_addr !== null) {
+ $out['to_addr'] = $to_addr;
+ }
+ if (strpos($out['content'], '~') !== false) {
+ $tem = new tem();
+ $tem->load_str($out['content']);
+ $tem->sets($template_variables);
+ $out['content'] = $tem->run();
+ }
+ if (strpos($out['subject'], '~') !== false) {
+ $tem = new tem();
+ $tem->load_str($out['subject']);
+ $tem->sets($template_variables);
+ $out['subject'] = $tem->run();
+ }
+ return $out;
+}
+
+# pass null as first arg if "to_addr" should come from the DB
+function email_with_template($to_addr, $template_slug, $template_vars, $reply_to = '') {
+ $t = get_email_template($template_slug, $template_vars, $to_addr);
+ return email($t['from_addr'], $t['to_addr'], $t['subject'], $t['content'], $reply_to, $t['cc_addr'], $t['bcc_addr']);
+}