--- pager.inc	2009-01-08 09:03:04.000000000 -0600
+++ pager.inc	2009-01-08 09:03:49.000000000 -0600
@@ -72,7 +72,13 @@ function pager_query($query, $limit = 10
   $pager_total_items[$element] = db_result(db_query($count_query, $args));
   $pager_total[$element] = ceil($pager_total_items[$element] / $limit);
   $pager_page_array[$element] = max(0, min((int)$pager_page_array[$element], ((int)$pager_total[$element]) - 1));
-  return db_query_range($query, $args, $pager_page_array[$element] * $limit, $limit);
+  
+  if ($page == 'all') {
+    $pager_page_array[$element] = 'all';
+    return db_query($query, $args);
+  } else {
+    return db_query_range($query, $args, $pager_page_array[$element] * $limit, $limit);  
+  }
 }
 
 /**
@@ -120,6 +126,7 @@ function theme_pager($tags = array(), $l
     $output .= theme('pager_list', $limit, $element, ($tags[2] ? $tags[2] : 9 ), '', $parameters);
     $output .= theme('pager_next', ($tags[3] ? $tags[3] : t('next ›')), $limit, $element, 1, $parameters);
     $output .= theme('pager_last', ($tags[4] ? $tags[4] : t('last »')), $limit, $element, $parameters);
+    $output .= theme('pager_all', ($tags[5] ? $tags[5] : t('show all')), $element, $parameters);
     $output .= '</div>';
 
     return $output;
@@ -267,6 +274,26 @@ function theme_pager_last($text, $limit,
 }
 
 /**
+ * Format a "show all" link.
+ *
+ * @param $text
+ *   The name (or image) of the link.
+ * @param $element
+ *   An optional integer to distinguish between multiple pagers on one page.
+ * @param $parameters
+ *   An associative array of query string parameters to append to the pager links.
+ * @return
+ *   An HTML string that generates this piece of the query pager.
+ *
+ * @ingroup themeable
+ */
+function theme_pager_all($text, $element = 0, $parameters = array()) {
+  $output = theme('pager_link', $text, 0, $element, array('page' => 'all'), array('class' => 'pager-all'));
+
+  return $output;
+}
+
+/**
  * Format a list of nearby pages with additional query results.
  *
  * @param $limit
@@ -292,7 +319,11 @@ function theme_pager_list($limit, $eleme
   // Middle is used to "center" pages around the current page.
   $pager_middle = ceil($quantity / 2);
   // current is the page we are currently paged to
-  $pager_current = $pager_page_array[$element] + 1;
+  if ($pager_page_array[$element] == 'all') {
+    $pager_current = 'all';
+  } else {
+    $pager_current = $pager_page_array[$element] + 1;
+  }
   // first is the first page listed by this pager piece (re quantity)
   $pager_first = $pager_current - $pager_middle + 1;
   // last is the last page listed by this pager piece (re quantity)
@@ -382,6 +413,7 @@ function theme_pager_link($text, $page_n
         t('‹ previous') => t('Go to previous page'),
         t('next ›') => t('Go to next page'),
         t('last »') => t('Go to last page'),
+        t('show all') => t('Show all'),
       );
     }
     if (isset($titles[$text])) {
