public function AddThis::getDisplayMarkup in AddThis 7.4
File
- classes/
AddThis.php, line 137 - An AddThis-class.
Class
- AddThis
- @file An AddThis-class.
Code
public function getDisplayMarkup($display, $options = array()) {
if (empty($display)) {
return array();
}
$formatters = _addthis_field_info_formatter_field_type();
if (!array_key_exists($display, $formatters)) {
return array();
}
// The display type exists. Now get it and get the markup.
$display_information = $formatters[$display];
// Theme function might only give a display name and
// render on default implementation.
if (!isset($options['#display']) || isset($options['#display']['type']) && $options['#display']['type'] != $display) {
$options['#display'] = isset($options['#display']) ? $options['#display'] : array();
$options['#display'] = array_merge($options['#display'], $display_information);
$options['#display']['type'] = $display;
}
// When #entity and #entity_type exist, use the entity's URL.
if (isset($options['#entity']) && isset($options['#entity_type'])) {
$uri = entity_uri($options['#entity_type'], $options['#entity']);
$uri['options'] += array(
'absolute' => TRUE,
);
// @todo Add a hook to alter the uri also based on fields from the
// entity (such as custom share link). Pass $options and $uri. Return
// a uri object to which we can reset it. Maybe use the alter structure.
$options['#url'] = url($uri['path'], $uri['options']);
}
// @todo Hash the options array and cache the markup.
// This will save all the extra calls to modules and alters.
// Allow other modules to alter markup options.
drupal_alter('addthis_markup_options', $options);
$markup = array(
'#display' => $options['#display'],
);
// Get all hook implementation to verify later if we can call it.
$addthis_display_markup_implementations = module_implements('addthis_display_markup');
// Look for a targeted implementation to call.
// This should be the default implementation that is called.
if (function_exists($display_information['module'] . '_addthis_display_markup__' . $display)) {
$markup += call_user_func_array($display_information['module'] . '_addthis_display_markup__' . $display, array(
$options,
));
}
elseif (in_array($display_information['module'], $addthis_display_markup_implementations)) {
$markup += module_invoke($display_information['module'], 'addthis_display_markup', $display, $options);
}
// Allow other modules to alter markup.
drupal_alter('addthis_markup', $markup);
return $markup;
}