diff --git a/sites/all/modules/contrib/rss/views_rss/modules/views_rss_core/views_rss_core.field.inc b/sites/all/modules/contrib/rss/views_rss/modules/views_rss_core/views_rss_core.field.inc index 751e6fed..57082aac 100644 --- a/sites/all/modules/contrib/rss/views_rss/modules/views_rss_core/views_rss_core.field.inc +++ b/sites/all/modules/contrib/rss/views_rss/modules/views_rss_core/views_rss_core.field.inc @@ -55,7 +55,7 @@ function views_rss_core_field_formatter_settings_summary($field, $instance, $vie 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']])) { + if (!empty($settings['image_style']) && !empty($image_styles[$settings['image_style']])) { $summary[] = t('Image style: @style', array('@style' => $image_styles[$settings['image_style']])); } else { @@ -101,9 +101,8 @@ function views_rss_core_field_formatter_view($entity_type, $entity, $field, $ins // Get file size of image preset file (if it has already been created, // otherwise just create it first and then get file size). $path = image_style_path($display['settings']['image_style'], $item['uri']); - $real_path = drupal_realpath($path); - if (file_exists($real_path) || image_style_create_derivative($image_style, $item['uri'], $path)) { - $item['filesize'] = filesize($real_path); + if (file_exists($path) || image_style_create_derivative($image_style, $item['uri'], $path)) { + $item['filesize'] = filesize($path); } } elseif ($field['type'] == 'media') { @@ -122,7 +121,7 @@ function views_rss_core_field_formatter_view($entity_type, $entity, $field, $ins else { $uri = file_create_url($item['uri']); } - + // XML element array in format_xml_elements() format. $rss_element = array( 'key' => 'enclosure', @@ -138,7 +137,7 @@ function views_rss_core_field_formatter_view($entity_type, $entity, $field, $ins '#markup' => format_xml_elements(array($rss_element)), '#rss_element' => $rss_element, ); - + } return $element; } diff --git a/sites/all/modules/contrib/rss/views_rss/modules/views_rss_core/views_rss_core.inc b/sites/all/modules/contrib/rss/views_rss/modules/views_rss_core/views_rss_core.inc index f53f1d96..85cd14d1 100644 --- a/sites/all/modules/contrib/rss/views_rss/modules/views_rss_core/views_rss_core.inc +++ b/sites/all/modules/contrib/rss/views_rss/modules/views_rss_core/views_rss_core.inc @@ -45,6 +45,16 @@ function views_rss_core_preprocess_channel_atom_link(&$variables) { ); } +/** + * Preprocess function for channel element. + */ +function views_rss_core_preprocess_channel_language(&$variables) { + global $language; + if (empty($variables['elements'][0]['value'])) { + $variables['elements'][0]['value'] = $language->language; + } +} + /** * Preprocess function for channel element. */ @@ -110,7 +120,7 @@ function views_rss_core_preprocess_channel_date(&$variables) { if (count($variables['view']->result) > 0) { $max_date = 0; foreach ($variables['view']->result as $row) { - $key = strtolower($variables['elements'][0]['key']); + $key = $variables['elements'][0]['key']; if (isset($row->$key) && $row->$key > $max_date) { $max_date = $row->$key; } @@ -194,4 +204,4 @@ function views_rss_core_preprocess_item_source(&$variables) { $view_title = $variables['view']->get_title(); $variables['elements'][0]['value'] = (!empty($view_title)) ? $view_title : variable_get('site_name', t('Drupal')); $variables['elements'][0]['attributes'] = array('url' => $url); -} \ No newline at end of file +} diff --git a/sites/all/modules/contrib/rss/views_rss/modules/views_rss_core/views_rss_core.info b/sites/all/modules/contrib/rss/views_rss/modules/views_rss_core/views_rss_core.info index a6b25de8..643f4e84 100644 --- a/sites/all/modules/contrib/rss/views_rss/modules/views_rss_core/views_rss_core.info +++ b/sites/all/modules/contrib/rss/views_rss/modules/views_rss_core/views_rss_core.info @@ -4,9 +4,9 @@ package = Views dependencies[] = views_rss core = "7.x" -; Information added by drupal.org packaging script on 2013-09-11 -version = "7.x-2.0-rc3+4-dev" +; Information added by Drupal.org packaging script on 2014-12-23 +version = "7.x-2.0-rc4" core = "7.x" project = "views_rss" -datestamp = "1378900636" +datestamp = "1419363788" diff --git a/sites/all/modules/contrib/rss/views_rss/modules/views_rss_core/views_rss_core.module b/sites/all/modules/contrib/rss/views_rss/modules/views_rss_core/views_rss_core.module index 1eb171f9..cc231005 100644 --- a/sites/all/modules/contrib/rss/views_rss/modules/views_rss_core/views_rss_core.module +++ b/sites/all/modules/contrib/rss/views_rss/modules/views_rss_core/views_rss_core.module @@ -60,7 +60,8 @@ function views_rss_core_views_rss_channel_elements() { 'help' => 'http://www.rssboard.org/rss-profile#namespace-elements-atom-link', ); $elements['language'] = array( - 'description' => t('The language the channel is written in. This allows aggregators to group all Italian language sites, for example, on a single page. See list of allowable values for this element defined by the W3C.', array( + 'preprocess functions' => array('views_rss_core_preprocess_channel_language'), + 'description' => t("The language the channel is written in. This allows aggregators to group all Italian language sites, for example, on a single page. See list of allowable values for this element defined by the W3C. If left empty, it will use current site's language.", array( '@w3c_url' => url('http://www.w3.org/TR/REC-html40/struct/dirlang.html', array('fragment' => 'langcodes')), )), 'help' => 'http://www.rssboard.org/rss-profile#element-channel-language', @@ -281,4 +282,4 @@ function views_rss_core_views_rss_options_form_validate($form, &$form_state) { form_set_error('style_options][channel][core][views_rss_core][docs', t("Not a valid URL.")); } } -} \ No newline at end of file +} diff --git a/sites/all/modules/contrib/rss/views_rss/modules/views_rss_dc/views_rss_dc.info b/sites/all/modules/contrib/rss/views_rss/modules/views_rss_dc/views_rss_dc.info index 5ed45ef3..2fa68b2e 100644 --- a/sites/all/modules/contrib/rss/views_rss/modules/views_rss_dc/views_rss_dc.info +++ b/sites/all/modules/contrib/rss/views_rss/modules/views_rss_dc/views_rss_dc.info @@ -4,9 +4,9 @@ package = Views dependencies[] = views_rss core = "7.x" -; Information added by drupal.org packaging script on 2013-09-11 -version = "7.x-2.0-rc3+4-dev" +; Information added by Drupal.org packaging script on 2014-12-23 +version = "7.x-2.0-rc4" core = "7.x" project = "views_rss" -datestamp = "1378900636" +datestamp = "1419363788" diff --git a/sites/all/modules/contrib/rss/views_rss/theme/theme.inc b/sites/all/modules/contrib/rss/views_rss/theme/theme.inc index 6406fd6f..0e1ae530 100644 --- a/sites/all/modules/contrib/rss/views_rss/theme/theme.inc +++ b/sites/all/modules/contrib/rss/views_rss/theme/theme.inc @@ -72,6 +72,14 @@ function template_preprocess_views_view_views_rss(&$variables) { $value = NULL; } + // Avoid double encoding: the $value might be already encoded here, + // depending on the field configuration/processing, and because we know + // it will be encoded again when the whole feed array will be passed to + // format_xml_elements(), let's make sure we decode it here first. + if (is_string($value)) { + $value = decode_entities($value); + } + // Start building XML channel element array compatible with format_xml_elements(). $rss_elements = array( array( @@ -140,6 +148,14 @@ function template_preprocess_views_view_views_rss(&$variables) { foreach ($item as $module => $module_item_elements) { foreach ($module_item_elements as $element => $value) { + // Avoid double encoding: the $value might be already encoded here, + // depending on the field configuration/processing, and because we know + // it will be encoded again when the whole feed array will be passed to + // format_xml_elements(), let's make sure we decode it here first. + if (is_string($value)) { + $value = decode_entities($value); + } + // Start building XML element array compatible with format_xml_elements(). $rss_elements = array( array( @@ -221,4 +237,4 @@ function template_preprocess_views_view_views_rss(&$variables) { // Set XML header. drupal_add_http_header('Content-Type', 'application/rss+xml; charset=utf-8'); -} \ No newline at end of file +} diff --git a/sites/all/modules/contrib/rss/views_rss/views/views_rss_plugin_style_fields.inc b/sites/all/modules/contrib/rss/views_rss/views/views_rss_plugin_style_fields.inc index de05d2f4..b6c09eb8 100644 --- a/sites/all/modules/contrib/rss/views_rss/views/views_rss_plugin_style_fields.inc +++ b/sites/all/modules/contrib/rss/views_rss/views/views_rss_plugin_style_fields.inc @@ -18,7 +18,10 @@ class views_rss_plugin_style_fields extends views_plugin_style { $url_options['query'] = $input; } - $url = url($this->view->get_url(NULL, $path), $url_options); + // Don't add arguments to RSS path if the feed does not support arguments. + $feed_path = !empty($this->display->display_options['arguments']) ? $this->view->get_url(NULL, $path) : $path; + + $url = url($feed_path, $url_options); if ($display->has_path() && !$this->options['feed_settings']['feed_in_links']) { if (empty($this->preview)) { drupal_add_feed($url, $title); @@ -347,7 +350,7 @@ class views_rss_plugin_style_fields extends views_plugin_style { } return $errors; } - + /** * Map views row result to an RSS item. */ diff --git a/sites/all/modules/contrib/rss/views_rss/views_rss.info b/sites/all/modules/contrib/rss/views_rss/views_rss.info index c1e3419d..d876e038 100644 --- a/sites/all/modules/contrib/rss/views_rss/views_rss.info +++ b/sites/all/modules/contrib/rss/views_rss/views_rss.info @@ -7,9 +7,9 @@ files[] = views/views_rss_plugin_style_fields.inc files[] = views/views_rss_handler_field_user_mail.inc files[] = views/views_rss_handler_field_term_node_tid.inc -; Information added by drupal.org packaging script on 2013-09-11 -version = "7.x-2.0-rc3+4-dev" +; Information added by Drupal.org packaging script on 2014-12-23 +version = "7.x-2.0-rc4" core = "7.x" project = "views_rss" -datestamp = "1378900636" +datestamp = "1419363788" diff --git a/sites/all/modules/contrib/rss/views_rss_media/views_rss_media.field.inc b/sites/all/modules/contrib/rss/views_rss_media/views_rss_media.field.inc index 892209f0..32ef2060 100644 --- a/sites/all/modules/contrib/rss/views_rss_media/views_rss_media.field.inc +++ b/sites/all/modules/contrib/rss/views_rss_media/views_rss_media.field.inc @@ -7,7 +7,7 @@ function views_rss_media_field_formatter_info() { $formatters = array( 'media_content' => array( 'label' => t('RSS element'), - 'field types' => array('image', 'file', 'video'), + 'field types' => array('image', 'file', 'video', 'video_embed_field'), 'settings' => array( 'image_style' => '', 'group_multiple_values' => 0, @@ -38,7 +38,9 @@ function views_rss_media_field_formatter_settings_form($field, $instance, $view_ $display = $instance['display'][$view_mode]; $settings = $display['settings']; - if ($field['type'] == 'image') { + $element = array(); + + if ($field['type'] == 'image' || $field['type'] == 'file') { $image_styles = image_style_options(FALSE); $element['image_style'] = array( '#title' => t('Image style'), @@ -85,7 +87,9 @@ function views_rss_media_field_formatter_settings_form($field, $instance, $view_ // hash_file() function used to generate file hashes // is available only in PHP versions >= 5.1.2. // @see http://www.php.net/manual/en/function.hash-file.php - if (version_compare(phpversion(), '5.1.2') >= 0) { + // Also, no hash support for Video Embed fields, as these are not + // stored locally, not possible then to calculate hashes for them. + if ($field['type'] != 'video_embed_field' && version_compare(phpversion(), '5.1.2') >= 0) { $element['generate_hash'] = array( '#title' => t('Generate hash values for files'), @@ -126,7 +130,7 @@ function views_rss_media_field_formatter_settings_summary($field, $instance, $vi $summary = array(); - if ($field['type'] == 'image') { + if ($field['type'] == 'image' || $field['type'] == 'file') { $image_styles = image_style_options(FALSE); // Unset possible 'No defined styles' option. unset($image_styles['']); @@ -169,13 +173,18 @@ function views_rss_media_field_formatter_view($entity_type, $entity, $field, $in foreach ($items as $delta => $item) { + if ($field['type'] == 'video_embed_field') { + $url = $item['video_url']; + $item['video_data'] = unserialize($item['video_data']); + } + // When generating a thumbnail for a video file, // let's process only thumbnail image details. if ($item['type'] == 'video' && $display['type'] == 'media_thumbnail') { $item = (array) $item['thumbnailfile']; } - if ($display['type'] == 'media_content' || $display['type'] == 'media_thumbnail') { + if (($display['type'] == 'media_content' || $display['type'] == 'media_thumbnail') && $field['type'] != 'video_embed_field') { // Inside a view item may contain NULL data. In that case, just return. if (empty($item['fid'])) { @@ -207,10 +216,14 @@ function views_rss_media_field_formatter_view($entity_type, $entity, $field, $in 'key' => 'media:content', 'attributes' => array( 'url' => $url, - 'fileSize' => $item['filesize'], - 'type' => $item['filemime'], ), ); + if (!empty($item['filesize'])) { + $rss_element['attributes']['fileSize'] = $item['filesize']; + } + if (!empty($item['filemime'])) { + $rss_element['attributes']['type'] = $item['filemime']; + } if (!empty($display['settings']['medium'])) { $rss_element['attributes']['medium'] = $display['settings']['medium']; } @@ -256,6 +269,45 @@ function views_rss_media_field_formatter_view($entity_type, $entity, $field, $in } } + // Additional properties for Video Embed fields. + if ($field['type'] == 'video_embed_field') { + if (!empty($item['video_data']['media$group']['media$content'][0])) { + $rss_element['attributes'] += $item['video_data']['media$group']['media$content'][0]; + } + if (!empty($item['video_data']['media$group']['media$title'])) { + $rss_element['value'][] = array( + 'key' => 'media:title', + 'value' => $item['video_data']['media$group']['media$title'], + ); + } + if (!empty($item['video_data']['media$group']['media$description'])) { + $rss_element['value'][] = array( + 'key' => 'media:description', + 'value' => $item['video_data']['media$group']['media$description'], + ); + } + if (!empty($item['video_data']['media$group']['media$thumbnail'][0])) { + $rss_element['value'][] = array( + 'key' => 'media:thumbnail', + 'attributes' => $item['video_data']['media$group']['media$thumbnail'][0], + ); + } + if (!empty($item['video_data']['media$group']['media$category'])) { + foreach ($item['video_data']['media$group']['media$category'] as $category) { + $rss_element['value'][] = array( + 'key' => 'media:category', + 'value' => $category, + ); + } + } + if (!empty($item['video_data']['media$group']['media$keywords'])) { + $rss_element['value'][] = array( + 'key' => 'media:keywords', + 'value' => implode(', ', $item['video_data']['media$group']['media$keywords']), + ); + } + } + // Generate file hash for element. // hash_file() function used to generate file hashes // is available only in PHP versions >= 5.1.2. diff --git a/sites/all/modules/contrib/rss/views_rss_media/views_rss_media.info b/sites/all/modules/contrib/rss/views_rss_media/views_rss_media.info index b09ad173..4f2e4d47 100644 --- a/sites/all/modules/contrib/rss/views_rss_media/views_rss_media.info +++ b/sites/all/modules/contrib/rss/views_rss_media/views_rss_media.info @@ -12,9 +12,9 @@ project = "views_rss_media" datestamp = "1344474923" -; Information added by drupal.org packaging script on 2013-09-11 +; Information added by Drupal.org packaging script on 2014-10-15 version = "7.x-1.x-dev" core = "7.x" project = "views_rss_media" -datestamp = "1378900668" +datestamp = "1413385143"