Index: menu_breadcrumb.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/menu_breadcrumb/menu_breadcrumb.module,v
retrieving revision 1.4
diff -u -r1.4 menu_breadcrumb.module
--- menu_breadcrumb.module	20 Feb 2008 18:56:34 -0000	1.4
+++ menu_breadcrumb.module	13 Aug 2009 10:53:15 -0000
@@ -75,10 +75,19 @@
  */
 function menu_breadcrumb_init() {
   if (variable_get('menu_breadcrumb_determine_menu', 1)) {
+    $menu_list = variable_get('menu_breadcrumb_menus', array('admin_menu', 'devel'));
+    $filter = variable_get('menu_breadcrumb_menus_filter', 'blacklist');
     $menu_item = menu_get_item();
-    $menu_link = menu_link_load(db_result(db_query("SELECT mlid FROM {menu_links} WHERE link_path = '%s'", $menu_item['href'])));
-    $use_menu = $menu_link['menu_name'];
-    menu_set_active_menu_name($use_menu);
+    $result = db_query("SELECT mlid, menu_name FROM {menu_links} WHERE link_path = '%s'", $menu_item['href']);
+    while ($menu_link = db_fetch_array($result)) {
+      // @see http://www.php.net/manual/en/function.in-array.php#86695
+      $menu_in_list = in_array($menu_link['menu_name'], $menu_list, TRUE);
+      if ( ( $filter == 'whitelist' && $menu_in_list ) ||
+           ( $filter == 'blacklist' && !$menu_in_list ) ) {
+        menu_set_active_menu_name($menu_link['menu_name']);
+        break;
+      }
+    }
   }
 
   $breadcrumb = drupal_get_breadcrumb();
@@ -134,5 +143,30 @@
     '#default_value' => variable_get('menu_breadcrumb_hide_on_single_item', 0),
   );
 
+  $include_exclude_description = 'Use this to specify which menus are used to generate breadcrumbs. ' ;
+  $form['include_exclude'] = array( 
+    '#type' => 'fieldset',
+    '#title' => t('Include / Exclude Menus'),
+    '#description' => t($include_exclude_description),
+  ) ;
+
+  $form['include_exclude']['menu_breadcrumb_menus_filter'] = array(
+    '#type' => 'radios',
+    '#title' => t('Menu filter'),
+    '#options' => array(
+      'blacklist' => t('Blacklist - Menu items will never be chosen from the menus selected below.'),
+      'whitelist' => t('Whitelist - Menu items will only be chosen from the menus selected below.'),
+    ),
+    '#default_value' => variable_get('menu_breadcrumb_menus_filter', 'blacklist'),
+  );
+
+  $form['include_exclude']['menu_breadcrumb_menus'] = array(
+    '#type' => 'checkboxes',
+    '#title' => t('Menu list'),
+    '#description' => t('Select which menus to apply the blacklist / whitelist to.'),
+    '#options' => drupal_map_assoc(menu_get_names()),
+    '#default_value' => variable_get('menu_breadcrumb_menus', array('admin_menu', 'devel')),
+  );
+
   return system_settings_form($form);
 }
\ No newline at end of file
