function twitterfield_field_formatter_view in TwitterField 7
Implements hook_field_formatter_view().
File
- ./
twitterfield.module, line 235 - The Twitter Field Widget provides a custom field formatter to display Twitter Id's as Twitter Profile Widgets.
Code
function twitterfield_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$element = array();
switch ($display['type']) {
case 'twitterfield_twitter_link':
foreach ($items as $delta => $item) {
if ($item['safe_value']) {
$value = $item['safe_value'];
if (twitterfield_is_username($value) || twitterfield_is_list($value)) {
$url_part = substr($value, 1);
}
else {
// hashtag or search string.
$url_part = 'search?q=' . rawurlencode($value);
}
$element[$delta] = array(
'#markup' => l($value, 'http://twitter.com/' . $url_part, array(
'attributes' => array(
'class' => 'twitterfield_twitter_link',
),
)),
);
}
}
break;
case 'twitterfield_twitter_widget':
foreach ($items as $delta => $item) {
if ($item['safe_value']) {
$type = 'search';
$value = $item['safe_value'];
// Title and subject need to be escaped for insertion into javascript string.
$title = NULL;
$subject = addslashes($value);
if (twitterfield_is_username($value)) {
$type = 'profile';
$value = substr($value, 1);
}
elseif (twitterfield_is_list($value)) {
$type = 'list';
$value = explode('/', substr($value, 1));
}
else {
// Search expressions need to be escaped for insertion in javascript string.
$value = addslashes($value);
}
$element[$delta] = array(
'#markup' => theme('twitter_widget', array(
'type' => $type,
'value' => $value,
'title' => $title,
'subject' => $subject,
)),
);
}
}
break;
case 'twitterfield_twitter_pull':
foreach ($items as $delta => $item) {
if ($item['safe_value']) {
$title = $item['safe_value'];
if (!empty($display['settings']['title'])) {
if ($display['settings']['title'] == '<none>') {
$title = FALSE;
}
else {
$title = $display['settings']['title'];
}
}
$element[$delta] = array(
'#markup' => twitter_pull_render($item['safe_value'], $title, $display['settings']['items']),
);
}
}
break;
}
return $element;
}