function metatag_field_attach_form in Metatag 7
Implements hook_field_attach_form().
File
- ./
metatag.module, line 2100 - Primary hook implementations for Metatag.
Code
function metatag_field_attach_form($entity_type, $entity, &$form, &$form_state, $langcode) {
// Entity_Translation will trigger this hook again, skip it.
if (!empty($form_state['entity_translation']['is_translation'])) {
return;
}
list($entity_id, $revision_id, $bundle) = entity_extract_ids($entity_type, $entity);
if (!metatag_entity_supports_metatags($entity_type, $bundle)) {
return;
}
$instance = metatag_get_entity_metatags_instance($entity, $entity_type, $bundle);
// Grab the meta tags for display in the form if there are any.
if (!empty($entity->metatags)) {
// Identify the language to use with this entity.
$entity_language = metatag_entity_get_language($entity_type, $entity);
// If this is a new translation using Entity Translation, load the meta
// tags from the entity's original language.
if (module_exists('entity_translation') && empty($form['#entity_translation_source_form']) && ($handler = entity_translation_entity_form_get_handler($form, $form_state)) && isset($entity->metatags[$handler
->getSourceLanguage()])) {
$metatags = $entity->metatags[$handler
->getSourceLanguage()];
}
elseif (isset($entity->metatags[$langcode])) {
// Set the tags to the translation set matching that of the form.
$metatags = $entity->metatags[$langcode];
}
elseif (isset($entity->metatags[$entity_language])) {
$metatags = $entity->metatags[$entity_language];
}
else {
$metatags = $entity->metatags;
}
}
else {
$metatags = array();
}
// Certain circumstances can result in $metatags not being an array.
if (!is_array($metatags)) {
$metatags = array();
}
$options['token types'] = array(
token_get_entity_mapping('entity', $entity_type),
);
$options['context'] = $entity_type;
// @todo Remove metatag_form_alter() when https://www.drupal.org/node/1284642 is fixed in core.
// metatag_metatags_form($form, $instance, $metatags, $options);
$form['#metatags'] = array(
'instance' => $instance,
'metatags' => $metatags,
'options' => $options,
);
}