diff --git sites/all/modules/smartqueue_og/includes/views/smartqueue_og.views_default.inc sites/all/modules/smartqueue_og/includes/views/smartqueue_og.views_default.inc
index 71eb369..c2a1905 100644
--- sites/all/modules/smartqueue_og/includes/views/smartqueue_og.views_default.inc
+++ sites/all/modules/smartqueue_og/includes/views/smartqueue_og.views_default.inc
@@ -1,5 +1,9 @@
 <?php
 //$Id: smartqueue_og.views_default.inc,v 1.3 2009/10/23 01:27:09 ezrag Exp $
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_views_default_views() {
   $qid = smartqueue_og_get_qid();
   $view = new view;
@@ -129,4 +133,4 @@ function smartqueue_og_views_default_views() {
   ));
   $views[$view->name] = $view;
   return $views;
-}
\ No newline at end of file
+}
diff --git sites/all/modules/smartqueue_og/smartqueue_og.info sites/all/modules/smartqueue_og/smartqueue_og.info
index cf7b841..c33bbc7 100644
--- sites/all/modules/smartqueue_og/smartqueue_og.info
+++ sites/all/modules/smartqueue_og/smartqueue_og.info
@@ -4,10 +4,13 @@ description = Provides a Node queue for individual organic groups
 package = Nodequeue
 dependencies[] = nodequeue
 dependencies[] = og
-core = 6.x
+core = 7.x
 ; Information added by drupal.org packaging script on 2009-10-28
 version = "6.x-1.0-rc3"
-core = "6.x"
+core = 7.x
 project = "smartqueue_og"
 datestamp = "1256770061"
 
+
+files[] = smartqueue_og.module
+files[] = views/smartqueue_og.views_default.inc
diff --git sites/all/modules/smartqueue_og/smartqueue_og.module sites/all/modules/smartqueue_og/smartqueue_og.module
index cba0044..0622b9e 100644
--- sites/all/modules/smartqueue_og/smartqueue_og.module
+++ sites/all/modules/smartqueue_og/smartqueue_og.module
@@ -5,18 +5,28 @@
  * Implementation of hook_views_api()
  */
 
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_views_api() {
   return array(
     'api' => 2,
-    'path' => drupal_get_path('module', 'smartqueue_og') .'/includes/views',
+    'path' => drupal_get_path('module', 'smartqueue_og') . '/includes/views',
   );
 }
-function smartqueue_og_block($op = 'list', $delta = 0, $edit = array()) {
- if (module_exists('views')) {
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
+/*
+function smartqueue_og_block_OLD($op = 'list', $delta = 0, $edit = array()) {
+  // TODO Remaining code in this function needs to be moved to the appropriate new hook function.
+  if (module_exists('views')) {
     switch ($op) {
       case 'list':
         $blocks[0]['info'] = t("Group Queue");
-        return $blocks; 
+        return $blocks;
         break;
       case 'view':
         if ($delta == 0) {
@@ -36,42 +46,79 @@ function smartqueue_og_block($op = 'list', $delta = 0, $edit = array()) {
     }
   }
 }
+*/
+
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_menu() {
   $items['admin/content/nodequeue/smartqueue_og/batch_delete'] = array(
     'title' => 'Confirm Smartque OG Batch Queue Deletion',
     'access callback' => 'smartqueue_og_batch_delete_access',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('smartqueue_og_batch_delete_subqueues_confirm'),
-    'type' => MENU_CALLBACK
+    'type' => MENU_CALLBACK,
   );
   return $items;
 }
 
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_batch_delete_access() {
   return user_access('manipulate all queues') || user_access('manipulate all og queues');
 }
-function smartqueue_og_perm() {
-  return array('manipulate og queues', 'manipulate all og queues');
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
+function smartqueue_og_permission() {
+  return array(
+    'manipulate og queues' => array(
+      'title' => t('manipulate og queues'),
+      'description' => t('TODO Add a description for \'manipulate og queues\''),
+    ),
+    'manipulate all og queues' => array(
+      'title' => t('manipulate all og queues'),
+      'description' => t('TODO Add a description for \'manipulate all og queues\''),
+    ),
+  );
 }
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_nodequeue_info() {
-  return array('smartqueue_og' =>
-    array(
+  return array(
+    'smartqueue_og' => array(
       'title' => t('Smartqueues for Organic Groups'),
       'description' => t('Provides a Nodequeue for each Organic Group'),
-    )
+    ),
   );
 }
 
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_nodequeue_form($queue, &$form) {
-  
-  $og_types = array_flip(og_get_types('group'));
-  $og_types = array_intersect_key(node_get_types('names'), $og_types);
+
+  $og_types = array();
+  foreach (node_type_get_types() as $type) {
+      if (og_is_group_type('node', $type->type)) {
+          $og_types[] = $type->type;
+      }
+  }
+  $og_types = array_flip($og_types);
+  $og_types = array_intersect_key(node_type_get_names(), $og_types);
   $form['eligible_group_types'] = array(
     '#type' => 'checkboxes',
     '#title' => t("Group types which are eligible for a Nodequeue"),
     '#description' => t("Select the Organic Group types for which Nodequeues should be automatically created."),
     '#options' => $og_types,
-    '#default_value' => variable_get('smartqueue_og_'. smartqueue_og_get_qid() .'_eligible_group_types', array()),
+    '#default_value' => variable_get('smartqueue_og_' . smartqueue_og_get_qid() . '_eligible_group_types', array()),
     '#weight' => 1,
   );
   $form['manipulate_restrict'] = array(
@@ -81,19 +128,19 @@ function smartqueue_og_nodequeue_form($queue, &$form) {
       'members' => t('All Groups Members can manipulate this Nodequeue.'),
       'admins' => t('Only Group Administrators can manipulate this Nodequeue.'),
     ),
-    '#default_value' => variable_get('smartqueue_og_manipulate_restrict_'. $queue->qid, 'admins'),
+    '#default_value' => variable_get('smartqueue_og_manipulate_restrict_' . $queue->qid, 'admins'),
   );
   $form['node_restrict'] = array(
     '#type' => 'checkbox',
     '#title' => t('Restrict to posts within a group'),
     '#description' => t("When checked, only posts which are part of the Organic Group can be added to the group's Nodequeue."),
-    '#default_value' => variable_get('smartqueue_og_node_restrict_'. $queue->qid, 0),
+    '#default_value' => variable_get('smartqueue_og_node_restrict_' . $queue->qid, 0),
   );
   $form['auto_add'] = array(
     '#type' => 'checkbox',
     '#title' => t('Automatically add to group queues'),
     '#description' => t("When checked, posts will automatically be added to applicable group Nodequeues when they are submitted."),
-    '#default_value' => variable_get('smartqueue_og_auto_add_'. $queue->qid, 0),
+    '#default_value' => variable_get('smartqueue_og_auto_add_' . $queue->qid, 0),
   );
   $form['submit_actions'] = array(
     '#type' => 'fieldset',
@@ -111,20 +158,28 @@ function smartqueue_og_nodequeue_form($queue, &$form) {
     ),
   );
   $form['submit_actions']['create'] = array(
-    '#prefix' => "<label>". t("For eligible groups that do not yet have Queues:") ."</label>",
+    '#prefix' => "<label>" . t("For eligible groups that do not yet have Queues:") . "</label>",
     '#type' => 'checkbox',
     '#title' => t('Create new Nodequeues'),
     '#default_value' => 1,
   );
 }
 
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_nodequeue_form_submit(&$queue, &$form_state) {
-  variable_set('smartqueue_og_'. $queue->qid .'_eligible_group_types', $form_state['values']['eligible_group_types']);
-  variable_set('smartqueue_og_node_restrict_'. $queue->qid, $form_state['values']['node_restrict']);
-  variable_set('smartqueue_og_manipulate_restrict_'. $queue->qid, $form_state['values']['manipulate_restrict']);
-  variable_set('smartqueue_og_auto_add_'. $queue->qid, $form_state['values']['auto_add']);
+  variable_set('smartqueue_og_' . $queue->qid . '_eligible_group_types', $form_state['values']['eligible_group_types']);
+  variable_set('smartqueue_og_node_restrict_' . $queue->qid, $form_state['values']['node_restrict']);
+  variable_set('smartqueue_og_manipulate_restrict_' . $queue->qid, $form_state['values']['manipulate_restrict']);
+  variable_set('smartqueue_og_auto_add_' . $queue->qid, $form_state['values']['auto_add']);
 }
 
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_nodequeue_form_submit_finish(&$queue, &$form_state) {
   if ($form_state['values']['submit_actions']['create'] == 1) {
     $eligible_groups = smartqueue_og_eligible_groups();
@@ -141,111 +196,154 @@ function smartqueue_og_nodequeue_form_submit_finish(&$queue, &$form_state) {
       break;
   }
 }
-function smartqueue_og_batch_delete_subqueues_confirm() {
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
+function smartqueue_og_batch_delete_subqueues_confirm($form, &$form_state) {
   $qid = smartqueue_og_get_qid();
-  
-    $eligible_groups = smartqueue_og_eligible_groups();
-    $existing_subqueues = smartqueue_og_existing_subqueues();
-    $extra_subqueues = array_diff_key($existing_subqueues, $eligible_groups);
+
+  $eligible_groups = smartqueue_og_eligible_groups();
+  $existing_subqueues = smartqueue_og_existing_subqueues();
+  $extra_subqueues = array_diff_key($existing_subqueues, $eligible_groups);
 
   if (empty($extra_subqueues)) {
     drupal_set_message(t("There are no extra OG Nodequeues to delete."));
-    drupal_goto('admin/content/nodequeue/'. $qid .'/edit');
+    drupal_goto('admin/content/nodequeue/' . $qid . '/edit');
   }
-  
+
   $form['extra_subqueues'] = array(
     '#type' => 'value',
     '#value' => $extra_subqueues,
   );
-  return confirm_form($form, t("Are you sure you wish to batch delete extra OG Nodequeues ?"), 'admin/content/nodequeue/'. $qid .'/edit', NULL, 'Confirm', 'Cancel', 'smartqueue_og_batch_delete_confirm');
+  return confirm_form($form, t("Are you sure you wish to batch delete extra OG Nodequeues ?"), 'admin/content/nodequeue/' . $qid . '/edit', NULL, 'Confirm', 'Cancel', 'smartqueue_og_batch_delete_confirm');
 }
 
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_batch_delete_subqueues_confirm_submit($form, &$form_state) {
   smartqueue_og_batch_delete_subqueues($form_state['values']['extra_subqueues']);
   $form_state['redirect'] = 'admin/content/nodequeue';
 }
 
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_batch_delete_subqueues($sq_ids = array()) {
   //get sqids from the form
   if (count($sq_ids) > 0) {
     $in = implode(', ', array_fill(0, count($sq_ids), "%d"));
-    db_query("DELETE FROM {nodequeue_subqueue} WHERE sqid IN($in)", $sq_ids);
-    db_query("DELETE FROM {nodequeue_nodes} WHERE sqid IN($in)", $sq_ids);
+    db_delete('nodequeue_subqueue')
+      ->condition('sqid', $in, "IN")
+      ->execute();
+
+    db_delete('nodequeue_nodes')
+        ->condition('sqid', $in, "IN")
+        ->execute();
   }
   else {
     drupal_set_message(t("No subqueues to delete."));
   }
 }
 
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_batch_add_subqueues($groups, $qid = NULL) {
   if (!$qid) {
     $qid = smartqueue_og_get_qid();
   }
-  if (!$qid) {
-    //TODO: Move this to smartqueue_og_get_qid().
-    drupal_set_message(t("Couldn't establish qid "), 'error');
-    return;
-  }
-  
+
   $queue->qid = $qid;
   $count = 0;
   foreach ($groups as $nid => $title) {
-    $sq = nodequeue_add_subqueue($queue, $title ."'s Nodequeue", $nid);
+    $sq = nodequeue_add_subqueue($queue, $title . "'s Nodequeue", $nid);
     $node = node_load($nid);
     if (node_access('view', $node)) {
-      drupal_set_message(t("Added Nodequeue: @title", array('@title' => $title ."'s Nodequeue")));
+      drupal_set_message(t("Added Nodequeue: @title", array('@title' => $title . "'s Nodequeue")));
     }
     else {
-      $restricted ++;
+      $restricted++;
     }
   }
   if (count($restricted > 0)) {
     drupal_set_message(t("Added Nodequeues for %count restricted groups.", array('%count' => count($restricted))));
   }
 }
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_existing_subqueues() {
   $subqueues = array();
   //returns an array keyed on the subqueue reference with the sq id as the value
   $qid = smartqueue_og_get_qid();
-  $query = db_query("SELECT sqid, reference FROM {nodequeue_subqueue} WHERE qid = %d", $qid);
-  while ($result = db_fetch_array($query)) {
+  $query = db_query("SELECT sqid, reference FROM {nodequeue_subqueue} WHERE qid = :qid", array(':qid' => $qid));
+  foreach ($query as $result) {
     $subqueues[$result['reference']] = $result['sqid'];
   }
   return $subqueues;
 }
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_eligible_groups() {
   $groups = array();
   if ($eligible_types = smartqueue_og_eligible_group_types()) {
-    $in = 'IN ('. implode(', ', array_fill(0, count($eligible_types), "'%s'")) .')';
-    $query = db_query("SELECT nid, title FROM {node} WHERE type $in", $eligible_types);
-    while ($result = db_fetch_object($query)) {
+    print_r( $eligible_types);
+    $query = db_query("SELECT nid, title FROM {node} WHERE type IN(:in)", array(':in'=> $eligible_types));
+    foreach ($query as $result) {
       $groups[$result->nid] = $result->title;
     }
-    
+
   }
   return $groups;
 }
 
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_all_group_subqueues() {
   $subqueues = array();
   //returns an array keyed on the subqueue reference with the sq id as the value
   $qid = smartqueue_og_get_qid();
-  $query = db_query("SELECT sqid, reference FROM {nodequeue_subqueue} WHERE qid = %d", $qid);
+  $query = db_query("SELECT sqid, reference FROM {nodequeue_subqueue} WHERE qid = :qid", array(':qid' => $qid));
   while ($result = db_fetch_array($query)) {
     $subqueues[$result['reference']] = $result['sqid'];
   }
   return $subqueues;
 }
 
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_eligible_group_types() {
- 
-  $var = variable_get('smartqueue_og_'. smartqueue_og_get_qid() .'_eligible_group_types', array());
-  return array_intersect($var, og_get_types('group'));
+
+  $var = variable_get('smartqueue_og_' . smartqueue_og_get_qid() . '_eligible_group_types', array());
+  
+  $og_types = array();
+  foreach (node_type_get_types() as $type) {
+      if (og_is_group_type('node', $type->type)) {
+          $og_types[] = $type->type;
+      }
+  }
+  return array_intersect($var, $og_types);
 }
 
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_eligible_group_type($type) {
-   //TODO: verify this syntax when I get an internet conectio
-  if (in_array($type, variable_get('smartqueue_og_'. smartqueue_og_get_qid() .'_eligible_group_types', array()))) {
+  //TODO: verify this syntax when I get an internet conectio
+  if (in_array($type, variable_get('smartqueue_og_' . smartqueue_og_get_qid() . '_eligible_group_types', array()))) {
     return TRUE;
   }
   else {
@@ -253,6 +351,10 @@ function smartqueue_og_eligible_group_type($type) {
   }
 }
 
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_form_alter(&$form, &$form_state, $form_id) {
   switch ($form_id) {
     case 'nodequeue_edit_queue_form':
@@ -263,25 +365,29 @@ function smartqueue_og_form_alter(&$form, &$form_state, $form_id) {
         $form[0]['#weight'] = 9; // the Delete button.
         if (smartqueue_og_get_qid() && empty($form['title']['#default_value'])) {
           drupal_set_message(t("Only one OG Smartqueue can exist at a time."));
-          drupal_goto('admin/content/nodequeue'); 
+          drupal_goto('admin/content/nodequeue');
         }
       }
       break;
-    
+
   }
 }
 
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_nodequeue_subqueues(&$queue, $node) {
   global $user;
-  $manipulate_restrict = variable_get('smartqueue_og_manipulate_restrict_'. $queue->qid, 'admins');
-  $node_restrict = variable_get('smartqueue_og_node_restrict_'. $queue->qid, 0);
+  $manipulate_restrict = variable_get('smartqueue_og_manipulate_restrict_' . $queue->qid, 'admins');
+  $node_restrict = variable_get('smartqueue_og_node_restrict_' . $queue->qid, 0);
 
   if (empty($user->og_groups) || !user_access('manipulate og queues')) {
     return;
   }
   $user_group_nids = array_keys($user->og_groups);
   $groups = array_combine($user_group_nids, $user_group_nids);
-  
+
   if ($manipulate_restrict == 'admins') {
     foreach ($user->og_groups as $nid => $this_group) {
       if ($this_group['is_admin'] != 1) {
@@ -304,6 +410,10 @@ function smartqueue_og_nodequeue_subqueues(&$queue, $node) {
 /*
  * Implementation of the hook nodequeue_api_queue_access
  */
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_queue_access($queue, $account = NULL) {
   if (!$account) {
     global $user;
@@ -320,6 +430,10 @@ function smartqueue_og_queue_access($queue, $account = NULL) {
 /*
  * Implementation of the hook nodequeue_api_subqueue_access
  */
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_subqueue_access($subqueue, $account = NULL) {
   if (!$account) {
     global $user;
@@ -329,75 +443,138 @@ function smartqueue_og_subqueue_access($subqueue, $account = NULL) {
   if (user_access("manipulate all queues", $account) || user_access('manipulate all og queues', $account)) {
     return TRUE;
   }
-  
+
   if (!user_access('manipulate og queues', $account)) {
     return FALSE;
   }
-  if (variable_get('smartqueue_og_manipulate_restrict_'. $subqueue->qid, 'admins') == 'admins' && $account->og_groups[$subqueue->reference]['is_admin'] != 1) {
+  if (variable_get('smartqueue_og_manipulate_restrict_' . $subqueue->qid, 'admins') == 'admins' && $account->og_groups[$subqueue->reference]['is_admin'] != 1) {
     return FALSE;
   }
-  
+
   if (!isset($account->og_groups[$subqueue->reference])) {
     return FALSE;
   }
-} 
-
-function smartqueue_og_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
-  switch ($op) {
-    case 'insert':
-    case 'update':
-      if (smartqueue_og_eligible_group_type($node->type)) {
-        if ($subqueue = !smartqueue_og_load_group_subqueue($node->nid)) {
-          $queue->qid = smartqueue_og_get_qid();
-          nodequeue_add_subqueue($queue, "$node->title's Nodequeue", $node->nid);
-          if (node_access('view', $node)) {
-            drupal_set_message(t("Created a Nodequeue for @title .", array('@title' => $node->title)));
-          }
-        }
-        else {
-          if ($subqueue->title != "$node->title's Subqueue  ") {
-            nodequeue_subqueue_update_title($subqueue->sqid, $node->title ."'s Queue'");
+}
+
+/**
+ * Implements hook_node_insert().
+ */
+function smartqueue_og_node_insert($node) {
+  if (smartqueue_og_eligible_group_type($node->type)) {
+    if ($subqueue = !smartqueue_og_load_group_subqueue($node->nid)) {
+      $queue->qid = smartqueue_og_get_qid();
+      nodequeue_add_subqueue($queue, "$node->title's Nodequeue", $node->nid);
+      if (node_access('view', $node)) {
+        drupal_set_message(t("Created a Nodequeue for @title .", array('@title' => $node->title)));
+      }
+    }
+    else {
+      if ($subqueue->title != "$node->title's Subqueue  ") {
+        nodequeue_subqueue_update_title($subqueue->sqid, $node->title . "'s Queue'");
+      }
+    }
+  }
+  if (!empty($node->og_groups)) {
+    //Automatically add this node to applicable group subqueues.
+    foreach ($node->og_groups as $key => $group_nid) {
+      if ($subqueue = smartqueue_og_load_group_subqueue($group_nid)) {
+        $subqueue = array_shift($subqueue);
+        //If this setting is disabled, no need to proceed with further database queries.
+        if (variable_get('smartqueue_og_auto_add_' . $subqueue->qid, 0)) {
+          $queue = nodequeue_load($subqueue->qid);
+          //If this type of node is allowed in this queue:
+          if (in_array($node->type, $queue->types)) {
+            //If this node is not already in the subqueue:
+            if (!nodequeue_get_subqueue_position($subqueue->sqid, $node->nid)) {
+              nodequeue_subqueue_add($queue, $subqueue, $node->nid);
+            }
           }
         }
       }
-      if (!empty($node->og_groups)) {
-        //Automatically add this node to applicable group subqueues.
-        foreach ($node->og_groups as $key => $group_nid) {
-          if ($subqueue = smartqueue_og_load_group_subqueue($group_nid)) {
-            $subqueue = array_shift($subqueue);
-            //If this setting is disabled, no need to proceed with further database queries.
-            if (variable_get('smartqueue_og_auto_add_'. $subqueue->qid, 0)) {
-              $queue = nodequeue_load($subqueue->qid);
-              //If this type of node is allowed in this queue:
-              if (in_array($node->type, $queue->types)) {
-                //If this node is not already in the subqueue:
-                if (!nodequeue_get_subqueue_position($subqueue->sqid, $node->nid)) {
-                  nodequeue_subqueue_add($queue, $subqueue, $node->nid);
-                }
-              }
+      unset($queue);
+      unset($subqueue);
+    }
+  }
+}
+
+/**
+ * Implements hook_node_update().
+ */
+function smartqueue_og_node_update($node) {
+  if (smartqueue_og_eligible_group_type($node->type)) {
+    if ($subqueue = !smartqueue_og_load_group_subqueue($node->nid)) {
+      $queue->qid = smartqueue_og_get_qid();
+      nodequeue_add_subqueue($queue, "$node->title's Nodequeue", $node->nid);
+      if (node_access('view', $node)) {
+        drupal_set_message(t("Created a Nodequeue for @title .", array('@title' => $node->title)));
+      }
+    }
+    else {
+      if ($subqueue->title != "$node->title's Subqueue  ") {
+        nodequeue_subqueue_update_title($subqueue->sqid, $node->title . "'s Queue'");
+      }
+    }
+  }
+  if (!empty($node->og_groups)) {
+    //Automatically add this node to applicable group subqueues.
+    foreach ($node->og_groups as $key => $group_nid) {
+      if ($subqueue = smartqueue_og_load_group_subqueue($group_nid)) {
+        $subqueue = array_shift($subqueue);
+        //If this setting is disabled, no need to proceed with further database queries.
+        if (variable_get('smartqueue_og_auto_add_' . $subqueue->qid, 0)) {
+          $queue = nodequeue_load($subqueue->qid);
+          //If this type of node is allowed in this queue:
+          if (in_array($node->type, $queue->types)) {
+            //If this node is not already in the subqueue:
+            if (!nodequeue_get_subqueue_position($subqueue->sqid, $node->nid)) {
+              nodequeue_subqueue_add($queue, $subqueue, $node->nid);
             }
           }
-          unset($queue);
-          unset($subqueue);
         }
       }
-      break;
-    case 'delete':
-      if ($subqueue = smartqueue_og_load_group_subqueue($node->nid)) {
-        nodequeue_remove_subqueue($subqueue->sqid);
-        drupal_set_message(t("Deleted Nodequeue @title", array('@title' => $subqueue->title)));
-      }
+      unset($queue);
+      unset($subqueue);
+    }
+  }
+}
+
+/**
+ * Implements hook_node_delete().
+ */
+function smartqueue_og_node_delete($node) {
+  if ($subqueue = smartqueue_og_load_group_subqueue($node->nid)) {
+    nodequeue_remove_subqueue($subqueue->sqid);
+    drupal_set_message(t("Deleted Nodequeue @title", array('@title' => $subqueue->title)));
   }
 }
 
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
+function smartqueue_og_nodeapi_OLD(&$node, $op, $a3 = NULL, $a4 = NULL) { }
+
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_get_qid() {
   static $qid;
   if (!isset($qid)) {
-    $qid = db_result(db_query("SELECT qid FROM {nodequeue_queue} WHERE owner = 'smartqueue_og'"));
+    $qid = db_query("SELECT qid FROM {nodequeue_queue} WHERE owner = :owner", array(':owner' => 'smartqueue_og'))->fetchField();
+  }
+  if (!$qid) {
+    drupal_set_message(t("Couldn't establish qid "), 'error');
+    return;
   }
   return $qid;
+
 }
 
+/**
+ * @todo Please document this function.
+ * @see http://drupal.org/node/1354
+ */
 function smartqueue_og_load_group_subqueue($nid) {
   return nodequeue_load_subqueues_by_reference(array(smartqueue_og_get_qid() => array($nid)));
-}
\ No newline at end of file
+}
