2020-08-14 13:36:36 +02:00

129 lines
3.2 KiB
Plaintext

<?php
/**
* @file
* Install, update, and uninstall functions for the tvi module.
*/
/**
* Implements hook_install().
*/
function tvi_install() {
// Ensure weights are ok.
$view_info = db_select('system', 's')
->fields('s', array('weight'))
->condition('s.name', 'views')
->range(NULL, 1)
->execute()
->fetchObject();
db_update('system')
->fields(array('weight' => $view_info->weight + 5))
->condition('name', 'tvi')
->execute();
}
/**
* Implements hook_uninstall().
*/
function tvi_uninstall() {
db_delete('variable')
->condition('name', 'tvi_%', 'LIKE')
->execute();
}
/**
* Replace xid int field by a varchar field to allow uuid usage.
*/
function tvi_update_7000(&$sandbox) {
db_drop_primary_key('tvi_settings');
db_change_field('tvi_settings', 'xid', 'xid',
array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
'description' => 'Taxonomy vocabulary or term ID or UUID.',
),
array('primary key' => array('type', 'xid'))
);
}
/**
* Replace vids by machine_names and tids by uuids if enabled.
*/
function tvi_update_7001(&$sandbox) {
$settings = db_select('tvi_settings', 'tvi')
->fields('tvi')
->condition('tvi.type', TVI_TYPE_VOCAB)
->execute()
->fetchAll();
foreach ($settings as $setting) {
$voc = taxonomy_vocabulary_load($setting->xid);
// Check if the vocabulary still exists.
if ($voc !== FALSE && !empty($voc->machine_name)) {
db_update('tvi_settings')
->fields(array('xid' => $voc->machine_name))
->condition('type', $setting->type)
->condition('xid', $setting->xid)
->execute();
}
}
if (module_exists('uuid')) {
$settings = db_select('tvi_settings', 'tvi')
->fields('tvi')
->condition('tvi.type', TVI_TYPE_TERM)
->execute()
->fetchAll();
foreach ($settings as $setting) {
$term = taxonomy_term_load($setting->xid);
// Check if the term still exists and its uuid is defined.
if ($term !== FALSE && !empty($term->uuid)) {
db_update('tvi_settings')
->fields(array('xid' => $term->uuid))
->condition('type', $setting->type)
->condition('xid', $setting->xid)
->execute();
}
}
}
}
/**
* Drop schema in favor of {variable} table.
*/
function tvi_update_7002(&$sandbox) {
tvi_include('query');
$settings = db_select('tvi_settings', 'tvi')
->fields('tvi')
->execute()
->fetchAll();
foreach ($settings as $setting) {
tvi_update_settings($setting);
}
db_drop_table('tvi_settings');
}
/**
* Add inherit parameters to settings where it's missing.
*/
function tvi_update_7003(&$sandbox) {
tvi_include('query');
$settings = db_select('variable', 'v')
->fields('v', array('name'))
->condition('name', 'tvi_%', 'LIKE')
->execute()
->fetchAll();
foreach ($settings as $setting) {
list($_, $type, $xid) = explode('_', $setting->name);
$setting = tvi_load_settings($xid, $type, FALSE);
if ($setting && $setting->type == TVI_TYPE_TERM && empty($setting->inherit)) {
$setting->inherit = FALSE;
}
if ($setting) {
tvi_update_settings($setting);
}
}
}