You are here

function _metatags_quick_field_attach in Meta tags quick 7.2

3 calls to _metatags_quick_field_attach()
drush_metatags_quick_migrate_fields in ./metatags_quick.drush.inc
metatags_quick_upgrade_submit in ./metatags_quick_import.admin.inc
_metatags_quick_admin_fields_create_attach in ./metatags_quick.admin.inc

File

./metatags_quick.admin.inc, line 296

Code

function _metatags_quick_field_attach($entity_type, $bundle, $meta_name) {
  static $meta_fields = FALSE;
  static $field_id = array();
  static $known_tags = FALSE;

  // Get metatags_quick fields info
  if (!$meta_fields) {
    include_once drupal_get_path('module', 'metatags_quick') . '/known_tags.inc';
    $known_tags = _metatags_quick_known_fields();
    foreach (field_info_fields() as $name => $field_info) {
      if ($field_info['module'] == 'metatags_quick') {
        $meta_fields[$field_info['settings']['meta_name']] = $field_info;
        $field_id[$field_info['settings']['meta_name']] = $field_info['id'];
      }
    }
  }

  // Ignore unknown tags.
  if (!isset($known_tags[$meta_name])) {
    return;
  }

  // Check if meta field exists, create if necessary.
  $meta_name_real = empty($known_tags[$meta_name]['meta_name']) ? $meta_name : $known_tags[$meta_name]['meta_name'];
  if (empty($field_id[$meta_name_real])) {
    $field = array(
      'field_name' => "meta_{$meta_name}",
      'type' => 'metatags_quick',
      'module' => 'metatags_quick',
      'settings' => array(
        'meta_name' => isset($known_tags[$meta_name]['meta_name']) ? $known_tags[$meta_name]['meta_name'] : $meta_name,
        'max_length' => variable_get('metatags_quick_default_field_length', 255),
      ),
      'cardinality' => 1,
    );
    $field = field_create_field($field);
    $field_id[$meta_name] = $field['id'];
    $meta_fields[$meta_name_real] = $field;
  }
  else {
    $field = $meta_fields[$meta_name_real];
  }

  // Do nothing if instance already exists.
  if (isset($field['bundles'][$entity_type]) && in_array($bundle, $field['bundles'][$entity_type])) {
    return;
  }

  // Now create field instance attached to requested bundle
  $instance = array(
    'field_name' => $field['field_name'],
    'entity_type' => $entity_type,
    'bundle' => $bundle,
    'label' => '(Meta)' . $known_tags[$meta_name]['title'],
    'formatter' => 'metatags_quick_default',
    'widget' => array(
      'type' => $known_tags[$meta_name]['widget'],
      'weight' => 0,
    ),
  );
  if (isset($known_tags[$meta_name]['options'])) {
    $instance['settings']['options'] = $known_tags[$meta_name]['options'];
  }

  // Assign a default format for the field taken from known_tags.inc
  if (isset($known_tags[$meta_name]['formatter'])) {
    $instance['display']['default']['type'] = $known_tags[$meta_name]['formatter'];
  }

  // Assign a description for the field taken from known_tags.inc
  if (isset($known_tags[$meta_name]['description'])) {
    $instance['description'] = $known_tags[$meta_name]['description'];
  }
  field_create_instance($instance);
}