danielebarchiesi@2: 'The quicktabs table.', danielebarchiesi@2: 'export' => array( danielebarchiesi@2: 'key' => 'machine_name', danielebarchiesi@2: 'identifier' => 'quicktabs', danielebarchiesi@2: 'default hook' => 'quicktabs_default_quicktabs', danielebarchiesi@2: 'api' => array( danielebarchiesi@2: 'owner' => 'quicktabs', danielebarchiesi@2: 'api' => 'quicktabs', danielebarchiesi@2: 'minimum_version' => 1, danielebarchiesi@2: 'current_version' => 1, danielebarchiesi@2: ), danielebarchiesi@2: 'export callback' => 'quicktabs_export', danielebarchiesi@2: ), danielebarchiesi@2: 'fields' => array( danielebarchiesi@2: 'machine_name' => array( danielebarchiesi@2: 'description' => 'The primary identifier for a qt block.', danielebarchiesi@2: 'type' => 'varchar', danielebarchiesi@2: 'length' => 255, danielebarchiesi@2: 'not null' => TRUE, danielebarchiesi@2: ), danielebarchiesi@2: 'ajax' => array( danielebarchiesi@2: 'description' => 'Whether this is an ajax views block.', danielebarchiesi@2: 'type' => 'int', danielebarchiesi@2: 'unsigned' => TRUE, danielebarchiesi@2: 'not null' => TRUE, danielebarchiesi@2: 'default' => 0, danielebarchiesi@2: ), danielebarchiesi@2: 'hide_empty_tabs' => array( danielebarchiesi@2: 'description' => 'Whether this tabset hides empty tabs.', danielebarchiesi@2: 'type' => 'int', danielebarchiesi@2: 'size' => 'tiny', danielebarchiesi@2: 'unsigned' => TRUE, danielebarchiesi@2: 'not null' => TRUE, danielebarchiesi@2: 'default' => 0, danielebarchiesi@2: ), danielebarchiesi@2: 'default_tab' => array( danielebarchiesi@2: 'description' => 'Default tab.', danielebarchiesi@2: 'type' => 'int', danielebarchiesi@2: 'unsigned' => TRUE, danielebarchiesi@2: 'not null' => TRUE, danielebarchiesi@2: 'default' => 0, danielebarchiesi@2: ), danielebarchiesi@2: 'title' => array( danielebarchiesi@2: 'description' => 'The title of this quicktabs block.', danielebarchiesi@2: 'type' => 'varchar', danielebarchiesi@2: 'length' => 255, danielebarchiesi@2: 'not null' => TRUE, danielebarchiesi@2: ), danielebarchiesi@2: 'tabs' => array( danielebarchiesi@2: 'description' => 'A serialized array of the contents of this qt block.', danielebarchiesi@2: 'type' => 'text', danielebarchiesi@2: 'size' => 'medium', danielebarchiesi@2: 'not null' => TRUE, danielebarchiesi@2: 'serialize' => TRUE, danielebarchiesi@2: ), danielebarchiesi@2: 'renderer' => array( danielebarchiesi@2: 'description' => 'The rendering mechanism.', danielebarchiesi@2: 'type' => 'varchar', danielebarchiesi@2: 'length' => 255, danielebarchiesi@2: 'not null' => TRUE, danielebarchiesi@2: ), danielebarchiesi@2: 'style' => array( danielebarchiesi@2: 'description' => 'The tab style.', danielebarchiesi@2: 'type' => 'varchar', danielebarchiesi@2: 'length' => 255, danielebarchiesi@2: 'not null' => TRUE, danielebarchiesi@2: ), danielebarchiesi@2: 'options' => array( danielebarchiesi@2: 'description' => 'A serialized array of the options for this qt instance.', danielebarchiesi@2: 'type' => 'text', danielebarchiesi@2: 'size' => 'medium', danielebarchiesi@2: 'not null' => FALSE, danielebarchiesi@2: 'serialize' => TRUE, danielebarchiesi@2: ), danielebarchiesi@2: ), danielebarchiesi@2: 'primary key' => array('machine_name'), danielebarchiesi@2: ); danielebarchiesi@2: return $schema; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Update to 7.x-3.x danielebarchiesi@2: */ danielebarchiesi@2: function quicktabs_update_7300() { danielebarchiesi@2: danielebarchiesi@2: if (!db_field_exists('quicktabs', 'machine_name')) { danielebarchiesi@2: // Pull all existing quicktabs, and then delete existing quicktabs. We will reinsert. danielebarchiesi@2: $result = db_query("SELECT * FROM {quicktabs}"); danielebarchiesi@2: if (!db_query("DELETE FROM {quicktabs}")) { danielebarchiesi@2: throw new DrupalUpdateException(t('Could not complete the update.')); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: db_drop_field('quicktabs', 'qtid'); danielebarchiesi@2: $name_field = array( danielebarchiesi@2: 'description' => 'The primary identifier for a qt block.', danielebarchiesi@2: 'type' => 'varchar', danielebarchiesi@2: 'length' => 255, danielebarchiesi@2: 'not null' => TRUE, danielebarchiesi@2: ); danielebarchiesi@2: db_add_field('quicktabs', 'machine_name', $name_field); danielebarchiesi@2: db_add_primary_key('quicktabs', array('machine_name')); danielebarchiesi@2: danielebarchiesi@2: $output = $used = array(); danielebarchiesi@2: foreach ($result as $qt) { danielebarchiesi@2: $row = (array)$qt; danielebarchiesi@2: // Generate a machine-readable string danielebarchiesi@2: $qt_name = strtolower(preg_replace('/[^a-zA-Z0-9_]+/', '_', $row['title'])); danielebarchiesi@2: $i = 0; danielebarchiesi@2: while (in_array($i == 0 ? $qt_name : "{$qt_name}_{$i}", $used)) { danielebarchiesi@2: $i++; danielebarchiesi@2: } danielebarchiesi@2: $row['machine_name'] = $used[] = $i == 0 ? $qt_name : "{$qt_name}_{$i}"; danielebarchiesi@2: unset($row['qtid']); danielebarchiesi@2: unset($row['style']); danielebarchiesi@2: $row['renderer'] = 'tabs'; danielebarchiesi@2: $placeholders = implode(', ', array_keys($row)); danielebarchiesi@2: $values = array(); danielebarchiesi@2: // Ugh - really?? Somebody tell me there's a better way to do this :-/ danielebarchiesi@2: foreach ($row as $name => $value) { danielebarchiesi@2: $values[':' . $name] = $value; danielebarchiesi@2: } danielebarchiesi@2: $tokens = implode(', ', array_keys($values)); danielebarchiesi@2: db_query("INSERT INTO {quicktabs} ($placeholders) VALUES($tokens)", $values); danielebarchiesi@2: danielebarchiesi@2: $output[] = "Converted quicktab {$row['machine_name']}."; danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: // Add the renderer field danielebarchiesi@2: $renderer_field = array( danielebarchiesi@2: 'description' => 'The rendering mechanism.', danielebarchiesi@2: 'type' => 'varchar', danielebarchiesi@2: 'length' => 255, danielebarchiesi@2: 'not null' => TRUE, danielebarchiesi@2: 'default' => 'quicktabs', danielebarchiesi@2: ); danielebarchiesi@2: db_add_field('quicktabs', 'renderer', $renderer_field); danielebarchiesi@2: $output[] = "Added the renderer field"; danielebarchiesi@2: danielebarchiesi@2: danielebarchiesi@2: return implode('
', $output); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Add the options field which will hold renderer-specific options. danielebarchiesi@2: */ danielebarchiesi@2: function quicktabs_update_7301() { danielebarchiesi@2: $options_field = array( danielebarchiesi@2: 'description' => 'A serialized array of the options for this qt instance.', danielebarchiesi@2: 'type' => 'text', danielebarchiesi@2: 'size' => 'medium', danielebarchiesi@2: 'not null' => FALSE, danielebarchiesi@2: 'serialize' => TRUE, danielebarchiesi@2: ); danielebarchiesi@2: db_add_field('quicktabs', 'options', $options_field); danielebarchiesi@2: return "Added the options field"; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Rebuild the registry because of changed method name. danielebarchiesi@2: */ danielebarchiesi@2: function quicktabs_update_7302() { danielebarchiesi@2: registry_rebuild(); danielebarchiesi@2: } danielebarchiesi@6: danielebarchiesi@6: /** danielebarchiesi@6: * Add support for view modes. danielebarchiesi@6: */ danielebarchiesi@6: function quicktabs_update_7303() { danielebarchiesi@6: foreach (quicktabs_load_multiple() as $quicktab) { danielebarchiesi@6: $updated = FALSE; danielebarchiesi@6: danielebarchiesi@6: foreach ($quicktab->tabs as &$tab) { danielebarchiesi@6: if ($tab['type'] === 'node') { danielebarchiesi@6: $tab['view_mode'] = !empty($tab['teaser']) ? 'teaser' : 'full'; danielebarchiesi@6: unset($tab['teaser']); danielebarchiesi@6: $updated = TRUE; danielebarchiesi@6: } danielebarchiesi@6: } danielebarchiesi@6: danielebarchiesi@6: if (!$updated) { danielebarchiesi@6: continue; danielebarchiesi@6: } danielebarchiesi@6: danielebarchiesi@6: if (empty($quicktab->in_code_only)) { danielebarchiesi@6: $result = drupal_write_record('quicktabs', $quicktab, 'machine_name'); danielebarchiesi@6: } danielebarchiesi@6: else { danielebarchiesi@6: $result = drupal_write_record('quicktabs', $quicktab); danielebarchiesi@6: } danielebarchiesi@6: if (!$result) { danielebarchiesi@6: throw new DrupalUpdateException(t('Could not complete the update.')); danielebarchiesi@6: } danielebarchiesi@6: } danielebarchiesi@6: return 'Added support for view modes.'; danielebarchiesi@6: }