paths, "\n"); $specific_path = drupal_substr($breadcrumb->paths, 0, $start); $title = drupal_substr($breadcrumb->titles, strpos($breadcrumb->titles, "\n") + 1); $newpath = drupal_substr($breadcrumb->paths, strpos($breadcrumb->paths, "\n") + 1); db_query("INSERT INTO {custom_breadcrumbs_paths} (titles, paths, visibility_php, specific_path, set_active_menu, language) VALUES ('%s', '%s', '%s', '%s', %d, '%s' )", $title, $newpath, $breadcrumb->visibility_php, $specific_path, $breadcrumb->set_active_menu, $breadcrumb->language); drupal_set_message('Copied path '. $specific_path .' to {custom_breadcrumbs_paths}.' ); ++$found; } if ($found > 0) { drupal_set_message(format_plural($found, 'Copied 1 breadcrumb.', 'Copied @count breadcrumbs.')); drupal_set_message(t('You can now delete the old Specify Path breadcrumb from admin/build/custom_breadcrumbs. They will be listed with title Specify Path and page type node.', array('@link' => url('admin/build/custom_breadcrumbs')))); } else { drupal_set_message(t('No Specify Path breadcrumbs were found in {custom_breadcrumbs}')); } } /** * Implements hook_schema(). */ function custom_breadcrumbs_paths_schema() { $schema['custom_breadcrumbs_paths'] = array( 'description' => 'Stores custom breadcrumb trails for specific paths.', 'fields' => array( 'bid' => array( 'type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE, 'description' => 'Unique identifier for the {custom_breadcrumbs_views}.', ), 'name' => array( 'type' => 'varchar', 'length' => 128, 'not null' => FALSE, 'description' => 'An optional name for the custom breadcrumb.', ), 'titles' => array( 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', 'description' => 'A return-delimited list of titles for the breadcrumb links.', ), 'paths' => array( 'type' => 'varchar', 'length' => 255, 'not null' => FALSE, 'description' => 'A return-delimited list of url paths for the breadcrumb links.', ), 'visibility_php' => array( 'type' => 'text', 'not null' => TRUE, 'size' => 'medium', 'description' => 'An optional PHP snippet to control the {custom_breadcrumbs_views} visibility.', ), 'specific_path' => array( 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'description' => 'Path to the view for this custom breadcrumb.', ), 'language' => array( 'type' => 'varchar', 'length' => 12, 'not null' => TRUE, 'default' => '', 'description' => 'The language this breadcrumb is for; if blank, the breadcrumb will be used for unknown languages.', ), ), 'indexes' => array( 'language' => array('language'), 'path_language' => array('specific_path', 'language'), ), 'primary key' => array('bid'), ); return $schema; } /** * Adds indices to custom_breadcrumb table to improve performance. */ function custom_breadcrumbs_paths_update_6000() { $ret = array(); db_add_index($ret, 'custom_breadcrumbs_paths', 'language', array('language')); db_add_index($ret, 'custom_breadcrumbs_paths', 'path_language', array('specific_path', 'language')); return $ret; } /** * Adds name field for improved organization of breadcrumbs * Remove set_active_menu field because it is no longer used. */ function custom_breadcrumbs_paths_update_6200() { $ret = array(); db_add_field($ret, 'custom_breadcrumbs_paths', 'name', array('type' => 'varchar', 'length' => 128, 'NOT NULL' => FALSE, 'description' => 'An optional name for the custom breadcrumb.')); db_drop_field($ret, 'custom_breadcrumbs_paths', 'set_active_menu'); return $ret; } /** * Implements hook_uninstall(). */ function custom_breadcrumbs_paths_uninstall() { drupal_uninstall_schema('custom_breadcrumbs_paths'); // Remove persistent variables. variable_del('custom_breadcrumbs_paths_allow_wildcards'); }