This repository has been archived on 2025-06-21. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
suitedesk/modules/custom_breadcrumbs/custom_breadcrumbs_paths/custom_breadcrumbs_paths.install

125 lines
4.6 KiB
Text

<?php
/**
* @file
* Install file for the custom_breadcrumbs module.
*/
/**
* Implements hook_install().
*/
function custom_breadcrumbs_paths_install() {
drupal_install_schema('custom_breadcrumbs_paths');
// Search for Paths breadcrumbs in existing {custom_breadcrumb} and copy to new table.
drupal_set_message(t('Looking for Specify Path breadcrumbs to copy from {custom_breadcrumb}...'));
$result = db_query("SELECT * FROM {custom_breadcrumb} WHERE node_type = '%s'", 'Specify Path');
$found = 0;
while ($breadcrumb = db_fetch_object($result)) {
$start = strpos($breadcrumb->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 <a href="@link">admin/build/custom_breadcrumbs</a>. 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');
}