? .subscriptions_moderation.module.swp
? grep
? moderation.1.patch
? moderation.patch
? parse.error.subscriptions_mail.ref_param.patch
? subscriptions_moderation.info
? subscriptions_moderation.module
Index: subscriptions.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/subscriptions/subscriptions.install,v
retrieving revision 1.3.2.1.2.14
diff -u -p -r1.3.2.1.2.14 subscriptions.install
--- subscriptions.install	18 Jan 2008 21:47:25 -0000	1.3.2.1.2.14
+++ subscriptions.install	17 Feb 2008 09:37:25 -0000
@@ -35,6 +35,7 @@ function subscriptions_install() {
           load_function varchar(60) NOT NULL default '',
           is_new tinyint default NULL,
           last_sent int unsigned NOT NULL default '0',
+          moderate int default 0,
           PRIMARY KEY (sqid),
           KEY (load_args, load_function, uid)
         ) /*!40100 DEFAULT CHARACTER SET utf8 */");
@@ -88,6 +89,7 @@ function subscriptions_install() {
           load_function varchar(60) NOT NULL default '',
           is_new smallint default NULL,
           last_sent int_unsigned NOT NULL default 0,
+          moderate int default 0,
           PRIMARY KEY (sqid)
         )");
       db_query("CREATE SEQUENCE {subscriptions_queue}_sqid_seq;");
@@ -405,3 +407,18 @@ function subscriptions_update_5() {  // 
   $ret[] = update_sql("UPDATE {subscriptions_user} SET send_interval_visible = 0, send_updates_visible = 0, send_comments_visible = 0 WHERE uid = ". -DRUPAL_AUTHENTICATED_RID);
   return $ret;
 }
+
+function subscriptions_update_6() {  // Add a field for moderation.
+$ret = array();
+  switch ($GLOBALS['db_type']) {
+    case 'mysql':
+    case 'mysqli':
+      $ret[] = update_sql("ALTER TABLE {subscriptions_queue} ADD moderate TINYINT UNSIGNED NOT NULL DEFAULT '0'");
+      break;
+
+    case 'pgsql':
+      db_add_column($ret, 'subscriptions_queue', 'moderate', 'smallint', array('default' => 0, 'not null' => TRUE));
+      break;
+  }
+  return $ret;
+}
Index: subscriptions.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/subscriptions/subscriptions.module,v
retrieving revision 1.62.2.45.2.37
diff -u -p -r1.62.2.45.2.37 subscriptions.module
--- subscriptions.module	18 Jan 2008 21:47:25 -0000	1.62.2.45.2.37
+++ subscriptions.module	17 Feb 2008 09:37:25 -0000
@@ -180,7 +180,16 @@ function subscriptions_queue($event) {
       foreach ($module_query as $field => $query) {
         $join = empty($query['join']) ? '' : $query['join'];
         $where = empty($query['where']) ? array() : array($query['where']);
-        $args = array($event['load_function'], $event['load_args'], $event['is_new'], $module, $field, $event['uid']);
+
+        // determine whether the queued item must be moderated or not.
+        if (module_exists('subscriptions_moderation') && !user_access('trusted not to spam')) { // patch: I assume we must check against the currently logged in user.
+            $moderate = 1;
+        }
+        else {
+          $moderate = 0;
+        }
+
+        $args = array($event['load_function'], $event['load_args'], $event['is_new'], $moderate, $module, $field, $event['uid']);
         if (!empty($query['value'])) {
           $where[] = "s.value = '%s'";
           $args[] = $query['value'];
@@ -192,10 +201,11 @@ function subscriptions_queue($event) {
           $where[] = "s.recipient_uid != %d";
           $args[] = $user->uid;
         }
+
         $conditions = implode(' AND ', $where);
         $sql = "
-          INSERT INTO {subscriptions_queue} (uid, name, mail, language, module, field, value, author_uid, send_interval, digest, last_sent, load_function, load_args, is_new)
-          SELECT u.uid, u.name, u.mail, u.language, s.module, s.field, s.value, s.author_uid, s.send_interval, su.digest, su.last_sent, '%s', '%s', '%d'
+          INSERT INTO {subscriptions_queue} (uid, name, mail, language, module, field, value, author_uid, send_interval, digest, last_sent, load_function, load_args, is_new, moderate)
+          SELECT u.uid, u.name, u.mail, u.language, s.module, s.field, s.value, s.author_uid, s.send_interval, su.digest, su.last_sent, '%s', '%s', '%d', %d
           FROM {subscriptions} s
           INNER JOIN {subscriptions_user} su ON s.recipient_uid = su.uid
           INNER JOIN {users} u USING(uid) $join
Index: subscriptions_content.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/subscriptions/Attic/subscriptions_content.module,v
retrieving revision 1.1.2.9
diff -u -p -r1.1.2.9 subscriptions_content.module
--- subscriptions_content.module	2 Feb 2008 01:47:35 -0000	1.1.2.9
+++ subscriptions_content.module	17 Feb 2008 09:37:26 -0000
@@ -512,7 +512,7 @@ function subscriptions_content_node_load
 
 function subscriptions_content_comment_load($cid, $sqid) {
   $nid = db_result(db_query('SELECT nid FROM {comments} WHERE cid = %d', $cid));
-  $item = db_fetch_array(db_query('SELECT * from {subscriptions_queue} where sqid = %d', $sqid));
+  $item = db_fetch_array(db_query('SELECT * from {subscriptions_queue} where sqid = %d and moderate = 0', $sqid));
   if ($item['module'] != 'node' || $item['field'] != 'nid') {
     // Only if we're processing a node/nid queue item should we cut off the comments at an update item, otherwise not:
     $sqid = NULL;
@@ -541,11 +541,11 @@ function _subscriptions_content_load($ni
     }
     if (!empty($comment_load_sqid)) {
       // check for a later queued update notification (don't send comments past that one because it will go out as node/type with its own comments later!)
-      if ($cutoff_sqid = db_result(db_query("SELECT sqid FROM {subscriptions_queue} WHERE module = 'node' AND field = 'nid' AND value = %d AND uid = %d AND load_function = 'subscriptions_content_node_load' AND sqid > %d LIMIT 1", $nid, $user->uid, $comment_load_sqid))) {
+      if ($cutoff_sqid = db_result(db_query("SELECT sqid FROM {subscriptions_queue} WHERE module = 'node' AND field = 'nid' AND value = %d AND uid = %d AND load_function = 'subscriptions_content_node_load' AND sqid > %d LIMIT 1 AND moderate = 0", $nid, $user->uid, $comment_load_sqid))) {
         $limit_sqids = 'AND q.sqid < '. (integer) $cutoff_sqid;
       }
     }
-    $sql = "SELECT q.sqid AS _sqid, q.is_new AS _is_new, c.* FROM {comments} c INNER JOIN {subscriptions_queue} q ON c.cid = q.load_args AND q.uid = %d AND q.load_function = '%s' WHERE c.nid = %d $published_comments_only $limit_sqids";
+    $sql = "SELECT q.sqid AS _sqid, q.is_new AS _is_new, c.* FROM {comments} c INNER JOIN {subscriptions_queue} q ON c.cid = q.load_args AND q.uid = %d AND q.load_function = '%s' WHERE c.nid = %d AND moderate = 0 $published_comments_only $limit_sqids";
     $sql = db_rewrite_sql($sql, 'c', 'cid');
     $result = db_query($sql, $user->uid, 'subscriptions_content_comment_load', $nid);
     $sqids = $placeholders = array();
@@ -558,7 +558,7 @@ function _subscriptions_content_load($ni
       $placeholders[] = '%d';
     }
     if ($sqids) {
-      db_query('DELETE FROM {subscriptions_queue} WHERE sqid IN ('. implode(',', $placeholders) .')', $sqids);
+      db_query('DELETE FROM {subscriptions_queue} WHERE sqid IN ('. implode(',', $placeholders) .') AND moderate = 0', $sqids);
     }
   }
   return $node;
@@ -762,6 +762,6 @@ function subscriptions_content_cron() {
  * Implementation of hook_disable()
  */
 function subscriptions_content_disable() {
-  db_query("DELETE FROM {subscriptions_queue} WHERE load_function LIKE 'subscriptions_content_%'");
+  db_query("DELETE FROM {subscriptions_queue} WHERE load_function LIKE 'subscriptions_content_%' AND moderate = 0");
 }
 
Index: subscriptions_mail.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/subscriptions/Attic/subscriptions_mail.module,v
retrieving revision 1.1.2.8
diff -u -p -r1.1.2.8 subscriptions_mail.module
--- subscriptions_mail.module	2 Feb 2008 01:47:35 -0000	1.1.2.8
+++ subscriptions_mail.module	17 Feb 2008 09:37:27 -0000
@@ -15,8 +15,8 @@ function subscriptions_mail_cron() {
   $mails = array();
   session_save_session(FALSE);
   while ($counter++ < $number_of_mails) {
-    subscriptions_mail_mail_edit_variables();  // clear cache
-    $result = db_query_range('SELECT * FROM {subscriptions_queue} WHERE last_sent + send_interval < %d ORDER BY sqid', time(), 0, 1);
+    subscriptions_mail_mail_edit_variables($null = NULL);  // clear cache
+    $result = db_query_range('SELECT * FROM {subscriptions_queue} WHERE last_sent + send_interval < %d AND moderate = 0 ORDER BY sqid', time(), 0, 1);
     if ($s = db_fetch_array($result)) {
       if (!isset($users[$s['uid']])) {
         $users[$s['uid']] = user_load(array('uid' => $s['uid']));
@@ -112,7 +112,7 @@ function subscriptions_mail_cron() {
         }
       }
       $user = $saved_user;
-      db_query("DELETE FROM {subscriptions_queue} WHERE load_function = '%s' AND load_args = '%s' AND uid = %d", $s['load_function'], $s['load_args'], $s['uid']);
+      db_query("DELETE FROM {subscriptions_queue} WHERE load_function = '%s' AND load_args = '%s' AND uid = %d AND moderate = 0", $s['load_function'], $s['load_args'], $s['uid']);
     }
     else {
       // No more subscriptions, terminate loop.
@@ -162,7 +162,7 @@ function _subscriptions_mail_send($mailk
   }
 }
 
-function subscriptions_mail_mail_edit_variables(&$variables = NULL, $mailkey = NULL) {
+function subscriptions_mail_mail_edit_variables(&$variables, $mailkey = NULL) {
   static $stored_variables;
   if (!isset($variables)) {
     unset($stored_variables);
Index: subscriptions_taxonomy.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/subscriptions/Attic/subscriptions_taxonomy.module,v
retrieving revision 1.1.2.6
diff -u -p -r1.1.2.6 subscriptions_taxonomy.module
--- subscriptions_taxonomy.module	2 Feb 2008 01:47:35 -0000	1.1.2.6
+++ subscriptions_taxonomy.module	17 Feb 2008 09:37:27 -0000
@@ -254,5 +254,5 @@ function subscriptions_taxonomy_taxa_for
  * Implementation of hook_disable()
  */
 function subscriptions_taxonomy_disable() {
-  db_query("DELETE FROM {subscriptions_queue} WHERE module = 'node' AND field = 'tid'");
+  db_query("DELETE FROM {subscriptions_queue} WHERE module = 'node' AND field = 'tid' AND moderate = 0");
 }
