You are here

function ac_update_create_field_data in Availability Calendars 7.2

1 call to ac_update_create_field_data()
ac_update_copy_data in ac_update/ac_update.module

File

ac_update/ac_update.module, line 724
Availability Calendars update: admin update code

Code

function ac_update_create_field_data(&$result) {
  $supported_content_types = variable_get('availability_calendars_settings_content_types', array());
  foreach ($supported_content_types as $supported_content_type) {
    $field_name = $result['field instances'][$supported_content_type];
    $field_info = field_info_field($field_name);

    // Create the insert query for the field data table.
    $field_table_name = key($field_info['storage']['details']['sql'][FIELD_LOAD_CURRENT]);
    $field_cid = $field_info['storage']['details']['sql'][FIELD_LOAD_CURRENT][$field_table_name]['cid'];
    $field_calendarname = $field_info['storage']['details']['sql'][FIELD_LOAD_CURRENT][$field_table_name]['name'];
    $field_enabled = $field_info['storage']['details']['sql'][FIELD_LOAD_CURRENT][$field_table_name]['enabled'];
    $language = field_is_translatable('node', $field_info) ? 'n.language' : "'und'";
    $query = "\nSELECT\n  'node' as entity_type,\n  n.type as bundle,\n  0 as deleted,\n  n.nid as entity_id,\n  n.nid as revision_id,\n  {$language} as language,\n  0 as delta,\n  1 as {$field_enabled},\n  '' as {$field_calendarname},\n  acc.cid as {$field_cid}\nFROM {node} n\n  INNER JOIN {availability_calendar_calendar} acc on acc.nid in (n.tnid, n.nid)\nWHERE n.type = '{$supported_content_type}'";
    $field_data_query = "INSERT INTO {{$field_table_name}} {$query}";
    $count = db_query($field_data_query)
      ->rowCount();
    $result['messages'][] = array(
      'message' => "Created {$count} fields (in table <em>{$field_table_name}</em>) for content type <em>{$supported_content_type}</em>.",
      'type' => 'status',
    );

    // Create the insert query for the field revision table: content is the same
    // as all fields start with 1 revision.
    $field_table_name = key($field_info['storage']['details']['sql'][FIELD_LOAD_REVISION]);
    $field_cid = $field_info['storage']['details']['sql'][FIELD_LOAD_REVISION][$field_table_name]['cid'];
    $field_enabled = $field_info['storage']['details']['sql'][FIELD_LOAD_REVISION][$field_table_name]['enabled'];
    $field_revision_query = "INSERT INTO {{$field_table_name}} {$query}";
    $count = db_query($field_revision_query)
      ->rowCount();
    $result['messages'][] = array(
      'message' => "Created {$count} revisions (in table <em>{$field_table_name}</em>) for content type <em>{$supported_content_type}</em>.",
      'type' => 'status',
    );
  }
}