View source
<?php
function views_rss_itunes_field_formatter_info() {
$formatters = array(
'itunes:duration' => array(
'label' => t('RSS <itunes:duration> element'),
'field types' => array(
'file',
),
),
'itunes:image' => array(
'label' => t('RSS <itunes:image> element'),
'field types' => array(
'image',
'file',
),
),
);
return $formatters;
}
function views_rss_itunes_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$element = NULL;
if ($field['type'] == 'image') {
$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;
}
function views_rss_itunes_field_formatter_settings_summary($field, $instance, $view_mode) {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$summary = array();
if ($field['type'] == 'image') {
$image_styles = image_style_options(FALSE);
unset($image_styles['']);
if (isset($image_styles[$settings['image_style']])) {
$summary[] = t('RSS <itunes:image> element: @style', array(
'@style' => $image_styles[$settings['image_style']],
));
}
else {
$summary[] = t('RSS <itunes:image> element');
}
}
return implode('<br />', $summary);
}
function views_rss_itunes_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$element = array();
foreach ($items as $delta => $item) {
if (empty($item['fid'])) {
unset($items[$delta]);
continue;
}
$rss_element = array(
'key' => $display['type'],
);
switch ($display['type']) {
case 'itunes:duration':
$file_info = views_rss_itunes_get_file_info($item['uri']);
if (isset($file_info['playtime_string'])) {
$rss_element['value'] = $file_info['playtime_string'];
}
break;
case 'itunes:image':
$uri = file_create_url($item['uri']);
if (!empty($display['settings']['image_style']) && ($image_style = image_style_load($display['settings']['image_style']))) {
$uri = image_style_url($display['settings']['image_style'], $item['uri']);
$path = image_style_path($display['settings']['image_style'], $item['uri']);
if (!file_exists(drupal_realpath($path))) {
image_style_create_derivative($image_style, $item['uri'], $path);
}
}
$rss_element['attributes'] = array(
'href' => $uri,
);
break;
}
$element[$delta] = array(
'#item' => $item,
'#markup' => format_xml_elements(array(
$rss_element,
)),
'#rss_element' => $rss_element,
'#settings' => $display['settings'],
);
}
return $element;
}