Mercurial > hg > rr-repo
diff sites/all/modules/quicktabs/quicktabs.install @ 2:b74b41bb73f0
-- Google analytics module
author | danieleb <danielebarchiesi@me.com> |
---|---|
date | Thu, 22 Aug 2013 17:22:54 +0100 |
parents | |
children | a75ead649730 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sites/all/modules/quicktabs/quicktabs.install Thu Aug 22 17:22:54 2013 +0100 @@ -0,0 +1,177 @@ +<?php + +/** + * @file + * Install, update and uninstall functions for the quicktabs module. + */ + +/** + * Implements hook_schema(). + */ +function quicktabs_schema() { + $schema['quicktabs'] = array( + 'description' => 'The quicktabs table.', + 'export' => array( + 'key' => 'machine_name', + 'identifier' => 'quicktabs', + 'default hook' => 'quicktabs_default_quicktabs', + 'api' => array( + 'owner' => 'quicktabs', + 'api' => 'quicktabs', + 'minimum_version' => 1, + 'current_version' => 1, + ), + 'export callback' => 'quicktabs_export', + ), + 'fields' => array( + 'machine_name' => array( + 'description' => 'The primary identifier for a qt block.', + 'type' => 'varchar', + 'length' => 255, + 'not null' => TRUE, + ), + 'ajax' => array( + 'description' => 'Whether this is an ajax views block.', + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), + 'hide_empty_tabs' => array( + 'description' => 'Whether this tabset hides empty tabs.', + 'type' => 'int', + 'size' => 'tiny', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), + 'default_tab' => array( + 'description' => 'Default tab.', + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), + 'title' => array( + 'description' => 'The title of this quicktabs block.', + 'type' => 'varchar', + 'length' => 255, + 'not null' => TRUE, + ), + 'tabs' => array( + 'description' => 'A serialized array of the contents of this qt block.', + 'type' => 'text', + 'size' => 'medium', + 'not null' => TRUE, + 'serialize' => TRUE, + ), + 'renderer' => array( + 'description' => 'The rendering mechanism.', + 'type' => 'varchar', + 'length' => 255, + 'not null' => TRUE, + ), + 'style' => array( + 'description' => 'The tab style.', + 'type' => 'varchar', + 'length' => 255, + 'not null' => TRUE, + ), + 'options' => array( + 'description' => 'A serialized array of the options for this qt instance.', + 'type' => 'text', + 'size' => 'medium', + 'not null' => FALSE, + 'serialize' => TRUE, + ), + ), + 'primary key' => array('machine_name'), + ); + return $schema; +} + + +/** + * Update to 7.x-3.x + */ +function quicktabs_update_7300() { + + if (!db_field_exists('quicktabs', 'machine_name')) { + // Pull all existing quicktabs, and then delete existing quicktabs. We will reinsert. + $result = db_query("SELECT * FROM {quicktabs}"); + if (!db_query("DELETE FROM {quicktabs}")) { + throw new DrupalUpdateException(t('Could not complete the update.')); + } + + db_drop_field('quicktabs', 'qtid'); + $name_field = array( + 'description' => 'The primary identifier for a qt block.', + 'type' => 'varchar', + 'length' => 255, + 'not null' => TRUE, + ); + db_add_field('quicktabs', 'machine_name', $name_field); + db_add_primary_key('quicktabs', array('machine_name')); + + $output = $used = array(); + foreach ($result as $qt) { + $row = (array)$qt; + // Generate a machine-readable string + $qt_name = strtolower(preg_replace('/[^a-zA-Z0-9_]+/', '_', $row['title'])); + $i = 0; + while (in_array($i == 0 ? $qt_name : "{$qt_name}_{$i}", $used)) { + $i++; + } + $row['machine_name'] = $used[] = $i == 0 ? $qt_name : "{$qt_name}_{$i}"; + unset($row['qtid']); + unset($row['style']); + $row['renderer'] = 'tabs'; + $placeholders = implode(', ', array_keys($row)); + $values = array(); + // Ugh - really?? Somebody tell me there's a better way to do this :-/ + foreach ($row as $name => $value) { + $values[':' . $name] = $value; + } + $tokens = implode(', ', array_keys($values)); + db_query("INSERT INTO {quicktabs} ($placeholders) VALUES($tokens)", $values); + + $output[] = "Converted quicktab {$row['machine_name']}."; + } + } + + // Add the renderer field + $renderer_field = array( + 'description' => 'The rendering mechanism.', + 'type' => 'varchar', + 'length' => 255, + 'not null' => TRUE, + 'default' => 'quicktabs', + ); + db_add_field('quicktabs', 'renderer', $renderer_field); + $output[] = "Added the renderer field"; + + + return implode('<br />', $output); +} + +/** + * Add the options field which will hold renderer-specific options. + */ +function quicktabs_update_7301() { + $options_field = array( + 'description' => 'A serialized array of the options for this qt instance.', + 'type' => 'text', + 'size' => 'medium', + 'not null' => FALSE, + 'serialize' => TRUE, + ); + db_add_field('quicktabs', 'options', $options_field); + return "Added the options field"; +} + +/** + * Rebuild the registry because of changed method name. + */ +function quicktabs_update_7302() { + registry_rebuild(); +}