You are here

nodewords_og.module in Nodewords: D6 Meta Tags 6

OpenGraph support for Nodewords.

File

nodewords_og/nodewords_og.module
View source
<?php

/**
 * @file
 * OpenGraph support for Nodewords.
 */

/**
 * Implements hook_nodewords_api().
 */
function nodewords_og_nodewords_api() {
  return array(
    'version' => '1.14',
  );
}

/**
 * Implementation of hook_nodewords_tags_info()
 * @return void
 */
function nodewords_og_nodewords_tags_info() {
  $cached = cache_get('nodewords_og:tags');
  if (!$cached || empty($cache->data) || time() > $cache->expire) {
    $tagsrc = nodewords_og_get_tags();
    $tags = array();
    foreach ($tagsrc as $key => $value) {
      $callback = 'nodewords_og_' . strtr($key, ':-', '__');
      $label = t('Open Graph: !labelsuffix', array(
        '!labelsuffix' => !empty($value['labelsuffix']) ? $value['labelsuffix'] : $key,
      ));
      $tags[$key] = $value + array(
        'callback' => $callback,
        'context' => array(
          'allowed' => array(),
          'denied' => array(
            NODEWORDS_TYPE_NONE,
          ),
        ),
        'label' => $label,
        'permission' => 'edit ' . $key,
        'templates' => array(
          'head' => array(
            $key => NODEWORDS_META_PROPERTY,
          ),
        ),
        'weight' => array(
          $key => 20,
        ),
      );
    }
    cache_set('nodewords_og:tags', $tags);
  }
  else {
    $tags = $cached->data;
  }
  return $tags;
}
function nodewords_og_get_tags() {
  $tags = array(
    // This tag can only be used globally.
    'og:site_name' => array(
      'context' => array(
        'allowed' => array(
          NODEWORDS_TYPE_DEFAULT,
        ),
        'denied' => array(),
      ),
      'description' => t('A human readable name for your site, e.g. "IMDB".'),
      'labelsuffix' => t('Site Name'),
      'weight' => array(
        'og:site_name' => -209,
      ),
    ),
    // These tags probably only need to be used globally.
    'fb:app_id' => array(
      'description' => t('A comma-separated list of Facebook Platform Application IDs applicable for this site. Most sites will only need to via the global "Default values".'),
      'label' => t('Facebook: App ID'),
      'weight' => array(
        'fb:app_id' => -208,
      ),
    ),
    'fb:admins' => array(
      'description' => t('A comma-separated list of Facebook user IDs of people who are considered administrators or moderators of this page. Most sites will only need to set this via the global "Default values".'),
      'label' => t('Facebook: Admins'),
      'weight' => array(
        'fb:app_id' => -207,
      ),
    ),
    // These tags can be set on any page.
    'og:title' => array(
      'context' => array(
        'denied' => array(
          NODEWORDS_TYPE_DEFAULT,
        ),
      ),
      'description' => t('The title of the object as it should appear in the graph. If left blank the page title will be automatically used.'),
      'labelsuffix' => t('Title'),
      'weight' => array(
        'og:title' => -197,
      ),
    ),
    'og:description' => array(
      'description' => t('Enter a one or two sentence description of your page. Limit the description to about 20 words with a maximum of %count characters. It should not contain any HTML tags or other formatting.', array(
        '%count' => variable_get('nodewords_max_size', 350),
      )),
      'labelsuffix' => t('Description'),
      'weight' => array(
        'og:description' => -187,
      ),
    ),
    'og:image' => array(
      'description' => t('An image URL which should represent your object within the graph. The image must be at least 50px by 50px and have a max aspect ratio of 3:1.'),
      'labelsuffix' => t('Image'),
      'weight' => array(
        'og:image' => -184,
      ),
    ),
    'og:latitude' => array(
      'description' => t('Latitude of the location this page refers to.'),
      'labelsuffix' => t('Latitude'),
      'weight' => array(
        'og:latitude' => -158,
      ),
    ),
    'og:longitude' => array(
      'description' => t('Longitude of the location this page refers to.'),
      'labelsuffix' => t('Longitude'),
      'weight' => array(
        'og:longitude' => -157,
      ),
    ),
    'og:street-address' => array(
      'description' => t('Street address of the location this page refers to.'),
      'labelsuffix' => t('Street address'),
      'weight' => array(
        'og:street-address' => -156,
      ),
    ),
    'og:locality' => array(
      'description' => t('Locality, city or suburb of the location this page refers to.'),
      'labelsuffix' => t('Locality'),
      'weight' => array(
        'og:locality' => -155,
      ),
    ),
    'og:region' => array(
      'description' => t('Region or state of the location this page refers to.'),
      'labelsuffix' => t('Region'),
      'weight' => array(
        'og:region' => -154,
      ),
    ),
    'og:postal-code' => array(
      'description' => t('Post code or zip of the location this page refers to.'),
      'labelsuffix' => t('Postal code'),
      'weight' => array(
        'og:postal-code' => -153,
      ),
    ),
    'og:country-name' => array(
      'description' => t('Country name of the location this page refers to.'),
      'labelsuffix' => t('Country name'),
      'weight' => array(
        'og:country-name' => -152,
      ),
    ),
    'og:locale' => array(
      'description' => t('The locale these tags are marked up in. Of the format language_TERRITORY. Default is en_US.'),
      'labelsuffix' => t('Locale'),
      'weight' => array(
        'og:locale' => -151,
      ),
    ),
    'og:type' => array(
      'description' => t('The type of content this page contains. It is recommended to use "Article" for pages focused on text, one of the music or video items for such content, and "Website" for all other pages.'),
      'labelsuffix' => t('Type'),
      'weight' => array(
        'og:type' => -149,
      ),
    ),
    'og:video' => array(
      'description' => t('URL of a video. Facebook only supports SWF (Shockwave Flash) format videos.'),
      'labelsuffix' => t('Video URL'),
      'weight' => array(
        'og:video' => -148,
      ),
    ),
    'og:video:secure_url' => array(
      'description' => t('Secure URL of a video.'),
      'labelsuffix' => t('Video secure URL'),
      'weight' => array(
        'og:video:secure_url' => -147,
      ),
    ),
    'og:video:width' => array(
      'description' => t('Width of the video in pixels, e.g 640.'),
      'labelsuffix' => t('Video width'),
      'weight' => array(
        'og:video:width' => -146,
      ),
    ),
    'og:video:height' => array(
      'description' => t('Height of the video in pixels, e.g 385.'),
      'labelsuffix' => t('Video height'),
      'weight' => array(
        'og:video:height' => -145,
      ),
    ),
    'og:video:type' => array(
      'description' => t('Content type of the video, e.g "application/x-shockwave-flash"'),
      'labelsuffix' => t('Video type'),
      'weight' => array(
        'og:video:type' => -144,
      ),
    ),
    'og:url' => array(
      'context' => array(
        'denied' => array(
          NODEWORDS_TYPE_DEFAULT,
          NODEWORDS_TYPE_ERRORPAGE,
          NODEWORDS_TYPE_OFFLINE,
          NODEWORDS_TYPE_TRACKER,
        ),
      ),
      'description' => t('Identical to the Canonical URL, it is used by search engines to identify the primary location that specific content is available from; this is useful when content is accessible from multiple URLs, either within the same site or across multiple sites that are sharing content. Use a relative URL without the initial slash.'),
      'labelsuffix' => t('URL'),
      'weight' => array(
        'og:url' => -137,
      ),
    ),
    'og:email' => array(
      'description' => t('Should only be used when appropriate.'),
      'labelsuffix' => t('Email'),
      'weight' => array(
        '' => -100,
      ),
    ),
    'og:phone_number' => array(
      'description' => t('Should only be used when appropriate.'),
      'labelsuffix' => t('Phone Number'),
      'weight' => array(
        '' => -100,
      ),
    ),
    'og:fax_number' => array(
      'description' => t('Should only be used when appropriate.'),
      'labelsuffix' => t('Fax Number'),
      'weight' => array(
        '' => -100,
      ),
    ),
  );
  return $tags;
}
function nodewords_og_form_default(&$form, &$content, $options, $name, $elemtype = 'textfield', $show_defaults = TRUE) {
  $form[$name] = array(
    '#tree' => TRUE,
  );
  $form[$name]['value'] = array(
    '#type' => 'textfield',
    '#title' => nodewords_og_get_tag_label($name),
    '#default_value' => empty($content['value']) ? '' : $content['value'],
    '#description' => nodewords_og_get_tag_description($name),
  );
  if ($elemtype == 'textfield') {
    $form[$name]['value']['#maxlength'] = variable_get('nodewords_max_size', 350);
  }

  // Show the current default.
  if ($show_defaults && $options['type'] != NODEWORDS_TYPE_DEFAULT) {

    // Load the current default.
    if (!empty($options['default'][$name]['value'])) {
      $default = $options['default'][$name]['value'];
    }
    else {
      $default = t('Not set.');
    }
    $form[$name]['value']['#description'] .= '<br />' . t('The default is: %default', array(
      '%default' => $default,
    ));
  }
}

/**
 * Load a requested meta tag, first checking if a default value exists.  This
 * is called from an individual meta tag's "prepare" function, so has all of
 * the same data available.
 *
 * @param $tag_name The tag to check.
 * @param $tags The meta tags that have been processed so far.
 * @param $content Details of the piece of content currently being processed.
 * @param $options Settings that have been defined for this tag.
 */
function nodewords_og_tag_prepare($tag_name, &$tags, $content, $options) {

  // Load the default setting.
  if (!empty($options['default'][$tag_name]['value'])) {
    $tags[$tag_name] = $options['default'][$tag_name]['value'];
  }

  // Load the per-object value & possibly override the default.
  if (!empty($content['value'])) {
    $tags[$tag_name] = $content['value'];
  }
}
function nodewords_og_get_tag_label($name) {
  $tags = nodewords_og_nodewords_tags_info();
  return isset($tags[$name]['label']) ? $tags[$name]['label'] : t('Unknown tag: @name', array(
    '@name' => $name,
  ));
}
function nodewords_og_get_tag_description($name) {
  $tags = nodewords_og_nodewords_tags_info();
  return isset($tags[$name]['description']) ? $tags[$name]['description'] : '';
}
function nodewords_og_og_title_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:title');
  $form['og:title']['#weight'] = -197;
}
function nodewords_og_og_title_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:title', $tags, $content, $options);

  // If nothing has been filled in, automatically use the current page title.
  if (empty($tags['og:title'])) {
    $tags['og:title'] = drupal_get_title();
  }
}
function nodewords_og_og_type_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:type');
  $form['og:type']['#weight'] = -149;

  // Make the field a selector.
  $form['og:type']['value']['#type'] = 'select';
  $form['og:type']['value']['#options'] = array(
    'website' => t('Website'),
    'article' => t('Article'),
    'book' => t('Book'),
    'profile' => t('User profile'),
    'music.song' => t('Music: Song'),
    'music.album' => t('Music: Album'),
    'music.playlist' => t('Music: Playlist'),
    'music.radio_station' => t('Music: Radio station'),
    'video.movie' => t('Video: Movie'),
    'video.episode' => t('Video: Episode'),
    'video.tv_show' => t('Video: TV show'),
    'video.other' => t('Video: Other'),
  );
}
function nodewords_og_og_type_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:type', $tags, $content, $options);
}
function nodewords_og_og_image_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:image');
  $form['og:image']['#weight'] = -184;
  $form['og:image']['value'] += array(
    '#element_validate' => array(
      'nodewords_validate_element',
    ),
    '#validate_args' => array(
      'module' => 'nodewords_og',
      'callback' => 'nodewords_og_og_image_form_validate',
    ),
  );
}
function nodewords_og_og_image_form_validate($element, &$form_state) {
  if (!empty($element['#value'])) {
    $canonical_url = trim($element['#value'], '/');
    if (!empty($canonical_url) && !valid_url(drupal_urlencode($canonical_url))) {
      form_error($element, t('Image URL must be a relative URL.'));
    }
  }
}
function nodewords_og_og_image_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:image', $tags, $content, $options);
}
function nodewords_og_og_url_form(&$form, $content, $options) {

  // Don't display what the current default value is.
  nodewords_og_form_default($form, $content, $options, 'og:url', 'textfield', FALSE);
  $form['og:url']['#weight'] = -137;
  $form['og:url']['value']['#element_validate'] = array(
    'nodewords_validate_element',
  );
  $form['og:url']['value']['#validate_args'] = array(
    'module' => 'nodewords_basic',
    'callback' => 'nodewords_basic_canonical_form_validate',
  );

  // Expand the field's description to indicate what the default will be.
  if (variable_get('nodewords_use_path_alias', TRUE)) {
    $form['og:url']['value']['#description'] .= ' ' . t('By default this will automatically use this page\'s URL alias, e.g. "article/how-to-contribute-to-drupal" or "categories/drupal".');
  }
  else {
    $form['og:url']['value']['#description'] .= ' ' . t('By default this will automatically use this page\'s internal system path, e.g. "node/123" or "taxonomy/term/123".');
  }
}

/**
 * Use the common function for compiling the current URL.
 */
function nodewords_og_og_url_prepare(&$tags, $content, $options) {
  $tags['og:url'] = _nodewords_prepare_path($content, $options);
}
function nodewords_og_og_site_name_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:site_name');
  $form['og:site_name']['#weight'] = -209;
}
function nodewords_og_og_site_name_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:site_name', $tags, $content, $options);
}
function nodewords_og_og_description_form(&$form, $content, $options) {
  $autogenerate = FALSE;
  if ($options['type'] == NODEWORDS_TYPE_NODE && isset($options['node_type'])) {
    $autogenerate = variable_get('nodewords_metatags_generation_method_' . $options['node_type'], NODEWORDS_GENERATION_WHEN_EMPTY);
  }
  nodewords_og_form_default($form, $content, $options, 'og:description', 'textarea');
  $form['og:description']['#weight'] = -187;
  $form['og:description']['value']['#type'] = 'textarea';
  $form['og:description']['value']['#cols'] = 60;
  $form['og:description']['value']['#rows'] = 3;
  $form['og:description']['value']['#wysiwyg'] = FALSE;
  if ($options['type'] == NODEWORDS_TYPE_NODE) {
    if ($autogenerate == NODEWORDS_GENERATION_ALWAYS) {
      $form['og:description']['value']['#disabled'] = TRUE;
      $form['og:description']['value']['#rows'] = 1;
      $form['og:description']['value']['#default_value'] = '';
      $form['og:description']['value']['#description'] = t('This will be automatically generated from the node.');
    }
    elseif ($autogenerate == NODEWORDS_GENERATION_WHEN_EMPTY) {
      $form['og:description']['value']['#description'] .= ' ' . t('If this is left empty the value will be automatically generated from the node');
    }
  }

  // Show the current default.
  if ($options['type'] != NODEWORDS_TYPE_DEFAULT) {

    // Load the current default.
    if (!empty($options['default']['og:description']['value'])) {
      $default = $options['default']['og:description']['value'];
    }
    else {
      $default = t('Not set.');
    }
    $form['og:description']['value']['#description'] .= '<br />' . t('The default is: %default', array(
      '%default' => $default,
    ));
  }
}
function nodewords_og_og_description_prepare(&$tags, $content, $options) {
  _nodewords_prepare_description($tags, $content, $options, 'og:description');
}
function nodewords_og_og_email_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:email');
  $form['og:email']['#weight'] = 0;
}
function nodewords_og_og_email_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:email', $tags, $content, $options);
}
function nodewords_og_og_phone_number_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:phone_number');
  $form['og:phone_number']['#weight'] = 0;
}
function nodewords_og_og_phone_number_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:phone_number', $tags, $content, $options);
}
function nodewords_og_og_fax_number_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:fax_number');
  $form['og:fax_number']['#weight'] = 0;
}
function nodewords_og_og_fax_number_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:fax_number', $tags, $content, $options);
}
function nodewords_og_og_latitude_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:latitude');
  $form['og:latitude']['#weight'] = -158;
}
function nodewords_og_og_latitude_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:latitude', $tags, $content, $options);
}
function nodewords_og_og_longitude_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:longitude');
  $form['og:longitude']['#weight'] = -157;
}
function nodewords_og_og_longitude_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:longitude', $tags, $content, $options);
}
function nodewords_og_og_street_address_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:street-address');
  $form['og:street-address']['#weight'] = -156;
}
function nodewords_og_og_street_address_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:street-address', $tags, $content, $options);
}
function nodewords_og_og_locality_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:locality');
  $form['og:locality']['#weight'] = -155;
}
function nodewords_og_og_locality_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:locality', $tags, $content, $options);
}
function nodewords_og_og_region_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:region');
  $form['og:region']['#weight'] = -154;
}
function nodewords_og_og_region_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:region', $tags, $content, $options);
}
function nodewords_og_og_postal_code_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:postal-code');
  $form['og:postal-code']['#weight'] = -153;
}
function nodewords_og_og_postal_code_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:postal-code', $tags, $content, $options);
}
function nodewords_og_og_country_name_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:country-name');
  $form['og:country-name']['#weight'] = -152;
}
function nodewords_og_og_country_name_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:country-name', $tags, $content, $options);
}
function nodewords_og_og_locale_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:locale');
  $form['og:locale']['#weight'] = -151;
}
function nodewords_og_og_locale_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:locale', $tags, $content, $options);
}
function nodewords_og_og_video_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:video');
  $form['og:video']['#weight'] = -147;
  $form['og:video']['value'] += array(
    '#element_validate' => array(
      'nodewords_validate_element',
    ),
    '#validate_args' => array(
      'module' => 'nodewords_og',
      'callback' => 'nodewords_og_og_video_form_validate',
    ),
  );
}
function nodewords_og_og_video_form_validate($element, &$form_state) {
  if (!empty($element['#value'])) {
    $url = trim($element['#value'], '/');
    if (!empty($url) && !valid_url($url)) {
      form_error($element, t('Video URL must be a valid URL.'));
    }
  }
}
function nodewords_og_og_video_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:video', $tags, $content, $options);
}
function nodewords_og_og_video_secure_url_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:video:secure_url');
  $form['og:video:secure_url']['#weight'] = -147;
  $form['og:video:secure_url']['value'] += array(
    '#element_validate' => array(
      'nodewords_validate_element',
    ),
    '#validate_args' => array(
      'module' => 'nodewords_og',
      'callback' => 'nodewords_og_og_video_secure_url_form_validate',
    ),
  );
}
function nodewords_og_og_video_secure_url_form_validate($element, &$form_state) {
  if (!empty($element['#value'])) {
    $url = trim($element['#value'], '/');
    if (!empty($url) && !valid_url($url)) {
      form_error($element, t('Video secure URL must be a valid URL.'));
    }
  }
}
function nodewords_og_og_video_secure_url_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:video:secure_url', $tags, $content, $options);
}
function nodewords_og_og_video_width_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:video:width');
  $form['og:video:width']['#weight'] = -146;
}
function nodewords_og_og_video_width_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:video:width', $tags, $content, $options);
}
function nodewords_og_og_video_height_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:video:height');
  $form['og:video:height']['#weight'] = -145;
}
function nodewords_og_og_video_height_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:video:height', $tags, $content, $options);
}
function nodewords_og_og_video_type_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'og:video:type');
  $form['og:video:type']['#weight'] = -144;
}
function nodewords_og_og_video_type_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('og:video:type', $tags, $content, $options);
}
function nodewords_og_fb_admins_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'fb:admins');
  $form['fb:admins']['#weight'] = -207;
  $form['fb:admins']['value'] += array(
    '#validate_args' => array(
      'module' => 'nodewords_og',
      'callback' => 'nodewords_og_fb_admins_form_validate',
    ),
  );
}

/**
 * Validate the values passed as facebook user IDs.
 */
function nodewords_og_fb_admins_form_validate($element, &$form_state) {
  if (!preg_match('/^($|([0-9]+)(,[0-9])*$)/', $element['#value'])) {
    form_error($element, t('The Facebook admins value must be a comma separated list of Facebook user IDs.'));
  }
}
function nodewords_og_fb_admins_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('fb:admins', $tags, $content, $options);
}
function nodewords_og_fb_app_id_form(&$form, $content, $options) {
  nodewords_og_form_default($form, $content, $options, 'fb:app_id');
  $form['fb:app_id']['#weight'] = -208;
}
function nodewords_og_fb_app_id_prepare(&$tags, $content, $options) {
  nodewords_og_tag_prepare('fb:app_id', $tags, $content, $options);
}

Functions

Namesort descending Description
nodewords_og_fb_admins_form
nodewords_og_fb_admins_form_validate Validate the values passed as facebook user IDs.
nodewords_og_fb_admins_prepare
nodewords_og_fb_app_id_form
nodewords_og_fb_app_id_prepare
nodewords_og_form_default
nodewords_og_get_tags
nodewords_og_get_tag_description
nodewords_og_get_tag_label
nodewords_og_nodewords_api Implements hook_nodewords_api().
nodewords_og_nodewords_tags_info Implementation of hook_nodewords_tags_info()
nodewords_og_og_country_name_form
nodewords_og_og_country_name_prepare
nodewords_og_og_description_form
nodewords_og_og_description_prepare
nodewords_og_og_email_form
nodewords_og_og_email_prepare
nodewords_og_og_fax_number_form
nodewords_og_og_fax_number_prepare
nodewords_og_og_image_form
nodewords_og_og_image_form_validate
nodewords_og_og_image_prepare
nodewords_og_og_latitude_form
nodewords_og_og_latitude_prepare
nodewords_og_og_locale_form
nodewords_og_og_locale_prepare
nodewords_og_og_locality_form
nodewords_og_og_locality_prepare
nodewords_og_og_longitude_form
nodewords_og_og_longitude_prepare
nodewords_og_og_phone_number_form
nodewords_og_og_phone_number_prepare
nodewords_og_og_postal_code_form
nodewords_og_og_postal_code_prepare
nodewords_og_og_region_form
nodewords_og_og_region_prepare
nodewords_og_og_site_name_form
nodewords_og_og_site_name_prepare
nodewords_og_og_street_address_form
nodewords_og_og_street_address_prepare
nodewords_og_og_title_form
nodewords_og_og_title_prepare
nodewords_og_og_type_form
nodewords_og_og_type_prepare
nodewords_og_og_url_form
nodewords_og_og_url_prepare Use the common function for compiling the current URL.
nodewords_og_og_video_form
nodewords_og_og_video_form_validate
nodewords_og_og_video_height_form
nodewords_og_og_video_height_prepare
nodewords_og_og_video_prepare
nodewords_og_og_video_secure_url_form
nodewords_og_og_video_secure_url_form_validate
nodewords_og_og_video_secure_url_prepare
nodewords_og_og_video_type_form
nodewords_og_og_video_type_prepare
nodewords_og_og_video_width_form
nodewords_og_og_video_width_prepare
nodewords_og_tag_prepare Load a requested meta tag, first checking if a default value exists. This is called from an individual meta tag's "prepare" function, so has all of the same data available.