boxes.install in Boxes 7
Same filename and directory in other branches
Install, update and uninstall functions for the boxes module.
File
boxes.installView source
<?php
/**
* @file
* Install, update and uninstall functions for the boxes module.
*
*/
/**
* Implemenation of hook_schema().
*/
function boxes_schema() {
$schema = array();
$schema['box'] = array(
'description' => 'Stores contents of custom-made blocks.',
'fields' => array(
'delta' => array(
'type' => 'varchar',
'length' => 32,
'not null' => TRUE,
'description' => "The block's {block}.delta.",
),
'plugin_key' => array(
'type' => 'varchar',
'length' => 64,
'not null' => TRUE,
'description' => "The plugin responsible for this block.",
),
'title' => array(
'type' => 'varchar',
'length' => 64,
'not null' => TRUE,
'description' => "Block title.",
),
'description' => array(
'type' => 'varchar',
'length' => 255,
'default' => '',
'description' => 'Block description.',
),
'options' => array(
'type' => 'text',
'not null' => FALSE,
'size' => 'big',
'serialize' => TRUE,
'description' => 'Block content configuration.',
),
),
'primary key' => array(
'delta',
),
'export' => array(
'key' => 'delta',
'identifier' => 'box',
'api' => array(
'owner' => 'boxes',
'api' => 'box',
'minimum_version' => 1,
'current_version' => 1,
),
),
);
return $schema;
}
/**
* Implements hook_uninstall().
*/
function boxes_uninstall() {
$result = db_query("SELECT bid FROM {block} WHERE module='boxes'");
foreach ($result as $data) {
db_query("DELETE FROM {block} WHERE bid = :bid", array(
':bid' => $data->bid,
));
}
variable_del('boxes_edit_location');
}
/**
* Make boxes content pluggable, move body/format into a serialized options
* array, add plugin key field.
*/
function boxes_update_6100() {
$ret = array();
$result = db_query("SELECT delta, body, format FROM {custom_block}");
while ($box = db_fetch_object($result)) {
$body = array(
'body' => $box->body,
'format' => $box->format,
);
$box->body = serialize($body);
drupal_write_record('box', $box, 'delta');
}
$spec = array(
'type' => 'text',
'not null' => FALSE,
'size' => 'big',
'serialize' => TRUE,
'description' => 'Block content configuration.',
);
db_change_field('box', 'body', 'options', $spec);
db_drop_field('box', 'format');
$spec = array(
'type' => 'varchar',
'length' => 64,
'not null' => TRUE,
'description' => "The plugin responsible for this block.",
);
db_add_field('box', 'plugin_key', $spec);
// TODO Please review the conversion of this statement to the D7 database API syntax.
/* db_query("UPDATE {custom_block} SET plugin_key = 'simple'") */
db_update('custom_block')
->fields(array(
'plugin_key' => 'simple',
))
->execute();
// hook_update_N() no longer returns a $ret array. Instead, return
// nothing or a translated string indicating the update ran successfully.
// See http://drupal.org/node/224333#update_sql.
return t('TODO Add a descriptive string here to show in the UI.');
}
/**
* If Spaces is installed update existing spaces overrides.
*/
function boxes_update_6101() {
$ret = array();
if (module_exists('spaces')) {
$result = db_query("SELECT * FROM {spaces_overrides} WHERE object_type = :object_type", array(
':object_type' => 'boxes',
));
while ($row = db_fetch_object($result)) {
$v = unserialize($row->value);
$v->plugin_key = 'simple';
$v->options = array(
'body' => $v->body,
'format' => $v->format,
);
unset($v->body);
unset($v->format);
$row->value = (array) $v;
drupal_write_record('spaces_overrides', $row, array(
'type',
'id',
'object_type',
'object_id',
));
}
$ret[] = array(
'success' => TRUE,
'query' => 'Updated Spaces overrides',
);
}
// hook_update_N() no longer returns a $ret array. Instead, return
// nothing or a translated string indicating the update ran successfully.
// See http://drupal.org/node/224333#update_sql.
return t('TODO Add a descriptive string here to show in the UI.');
}
/**
* Make the box.delta column definition match blocks.delta
*/
function boxes_update_6102() {
$ret = array();
$result = db_query('SELECT delta FROM {custom_block} WHERE CHAR_LENGTH(delta) > :CHAR_LENGTH(delta)', array(
':CHAR_LENGTH(delta)' => 32,
))
->fetchField();
if (empty($result)) {
db_drop_primary_key('box');
$spec = array(
'type' => 'varchar',
'length' => 32,
'not null' => TRUE,
);
$new_keys = array(
'primary key' => array(
'delta',
),
);
db_change_field('box', 'delta', 'delta', $spec, $new_keys);
}
else {
$ret['#abort'] = array(
'success' => FALSE,
'query' => "Could not resize the `box.delta` field. Some entries are larger than 32 characters and must be manually truncated.",
);
}
// hook_update_N() no longer returns a $ret array. Instead, return
// nothing or a translated string indicating the update ran successfully.
// See http://drupal.org/node/224333#update_sql.
return t('TODO Add a descriptive string here to show in the UI.');
}
/**
* Ensure that Spaces overrides are stored as an object, not an array.
*/
function boxes_update_6103() {
$ret = array();
if (module_exists('spaces')) {
$result = db_query("SELECT * FROM {spaces_overrides} WHERE object_type = :object_type", array(
':object_type' => 'boxes',
));
while ($row = db_fetch_object($result)) {
$v = unserialize($row->value);
$row->value = (object) $v;
drupal_write_record('spaces_overrides', $row, array(
'type',
'id',
'object_type',
'object_id',
));
}
$ret[] = array(
'success' => TRUE,
'query' => 'Updated Spaces overrides',
);
}
// hook_update_N() no longer returns a $ret array. Instead, return
// nothing or a translated string indicating the update ran successfully.
// See http://drupal.org/node/224333#update_sql.
return t('TODO Add a descriptive string here to show in the UI.');
}
Functions
Name | Description |
---|---|
boxes_schema | Implemenation of hook_schema(). |
boxes_uninstall | Implements hook_uninstall(). |
boxes_update_6100 | Make boxes content pluggable, move body/format into a serialized options array, add plugin key field. |
boxes_update_6101 | If Spaces is installed update existing spaces overrides. |
boxes_update_6102 | Make the box.delta column definition match blocks.delta |
boxes_update_6103 | Ensure that Spaces overrides are stored as an object, not an array. |