You are here

function metatag_token_generate_array in Metatag 7

Generate an array of meta tags for a given entity.

1 call to metatag_token_generate_array()
metatag_tokens in ./metatag.tokens.inc
Implements hook_tokens().

File

./metatag.tokens.inc, line 209
Custom tokens for Metatag.

Code

function metatag_token_generate_array($entity, $entity_type, $bundle) {
  if (metatag_entity_supports_metatags($entity_type, $bundle)) {
    $token_type = token_get_entity_mapping('entity', $entity_type);
    $instance = metatag_get_entity_metatags_instance($entity, $entity_type, $bundle);
    $options = array();
    $options['token data'][$token_type] = $entity;
    $options['entity'] = $entity;
    $metatags = array();
    if (!empty($entity->metatags)) {
      $language = metatag_entity_get_language($entity_type, $entity);
      if (!empty($entity->metatags[$language])) {
        $metatags = $entity->metatags[$language];
      }
    }
    $metatags += metatag_config_load_with_defaults($instance);

    // Process it for entity metatag replacement to avoid infinite recursion.
    $metatags = _metatag_token_process_metatag($metatags, $token_type);
    $result = array();
    foreach ($metatags as $metatag => $data) {
      if ($metatag_instance = metatag_get_instance($metatag, $data)) {
        $result[$metatag] = $metatag_instance
          ->getValue($options);
      }
    }
    return $result;
  }
  return NULL;
}