2, 'path' => drupal_get_path('module', 'views_rss') . '/views', ); } /** * Implementation of hook_field_formatter_info(). */ function views_rss_field_formatter_info() { $formatters = array( // Generic image formatter for element. 'views_rss_enclosure_image' => array( 'label' => t('RSS enclosure element: image: original size'), 'field types' => array('image', 'filefield'), ), // Generic file formatter for element. 'views_rss_enclosure_file' => array( 'label' => t('RSS enclosure element: file'), 'field types' => array('filefield'), ), ); // Additional formatters for imagecache module. if (module_exists('imagecache')) { foreach (imagecache_presets() as $preset) { // Imagecache image formatter for element. $formatters['views_rss_enclosure_image' . $preset['presetname']] = array( 'label' => t('RSS enclosure element: image: @preset', array('@preset' => $preset['presetname'])), 'field types' => array('image', 'filefield'), ); } } return $formatters; } /** * Implementation of hook_theme(). */ function views_rss_theme() { $path = drupal_get_path('module', 'views_rss'); $theme = array( 'views_rss_fields_item' => array( 'arguments' => array('item' => array()), 'file' => 'views_rss_views_fields.theme.inc', 'template' => 'views-rss-fields-item', 'path' => "$path/views", ), 'views_rss_feed_icon' => array( 'arguments' => array('url', 'title', 'icon'), 'file' => 'views_rss_views_fields.theme.inc', 'path' => "$path/views", ), 'views_rss_feed_description' => array( 'arguments' => array('description', 'view'), 'file' => 'views_rss_views_fields.theme.inc', 'path' => "$path/views", ), // CCK field formatters. 'views_rss_formatter_views_rss_enclosure_image' => array( 'arguments' => array('element' => NULL), 'function' => 'theme_views_rss_formatter_enclosure_image', ), 'views_rss_formatter_views_rss_enclosure_file' => array( 'arguments' => array('element' => NULL), 'function' => 'theme_views_rss_formatter_enclosure_file', ), ); if (module_exists('imagecache')) { foreach (imagecache_presets() as $preset) { $theme['views_rss_formatter_views_rss_enclosure_image' . $preset['presetname']] = array( 'arguments' => array('element' => NULL), 'function' => 'theme_views_rss_formatter_enclosure_image', ); } } return $theme; } /** * Generic formatter for 'filefield' CCK fields * added to RSS element. */ function theme_views_rss_formatter_enclosure_file($element) { // Inside a view $element may contain NULL data. In that case, just return. if (empty($element['#item']['fid'])) { return; } // Return formatted XML element. return strtr('', array( '!url' => url($element['#item']['filepath'], array('absolute' => TRUE)), '!length' => $element['#item']['filesize'], '!type' => $element['#item']['filemime'], )); } /** * Formatter for 'image' and 'filefield' CCK fields containing images * added to RSS element. Besides default image size * also provides option to use imagecache'd images. */ function theme_views_rss_formatter_enclosure_image($element) { // Inside a view $element may contain NULL data. In that case, just return. if (empty($element['#item']['fid'])) { return; } // Generate simple array of imagecache presets. $presets = array(); foreach (imagecache_presets() as $preset) { $presets[] = $preset['presetname']; } // Get full image URL based on provided imagecache preset. $preset_name = str_replace('views_rss_enclosure_image', '', $element['#formatter']); if ($preset_name && in_array($preset_name, array_keys($presets))) { $path = imagecache_create_url($preset_name, $element['#item']['filepath']); } else { $path = $element['#item']['filepath']; } // Return formatted XML element. return strtr('', array( '!url' => url($path, array('absolute' => TRUE)), '!length' => $element['#item']['filesize'], '!type' => $element['#item']['filemime'], )); }