i18ntaxonomy.install in Internationalization 6
Installation file for i18ntaxonomy module.
File
i18ntaxonomy/i18ntaxonomy.installView source
<?php
/**
* @file
* Installation file for i18ntaxonomy module.
*/
/**
* Set language field in its own table.
* Do not drop node.language now, just in case.
* TO-DO: Drop old tables, fields
*/
function i18ntaxonomy_install() {
$ret = array();
db_add_field($ret, 'vocabulary', 'language', array(
'type' => 'varchar',
'length' => 12,
'not null' => TRUE,
'default' => '',
));
db_add_field($ret, 'term_data', 'language', array(
'type' => 'varchar',
'length' => 12,
'not null' => TRUE,
'default' => '',
));
db_add_field($ret, 'term_data', 'trid', array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
));
// Set module weight for it to run after core modules, but before views.
db_query("UPDATE {system} SET weight = 5 WHERE name = 'i18ntaxonomy' AND type = 'module'");
}
/**
* Implementation of hook_uninstall().
*/
function i18ntaxonomy_uninstall() {
$ret = array();
db_drop_field($ret, 'vocabulary', 'language');
db_drop_field($ret, 'term_data', 'language');
db_drop_field($ret, 'term_data', 'trid');
variable_del('i18ntaxonomy_vocabulary');
}
/**
* Implementation of hook_schema_alter().
*/
function i18ntaxonomy_schema_alter(&$schema) {
$schema['vocabulary']['fields']['language'] = array(
'type' => 'varchar',
'length' => 12,
'not null' => TRUE,
'default' => '',
);
$schema['term_data']['fields']['language'] = array(
'type' => 'varchar',
'length' => 12,
'not null' => TRUE,
'default' => '',
);
$schema['term_data']['fields']['trid'] = array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
);
}
/**
* Implementation of hook_enable().
*
* Just add strings to locale tables.
*/
function i18ntaxonomy_enable() {
drupal_load('module', 'i18nstrings');
i18ntaxonomy_locale_refresh();
}
/**
* Drupal 6 update.
*
* Move i18n vocabulary options to new variables.
*/
function i18ntaxonomy_update_1() {
$items = array();
$options = variable_get('i18ntaxonomy_vocabulary', array());
$translate = variable_get('i18ntaxonomy_vocabularies', array());
foreach (taxonomy_get_vocabularies() as $vid => $vocabulary) {
if ($vocabulary->language) {
$options[$vid] = I18N_TAXONOMY_LANGUAGE;
}
elseif (isset($translate[$vid]) && $translate[$vid]) {
$options[$vid] = I18N_TAXONOMY_LOCALIZE;
}
else {
// Search for terms with language.
$count = db_result(db_query("SELECT COUNT(language) FROM {term_data} WHERE vid = %d AND NOT language = ''", $vid));
if ($count) {
$options[$vid] = I18N_TAXONOMY_TRANSLATE;
}
elseif (!isset($options[$vid])) {
$options[$vid] = I18N_TAXONOMY_NONE;
}
}
}
variable_set('i18ntaxonomy_vocabulary', $options);
drupal_set_message(t('The multilingual vocabulary settings have been updated. Please review them in the <a href="@taxonomy_admin page">taxonomy administration</a>.', array(
'@taxonomy_admin' => url('admin/content/taxonomy'),
)));
// @ TODO Update strings in localization tables.
return $items;
}
/**
* Set module weight for it to run after core modules, but before views.
*/
function i18ntaxonomy_update_6002() {
$items = array();
$items[] = update_sql("UPDATE {system} SET weight = 5 WHERE name = 'i18ntaxonomy' AND type = 'module'");
return $items;
}
Functions
Name | Description |
---|---|
i18ntaxonomy_enable | Implementation of hook_enable(). |
i18ntaxonomy_install | Set language field in its own table. Do not drop node.language now, just in case. TO-DO: Drop old tables, fields |
i18ntaxonomy_schema_alter | Implementation of hook_schema_alter(). |
i18ntaxonomy_uninstall | Implementation of hook_uninstall(). |
i18ntaxonomy_update_1 | Drupal 6 update. |
i18ntaxonomy_update_6002 | Set module weight for it to run after core modules, but before views. |