--- simplenews.module.orig	2007-12-17 20:28:20.000000000 +0100
+++ simplenews.module		2008-04-23 17:12:03.000000000 +0200
@@ -2677,4 +2677,86 @@
 
   $mail->body .= $footer;
   return $mail;
-}
\ No newline at end of file
+}
+
+
+/*
+ * Workflow-ng integration for the simplenews module
+ */
+
+/**
+ * Implementation of hook_action_info()
+ */
+function simplenews_action_info() {
+  return array(
+    'workflow_ng_action_subscribenewsletter' => array(
+      '#label' => t('Subscribe to newsletter'),
+      '#arguments' => array(
+        'user' => array('#entity' => 'user', '#label' => t('User who should be subscribed')),
+      ),
+      '#module' => 'Simplenews',
+    ),
+  );
+}
+
+ 
+/*
+ * Action "subscribe a particular user to a newsletter"
+ */
+function workflow_ng_action_subscribenewsletter($user, $settings, &$arguments, &$log) {
+  if (!module_exists('simplenews')) {
+    return;
+  }
+  $newsletters = $settings['newsletters'];
+  if (!is_array($newsletters)) $newsletters = array();
+  foreach ($newsletters as $tid) {
+    simplenews_subscribe_user($user->mail, $tid, FALSE);
+  }
+}
+
+
+/*
+ * Action user: add subscribenewsletter form
+ */
+function workflow_ng_action_subscribenewsletter_form($settings = array(), $argument_info) {
+  $form = array();
+
+  if (!module_exists('simplenews')) {
+    $form['newsletters'] = array(
+      '#prefix' => '<strong>',
+      '#value' => t('Please install the Simplenews module first in order to use this action.'),
+      '#suffix' => '</strong><br/><br/>',
+    );
+    return $form;
+  } 
+
+  // Get list of all newsletters
+  $vid = variable_get('simplenews_vid', '');
+
+  if (empty($vid)) {
+    $form['newsletters'] = array(
+      '#prefix' => '<strong>',
+      '#value' => t('Please configure the Simplenews module first in order to use this action.'),
+      '#suffix' => '</strong><br/><br/>',
+    );
+    return $form;
+  }
+
+  foreach (taxonomy_get_tree($vid) as $n) {
+    $newsletters[$n->tid] = $n->name;
+  }
+
+  $form['newsletters'] = array(
+    '#type' => 'checkboxes',
+    '#title' => t('Select newsletter(s)'),
+    '#options' => $newsletters,
+    '#default_value' => $settings['newsletters'],
+    '#required' => TRUE,
+  );
+  return $form;
+}
+
+function workflow_ng_action_subscribenewsletter_submit($form_id, $form_values) {
+  $settings = array('newsletters' => array_filter(array_keys(array_filter($form_values['newsletters']))));
+  return $settings;
+}
