class serendipity_event_mailer extends serendipity_event
{
var $title = PLUGIN_EVENT_MAILER_NAME;
+ var $data = array();
function introspect(&$propbag)
{
$propbag->add('description', PLUGIN_EVENT_MAILER_DESC);
$propbag->add('stackable', false);
$propbag->add('author', 'Sebastian Nohn, Kristian Koehntopp, Garvin Hicking');
- $propbag->add('version', '1.42');
+ $propbag->add('version', '1.43');
$propbag->add('requirements', array(
'serendipity' => '0.8',
'smarty' => '2.6.7',
));
$propbag->add('groups', array('FRONTEND_ENTRY_RELATED'));
- $propbag->add('configuration', array('mailto', 'includelink', 'striptags', 'convertp'));
+ $config = array('mailto', 'includelink', 'striptags', 'convertp');
+ $propbag->add('configuration', $config);
+ }
+
+ function performConfig(&$bag) {
+ if (is_object($bag)) {
+ $conf = $bag->get('configuration');
+ }
+
+ $this->data['categories'] = serendipity_fetchCategories('all');
+ if (!is_array($this->data['categories'])) {
+ return false;
+ }
+
+ foreach($this->data['categories'] AS $cat) {
+ $conf[] = 'category_' . $cat['categoryid'];
+ $this->data['cat'][$cat['categoryid']] = $cat;
+ }
+
+ if (is_object($bag)) {
+ $bag->add('configuration', $conf);
+ }
}
function introspect_config_item($name, &$propbag)
{
+ if (preg_match('@^category_([0-9]+)$@imsU', $name, $catid)) {
+ $propbag->add('type', 'string');
+ $propbag->add('name', CATEGORY . " '" . $this->data['cat'][$catid[1]]['category_name']);
+ $propbag->add('description', PLUGIN_EVENT_MAILER_RECIPIENTDESC);
+ $propbag->add('default', '');
+ return true;
+ }
+
switch($name) {
case 'mailto':
$propbag->add('type', 'string');
$mails = explode(' ', $this->get_config('mailto'));
$to = array();
foreach($mails AS $mailto) {
- $to[] = trim($mailto);
+ $mailto = trim($mailto);
+ if (!empty($mailto)) {
+ $to[] = $mailto;
+ }
}
+
+ $this->performConfig($to);
+ if (is_array($this->data['cat'])) {
+ $selected = array();
+ if (is_array($eventData['categories'])) {
+ foreach($eventData['categories'] AS $idx => $cid) {
+ $selected[$cid] = true;
+ }
+ }
+
+ foreach($this->data['cat'] AS $cid => $cat) {
+ $mailto = trim($this->get_config('category_' . $cid));
+
+ if (!empty($mailto) && isset($selected[$cid])) {
+ $to[] = $mailto;
+ }
+ }
+ }
+
$mail = array(
- 'subject' => $eventData['title'],
- 'body' => $eventData['body'] . $eventData['extended'],
+ 'subject' => $eventData['title'],
+ 'body' => $eventData['body'] . $eventData['extended'],
// 'from' => $serendipity['blogTitle'] . ' - ' . $eventData['author'] . ' <' . $serendipity['serendipityEmail'] . '>'
- 'from' => $serendipity['serendipityEmail']
+ 'from' => $serendipity['serendipityEmail']
);
if (isset($serendipity['POST']['properties']['mailto'])) {
}
if (serendipity_db_bool($this->get_config('includelink', false)) == true) {
- $mail['body'] = serendipity_archiveURL($eventData['id'], $eventData['title'], 'baseURL', true, array('timestamp' => $eventData['timestamp'])) . "\n\n" . $mail['body'];
+ $mail['body'] = serendipity_archiveURL($eventData['id'], $eventData['title'], 'baseURL', true, array('timestamp' => $eventData['timestamp'])) . "\n\n" . $mail['body'];
}
foreach($to AS $mailto) {