rss_enclosure.module in RSS field formatters 7
Provides an RSS enclosure field formatter for file, image and media fields.
File
rss_enclosure.moduleView source
<?php
/**
* @file
* Provides an RSS enclosure field formatter for file, image and media fields.
*/
/**
* Implements hook_field_formatter_info().
*/
function rss_enclosure_field_formatter_info() {
return array(
'rss_enclosure' => array(
'label' => t('RSS enclosure'),
'field types' => array(
'file',
'image',
'media',
),
'settings' => array(
'image_style' => '',
),
),
);
}
/**
* Implements hook_field_formatter_view().
*/
function rss_enclosure_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$element = array();
// RSS only allows one enclosure per item.
// @see http://en.wikipedia.org/wiki/RSS_enclosure
if (isset($entity->rss_elements)) {
foreach ($entity->rss_elements as $rss_element) {
if ($rss_element['key'] == 'enclosure') {
return $element;
}
}
}
foreach ($items as $item) {
// Media field items contain a file object and do not use display property.
if (!isset($item['uri']) && isset($item['file'])) {
$item = (array) $item['file'];
}
if (!empty($item['display']) || !isset($item['display'])) {
$url = file_create_url($item['uri']);
$length = $item['filesize'];
$type = $item['filemime'];
if ($field['type'] == 'image' && !empty($display['settings']['image_style'])) {
$url = image_style_url($display['settings']['image_style'], $item['uri']);
$uri = image_style_path($display['settings']['image_style'], $item['uri']);
if ($info = image_get_info($uri)) {
$length = $info['file_size'];
$type = $info['mime_type'];
}
}
$entity->rss_elements[] = array(
'key' => 'enclosure',
'attributes' => array(
// URL attribute of an enclosure element must use an HTTP URL.
// @see http://www.rssboard.org/rss-specification#ltenclosuregtSubelementOfLtitemgt
'url' => preg_replace('/^https:/', 'http:', $url),
'length' => $length,
'type' => $type,
),
);
break;
}
}
return $element;
}
/**
* Implements hook_field_formatter_settings_form().
*/
function rss_enclosure_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
$element = array();
if ($field['type'] == 'image') {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$image_styles = image_style_options(FALSE);
$element['image_style'] = array(
'#title' => t('Image style'),
'#type' => 'select',
'#default_value' => $settings['image_style'],
'#empty_option' => t('None (original image)'),
'#options' => $image_styles,
);
}
return $element;
}
/**
* Implements hook_field_formatter_settings_summary().
*/
function rss_enclosure_field_formatter_settings_summary($field, $instance, $view_mode) {
$summary = array();
if ($field['type'] == 'image') {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$image_styles = image_style_options(FALSE);
// Unset possible 'No defined styles' option.
unset($image_styles['']);
// Styles could be lost because of enabled/disabled modules that defines
// their styles in code.
if (isset($image_styles[$settings['image_style']])) {
$summary[] = t('Image style: @style', array(
'@style' => $image_styles[$settings['image_style']],
));
}
else {
$summary[] = t('Original image');
}
}
return implode('<br />', $summary);
}
Functions
Name![]() |
Description |
---|---|
rss_enclosure_field_formatter_info | Implements hook_field_formatter_info(). |
rss_enclosure_field_formatter_settings_form | Implements hook_field_formatter_settings_form(). |
rss_enclosure_field_formatter_settings_summary | Implements hook_field_formatter_settings_summary(). |
rss_enclosure_field_formatter_view | Implements hook_field_formatter_view(). |