diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module
index ae9278c..a4e4b74 100644
--- a/core/modules/comment/comment.module
+++ b/core/modules/comment/comment.module
@@ -196,6 +196,9 @@ function comment_theme() {
     'comment_block' => array(
       'variables' => array(),
     ),
+    'comment_unpublished_block' => array(
+      'variables' => array(),
+    ),
     'comment_preview' => array(
       'variables' => array('comment' => NULL),
     ),
@@ -420,6 +423,9 @@ function comment_permission() {
 function comment_block_info() {
   $blocks['recent']['info'] = t('Recent comments');
   $blocks['recent']['properties']['administrative'] = TRUE;
+  
+  $blocks['unpublished']['info'] = t('Unapproved comments');
+  $blocks['unpublished']['properties']['administrative'] = TRUE;
 
   return $blocks;
 }
@@ -428,13 +434,24 @@ function comment_block_info() {
  * Implements hook_block_configure().
  */
 function comment_block_configure($delta = '') {
-  $form['comment_block_count'] = array(
-    '#type' => 'select',
-    '#title' => t('Number of recent comments'),
-    '#default_value' => variable_get('comment_block_count', 10),
-    '#options' => drupal_map_assoc(array(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 30)),
-  );
-
+    
+    if ($delta == 'recent') {
+      $form['comment_block_count'] = array(
+      '#type' => 'select',
+      '#title' => t('Number of recent comments'),
+      '#default_value' => variable_get('comment_block_count', 10),
+      '#options' => drupal_map_assoc(array(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 30)),
+      );
+    }
+    else {
+      $form['comment_block_unpublished_count'] = array(
+      '#type' => 'select',
+      '#title' => t('Number of unapproved comments'),
+      '#default_value' => variable_get('comment_block_unpublished_count', 10),
+      '#options' => drupal_map_assoc(array(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 30)),
+      );
+    }
+      
   return $form;
 }
 
@@ -442,7 +459,13 @@ function comment_block_configure($delta = '') {
  * Implements hook_block_save().
  */
 function comment_block_save($delta = '', $edit = array()) {
-  variable_set('comment_block_count', (int) $edit['comment_block_count']);
+  if ($delta == 'recent') {
+    variable_set('comment_block_count', (int) $edit['comment_block_count']);
+  }
+  else {
+    variable_set('comment_block_unpublished_count', 
+    (int) $edit['comment_block_unpublished_count']);
+  }  
 }
 
 /**
@@ -451,14 +474,25 @@ function comment_block_save($delta = '', $edit = array()) {
  * Generates a block with the most recent comments.
  */
 function comment_block_view($delta = '') {
-  if (user_access('access comments')) {
-    $block['subject'] = t('Recent comments');
-    $block['content'] = theme('comment_block');
-
-    return $block;
+  $block['subject'] = '';
+  $block['content'] = ''; 
+  
+  if ($delta == 'recent') {
+    if (user_access('access comments')) {
+      $block['subject'] = t('Recent comments');
+      $block['content'] = theme('comment_block');
+    }
+  }
+  elseif ($delta == 'unpublished') {
+    if (user_access('administer comments')) {
+      $block['subject'] = t('Unapproved comments');
+      $block['content'] = theme('comment_unpublished_block');
+    }
   }
-}
 
+  return $block;
+}
+  
 /**
  * Redirects comment links to the correct page depending on comment settings.
  *
@@ -522,6 +556,35 @@ function comment_get_recent($number = 10) {
 }
 
 /**
+ * Find the most recent unapproved comments.
+ *
+ * @param integer $number
+ *   (optional) The maximum number of comments to find. Defaults to 10.
+ *
+ * @return
+ *   An array of comment objects or an empty array if there are no recent
+ *   comments visible to the current user.
+ */
+function comment_get_unpublished($number = 10) {
+  $query = db_select('comment', 'c');
+  $query->innerJoin('node', 'n', 'n.nid = c.nid');
+  $query->addTag('node_access');
+  $comments = $query
+    ->fields('c')
+    ->condition('c.status', COMMENT_NOT_PUBLISHED)
+    ->condition('n.status', NODE_PUBLISHED)
+    ->orderBy('c.created', 'DESC')
+    // Additionally order by cid to ensure that comments with the same timestamp
+    // are returned in the exact order posted.
+    ->orderBy('c.cid', 'DESC')
+    ->range(0, $number)
+    ->execute()
+    ->fetchAll();
+
+  return $comments ? $comments : array();
+}
+
+/**
  * Calculate page number for first new comment.
  *
  * @param $num_comments
@@ -609,6 +672,27 @@ function theme_comment_block() {
 }
 
 /**
+ * Returns HTML for a list of unapproved comments to be displayed in the 
+ * unapproved comment block.
+ *
+ * @ingroup themeable
+ */
+function theme_comment_unpublished_block() {
+  $items = array();
+  $number = variable_get('comment_block_unpublished_count', 10);
+  foreach (comment_get_unpublished($number) as $comment) {
+    $items[] = l($comment->subject, 'comment/' . $comment->cid, array('fragment' => 'comment-' . $comment->cid)) . '&nbsp;<span>' . t('@time ago', array('@time' => format_interval(REQUEST_TIME - $comment->changed))) . '</span>';
+  }
+
+  if ($items) {
+    return theme('item_list', array('items' => $items));
+  }
+  else {
+    return t('No unapproved comments available.');
+  }
+}
+
+/**
  * Implements hook_node_view().
  */
 function comment_node_view($node, $view_mode) {
