Index: modules/subscriptions.module =================================================================== --- modules/subscriptions.module (revision 376) +++ modules/subscriptions.module (working copy) @@ -186,34 +186,19 @@ $languages = $languages['name']; } - $from = variable_get('site_mail', ini_get('sendmail_from')); - // if comment insertion, get vars + $emaildata = theme('subscriptions_emaildata', $sid, $ssid, $uid, $stype); + if ($stype == 'node') { - $result = db_query('SELECT title FROM {node} WHERE nid = %d', $sid); - $subj = db_result($result); $result = db_query('SELECT u.uid, u.name, u.mail, u.language FROM {users} u INNER JOIN {subscriptions} s ON u.uid = s.uid WHERE s.sid = %d AND s.stype = \'node\'', $sid); - $strtype = 'thread'; - $nid = $sid; - $cid = "comment-$ssid"; } // if node insert, test if node has a taxonomy else skip - if ($stype == 'taxa' && !is_null($sid)) { - $result = db_query('SELECT name FROM {term_data} WHERE tid = %d', $sid); - $subj = db_result($result); + else if ($stype == 'taxa' && !is_null($sid)) { $result = db_query('SELECT u.mail, u.name, u.uid, u.language FROM {users} u INNER JOIN {subscriptions} s ON u.uid = s.uid WHERE s.sid = %d AND stype = \'taxa\'', $sid); - $strtype = 'category'; - $nid = $ssid; - $cid = NULL; } - // if blog insert, get vars - if ($stype == 'blog') { - $result = db_query('SELECT name FROM {users} WHERE uid = %d', $uid); - $subj = t('new blog for ') . db_result($result); + else if ($stype == 'blog') { $result = db_query('SELECT u.uid, u.name, u.mail, u.language FROM {users} u INNER JOIN {subscriptions} s ON u.uid = s.uid WHERE s.sid = %d AND s.stype = \'blog\'', $sid); - $strtype = 'blog'; - $nid = $ssid; - $cid = NULL; } + // loop through subscribers and call mail function while ($subscriptions = db_fetch_object($result)) { if ($subscriptions->uid != $uid && !is_null($sid) && strpos($strsent , '!'. $subscriptions->uid .'!') === false) { @@ -225,17 +210,8 @@ $locale = $subscriptions->language; } - $headers = "From: $from\nReply-to: $from\nX-Mailer: Drupal\nReturn-path: $from\nErrors-to: $from"; - $subject = t('[%site] %type subscription update for %name : %subject', array('%site' => variable_get('site_name', 'drupal'), '%type' => $strtype, '%name' => $subscriptions->name, '%subject' => $subj)); - $body = t('Greetings, %name. + list ($subject, $body, $headers) = theme('subscriptions_email', $subscriptions, $emaildata); -A %type to which you have subscribed has been updated. To view the thread, -navigate to %url - --- -This is an automatic mail from %site. -To manage your subscriptions, browse to %manage-url', array('%name' => $subscriptions->name, '%type' => $strtype, '%url' => url('node/'. $nid, NULL, $cid, 1), '%site' => variable_get('site_name', 'drupal'), '%manage-url' => url('subscriptions', NULL, NULL, 1))); - // revert to original locale $locale = $initial_locale; @@ -250,6 +226,51 @@ return $strsent; } +function theme_subscriptions_emaildata($sid, $ssid, $uid, $stype) { + $emaildata = new stdClass(); + $emaildata->from = variable_get('site_mail', ini_get('sendmail_from')); + // if comment insertion, get vars + if ($stype == 'node') { + $result = db_query('SELECT title FROM {node} WHERE nid = %d', $sid); + $emaildata->title = db_result($result); + $emaildata->type = t('thread'); + $emaildata->nid = $sid; + $emaildata->cid = "comment-$ssid"; + } + else if ($stype == 'taxa' && !is_null($sid)) { + $result = db_query('SELECT name FROM {term_data} WHERE tid = %d', $sid); + $emaildata->title = db_result($result); + $emaildata->type = t('category'); + $emaildata->nid = $ssid; + $emaildata->cid = NULL; + } + // if blog insert, get vars + else if ($stype == 'blog') { + $result = db_query('SELECT name FROM {users} WHERE uid = %d', $uid); + $emaildata->title = t('new blog for ') . db_result($result); + $emaildata->type = t('blog'); + $emaildata->nid = $ssid; + $emaildata->cid = NULL; + } + return $emaildata; +} + +function theme_subscriptions_email($userinfo, $emaildata) { + $from = $emaildata->from; + $headers = "From: $from\nReply-to: $from\nX-Mailer: Drupal\nReturn-path: $from\nErrors-to: $from"; + $subject = t('[%site] %type subscription update for %name : %subject', array('%site' => variable_get('site_name', 'drupal'), '%type' => $emaildata->type, '%name' => $userinfo->name, '%subject' => $emaildata->title)); + $body = t('Greetings, %name. + +A %type to which you have subscribed has been updated. To view the thread, +navigate to %url + +-- +This is an automatic mail from %site. +To manage your subscriptions, browse to %manage-url', array('%name' => $userinfo->name, '%type' => $emaildata->type, '%url' => url('node/'. $emaildata->nid, NULL, $emaildata->cid, 1), '%site' => variable_get('site_name', 'drupal'), '%manage-url' => url('subscriptions', NULL, NULL, 1))); + + return array($subject, $body, $headers); +} + /* * Subscribes users to nodes in which they post, if not already subscribed */