--- ../../Downloads/render/render.module	2008-01-18 22:45:42.000000000 -0500
+++ render.module	2008-05-15 16:09:36.000000000 -0400
@@ -614,33 +614,39 @@ function render_get_fonts($plugin = NULL
  */
 function render_get_rules($plugin = NULL) {
   static $rules = array();
-  
-  if (!empty($rules)) {
-    return $rules;
-  }
-  
-  if (isset($plugin)) {
-    $result = db_query("SELECT * FROM {render} WHERE plugin = '%s' ORDER BY weight", check_plain($plugin));
-  }
-  else {
-    $result = db_query('SELECT * FROM {render} ORDER BY weight');
-  }
-  while ($rule = db_fetch_array($result)) {
-    // Unserialize custom plugin properties.
-    $properties = unserialize($rule['properties']);
-    $rule = array_merge($rule, $properties);
-    
-    $rules[$rule['rid']] = $rule;
+
+  // check for previous database call  
+  if (empty($rules)) {
+    if (isset($plugin)) {
+      $result = db_query("SELECT * FROM {render} WHERE plugin = '%s' ORDER BY weight", check_plain($plugin));
+    }
+    else {
+      $result = db_query('SELECT * FROM {render} ORDER BY weight');
+    }
+    while ($rule = db_fetch_array($result)) {
+      // Unserialize custom plugin properties.
+      $properties = unserialize($rule['properties']);
+      $rule = array_merge($rule, $properties);
+      
+      $rules[$rule['plugin']][$rule['rid']] = $rule;
+      $rules['all'][$rule['rid']] = $rule;
+    }
+  
+    // Store active plugins in a variable.
+    $active_plugins = array();
+    foreach ($rules as $plugin => $rule) {
+      if ($plugin != 'all') {
+        $active_plugins[$plugin] = $plugin;
+      }
+    }
+    variable_set('render_plugins', $active_plugins);
   }
 
-  // Store active plugins in a variable.
-  $active_plugins = array();
-  foreach ($rules as $rule) {
-    $active_plugins[$rule['plugin']] = $rule['plugin'];
+  // If we're not asked for a specific plugin, return all rules.
+  if ($plugin == NULL) {
+    return $rules['all'];
   }
-  variable_set('render_plugins', $active_plugins);
-  
-  return $rules;
+  return $rules[$plugin];
 }
 
 /**
