151 lines
No EOL
4.4 KiB
Text
151 lines
No EOL
4.4 KiB
Text
<?php
|
|
|
|
/**
|
|
* @file
|
|
* Installation file for i18nblocks module.
|
|
*/
|
|
|
|
// @ TODO Update scripts
|
|
/**
|
|
* Implementation of hook_install().
|
|
*/
|
|
function i18nblocks_install() {
|
|
// Create database tables.
|
|
drupal_install_schema('i18nblocks');
|
|
// We dont need to change module weight
|
|
//db_query("UPDATE {system} SET weight = 20 WHERE name = 'i18nblocks' AND type = 'module'");
|
|
}
|
|
|
|
/**
|
|
* Implementation of hook_uninstall().
|
|
*/
|
|
function i18nblocks_uninstall() {
|
|
drupal_uninstall_schema('i18nblocks');
|
|
}
|
|
|
|
/**
|
|
* Implementation of hook_schema().
|
|
*/
|
|
function i18nblocks_schema() {
|
|
$schema['i18n_blocks'] = array(
|
|
'description' => 'Special i18n translatable blocks.',
|
|
'fields' => array(
|
|
'ibid' => array(
|
|
'description' => 'The i18n block identifier.',
|
|
'type' => 'serial',
|
|
'unsigned' => TRUE,
|
|
'not null' => TRUE
|
|
),
|
|
'module' => array(
|
|
'type' => 'varchar',
|
|
'length' => 64,
|
|
'not null' => TRUE,
|
|
'description' => "The block's origin module, from {blocks}.module.",
|
|
),
|
|
'delta' => array(
|
|
'type' => 'varchar',
|
|
'length' => 32,
|
|
'not null' => TRUE,
|
|
'default' => '0',
|
|
'description' => 'Unique ID for block within a module.',
|
|
),
|
|
'type' => array(
|
|
'type' => 'int',
|
|
'not null' => TRUE,
|
|
'default' => 0,
|
|
'description' => 'Block type.',
|
|
),
|
|
'language' => array(
|
|
'type' => 'varchar',
|
|
'length' => 12,
|
|
'description' => 'Block language.',
|
|
'not null' => TRUE,
|
|
'default' => '',
|
|
),
|
|
),
|
|
'primary key' => array(
|
|
'ibid',
|
|
),
|
|
);
|
|
|
|
return $schema;
|
|
}
|
|
|
|
/**
|
|
* Update: move old variable to new tables.
|
|
*/
|
|
function i18nblocks_update_1() {
|
|
$ret = array();
|
|
$t = get_t();
|
|
require_once drupal_get_path('module', 'i18nblocks') .'/i18nblocks.module';
|
|
require_once drupal_get_path('module', 'i18n') .'/i18n.module';
|
|
// Create the tables if updating from previous version.
|
|
i18nblocks_install();
|
|
// Move old data from variables into new tables.
|
|
$languages = i18n_supported_languages();
|
|
if ($number = variable_get('i18nblocks_number', 0)) {
|
|
for ($delta = 1; $delta <= $number; $delta++) {
|
|
if ($block = variable_get('i18nblocks_'. $delta, NULL)) {
|
|
$update = update_sql("INSERT INTO {i18n_blocks} (delta) VALUES('". db_escape_string($delta) ."')");
|
|
$ret[] = $update;
|
|
$metablock = array();
|
|
if ($update['success']) {
|
|
$metablock['delta'] = $delta;
|
|
}
|
|
$metablock['info'] = isset($block['name']) ? $block['name'] : '';
|
|
$metablock['i18nblocks'] = array();
|
|
foreach (array_keys($languages) as $lang) {
|
|
if (isset($block[$lang]) && isset($block[$lang]['module']) && isset($block[$lang]['delta'])) {
|
|
$metablock['i18nblocks'][$lang] = $block[$lang]['module'] .':'. $block[$lang]['delta'];
|
|
}
|
|
}
|
|
}
|
|
i18nblocks_save($metablock);
|
|
}
|
|
drupal_set_message($t('The i18nblocks have been updated. Please, review your block settings.'));
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
/**
|
|
* Drupal 6 upgrade script.
|
|
*/
|
|
function i18nblocks_update_2() {
|
|
$ret = array();
|
|
// Rename old table and install new schema
|
|
db_rename_table($ret, 'i18n_blocks', 'i18n_blocks_drupal5');
|
|
drupal_install_schema('i18nblocks');
|
|
// Fill in new table with old blocks but only for user defined blocks.
|
|
// The rest will need manual update
|
|
$ret[] = update_sql("INSERT INTO {i18n_blocks} (module, delta, language) SELECT i.module, i.delta, i.language FROM {i18n_blocks_i18n} i WHERE i.module = 'block'");
|
|
|
|
drupal_set_message(t('Multilingual blocks have been updated. Please, review your blocks configuration.'));
|
|
return $ret;
|
|
}
|
|
|
|
/**
|
|
* Drop old tables and fields. Uncomment when the previous one is 100% working.
|
|
*/
|
|
/*
|
|
function i18nblocks_update_3() {
|
|
$items = array();
|
|
$items[] = update_sql('DROP TABLE {i18n_blocks_i18n}');
|
|
$items[] = update_sql('DROP TABLE {i18n_blocks_drupal5}');
|
|
return $items;
|
|
}*/
|
|
|
|
/**
|
|
* Rework block string keys, all must use module, delta
|
|
*/
|
|
function i18nblocks_update_6001() {
|
|
$ret = array();
|
|
$result = db_query("SELECT * FROM {i18n_blocks} WHERE module = 'block' AND language = ''");
|
|
while ($block = db_fetch_object($result)) {
|
|
foreach (array('title' => 'title', 'content' => 'body') as $property => $rename) {
|
|
$old = "blocks:block:$block->ibid:$property";
|
|
$new = "blocks:block:$block->delta:$rename";
|
|
i18nstrings_update_context($old, $new);
|
|
}
|
|
}
|
|
return $ret;
|
|
} |