diff --git a/core/modules/aggregator/aggregator.pages.inc b/core/modules/aggregator/aggregator.pages.inc index ebb561b8dc5cf196e21f137be16616702b90c5b5..7f820770fedc3250affcc3ea72071c125ced8ffb 100644 --- a/core/modules/aggregator/aggregator.pages.inc +++ b/core/modules/aggregator/aggregator.pages.inc @@ -404,12 +404,12 @@ function aggregator_page_rss() { // arg(2) is the passed cid, only select for that category. if (arg(2)) { $category = db_query('SELECT cid, title FROM {aggregator_category} WHERE cid = :cid', array(':cid' => arg(2)))->fetchObject(); - $result = db_query_range('SELECT i.*, f.title AS ftitle, f.link AS flink FROM {aggregator_category_item} c LEFT JOIN {aggregator_item} i ON c.iid = i.iid LEFT JOIN {aggregator_feed} f ON i.fid = f.fid WHERE cid = :cid ORDER BY timestamp DESC, i.iid DESC', 0, variable_get('feed_default_items', 10), array(':cid' => $category->cid)); + $result = db_query_range('SELECT i.*, f.title AS ftitle, f.link AS flink FROM {aggregator_category_item} c LEFT JOIN {aggregator_item} i ON c.iid = i.iid LEFT JOIN {aggregator_feed} f ON i.fid = f.fid WHERE cid = :cid ORDER BY timestamp DESC, i.iid DESC', 0, config('system.rss-publishing')->get('feed_default_items'), array(':cid' => $category->cid)); } // Or, get the default aggregator items. else { $category = NULL; - $result = db_query_range('SELECT i.*, f.title AS ftitle, f.link AS flink FROM {aggregator_item} i INNER JOIN {aggregator_feed} f ON i.fid = f.fid ORDER BY i.timestamp DESC, i.iid DESC', 0, variable_get('feed_default_items', 10)); + $result = db_query_range('SELECT i.*, f.title AS ftitle, f.link AS flink FROM {aggregator_item} i INNER JOIN {aggregator_feed} f ON i.fid = f.fid ORDER BY i.timestamp DESC, i.iid DESC', 0, config('system.rss-publishing')->get('feed_default_items')); } $feeds = $result->fetchAll(); @@ -435,7 +435,7 @@ function theme_aggregator_page_rss($variables) { drupal_add_http_header('Content-Type', 'application/rss+xml; charset=utf-8'); $items = ''; - $feed_length = variable_get('feed_item_length', 'fulltext'); + $feed_length = config('system.rss-publishing')->get('feed_item_length'); foreach ($feeds as $feed) { switch ($feed_length) { case 'teaser': diff --git a/core/modules/aggregator/aggregator.test b/core/modules/aggregator/aggregator.test index bd22aa6cb00b2e7d294781670cdb9f35ca3f86fa..8639389d31d6832d808fb15d7e5e1949fc58213a 100644 --- a/core/modules/aggregator/aggregator.test +++ b/core/modules/aggregator/aggregator.test @@ -83,7 +83,7 @@ class AggregatorTestCase extends WebTestBase { */ function getDefaultFeedItemCount() { // Our tests are based off of rss.xml, so let's find out how many elements should be related. - $feed_count = db_query_range('SELECT COUNT(*) FROM {node} n WHERE n.promote = 1 AND n.status = 1', 0, variable_get('feed_default_items', 10))->fetchField(); + $feed_count = db_query_range('SELECT COUNT(*) FROM {node} n WHERE n.promote = 1 AND n.status = 1', 0, config('system.rss-publishing')->get('feed_default_items'))->fetchField(); return $feed_count > 10 ? 10 : $feed_count; } @@ -907,7 +907,9 @@ class AggregatorRenderingTestCase extends AggregatorTestCase { public function testFeedPage() { // Increase the number of items published in the rss.xml feed so we have // enough articles to test paging. - variable_set('feed_default_items', 30); + $config = config('system.rss-publishing'); + $config->set('feed_default_items', 30); + $config->save(); // Create a feed with 30 items. $this->createSampleNodes(30); @@ -920,7 +922,8 @@ class AggregatorRenderingTestCase extends AggregatorTestCase { $this->assertTrue(!empty($elements), t('Individual source page contains a pager.')); // Reset the number of items in rss.xml to the default value. - variable_set('feed_default_items', 10); + $config->set('feed_default_items', 10); + $config->save(); } } diff --git a/core/modules/node/node.module b/core/modules/node/node.module index 55098302d18c33cd9040a735380e975f99141464..3c3881d8427c4a00bd92ef2a69c320d80b4b9673 100644 --- a/core/modules/node/node.module +++ b/core/modules/node/node.module @@ -2385,13 +2385,13 @@ function node_feed($nids = FALSE, $channel = array()) { ->condition('n.promote', 1) ->condition('n.status', 1) ->orderBy('n.created', 'DESC') - ->range(0, variable_get('feed_default_items', 10)) + ->range(0, config('system.rss-publishing')->get('feed_default_items')) ->addTag('node_access') ->execute() ->fetchCol(); } - $item_length = variable_get('feed_item_length', 'fulltext'); + $item_length = config('system.rss-publishing')->get('feed_item_length'); $namespaces = array('xmlns:dc' => 'http://purl.org/dc/elements/1.1/'); $teaser = ($item_length == 'teaser'); @@ -2431,7 +2431,7 @@ function node_feed($nids = FALSE, $channel = array()) { 'version' => '2.0', 'title' => variable_get('site_name', 'Drupal'), 'link' => $base_url, - 'description' => variable_get('feed_description', ''), + 'description' => config('system.rss-publishing')->get('feed_description'), 'language' => $language_content->langcode ); $channel_extras = array_diff_key($channel, $channel_defaults); diff --git a/core/modules/system/config/system.rss-publishing.xml b/core/modules/system/config/system.rss-publishing.xml new file mode 100644 index 0000000000000000000000000000000000000000..f9a78a80642b1cf6b98171b2e9a4e10703a74a91 --- /dev/null +++ b/core/modules/system/config/system.rss-publishing.xml @@ -0,0 +1,6 @@ +<?xml version="1.0"?> +<config> + <feed_description></feed_description> + <feed_default_items>10</feed_default_items> + <feed_item_length>fulltext</feed_item_length> +</config> diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc index a10e24617f66b1830b5e33c3d7cac75dddffd8c3..f3e201260803ae796ad92affd0eef475a905aca4 100644 --- a/core/modules/system/system.admin.inc +++ b/core/modules/system/system.admin.inc @@ -1886,29 +1886,45 @@ function system_image_toolkit_settings() { * @ingroup forms * @see system_settings_form() */ -function system_rss_feeds_settings() { +function system_rss_feeds_settings($form, &$form_state) { $form['feed_description'] = array( '#type' => 'textarea', '#title' => t('Feed description'), - '#default_value' => variable_get('feed_description', ''), + '#default_value' => config('system.rss-publishing')->get('feed_description'), '#description' => t('Description of your site, included in each feed.') ); $form['feed_default_items'] = array( '#type' => 'select', '#title' => t('Number of items in each feed'), - '#default_value' => variable_get('feed_default_items', 10), + '#default_value' => config('system.rss-publishing')->get('feed_default_items'), '#options' => drupal_map_assoc(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30)), '#description' => t('Default number of items to include in each feed.') ); $form['feed_item_length'] = array( '#type' => 'select', '#title' => t('Feed content'), - '#default_value' => variable_get('feed_item_length', 'fulltext'), + '#default_value' => config('system.rss-publishing')->get('feed_item_length'), '#options' => array('title' => t('Titles only'), 'teaser' => t('Titles plus teaser'), 'fulltext' => t('Full text')), '#description' => t('Global setting for the default display of content items in each feed.') ); + $form['submit'] = array('#type' => 'submit', '#value' => t('Submit')); - return system_settings_form($form); + return $form; +} + +/** + * Form builder submit handler; Handle submission for RSS feeds settings. + * + * @ingroup forms + * @see system_settings_form() + */ +function system_rss_feeds_settings_submit($form, &$form_state) { + // Set the RSS publishing parameters. + $config = config('system.rss-publishing'); + $config->set('feed_description', $form_state['values']['feed_description']); + $config->set('feed_default_items', $form_state['values']['feed_default_items']); + $config->set('feed_item_length', $form_state['values']['feed_item_length']); + $config->save(); } /** diff --git a/core/modules/system/system.install b/core/modules/system/system.install index 1e93e163fb4fbb9cced8a10cfa5adea64bd0ce68..548691c1bc6baa3986acd13e8d82319c3f65dc5e 100644 --- a/core/modules/system/system.install +++ b/core/modules/system/system.install @@ -1865,6 +1865,13 @@ function system_update_8009() { update_variables_to_config('system.cron'); } +/** + * Moves system settings from variable to config. + */ +function system_update_8010() { + update_variables_to_config('system.rss-publishing'); +} + /** * @} End of "defgroup updates-7.x-to-8.x". * The next series of updates should start at 9000. diff --git a/core/modules/taxonomy/taxonomy.pages.inc b/core/modules/taxonomy/taxonomy.pages.inc index 9673f8193654d0f041ed7a60ebaedc0af45ba28c..c84a6bd89929cf2a6bfea8dbee11e9561701f9d9 100644 --- a/core/modules/taxonomy/taxonomy.pages.inc +++ b/core/modules/taxonomy/taxonomy.pages.inc @@ -72,7 +72,7 @@ function taxonomy_term_feed(Term $term) { // Only display the description if we have a single term, to avoid clutter and confusion. // HTML will be removed from feed description. $channel['description'] = check_markup($term->description, $term->format, '', TRUE); - $nids = taxonomy_select_nodes($term->tid, FALSE, variable_get('feed_default_items', 10)); + $nids = taxonomy_select_nodes($term->tid, FALSE, config('system.rss-publishing')->get('feed_default_items')); node_feed($nids, $channel); }