99 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * @file
 | 
						|
 * Install, update and uninstall functions for the Serial module.
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * Implements hook_field_schema().
 | 
						|
 */
 | 
						|
function serial_field_schema(array $field) {
 | 
						|
  $columns = array();
 | 
						|
 | 
						|
  switch ($field['type']) {
 | 
						|
    case 'serial':
 | 
						|
      $columns['value'] = array(
 | 
						|
        'type' => 'int',
 | 
						|
        'unsigned' => TRUE,
 | 
						|
        'not null' => TRUE,
 | 
						|
        'sortable' => TRUE,
 | 
						|
        'views' => TRUE,
 | 
						|
        'index' => TRUE,
 | 
						|
      );
 | 
						|
      break;
 | 
						|
  }
 | 
						|
 | 
						|
  return array('columns' => $columns);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Implements hook_schema().
 | 
						|
 */
 | 
						|
function serial_schema() {
 | 
						|
  // Get the standard schema:
 | 
						|
  module_load_include('inc', 'serial');
 | 
						|
 | 
						|
  $table_schema = _serial_get_table_schema();
 | 
						|
  $schema = array();
 | 
						|
 | 
						|
  foreach (_serial_get_all_fields() as $field) {
 | 
						|
    $schema[_serial_get_table_name($field->entity_type, $field->bundle, $field->field_name)] = $table_schema;
 | 
						|
  }
 | 
						|
 | 
						|
  // Return the schema of all the assistant tables (one per field instance).
 | 
						|
  return $schema;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Upgrade path.
 | 
						|
 *
 | 
						|
 * Switches from nids to uniqids.
 | 
						|
 */
 | 
						|
function serial_update_7130() {
 | 
						|
  module_load_include('inc', 'serial');
 | 
						|
 | 
						|
  $table_schema = _serial_get_table_schema();
 | 
						|
 | 
						|
  // Update the schema of old assistant tables.
 | 
						|
  foreach (_serial_get_all_fields() as $field) {
 | 
						|
    // Empty the table.
 | 
						|
    $table = _serial_get_table_name($field->entity_type, $field->bundle, $field->field_name);
 | 
						|
    db_delete($table)->execute();
 | 
						|
 | 
						|
    // Drop nid field and key.
 | 
						|
    db_drop_field($table, 'nid');
 | 
						|
    db_drop_unique_key($table, 'nid');
 | 
						|
 | 
						|
    // Add uniqid field and key.
 | 
						|
    db_add_field($table, 'uniqid', $table_schema['fields']['uniqid']);
 | 
						|
    db_add_unique_key($table, 'uniqid', array('uniqid'));
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Add 'node_' to all existing serial tables.
 | 
						|
 *
 | 
						|
 * Change name:
 | 
						|
 *   from: serial_{content_type}_{field_name}
 | 
						|
 *   to: serial_node_{content_type}_{field_name}
 | 
						|
 */
 | 
						|
function serial_update_7131() {
 | 
						|
  // All old serial tables are of 'node' entity type.
 | 
						|
  foreach (db_find_tables('serial_%') as $table) {
 | 
						|
    db_rename_table($table, preg_replace('/^serial_/', 'serial_node_', $table));
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Reorganize table names to prevent collisions with long names.
 | 
						|
 */
 | 
						|
function serial_update_7132() {
 | 
						|
  module_load_include('inc', 'serial');
 | 
						|
 | 
						|
  foreach (db_find_tables('serial_%') as $table) {
 | 
						|
    // Explode by underscores and match old format.
 | 
						|
    list(, $entity_type, $bundle, $field_name) = explode('_', $table, 4);
 | 
						|
    db_rename_table($table, _serial_get_table_name($entity_type, $bundle, $field_name));
 | 
						|
  }
 | 
						|
}
 |