taxonomy_tools_publisher.install in Taxonomy Tools 8
Same filename and directory in other branches
Install, update and uninstall functions for the Taxonomy Publisher module.
File
taxonomy_tools_publisher/taxonomy_tools_publisher.installView source
<?php
/**
* @file
* Install, update and uninstall functions for the Taxonomy Publisher module.
*/
/**
* Create field definitions for Taxonomy Publisher specific fields.
*
* @return array
* An array of field definitions
*/
function taxonomy_tools_publisher_install_fields() {
$fields = array(
'field_taxonomy_term_status' => array(
'field_name' => 'field_taxonomy_term_status',
'type' => 'list_boolean',
'settings' => array(
'allowed_values' => array(
0 => '',
1 => '',
),
),
),
'field_taxonomy_term_publish_on' => array(
'field_name' => 'field_taxonomy_term_publish_on',
'type' => 'datestamp',
'settings' => array(
'granularity' => array(
'year' => 'year',
'month' => 'month',
'day' => 'day',
'hour' => 'hour',
'minute' => 'minute',
'second' => 'second',
),
'tz_handling' => 'none',
),
),
'field_taxonomy_term_unpublish_on' => array(
'field_name' => 'field_taxonomy_term_unpublish_on',
'type' => 'datestamp',
'settings' => array(
'granularity' => array(
'year' => 'year',
'month' => 'month',
'day' => 'day',
'hour' => 'hour',
'minute' => 'minute',
'second' => 'second',
),
'tz_handling' => 'none',
),
),
);
return $fields;
}
/**
* Create field instance definitions for Taxonomy Publisher specific fields.
*
* @return array
* An array of field instances definitions
*/
function taxonomy_tools_publisher_install_field_instances() {
$instances = array(
'field_taxonomy_term_status' => array(
'label' => 'Published',
'widget' => array(
'weight' => 20.1,
'type' => 'options_onoff',
'settings' => array(
'display_label' => 1,
),
),
'display' => array(
'default' => array(
'label' => 'hidden',
'type' => 'hidden',
),
),
'default_value' => array(
0 => array(
'value' => 1,
),
),
'field_name' => 'field_taxonomy_term_status',
),
'field_taxonomy_term_publish_on' => array(
'label' => 'Publish on:',
'widget' => array(
'weight' => 20.2,
'type' => 'date_popup',
'settings' => array(
'input_format' => 'd.m.Y - H:i:s',
'increment' => 1,
),
),
'settings' => array(
'default_value' => 'blank',
),
'display' => array(
'default' => array(
'label' => 'hidden',
'type' => 'hidden',
),
),
'field_name' => 'field_taxonomy_term_publish_on',
),
'field_taxonomy_term_unpublish_on' => array(
'label' => 'Unpublish on:',
'widget' => array(
'weight' => 20.3,
'type' => 'date_popup',
'settings' => array(
'input_format' => 'd.m.Y - H:i:s',
'increment' => 1,
),
),
'settings' => array(
'default_value' => 'blank',
),
'display' => array(
'default' => array(
'label' => 'hidden',
'type' => 'hidden',
),
),
'field_name' => 'field_taxonomy_term_unpublish_on',
),
);
return $instances;
}
/**
* Create field group definition for Taxonomy Publisher fields.
*
* @param string $bundle
* A string containing bundle name for which the field group is created
*
* @return stdClass
* A field group object
*/
function taxonomy_tools_publisher_install_field_group($bundle) {
$group = new stdClass();
$group->label = t('Publishing settings');
$group->weight = 20;
$group->format_type = 'fieldset';
$group->group_name = 'group_taxonomy_term_publishing';
$group->entity_type = 'taxonomy_term';
$group->bundle = $bundle;
$group->mode = 'form';
$group->identifier = 'group_taxonomy_term_publishing|taxonomy_term|' . $bundle . '|form';
$group->children = array(
0 => 'field_taxonomy_term_status',
1 => 'field_taxonomy_term_publish_on',
2 => 'field_taxonomy_term_unpublish_on',
);
$group->format_settings = array(
'formatter' => 'collapsed',
'label' => t('Publishing settings'),
'instance_settings' => array(
'required_fields' => 0,
'classes' => '',
'description' => '',
),
);
return $group;
}
/**
* Implements hook_enable().
*/
function taxonomy_tools_publisher_enable() {
// Create field definitions.
$fields = taxonomy_tools_publisher_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_publisher_config', array());
if (!empty($config)) {
$instances = taxonomy_tools_publisher_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);
}
}
// Create field group.
ctools_include('export');
$group_info = db_query("SELECT * FROM {field_group} WHERE entity_type = 'taxonomy_term' AND bundle = :vmn", array(
':vmn' => $vmn,
))
->fetchAll();
if (empty($group_info)) {
$group = taxonomy_tools_publisher_install_field_group($vmn);
field_group_group_save($group);
}
}
}
}
// 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 Publisher enabled'));
}
/**
* Imlements hook_disable().
*/
function taxonomy_tools_publisher_disable() {
$fields = array(
'field_taxonomy_term_status',
'field_taxonomy_term_publish_on',
'field_taxonomy_term_unpublish_on',
);
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);
}
}
// Delete also field groups.
db_query("DELETE FROM {field_group} WHERE group_name = :group", array(
':group' => 'group_taxonomy_term_publishing',
));
drupal_set_message(t('Taxonomy Publisher disabled'));
}
/**
* Implements hook_uninstall().
*/
function taxonomy_tools_publisher_uninstall() {
// Delete configuration variable.
variable_del('taxonomy_tools_publisher_config');
// Delete field values backup.
$fields = array(
'field_taxonomy_term_status',
'field_taxonomy_term_publish_on',
'field_taxonomy_term_unpublish_on',
);
foreach ($fields as $field) {
$backup = $field . '_backup';
if (db_table_exists($backup)) {
db_query("DROP TABLE {$backup}");
}
}
drupal_set_message(t('Taxonomy Publisher uninstalled'));
}
/**
* Use vocabulary machine names instead of IDs.
*/
function taxonomy_tools_publisher_update_7101() {
$config = variable_get('taxonomy_tools_publisher_config', array());
$new_config = array();
foreach ($config as $key => $value) {
$query = db_select('taxonomy_vocabulary', 'foo');
$query
->addField('foo', 'machine_name');
$query
->condition('foo.vid', $key);
$machine_name = $query
->execute()
->fetchField();
if ($key == $value) {
$new_config[$machine_name] = $machine_name;
}
else {
$new_config[$machine_name] = 0;
}
}
variable_set('taxonomy_tools_publisher_config', $new_config);
}
Functions
Name![]() |
Description |
---|---|
taxonomy_tools_publisher_disable | Imlements hook_disable(). |
taxonomy_tools_publisher_enable | Implements hook_enable(). |
taxonomy_tools_publisher_install_fields | Create field definitions for Taxonomy Publisher specific fields. |
taxonomy_tools_publisher_install_field_group | Create field group definition for Taxonomy Publisher fields. |
taxonomy_tools_publisher_install_field_instances | Create field instance definitions for Taxonomy Publisher specific fields. |
taxonomy_tools_publisher_uninstall | Implements hook_uninstall(). |
taxonomy_tools_publisher_update_7101 | Use vocabulary machine names instead of IDs. |