taxonomy_tools_redirect.install in Taxonomy Tools 8
Same filename and directory in other branches
Install, update and uninstall functions for the Taxonomy Redirect module.
File
taxonomy_tools_redirect/taxonomy_tools_redirect.installView source
<?php
/**
* @file
* Install, update and uninstall functions for the Taxonomy Redirect module.
*/
/**
* Create field definitions for Taxonomy Redirect specific fields.
*
* @return array
* An array of field definitions
*/
function taxonomy_tools_redirect_install_fields() {
$fields = array(
'field_taxonomy_term_redirect' => array(
'field_name' => 'field_taxonomy_term_redirect',
'type' => 'text',
'settings' => array(
'max_length' => '255',
),
),
);
return $fields;
}
/**
* Create field instance definitions for Taxonomy Redirect specific fields.
*
* @return array
* An array of field instances definitions
*/
function taxonomy_tools_redirect_install_field_instances() {
$instances = array(
'field_taxonomy_term_redirect' => array(
'label' => t('Taxonomy term redirect link'),
'description' => t('Enter URL this taxonomy term redirects to. You can use internal paths, e.g., %term, %node, (URL aliases will not work) or external addresses, e.g., %example. Enter %front to redirect to front page.', array(
'%term' => 'taxonomy/term/XXX',
'%node' => 'node/XXX',
'%example' => 'http://www.example.com',
'%front' => '<front>',
)),
'widget' => array(
'weight' => 21,
'type' => 'text_textfield',
'settings' => array(
'size' => 60,
),
),
'display' => array(
'default' => array(
'label' => 'hidden',
'type' => 'hidden',
),
),
'field_name' => 'field_taxonomy_term_redirect',
),
);
return $instances;
}
/**
* Implements hook_enable().
*/
function taxonomy_tools_redirect_enable() {
// Create field definitions.
$fields = taxonomy_tools_redirect_install_fields();
foreach ($fields as $field) {
$field_info = field_info_field($field['field_name']);
if (empty($field_info)) {
field_create_field($field);
}
}
$config = variable_get('taxonomy_tools_redirect_config', array());
if (!empty($config)) {
$instances = taxonomy_tools_redirect_install_field_instances();
foreach ($config as $vid => $setting) {
if ($setting > 0) {
// Get the vocabulary machine name for which Taxonomy Publisher
// will be used.
$vmn = db_query("SELECT machine_name FROM {taxonomy_vocabulary} WHERE vid = :vid", array(
':vid' => $vid,
))
->fetchField();
// Create field instances.
foreach ($instances as $instance) {
$instance['entity_type'] = 'taxonomy_term';
$instance['bundle'] = $vmn;
$instance_info = field_info_instance($instance['entity_type'], $instance['field_name'], $instance['bundle']);
if (empty($instance_info)) {
field_create_instance($instance);
}
}
}
}
}
// Restore field values from backup and delete backup.
foreach ($fields as $field) {
$backup = $field['field_name'] . '_backup';
if (db_table_exists($backup)) {
$original = 'field_data_' . $field['field_name'];
db_query("INSERT INTO {$original} SELECT * FROM {$backup}");
db_query("DROP TABLE {$backup}");
}
}
drupal_set_message(t('Taxonomy Redirect enabled'));
}
/**
* Implements hook_disable().
*/
function taxonomy_tools_redirect_disable() {
$fields = array(
'field_taxonomy_term_redirect',
);
foreach ($fields as $field) {
$original = 'field_data_' . $field;
if (db_table_exists($original)) {
// Make backup for field values.
$backup = $field . '_backup';
db_query("CREATE TABLE {$backup} SELECT * FROM {$original}");
}
}
// Delete fields.
foreach ($fields as $field) {
$field_info = field_info_field($field);
if (!empty($field_info)) {
field_delete_field($field);
}
}
drupal_set_message(t('Taxonomy Redirect disabled'));
}
/**
* Implements hook_uninstall().
*/
function taxonomy_tools_redirect_uninstall() {
// Delete configuration variable.
variable_del('taxonomy_tools_redirect_config');
// Delete field values backup.
$fields = array(
'field_taxonomy_term_redirect',
);
foreach ($fields as $field) {
$backup = $field . '_backup';
if (db_table_exists($backup)) {
db_query("DROP TABLE {$backup}");
}
}
drupal_set_message(t('Taxonomy Redirect uninstalled'));
}
Functions
Name![]() |
Description |
---|---|
taxonomy_tools_redirect_disable | Implements hook_disable(). |
taxonomy_tools_redirect_enable | Implements hook_enable(). |
taxonomy_tools_redirect_install_fields | Create field definitions for Taxonomy Redirect specific fields. |
taxonomy_tools_redirect_install_field_instances | Create field instance definitions for Taxonomy Redirect specific fields. |
taxonomy_tools_redirect_uninstall | Implements hook_uninstall(). |