diff --git a/core/includes/common.inc b/core/includes/common.inc index 0f252ca..4f78b7f 100644 --- a/core/includes/common.inc +++ b/core/includes/common.inc @@ -1273,7 +1273,8 @@ function drupal_strip_dangerous_protocols($uri) { static $allowed_protocols; if (!isset($allowed_protocols)) { - $allowed_protocols = array_flip(variable_get('filter_allowed_protocols', array('ftp', 'http', 'https', 'irc', 'mailto', 'news', 'nntp', 'rtsp', 'sftp', 'ssh', 'tel', 'telnet', 'webcal'))); + $protocols = array_flip(array('ftp', 'http', 'https', 'irc', 'mailto', 'news', 'nntp', 'rtsp', 'sftp', 'ssh', 'tel', 'telnet', 'webcal')); + $allowed_protocols = config('filter.settings')->get('allowed_protocols') ?: $protocols; } // Iteratively remove any invalid protocol found. diff --git a/core/modules/filter/config/filter.settings.yml b/core/modules/filter/config/filter.settings.yml new file mode 100644 index 0000000..c45498d --- /dev/null +++ b/core/modules/filter/config/filter.settings.yml @@ -0,0 +1,14 @@ +fallback_format: plain_text +allowed_protocols: + - http + - https + - ftp + - news + - nntp + - telnet + - mailto + - irc + - ssh + - sftp + - webcal + - rtsp diff --git a/core/modules/filter/filter.install b/core/modules/filter/filter.install index 9237ad1..ab865b0 100644 --- a/core/modules/filter/filter.install +++ b/core/modules/filter/filter.install @@ -145,5 +145,17 @@ function filter_install() { filter_format_save($plain_text_format); // Set the fallback format to plain text. - variable_set('filter_fallback_format', $plain_text_format->format); + config('filter.settings')->set('fallback_format', $plain_text_format->format)->save(); +} + +/** + * Moves filter_fallback settings from variable to config. + * + * @ingroup config_upgrade + */ +function filter_update_8000() { + update_variables_to_config('filter.settings', array( + 'filter_fallback_format' => 'fallback_format', + 'filter_allowed_protocols' => 'allowed_protocols', + )); } diff --git a/core/modules/filter/filter.module b/core/modules/filter/filter.module index 8b98bbe..0e921b3 100644 --- a/core/modules/filter/filter.module +++ b/core/modules/filter/filter.module @@ -582,7 +582,7 @@ function filter_fallback_format() { // existing (and potentially unsafe) text format on the site automatically // available to all users. Returning NULL at least guarantees that this // cannot happen. - return variable_get('filter_fallback_format'); + return config('filter.settings')->get('fallback_format'); } /** @@ -1458,7 +1458,8 @@ function _filter_url($text, $filter) { // we cannot cleanly differ between protocols here without hard-coding MAILTO, // so '//' is optional for all protocols. // @see filter_xss_bad_protocol() - $protocols = variable_get('filter_allowed_protocols', array('http', 'https', 'ftp', 'news', 'nntp', 'telnet', 'mailto', 'irc', 'ssh', 'sftp', 'webcal', 'rtsp')); + $protocol_list = array('http', 'https', 'ftp', 'news', 'nntp', 'telnet', 'mailto', 'irc', 'ssh', 'sftp', 'webcal', 'rtsp'); + $protocols = config('filter.settings')->get('allowed_protocols') ? array_flip(config('filter.settings')->get('allowed_protocols')) : $protocol_list; $protocols = implode(':(?://)?|', $protocols) . ':(?://)?'; // Prepare domain name pattern. diff --git a/core/modules/filter/lib/Drupal/filter/Tests/FilterUnitTest.php b/core/modules/filter/lib/Drupal/filter/Tests/FilterUnitTest.php index 250b583..b0e062b 100644 --- a/core/modules/filter/lib/Drupal/filter/Tests/FilterUnitTest.php +++ b/core/modules/filter/lib/Drupal/filter/Tests/FilterUnitTest.php @@ -478,8 +478,8 @@ function testUrlFilter() { 'me@me.tv' => TRUE, ), // Absolute URL protocols. - // The list to test is found in the beginning of _filter_url() at - // $protocols = variable_get('filter_allowed_protocols'... (approx line 1325). + // The list to test is found in the file + // core/modules/filter/config/filter.settings.yml ' https://example.com, ftp://ftp.example.com,