as
+ // either a descendant or sibling, and attempts to inject one can cause
+ // XSS on jQuery versions before 3.5. Since this is invalid HTML and a
+ // possible XSS attack, reject the entire string.
+ // @see https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11023
+ if ((tag === 'option' || tag === 'optgroup') && html.match(/<\/?select/i)) {
+ html = '';
+ }
+
+ // Retain jQuery's prior to 3.5 conversion of pseudo-XHTML, but for only
+ // the tags in the `selfClosingTagsToReplace` list defined above.
+ // @see https://github.com/jquery/jquery/blob/1.5/jquery.js#L5518
+ // @see https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11022
+ html = html.replace(rxhtmlTagWithoutSpaceOrAttributes, "<$1>$1>");
+ html = html.replace(rxhtmlTagWithSpaceAndMaybeAttributes, "<$1$2>$1>");
+
+ // Prior to jQuery 1.12 and 2.2, this function gets called (via code later
+ // in this file) in addition to, rather than instead of, the unsafe
+ // expansion of self-closing tags (including ones not in the list above).
+ // We can't prevent that unsafe expansion from running, so instead we
+ // check to make sure that it doesn't affect the DOM returned by the
+ // browser's parsing logic. If it does affect it, then it's vulnerable to
+ // XSS, so we reject the entire string.
+ if ( (majorVersion === 1 && minorVersion < 12) || (majorVersion === 2 && minorVersion < 2) ) {
+ var htmlRisky = html.replace(rxhtmlTag, "<$1>$2>");
+ if (htmlRisky !== html) {
+ // Even though htmlRisky and html are different strings, they might
+ // represent the same HTML structure once parsed, in which case,
+ // htmlRisky is actually safe. We can ask the browser to parse both
+ // to find out, but the browser can't parse table fragments (e.g., a
+ // root-level ""), so we need to wrap them. We just need this
+ // technique to work on all supported browsers; we don't need to
+ // copy from the specific jQuery version we're using.
+ // @see https://github.com/jquery/jquery/blob/3.5.1/dist/jquery.js#L4939
+ var wrapMap = {
+ thead: [ 1, "" ],
+ col: [ 2, "" ],
+ tr: [ 2, "" ],
+ td: [ 3, "" ],
+ };
+ wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+ wrapMap.th = wrapMap.td;
+
+ // Function to wrap HTML into something that a browser can parse.
+ // @see https://github.com/jquery/jquery/blob/3.5.1/dist/jquery.js#L5032
+ var getWrappedHtml = function (html) {
+ var wrap = wrapMap[tag];
+ if (wrap) {
+ html = wrap[1] + html + wrap[2];
+ }
+ return html;
+ };
+
+ // Function to return canonical HTML after parsing it. This parses
+ // only; it doesn't execute scripts.
+ // @see https://github.com/jquery/jquery-migrate/blob/3.3.0/src/jquery/manipulation.js#L5
+ var getParsedHtml = function (html) {
+ var doc = window.document.implementation.createHTMLDocument( "" );
+ doc.body.innerHTML = html;
+ return doc.body ? doc.body.innerHTML : '';
+ };
+
+ // If the browser couldn't parse either one successfully, or if
+ // htmlRisky parses differently than html, then html is vulnerable,
+ // so reject it.
+ var htmlParsed = getParsedHtml(getWrappedHtml(html));
+ var htmlRiskyParsed = getParsedHtml(getWrappedHtml(htmlRisky));
+ if (htmlRiskyParsed === '' || htmlParsed === '' || (htmlRiskyParsed !== htmlParsed)) {
+ html = '';
+ }
+ }
+ }
+
+ return html;
+ }
+ });
+
+ // Prior to jQuery 1.12 and 2.2, jQuery.clean(), jQuery.buildFragment(), and
+ // jQuery.fn.html() did not call jQuery.htmlPrefilter(), so we add that.
+ if ( (majorVersion === 1 && minorVersion < 12) || (majorVersion === 2 && minorVersion < 2) ) {
+ // Filter the HTML coming into jQuery.fn.html().
+ var fnOriginalHtml = jQuery.fn.html;
+ jQuery.fn.extend({
+ // @see https://github.com/jquery/jquery/blob/1.5/jquery.js#L5147
+ html: function (value) {
+ if (typeof value === "string") {
+ value = jQuery.htmlPrefilter(value);
+ }
+ // .html() can be called as a setter (with an argument) or as a getter
+ // (without an argument), so invoke fnOriginalHtml() the same way that
+ // we were invoked.
+ return fnOriginalHtml.apply(this, arguments.length ? [value] : []);
+ }
+ });
+
+ // The regular expression that jQuery uses to determine if a string is HTML.
+ // Used by both clean() and buildFragment().
+ // @see https://github.com/jquery/jquery/blob/1.5/jquery.js#L4960
+ var rhtml = /<|?\w+;/;
+
+ // Filter HTML coming into:
+ // - jQuery.clean() for versions prior to 1.9.
+ // - jQuery.buildFragment() for 1.9 and above.
+ //
+ // The looping constructs in the two functions might be essentially
+ // identical, but they're each expressed here in the way that most closely
+ // matches their original expression in jQuery, so that we filter all of
+ // the items and only the items that jQuery will treat as HTML strings.
+ if (majorVersion === 1 && minorVersion < 9) {
+ var originalClean = jQuery.clean;
+ jQuery.extend({
+ // @see https://github.com/jquery/jquery/blob/1.5/jquery.js#L5493
+ 'clean': function (elems, context, fragment, scripts) {
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( typeof elem === "string" && rhtml.test( elem ) ) {
+ elems[i] = elem = jQuery.htmlPrefilter(elem);
+ }
+ }
+ return originalClean.call(this, elems, context, fragment, scripts);
+ }
+ });
+ }
+ else {
+ var originalBuildFragment = jQuery.buildFragment;
+ jQuery.extend({
+ // @see https://github.com/jquery/jquery/blob/1.9.0/jquery.js#L6419
+ 'buildFragment': function (elems, context, scripts, selection) {
+ var l = elems.length;
+ for ( var i = 0; i < l; i++ ) {
+ var elem = elems[i];
+ if (elem || elem === 0) {
+ if ( jQuery.type( elem ) !== "object" && rhtml.test( elem ) ) {
+ elems[i] = elem = jQuery.htmlPrefilter(elem);
+ }
+ }
+ }
+ return originalBuildFragment.call(this, elems, context, scripts, selection);
+ }
+ });
+ }
+ }
+
+})(jQuery);
diff --git a/misc/typo3/phar-stream-wrapper/README.md b/misc/typo3/phar-stream-wrapper/README.md
index 179bb6fd..14d1ffd1 100644
--- a/misc/typo3/phar-stream-wrapper/README.md
+++ b/misc/typo3/phar-stream-wrapper/README.md
@@ -1,5 +1,6 @@
[](https://scrutinizer-ci.com/g/TYPO3/phar-stream-wrapper/?branch=v2)
[](https://travis-ci.org/TYPO3/phar-stream-wrapper)
+[](https://ci.appveyor.com/project/ohader/phar-stream-wrapper)
# PHP Phar Stream Wrapper
@@ -21,9 +22,11 @@ and has been addressed concerning the specific attack vector and for this generi
`PharStreamWrapper` in TYPO3 versions 7.6.30 LTS, 8.7.17 LTS and 9.3.1 on 12th
July 2018.
-* https://typo3.org/security/advisory/typo3-core-sa-2018-002/
* https://blog.secarma.co.uk/labs/near-phar-dangerous-unserialization-wherever-you-are
* https://youtu.be/GePBmsNJw6Y
+* https://typo3.org/security/advisory/typo3-psa-2018-001/
+* https://typo3.org/security/advisory/typo3-psa-2019-007/
+* https://typo3.org/security/advisory/typo3-psa-2019-008/
## License
diff --git a/misc/typo3/phar-stream-wrapper/composer.json b/misc/typo3/phar-stream-wrapper/composer.json
index 8c224118..e36b09e7 100644
--- a/misc/typo3/phar-stream-wrapper/composer.json
+++ b/misc/typo3/phar-stream-wrapper/composer.json
@@ -7,7 +7,6 @@
"keywords": ["php", "phar", "stream-wrapper", "security"],
"require": {
"php": "^5.3.3|^7.0",
- "ext-fileinfo": "*",
"ext-json": "*",
"brumann/polyfill-unserialize": "^1.0"
},
@@ -15,6 +14,9 @@
"ext-xdebug": "*",
"phpunit/phpunit": "^4.8.36"
},
+ "suggest": {
+ "ext-fileinfo": "For PHP builtin file type guessing, otherwise uses internal processing"
+ },
"autoload": {
"psr-4": {
"TYPO3\\PharStreamWrapper\\": "src/"
diff --git a/misc/typo3/phar-stream-wrapper/src/Helper.php b/misc/typo3/phar-stream-wrapper/src/Helper.php
index c074ddea..cdba65ca 100644
--- a/misc/typo3/phar-stream-wrapper/src/Helper.php
+++ b/misc/typo3/phar-stream-wrapper/src/Helper.php
@@ -52,7 +52,7 @@ class Helper
while (count($parts)) {
$currentPath = implode('/', $parts);
- if (@is_file($currentPath)) {
+ if (@is_file($currentPath) && realpath($currentPath) !== false) {
return $currentPath;
}
array_pop($parts);
@@ -106,7 +106,7 @@ class Helper
* @param string $path File path to process
* @return string
*/
- private static function normalizeWindowsPath($path)
+ public static function normalizeWindowsPath($path)
{
return str_replace('\\', '/', $path);
}
diff --git a/misc/typo3/phar-stream-wrapper/src/Phar/Reader.php b/misc/typo3/phar-stream-wrapper/src/Phar/Reader.php
index 32e516be..6cc124cf 100644
--- a/misc/typo3/phar-stream-wrapper/src/Phar/Reader.php
+++ b/misc/typo3/phar-stream-wrapper/src/Phar/Reader.php
@@ -19,6 +19,11 @@ class Reader
private $fileName;
/**
+ * Mime-type in order to use zlib, bzip2 or no compression.
+ * In case ext-fileinfo is not present only the relevant types
+ * 'application/x-gzip' and 'application/x-bzip2' are assigned
+ * to this class property.
+ *
* @var string
*/
private $fileType;
@@ -139,7 +144,7 @@ class Reader
*/
private function resolveStream()
{
- if ($this->fileType === 'application/x-gzip') {
+ if ($this->fileType === 'application/x-gzip' || $this->fileType === 'application/gzip') {
return 'compress.zlib://';
} elseif ($this->fileType === 'application/x-bzip2') {
return 'compress.bzip2://';
@@ -152,8 +157,37 @@ class Reader
*/
private function determineFileType()
{
- $fileInfo = new \finfo();
- return $fileInfo->file($this->fileName, FILEINFO_MIME_TYPE);
+ if (class_exists('\\finfo')) {
+ $fileInfo = new \finfo();
+ return $fileInfo->file($this->fileName, FILEINFO_MIME_TYPE);
+ }
+ return $this->determineFileTypeByHeader();
+ }
+
+ /**
+ * In case ext-fileinfo is not present only the relevant types
+ * 'application/x-gzip' and 'application/x-bzip2' are resolved.
+ *
+ * @return string
+ */
+ private function determineFileTypeByHeader()
+ {
+ $resource = fopen($this->fileName, 'r');
+ if (!is_resource($resource)) {
+ throw new ReaderException(
+ sprintf('Resource %s could not be opened', $this->fileName),
+ 1557753055
+ );
+ }
+ $header = fgets($resource, 4);
+ fclose($resource);
+ $mimeType = '';
+ if (strpos($header, "\x42\x5a\x68") === 0) {
+ $mimeType = 'application/x-bzip2';
+ } elseif (strpos($header, "\x1f\x8b") === 0) {
+ $mimeType = 'application/x-gzip';
+ }
+ return $mimeType;
}
/**
diff --git a/misc/typo3/phar-stream-wrapper/src/PharStreamWrapper.php b/misc/typo3/phar-stream-wrapper/src/PharStreamWrapper.php
index acd5656f..d704d26a 100644
--- a/misc/typo3/phar-stream-wrapper/src/PharStreamWrapper.php
+++ b/misc/typo3/phar-stream-wrapper/src/PharStreamWrapper.php
@@ -476,7 +476,7 @@ class PharStreamWrapper
{
$arguments = func_get_args();
array_shift($arguments);
- $silentExecution = $functionName{0} === '@';
+ $silentExecution = $functionName[0] === '@';
$functionName = ltrim($functionName, '@');
$this->restoreInternalSteamWrapper();
diff --git a/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocationResolver.php b/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocationResolver.php
index 80b86d3d..1dc42e85 100644
--- a/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocationResolver.php
+++ b/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocationResolver.php
@@ -14,6 +14,7 @@ namespace TYPO3\PharStreamWrapper\Resolver;
use TYPO3\PharStreamWrapper\Helper;
use TYPO3\PharStreamWrapper\Manager;
use TYPO3\PharStreamWrapper\Phar\Reader;
+use TYPO3\PharStreamWrapper\Phar\ReaderException;
use TYPO3\PharStreamWrapper\Resolvable;
class PharInvocationResolver implements Resolvable
@@ -59,7 +60,7 @@ class PharInvocationResolver implements Resolvable
{
$hasPharPrefix = Helper::hasPharPrefix($path);
if ($flags === null) {
- $flags = static::RESOLVE_REALPATH | static::RESOLVE_ALIAS | static::ASSERT_INTERNAL_INVOCATION;
+ $flags = static::RESOLVE_REALPATH | static::RESOLVE_ALIAS;
}
if ($hasPharPrefix && $flags & static::RESOLVE_ALIAS) {
@@ -147,9 +148,14 @@ class PharInvocationResolver implements Resolvable
}
// ensure the possible alias name (how we have been called initially) matches
// the resolved alias name that was retrieved by the current possible base name
- $reader = new Reader($currentBaseName);
- $currentAlias = $reader->resolveContainer()->getAlias();
- if ($currentAlias !== $possibleAlias) {
+ try {
+ $reader = new Reader($currentBaseName);
+ $currentAlias = $reader->resolveContainer()->getAlias();
+ } catch (ReaderException $exception) {
+ // most probably that was not a Phar file
+ continue;
+ }
+ if (empty($currentAlias) || $currentAlias !== $possibleAlias) {
continue;
}
$this->addBaseName($currentBaseName);
@@ -215,7 +221,9 @@ class PharInvocationResolver implements Resolvable
if (isset($this->baseNames[$baseName])) {
return;
}
- $this->baseNames[$baseName] = realpath($baseName);
+ $this->baseNames[$baseName] = Helper::normalizeWindowsPath(
+ realpath($baseName)
+ );
}
/**
diff --git a/modules/aggregator/aggregator.info b/modules/aggregator/aggregator.info
index de459baa..ec036940 100644
--- a/modules/aggregator/aggregator.info
+++ b/modules/aggregator/aggregator.info
@@ -7,7 +7,7 @@ files[] = aggregator.test
configure = admin/config/services/aggregator/settings
stylesheets[all][] = aggregator.css
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/aggregator/tests/aggregator_test.info b/modules/aggregator/tests/aggregator_test.info
index f9004509..b5f6259c 100644
--- a/modules/aggregator/tests/aggregator_test.info
+++ b/modules/aggregator/tests/aggregator_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/block/block.info b/modules/block/block.info
index 18c279b4..037d4046 100644
--- a/modules/block/block.info
+++ b/modules/block/block.info
@@ -6,7 +6,7 @@ core = 7.x
files[] = block.test
configure = admin/structure/block
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/block/block.module b/modules/block/block.module
index d68ea9e7..a482d261 100644
--- a/modules/block/block.module
+++ b/modules/block/block.module
@@ -263,7 +263,7 @@ function block_page_build(&$page) {
$all_regions = system_region_list($theme);
$item = menu_get_item();
- if ($item['path'] != 'admin/structure/block/demo/' . $theme) {
+ if ($item === FALSE || $item['path'] != 'admin/structure/block/demo/' . $theme) {
// Load all region content assigned via blocks.
foreach (array_keys($all_regions) as $region) {
// Assign blocks to region.
@@ -283,7 +283,6 @@ function block_page_build(&$page) {
}
else {
// Append region description if we are rendering the regions demo page.
- $item = menu_get_item();
if ($item['path'] == 'admin/structure/block/demo/' . $theme) {
foreach (system_region_list($theme, REGIONS_VISIBLE, FALSE) as $region) {
$description = '' . $all_regions[$region] . '
';
diff --git a/modules/block/tests/block_test.info b/modules/block/tests/block_test.info
index db4420db..da7ab998 100644
--- a/modules/block/tests/block_test.info
+++ b/modules/block/tests/block_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/block/tests/themes/block_test_theme/block_test_theme.info b/modules/block/tests/themes/block_test_theme/block_test_theme.info
index f563cb4f..f415eeef 100644
--- a/modules/block/tests/themes/block_test_theme/block_test_theme.info
+++ b/modules/block/tests/themes/block_test_theme/block_test_theme.info
@@ -13,7 +13,7 @@ regions[footer] = Footer
regions[highlighted] = Highlighted
regions[help] = Help
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/blog/blog.info b/modules/blog/blog.info
index 38e2b931..0d023026 100644
--- a/modules/blog/blog.info
+++ b/modules/blog/blog.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
files[] = blog.test
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/book/book.info b/modules/book/book.info
index 584adb2c..3ab12668 100644
--- a/modules/book/book.info
+++ b/modules/book/book.info
@@ -7,7 +7,7 @@ files[] = book.test
configure = admin/content/book/settings
stylesheets[all][] = book.css
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/color/color.info b/modules/color/color.info
index e714ca2b..a7710b42 100644
--- a/modules/color/color.info
+++ b/modules/color/color.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
files[] = color.test
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/color/color.module b/modules/color/color.module
index 5b441aab..45acd788 100644
--- a/modules/color/color.module
+++ b/modules/color/color.module
@@ -734,8 +734,9 @@ function _color_blend($img, $hex1, $hex2, $alpha) {
* Converts a hex color into an RGB triplet.
*/
function _color_unpack($hex, $normalize = FALSE) {
- if (strlen($hex) == 4) {
- $hex = $hex[1] . $hex[1] . $hex[2] . $hex[2] . $hex[3] . $hex[3];
+ $hex = substr($hex, 1);
+ if (strlen($hex) == 3) {
+ $hex = $hex[0] . $hex[0] . $hex[1] . $hex[1] . $hex[2] . $hex[2];
}
$c = hexdec($hex);
for ($i = 16; $i >= 0; $i -= 8) {
diff --git a/modules/comment/comment.info b/modules/comment/comment.info
index ee18dcdd..80a18eeb 100644
--- a/modules/comment/comment.info
+++ b/modules/comment/comment.info
@@ -9,7 +9,7 @@ files[] = comment.test
configure = admin/content/comment
stylesheets[all][] = comment.css
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/comment/comment.install b/modules/comment/comment.install
index e4da58f3..9f88c0a0 100644
--- a/modules/comment/comment.install
+++ b/modules/comment/comment.install
@@ -9,9 +9,6 @@
* Implements hook_uninstall().
*/
function comment_uninstall() {
- // Delete comment_body field.
- field_delete_field('comment_body');
-
// Remove variables.
variable_del('comment_block_count');
$node_types = array_keys(node_type_get_types());
diff --git a/modules/comment/comment.test b/modules/comment/comment.test
index e087a717..b70fa26c 100644
--- a/modules/comment/comment.test
+++ b/modules/comment/comment.test
@@ -6,6 +6,7 @@
*/
class CommentHelperCase extends DrupalWebTestCase {
+ protected $super_user;
protected $admin_user;
protected $web_user;
protected $node;
@@ -19,6 +20,7 @@ class CommentHelperCase extends DrupalWebTestCase {
parent::setUp($modules);
// Create users and test node.
+ $this->super_user = $this->drupalCreateUser(array('access administration pages', 'administer modules'));
$this->admin_user = $this->drupalCreateUser(array('administer content types', 'administer comments', 'administer blocks', 'administer actions', 'administer fields'));
$this->web_user = $this->drupalCreateUser(array('access comments', 'post comments', 'create article content', 'edit own comments'));
$this->node = $this->drupalCreateNode(array('type' => 'article', 'promote' => 1, 'uid' => $this->web_user->uid));
@@ -2264,3 +2266,56 @@ class CommentNodeChangesTestCase extends CommentHelperCase {
$this->assertFalse(comment_load($comment->id), 'The comment could not be loaded after the node was deleted.');
}
}
+
+/**
+ * Tests uninstalling the comment module.
+ */
+class CommentUninstallTestCase extends CommentHelperCase {
+
+ public static function getInfo() {
+ return array(
+ 'name' => 'Comment module uninstallation',
+ 'description' => 'Tests that the comments module can be properly uninstalled.',
+ 'group' => 'Comment',
+ );
+ }
+
+ function testCommentUninstall() {
+ $this->drupalLogin($this->super_user);
+
+ // Disable comment module.
+ $edit['modules[Core][comment][enable]'] = FALSE;
+ $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+ $this->assertText(t('The configuration options have been saved.'), 'Comment module was disabled.');
+
+ // Uninstall comment module.
+ $edit = array('uninstall[comment]' => 'comment');
+ $this->drupalPost('admin/modules/uninstall', $edit, t('Uninstall'));
+ $this->drupalPost(NULL, NULL, t('Uninstall'));
+ $this->assertText(t('The selected modules have been uninstalled.'), 'Comment module was uninstalled.');
+
+ // Run cron and clear field cache so that comment fields and instances
+ // marked for deletion are actually removed.
+ $this->cronRun();
+ field_cache_clear();
+
+ // Verify that comment fields have been removed.
+ $all_fields = array_keys(field_info_field_map());
+ $this->assertFalse(in_array('comment_body', $all_fields), 'Comment fields were removed by uninstall.');
+
+ // Verify that comment field instances have been removed (or at least marked
+ // for deletion).
+ // N.B. field_read_instances does an INNER JOIN on field_config so if the
+ // comment_body row has been removed successfully from there no instances
+ // will be returned, but that does not guarantee that no rows are left over
+ // in the field_config_instance table.
+ $count = db_select('field_config_instance', 'fci')
+ ->condition('entity_type', 'comment')
+ ->condition('field_name', 'comment_body')
+ ->condition('deleted', 0)
+ ->countQuery()
+ ->execute()
+ ->fetchField();
+ $this->assertTrue($count == 0, 'Comment field instances were removed by uninstall.');
+ }
+}
diff --git a/modules/contact/contact.info b/modules/contact/contact.info
index be2d5c42..dd5aa77d 100644
--- a/modules/contact/contact.info
+++ b/modules/contact/contact.info
@@ -6,7 +6,7 @@ core = 7.x
files[] = contact.test
configure = admin/structure/contact
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/contextual/contextual.info b/modules/contextual/contextual.info
index fe8bc914..c45fa0fa 100644
--- a/modules/contextual/contextual.info
+++ b/modules/contextual/contextual.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
files[] = contextual.test
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/dashboard/dashboard.info b/modules/dashboard/dashboard.info
index 56ebca14..10f0d0ac 100644
--- a/modules/dashboard/dashboard.info
+++ b/modules/dashboard/dashboard.info
@@ -7,7 +7,7 @@ files[] = dashboard.test
dependencies[] = block
configure = admin/dashboard/customize
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/dblog/dblog.info b/modules/dblog/dblog.info
index 80b9229d..4f19265c 100644
--- a/modules/dblog/dblog.info
+++ b/modules/dblog/dblog.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
files[] = dblog.test
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/field/field.info b/modules/field/field.info
index 606657db..9baa4cf7 100644
--- a/modules/field/field.info
+++ b/modules/field/field.info
@@ -11,7 +11,7 @@ dependencies[] = field_sql_storage
required = TRUE
stylesheets[all][] = theme/field.css
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/field/modules/field_sql_storage/field_sql_storage.info b/modules/field/modules/field_sql_storage/field_sql_storage.info
index ed29e049..9b2bac33 100644
--- a/modules/field/modules/field_sql_storage/field_sql_storage.info
+++ b/modules/field/modules/field_sql_storage/field_sql_storage.info
@@ -7,7 +7,7 @@ dependencies[] = field
files[] = field_sql_storage.test
required = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/field/modules/list/list.info b/modules/field/modules/list/list.info
index 86f684b5..933cff7b 100644
--- a/modules/field/modules/list/list.info
+++ b/modules/field/modules/list/list.info
@@ -7,7 +7,7 @@ dependencies[] = field
dependencies[] = options
files[] = tests/list.test
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/field/modules/list/tests/list_test.info b/modules/field/modules/list/tests/list_test.info
index 856b3146..539625b4 100644
--- a/modules/field/modules/list/tests/list_test.info
+++ b/modules/field/modules/list/tests/list_test.info
@@ -5,7 +5,7 @@ package = Testing
version = VERSION
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/field/modules/number/number.info b/modules/field/modules/number/number.info
index a7db625e..32f24e11 100644
--- a/modules/field/modules/number/number.info
+++ b/modules/field/modules/number/number.info
@@ -6,7 +6,7 @@ core = 7.x
dependencies[] = field
files[] = number.test
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/field/modules/number/number.test b/modules/field/modules/number/number.test
index db225855..f1b2b7ec 100644
--- a/modules/field/modules/number/number.test
+++ b/modules/field/modules/number/number.test
@@ -174,7 +174,7 @@ class NumberFieldTestCase extends DrupalWebTestCase {
),
'display' => array(
'default' => array(
- 'type' => 'number_float',
+ 'type' => 'number_decimal',
),
),
);
diff --git a/modules/field/modules/options/options.info b/modules/field/modules/options/options.info
index 563ae630..39ef6c92 100644
--- a/modules/field/modules/options/options.info
+++ b/modules/field/modules/options/options.info
@@ -6,7 +6,7 @@ core = 7.x
dependencies[] = field
files[] = options.test
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/field/modules/text/text.info b/modules/field/modules/text/text.info
index 500d5136..72f6db90 100644
--- a/modules/field/modules/text/text.info
+++ b/modules/field/modules/text/text.info
@@ -7,7 +7,7 @@ dependencies[] = field
files[] = text.test
required = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/field/tests/field_test.info b/modules/field/tests/field_test.info
index f2f5ce18..54d961c5 100644
--- a/modules/field/tests/field_test.info
+++ b/modules/field/tests/field_test.info
@@ -6,7 +6,7 @@ files[] = field_test.entity.inc
version = VERSION
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/field/tests/field_test.storage.inc b/modules/field/tests/field_test.storage.inc
index a26af176..03eae4a6 100644
--- a/modules/field/tests/field_test.storage.inc
+++ b/modules/field/tests/field_test.storage.inc
@@ -455,13 +455,13 @@ function field_test_field_attach_rename_bundle($bundle_old, $bundle_new) {
function field_test_field_attach_delete_bundle($entity_type, $bundle, $instances) {
$data = _field_test_storage_data();
- foreach ($instances as $field_name => $instance) {
- $field = field_info_field($field_name);
+ foreach ($instances as $instance) {
+ $field = field_info_field_by_id($instance['field_id']);
if ($field['storage']['type'] == 'field_test_storage') {
$field_data = &$data[$field['id']];
foreach (array('current', 'revisions') as $sub_table) {
foreach ($field_data[$sub_table] as &$row) {
- if ($row->bundle == $bundle_old) {
+ if ($row->bundle == $bundle) {
$row->deleted = TRUE;
}
}
diff --git a/modules/field_ui/field_ui.admin.inc b/modules/field_ui/field_ui.admin.inc
index 7d09d6f8..1bdaa45d 100644
--- a/modules/field_ui/field_ui.admin.inc
+++ b/modules/field_ui/field_ui.admin.inc
@@ -1026,6 +1026,10 @@ function field_ui_display_overview_form($form, &$form_state, $entity_type, $bund
$instance['display'][$view_mode]['type'] = $formatter_type;
$formatter = field_info_formatter_types($formatter_type);
+ // For hidden fields, $formatter will be NULL, but we expect an array later.
+ // To maintain BC, but avoid PHP 7.4 Notices, ensure $formatter is an array
+ // with a 'module' element.
+ $formatter['module'] = isset($formatter['module']) ? $formatter['module'] : '';
$instance['display'][$view_mode]['module'] = $formatter['module'];
$instance['display'][$view_mode]['settings'] = $settings;
diff --git a/modules/field_ui/field_ui.info b/modules/field_ui/field_ui.info
index eac21698..6e6e0ae0 100644
--- a/modules/field_ui/field_ui.info
+++ b/modules/field_ui/field_ui.info
@@ -6,7 +6,7 @@ core = 7.x
dependencies[] = field
files[] = field_ui.test
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/field_ui/field_ui.module b/modules/field_ui/field_ui.module
index 3b5f28a0..f1786270 100644
--- a/modules/field_ui/field_ui.module
+++ b/modules/field_ui/field_ui.module
@@ -265,6 +265,12 @@ function field_ui_menu_title($instance) {
* Menu access callback for the 'view mode display settings' pages.
*/
function _field_ui_view_mode_menu_access($entity_type, $bundle, $view_mode, $access_callback) {
+ // It's good practice to call func_get_args() at the beginning of a function
+ // to avoid problems with function parameters being modified later. The
+ // behavior of func_get_args() changed in PHP7.
+ // @see https://www.php.net/manual/en/migration70.incompatible.php#migration70.incompatible.other.func-parameter-modified
+ $all_args = func_get_args();
+
// First, determine visibility according to the 'use custom display'
// setting for the view mode.
$bundle = field_extract_bundle($entity_type, $bundle);
@@ -275,7 +281,6 @@ function _field_ui_view_mode_menu_access($entity_type, $bundle, $view_mode, $acc
// part of _menu_check_access().
if ($visibility) {
// Grab the variable 'access arguments' part.
- $all_args = func_get_args();
$args = array_slice($all_args, 4);
$callback = empty($access_callback) ? 0 : trim($access_callback);
if (is_numeric($callback)) {
diff --git a/modules/file/file.info b/modules/file/file.info
index 05b5a3e2..00443c27 100644
--- a/modules/file/file.info
+++ b/modules/file/file.info
@@ -6,7 +6,7 @@ core = 7.x
dependencies[] = field
files[] = tests/file.test
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/file/tests/file.test b/modules/file/tests/file.test
index 849451a5..c8264349 100644
--- a/modules/file/tests/file.test
+++ b/modules/file/tests/file.test
@@ -409,7 +409,7 @@ class FileManagedFileElementTestCase extends FileFieldTestCase {
'form_token' => 'invalid token',
);
$this->drupalPost($path, $edit, t('Save'));
- $this->assertText('The form has become outdated. Copy any unsaved work in the form below');
+ $this->assertText('The form has become outdated.');
$last_fid = $this->getLastFileId();
$this->assertEqual($last_fid_prior, $last_fid, 'File was not saved when uploaded with an invalid form token.');
diff --git a/modules/file/tests/file_module_test.info b/modules/file/tests/file_module_test.info
index 06eea34b..91cabbf0 100644
--- a/modules/file/tests/file_module_test.info
+++ b/modules/file/tests/file_module_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/filter/filter.api.php b/modules/filter/filter.api.php
index 2901eb95..3b0830e7 100644
--- a/modules/filter/filter.api.php
+++ b/modules/filter/filter.api.php
@@ -202,7 +202,7 @@ function callback_filter_settings($form, &$form_state, $filter, $format, $defaul
*/
function callback_filter_prepare($text, $filter, $format, $langcode, $cache, $cache_id) {
// Escape and
tags.
- $text = preg_replace('|(.+?)
|se', "[codefilter_code]$1[/codefilter_code]", $text);
+ $text = preg_replace('|(.+?)
|s', "[codefilter_code]$1[/codefilter_code]", $text);
return $text;
}
@@ -234,7 +234,7 @@ function callback_filter_prepare($text, $filter, $format, $langcode, $cache, $ca
* @ingroup callbacks
*/
function callback_filter_process($text, $filter, $format, $langcode, $cache, $cache_id) {
- $text = preg_replace('|\[codefilter_code\](.+?)\[/codefilter_code\]|se', "$1 ", $text);
+ $text = preg_replace('|\[codefilter_code\](.+?)\[/codefilter_code\]|s', "$1 ", $text);
return $text;
}
diff --git a/modules/filter/filter.info b/modules/filter/filter.info
index 368dda97..e3d5033d 100644
--- a/modules/filter/filter.info
+++ b/modules/filter/filter.info
@@ -7,7 +7,7 @@ files[] = filter.test
required = TRUE
configure = admin/config/content/formats
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/forum/forum.info b/modules/forum/forum.info
index 6cd612d1..5e20d776 100644
--- a/modules/forum/forum.info
+++ b/modules/forum/forum.info
@@ -9,7 +9,7 @@ files[] = forum.test
configure = admin/structure/forum
stylesheets[all][] = forum.css
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/forum/forum.module b/modules/forum/forum.module
index 1224418a..0baddd4e 100644
--- a/modules/forum/forum.module
+++ b/modules/forum/forum.module
@@ -922,7 +922,8 @@ function forum_get_topics($tid, $sortby, $forum_per_page) {
);
$order = _forum_get_topic_order($sortby);
- for ($i = 0; $i < count($forum_topic_list_header); $i++) {
+ // Skip element with index 0 which is NULL.
+ for ($i = 1; $i < count($forum_topic_list_header); $i++) {
if ($forum_topic_list_header[$i]['field'] == $order['field']) {
$forum_topic_list_header[$i]['sort'] = $order['sort'];
}
diff --git a/modules/help/help.info b/modules/help/help.info
index 51140175..eedaaea6 100644
--- a/modules/help/help.info
+++ b/modules/help/help.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
files[] = help.test
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/image/image.info b/modules/image/image.info
index 68ca573d..0f2dd92f 100644
--- a/modules/image/image.info
+++ b/modules/image/image.info
@@ -7,7 +7,7 @@ dependencies[] = file
files[] = image.test
configure = admin/config/media/image-styles
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/image/tests/image_module_test.info b/modules/image/tests/image_module_test.info
index e2e35129..5f13a4b3 100644
--- a/modules/image/tests/image_module_test.info
+++ b/modules/image/tests/image_module_test.info
@@ -6,7 +6,7 @@ core = 7.x
files[] = image_module_test.module
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/locale/locale.info b/modules/locale/locale.info
index d8164288..e2cd1d87 100644
--- a/modules/locale/locale.info
+++ b/modules/locale/locale.info
@@ -6,7 +6,7 @@ core = 7.x
files[] = locale.test
configure = admin/config/regional/language
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/locale/tests/locale_test.info b/modules/locale/tests/locale_test.info
index 0c3ca000..a0fe2c97 100644
--- a/modules/locale/tests/locale_test.info
+++ b/modules/locale/tests/locale_test.info
@@ -5,7 +5,7 @@ package = Testing
version = VERSION
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/menu/menu.info b/modules/menu/menu.info
index b29b3e49..71b169d5 100644
--- a/modules/menu/menu.info
+++ b/modules/menu/menu.info
@@ -6,7 +6,7 @@ core = 7.x
files[] = menu.test
configure = admin/structure/menu
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/node/node.info b/modules/node/node.info
index b14d7ee0..d6e67a86 100644
--- a/modules/node/node.info
+++ b/modules/node/node.info
@@ -9,7 +9,7 @@ required = TRUE
configure = admin/structure/types
stylesheets[all][] = node.css
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/node/tests/node_access_test.info b/modules/node/tests/node_access_test.info
index a1207ad4..a7e49c37 100644
--- a/modules/node/tests/node_access_test.info
+++ b/modules/node/tests/node_access_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/node/tests/node_test.info b/modules/node/tests/node_test.info
index cc6dbf30..20eeb6ff 100644
--- a/modules/node/tests/node_test.info
+++ b/modules/node/tests/node_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/node/tests/node_test_exception.info b/modules/node/tests/node_test_exception.info
index d73f8e99..ca9abb7a 100644
--- a/modules/node/tests/node_test_exception.info
+++ b/modules/node/tests/node_test_exception.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/openid/openid.info b/modules/openid/openid.info
index eab6aee7..52ca85f1 100644
--- a/modules/openid/openid.info
+++ b/modules/openid/openid.info
@@ -5,7 +5,7 @@ package = Core
core = 7.x
files[] = openid.test
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/openid/tests/openid_test.info b/modules/openid/tests/openid_test.info
index a7c89106..b9fddd56 100644
--- a/modules/openid/tests/openid_test.info
+++ b/modules/openid/tests/openid_test.info
@@ -6,7 +6,7 @@ core = 7.x
dependencies[] = openid
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/overlay/overlay.info b/modules/overlay/overlay.info
index 994c78d4..a9bfbe39 100644
--- a/modules/overlay/overlay.info
+++ b/modules/overlay/overlay.info
@@ -4,7 +4,7 @@ package = Core
version = VERSION
core = 7.x
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/path/path.info b/modules/path/path.info
index 55044084..f383134a 100644
--- a/modules/path/path.info
+++ b/modules/path/path.info
@@ -6,7 +6,7 @@ core = 7.x
files[] = path.test
configure = admin/config/search/path
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/php/php.info b/modules/php/php.info
index 6077e1f9..ba95d9db 100644
--- a/modules/php/php.info
+++ b/modules/php/php.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
files[] = php.test
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/poll/poll.info b/modules/poll/poll.info
index efaab5f9..c9bfe2d5 100644
--- a/modules/poll/poll.info
+++ b/modules/poll/poll.info
@@ -6,7 +6,7 @@ core = 7.x
files[] = poll.test
stylesheets[all][] = poll.css
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/profile/profile.info b/modules/profile/profile.info
index 03e376ea..68dfa56f 100644
--- a/modules/profile/profile.info
+++ b/modules/profile/profile.info
@@ -11,7 +11,7 @@ configure = admin/config/people/profile
; See user_system_info_alter().
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/rdf/rdf.info b/modules/rdf/rdf.info
index 563ace4a..98803474 100644
--- a/modules/rdf/rdf.info
+++ b/modules/rdf/rdf.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
files[] = rdf.test
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/rdf/tests/rdf_test.info b/modules/rdf/tests/rdf_test.info
index 110d07c2..e42dd057 100644
--- a/modules/rdf/tests/rdf_test.info
+++ b/modules/rdf/tests/rdf_test.info
@@ -6,7 +6,7 @@ core = 7.x
hidden = TRUE
dependencies[] = blog
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/search/search.extender.inc b/modules/search/search.extender.inc
index 40742569..a9abf0d8 100644
--- a/modules/search/search.extender.inc
+++ b/modules/search/search.extender.inc
@@ -219,7 +219,7 @@ class SearchQuery extends SelectQueryExtender {
}
$phrase = FALSE;
// Strip off phrase quotes.
- if ($match[2]{0} == '"') {
+ if ($match[2][0] == '"') {
$match[2] = substr($match[2], 1, -1);
$phrase = TRUE;
$this->simple = FALSE;
diff --git a/modules/search/search.info b/modules/search/search.info
index a318888e..51e33ba3 100644
--- a/modules/search/search.info
+++ b/modules/search/search.info
@@ -8,7 +8,7 @@ files[] = search.test
configure = admin/config/search/settings
stylesheets[all][] = search.css
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/search/search.module b/modules/search/search.module
index 7542f989..7d4db0b4 100644
--- a/modules/search/search.module
+++ b/modules/search/search.module
@@ -1172,7 +1172,7 @@ function search_excerpt($keys, $text) {
}
else {
$info = search_simplify_excerpt_match($key, $text, $included[$key], $boundary);
- if ($info['where']) {
+ if (isset($info['where'])) {
$p = $info['where'];
if ($info['keyword']) {
$foundkeys[] = $info['keyword'];
diff --git a/modules/search/tests/search_embedded_form.info b/modules/search/tests/search_embedded_form.info
index 3e82a3ce..ee220bcc 100644
--- a/modules/search/tests/search_embedded_form.info
+++ b/modules/search/tests/search_embedded_form.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/search/tests/search_extra_type.info b/modules/search/tests/search_extra_type.info
index 6bd12ec0..63bf37f5 100644
--- a/modules/search/tests/search_extra_type.info
+++ b/modules/search/tests/search_extra_type.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/search/tests/search_node_tags.info b/modules/search/tests/search_node_tags.info
index 3bebac2b..582eed19 100644
--- a/modules/search/tests/search_node_tags.info
+++ b/modules/search/tests/search_node_tags.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/shortcut/shortcut.info b/modules/shortcut/shortcut.info
index 3f8c07a6..94090ebd 100644
--- a/modules/shortcut/shortcut.info
+++ b/modules/shortcut/shortcut.info
@@ -6,7 +6,7 @@ core = 7.x
files[] = shortcut.test
configure = admin/config/user-interface/shortcut
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/simpletest.info b/modules/simpletest/simpletest.info
index 54a69a05..a06e5d74 100644
--- a/modules/simpletest/simpletest.info
+++ b/modules/simpletest/simpletest.info
@@ -33,6 +33,7 @@ files[] = tests/pager.test
files[] = tests/password.test
files[] = tests/path.test
files[] = tests/registry.test
+files[] = tests/request_sanitizer.test
files[] = tests/schema.test
files[] = tests/session.test
files[] = tests/tablesort.test
@@ -57,7 +58,7 @@ files[] = tests/upgrade/update.trigger.test
files[] = tests/upgrade/update.field.test
files[] = tests/upgrade/update.user.test
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/actions_loop_test.info b/modules/simpletest/tests/actions_loop_test.info
index 44f61667..e2c8260d 100644
--- a/modules/simpletest/tests/actions_loop_test.info
+++ b/modules/simpletest/tests/actions_loop_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/ajax_forms_test.info b/modules/simpletest/tests/ajax_forms_test.info
index b313492f..5c662d49 100644
--- a/modules/simpletest/tests/ajax_forms_test.info
+++ b/modules/simpletest/tests/ajax_forms_test.info
@@ -5,7 +5,7 @@ package = Testing
version = VERSION
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/ajax_test.info b/modules/simpletest/tests/ajax_test.info
index f5f9866e..a3c01c73 100644
--- a/modules/simpletest/tests/ajax_test.info
+++ b/modules/simpletest/tests/ajax_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/batch_test.info b/modules/simpletest/tests/batch_test.info
index e8803e86..4fe3cf2b 100644
--- a/modules/simpletest/tests/batch_test.info
+++ b/modules/simpletest/tests/batch_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/boot_test_1.info b/modules/simpletest/tests/boot_test_1.info
index 947a2dfb..188007b7 100644
--- a/modules/simpletest/tests/boot_test_1.info
+++ b/modules/simpletest/tests/boot_test_1.info
@@ -5,7 +5,7 @@ package = Testing
version = VERSION
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/boot_test_2.info b/modules/simpletest/tests/boot_test_2.info
index f6bbcf41..d3020eda 100644
--- a/modules/simpletest/tests/boot_test_2.info
+++ b/modules/simpletest/tests/boot_test_2.info
@@ -5,7 +5,7 @@ package = Testing
version = VERSION
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/common_test.info b/modules/simpletest/tests/common_test.info
index de819480..826fa069 100644
--- a/modules/simpletest/tests/common_test.info
+++ b/modules/simpletest/tests/common_test.info
@@ -7,7 +7,7 @@ stylesheets[all][] = common_test.css
stylesheets[print][] = common_test.print.css
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/common_test_cron_helper.info b/modules/simpletest/tests/common_test_cron_helper.info
index 61b0a933..cf4ddc66 100644
--- a/modules/simpletest/tests/common_test_cron_helper.info
+++ b/modules/simpletest/tests/common_test_cron_helper.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/database_test.info b/modules/simpletest/tests/database_test.info
index c29eaeeb..14e7b7e8 100644
--- a/modules/simpletest/tests/database_test.info
+++ b/modules/simpletest/tests/database_test.info
@@ -5,7 +5,7 @@ package = Testing
version = VERSION
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/drupal_autoload_test/drupal_autoload_test.info b/modules/simpletest/tests/drupal_autoload_test/drupal_autoload_test.info
index 9a54b431..8dace317 100644
--- a/modules/simpletest/tests/drupal_autoload_test/drupal_autoload_test.info
+++ b/modules/simpletest/tests/drupal_autoload_test/drupal_autoload_test.info
@@ -7,7 +7,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info b/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info
index 75e61348..276f952a 100644
--- a/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info
+++ b/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info b/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info
index f72de8ea..d244dbb1 100644
--- a/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info
+++ b/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/entity_cache_test.info b/modules/simpletest/tests/entity_cache_test.info
index e580709a..1707173a 100644
--- a/modules/simpletest/tests/entity_cache_test.info
+++ b/modules/simpletest/tests/entity_cache_test.info
@@ -6,7 +6,7 @@ core = 7.x
dependencies[] = entity_cache_test_dependency
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/entity_cache_test_dependency.info b/modules/simpletest/tests/entity_cache_test_dependency.info
index 33f5a20a..80113949 100644
--- a/modules/simpletest/tests/entity_cache_test_dependency.info
+++ b/modules/simpletest/tests/entity_cache_test_dependency.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/entity_crud_hook_test.info b/modules/simpletest/tests/entity_crud_hook_test.info
index 867e8a72..e3dd0012 100644
--- a/modules/simpletest/tests/entity_crud_hook_test.info
+++ b/modules/simpletest/tests/entity_crud_hook_test.info
@@ -5,7 +5,7 @@ package = Testing
version = VERSION
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/entity_query_access_test.info b/modules/simpletest/tests/entity_query_access_test.info
index a6d56857..1584790a 100644
--- a/modules/simpletest/tests/entity_query_access_test.info
+++ b/modules/simpletest/tests/entity_query_access_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/error_test.info b/modules/simpletest/tests/error_test.info
index 3174ef4d..12c6c454 100644
--- a/modules/simpletest/tests/error_test.info
+++ b/modules/simpletest/tests/error_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/file_test.info b/modules/simpletest/tests/file_test.info
index 9412acd8..6ce436b8 100644
--- a/modules/simpletest/tests/file_test.info
+++ b/modules/simpletest/tests/file_test.info
@@ -6,7 +6,7 @@ core = 7.x
files[] = file_test.module
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/filter_test.info b/modules/simpletest/tests/filter_test.info
index 07598653..edfe36fb 100644
--- a/modules/simpletest/tests/filter_test.info
+++ b/modules/simpletest/tests/filter_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/form.test b/modules/simpletest/tests/form.test
index e52c8c42..d1be69d7 100644
--- a/modules/simpletest/tests/form.test
+++ b/modules/simpletest/tests/form.test
@@ -521,6 +521,9 @@ class FormsTestCase extends DrupalWebTestCase {
$form_state['values'] = array();
drupal_prepare_form($form_id, $form, $form_state);
+ // Set the CSRF token in the user-provided input.
+ $form_state['input']['form_token'] = $form['form_token']['#default_value'];
+
// This is the main function we want to test: it is responsible for
// populating user supplied $form_state['input'] to sanitized
// $form_state['values'].
@@ -687,7 +690,7 @@ class FormValidationTestCase extends DrupalWebTestCase {
$this->drupalPost(NULL, $edit, 'Save');
$this->assertNoFieldByName('name', '#value changed by #validate', 'Form element #value was not altered.');
$this->assertNoText('Name value: value changed by form_set_value() in #validate', 'Form element value in $form_state was not altered.');
- $this->assertText('The form has become outdated. Copy any unsaved work in the form below');
+ $this->assertText('The form has become outdated.');
}
/**
diff --git a/modules/simpletest/tests/form_test.info b/modules/simpletest/tests/form_test.info
index b9ea0177..77dfd266 100644
--- a/modules/simpletest/tests/form_test.info
+++ b/modules/simpletest/tests/form_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/image_test.info b/modules/simpletest/tests/image_test.info
index e5ef517c..7f7942b5 100644
--- a/modules/simpletest/tests/image_test.info
+++ b/modules/simpletest/tests/image_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/menu_test.info b/modules/simpletest/tests/menu_test.info
index d24d3766..e463fada 100644
--- a/modules/simpletest/tests/menu_test.info
+++ b/modules/simpletest/tests/menu_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/module_test.info b/modules/simpletest/tests/module_test.info
index c834c0ba..53933427 100644
--- a/modules/simpletest/tests/module_test.info
+++ b/modules/simpletest/tests/module_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/path_test.info b/modules/simpletest/tests/path_test.info
index 9ae0c7a8..3b586e37 100644
--- a/modules/simpletest/tests/path_test.info
+++ b/modules/simpletest/tests/path_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/psr_0_test/psr_0_test.info b/modules/simpletest/tests/psr_0_test/psr_0_test.info
index d89b3eed..86c848ad 100644
--- a/modules/simpletest/tests/psr_0_test/psr_0_test.info
+++ b/modules/simpletest/tests/psr_0_test/psr_0_test.info
@@ -5,7 +5,7 @@ core = 7.x
hidden = TRUE
package = Testing
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/psr_4_test/psr_4_test.info b/modules/simpletest/tests/psr_4_test/psr_4_test.info
index 5dabf5e1..7d8be117 100644
--- a/modules/simpletest/tests/psr_4_test/psr_4_test.info
+++ b/modules/simpletest/tests/psr_4_test/psr_4_test.info
@@ -5,7 +5,7 @@ core = 7.x
hidden = TRUE
package = Testing
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/request_sanitizer.test b/modules/simpletest/tests/request_sanitizer.test
new file mode 100644
index 00000000..9fc811b2
--- /dev/null
+++ b/modules/simpletest/tests/request_sanitizer.test
@@ -0,0 +1,354 @@
+ 'DrupalRequestSanitizer',
+ 'description' => 'Test the DrupalRequestSanitizer class',
+ 'group' => 'System',
+ );
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function setUp() {
+ require_once DRUPAL_ROOT . '/includes/request-sanitizer.inc';
+ parent::setUp();
+ set_error_handler(array($this, "sanitizerTestErrorHandler"));
+ }
+
+ /**
+ * Iterate through all the RequestSanitizerTests.
+ */
+ public function testRequestSanitization() {
+ foreach ($this->requestSanitizerTests() as $label => $data) {
+ $this->errors = array();
+ // Normalize the test parameters.
+ $test = array(
+ 'request' => $data[0],
+ 'expected' => isset($data[1]) ? $data[1] : array(),
+ 'expected_errors' => isset($data[2]) ? $data[2] : NULL,
+ 'whitelist' => isset($data[3]) ? $data[3] : array(),
+ );
+ $this->requestSanitizationTest($test['request'], $test['expected'], $test['expected_errors'], $test['whitelist'], $label);
+ }
+ }
+
+ /**
+ * Tests RequestSanitizer class.
+ *
+ * @param \SanitizerTestRequest $request
+ * The request to sanitize.
+ * @param array $expected
+ * An array of expected request parameters after sanitization.
+ * @param array|null $expected_errors
+ * An array of expected errors. If set to NULL then error logging is
+ * disabled.
+ * @param array $whitelist
+ * An array of keys to whitelist and not sanitize.
+ * @param string $label
+ * A descriptive name for each test / group of assertions.
+ *
+ * @throws \ReflectionException
+ */
+ public function requestSanitizationTest(SanitizerTestRequest $request, array $expected = array(), array $expected_errors = NULL, array $whitelist = array(), $label = NULL) {
+ // Set up globals.
+ $_GET = $request->getQuery();
+ $_POST = $request->getRequest();
+ $_COOKIE = $request->getCookies();
+ $_REQUEST = array_merge($request->getQuery(), $request->getRequest());
+
+ $GLOBALS['conf']['sanitize_input_whitelist'] = $whitelist;
+ $GLOBALS['conf']['sanitize_input_logging'] = is_null($expected_errors) ? FALSE : TRUE;
+ if ($label !== 'already sanitized request') {
+ $reflection = new \ReflectionProperty('DrupalRequestSanitizer', 'sanitized');
+ $reflection->setAccessible(TRUE);
+ $reflection->setValue(NULL, FALSE);
+ }
+ DrupalRequestSanitizer::sanitize();
+ if (isset($_GET['destination'])) {
+ DrupalRequestSanitizer::cleanDestination();
+ }
+
+ // Normalise the expected data.
+ $expected += array(
+ 'cookies' => array(),
+ 'query' => array(),
+ 'request' => array(),
+ );
+
+ // Test PHP globals.
+ $this->assertEqualLabelled($expected['cookies'], $_COOKIE, NULL, 'Other', $label . ' (COOKIE)');
+ $this->assertEqualLabelled($expected['query'], $_GET, NULL, 'Other', $label . ' (GET)');
+ $this->assertEqualLabelled($expected['request'], $_POST, NULL, 'Other', $label . ' (POST)');
+ $expected_request = array_merge($expected['query'], $expected['request']);
+ $this->assertEqualLabelled($expected_request, $_REQUEST, NULL, 'Other', $label . ' (REQUEST)');
+
+ // Ensure any expected errors have been triggered.
+ if (!empty($expected_errors)) {
+ foreach ($expected_errors as $expected_error) {
+ $this->assertError($expected_error, E_USER_NOTICE, $label . ' (errors)');
+ }
+ }
+ else {
+ $this->assertEqualLabelled(array(), $this->errors, NULL, 'Other', $label . ' (errors)');
+ }
+ }
+
+ /**
+ * Data provider for testRequestSanitization.
+ *
+ * @return array
+ * A list of tests to carry out.
+ */
+ public function requestSanitizerTests() {
+ $tests = array();
+
+ $request = new SanitizerTestRequest(array('q' => 'index.php'));
+ $tests['no sanitization GET'] = array($request, array('query' => array('q' => 'index.php')));
+
+ $request = new SanitizerTestRequest(array(), array('field' => 'value'));
+ $tests['no sanitization POST'] = array($request, array('request' => array('field' => 'value')));
+
+ $request = new SanitizerTestRequest(array(), array(), array(), array('key' => 'value'));
+ $tests['no sanitization COOKIE'] = array($request, array('cookies' => array('key' => 'value')));
+
+ $request = new SanitizerTestRequest(array('q' => 'index.php'), array('field' => 'value'), array(), array('key' => 'value'));
+ $tests['no sanitization GET, POST, COOKIE'] = array($request, array('query' => array('q' => 'index.php'), 'request' => array('field' => 'value'), 'cookies' => array('key' => 'value')));
+
+ $request = new SanitizerTestRequest(array('q' => 'index.php'));
+ $tests['no sanitization GET log'] = array($request, array('query' => array('q' => 'index.php')), array());
+
+ $request = new SanitizerTestRequest(array(), array('field' => 'value'));
+ $tests['no sanitization POST log'] = array($request, array('request' => array('field' => 'value')), array());
+
+ $request = new SanitizerTestRequest(array(), array(), array(), array('key' => 'value'));
+ $tests['no sanitization COOKIE log'] = array($request, array('cookies' => array('key' => 'value')), array());
+
+ $request = new SanitizerTestRequest(array('#q' => 'index.php'));
+ $tests['sanitization GET'] = array($request);
+
+ $request = new SanitizerTestRequest(array(), array('#field' => 'value'));
+ $tests['sanitization POST'] = array($request);
+
+ $request = new SanitizerTestRequest(array(), array(), array(), array('#key' => 'value'));
+ $tests['sanitization COOKIE'] = array($request);
+
+ $request = new SanitizerTestRequest(array('#q' => 'index.php'), array('#field' => 'value'), array(), array('#key' => 'value'));
+ $tests['sanitization GET, POST, COOKIE'] = array($request);
+
+ $request = new SanitizerTestRequest(array('#q' => 'index.php'));
+ $tests['sanitization GET log'] = array($request, array(), array('Potentially unsafe keys removed from query string parameters (GET): #q'));
+
+ $request = new SanitizerTestRequest(array(), array('#field' => 'value'));
+ $tests['sanitization POST log'] = array($request, array(), array('Potentially unsafe keys removed from request body parameters (POST): #field'));
+
+ $request = new SanitizerTestRequest(array(), array(), array(), array('#key' => 'value'));
+ $tests['sanitization COOKIE log'] = array($request, array(), array('Potentially unsafe keys removed from cookie parameters (COOKIE): #key'));
+
+ $request = new SanitizerTestRequest(array('#q' => 'index.php'), array('#field' => 'value'), array(), array('#key' => 'value'));
+ $tests['sanitization GET, POST, COOKIE log'] = array($request, array(), array('Potentially unsafe keys removed from query string parameters (GET): #q', 'Potentially unsafe keys removed from request body parameters (POST): #field', 'Potentially unsafe keys removed from cookie parameters (COOKIE): #key'));
+
+ $request = new SanitizerTestRequest(array('q' => 'index.php', 'foo' => array('#bar' => 'foo')));
+ $tests['recursive sanitization log'] = array($request, array('query' => array('q' => 'index.php', 'foo' => array())), array('Potentially unsafe keys removed from query string parameters (GET): #bar'));
+
+ $request = new SanitizerTestRequest(array('q' => 'index.php', 'foo' => array('#bar' => 'foo')));
+ $tests['recursive no sanitization whitelist'] = array($request, array('query' => array('q' => 'index.php', 'foo' => array('#bar' => 'foo'))), array(), array('#bar'));
+
+ $request = new SanitizerTestRequest(array(), array('#field' => 'value'));
+ $tests['no sanitization POST whitelist'] = array($request, array('request' => array('#field' => 'value')), array(), array('#field'));
+
+ $request = new SanitizerTestRequest(array('q' => 'index.php', 'foo' => array('#bar' => 'foo', '#foo' => 'bar')));
+ $tests['recursive multiple sanitization log'] = array($request, array('query' => array('q' => 'index.php', 'foo' => array())), array('Potentially unsafe keys removed from query string parameters (GET): #bar, #foo'));
+
+ $request = new SanitizerTestRequest(array('#q' => 'index.php'));
+ $tests['already sanitized request'] = array($request, array('query' => array('#q' => 'index.php')));
+
+ $request = new SanitizerTestRequest(array('destination' => 'whatever?%23test=value'));
+ $tests['destination removal GET'] = array($request);
+
+ $request = new SanitizerTestRequest(array('destination' => 'whatever?%23test=value'));
+ $tests['destination removal GET log'] = array($request, array(), array('Potentially unsafe destination removed from query string parameters (GET) because it contained the following keys: #test'));
+
+ $request = new SanitizerTestRequest(array('destination' => 'whatever?q[%23test]=value'));
+ $tests['destination removal subkey'] = array($request);
+
+ $request = new SanitizerTestRequest(array('destination' => 'whatever?q[%23test]=value'));
+ $tests['destination whitelist'] = array($request, array('query' => array('destination' => 'whatever?q[%23test]=value')), array(), array('#test'));
+
+ $request = new SanitizerTestRequest(array('destination' => "whatever?\x00bar=base&%23test=value"));
+ $tests['destination removal zero byte'] = array($request);
+
+ $request = new SanitizerTestRequest(array('destination' => 'whatever?q=value'));
+ $tests['destination kept'] = array($request, array('query' => array('destination' => 'whatever?q=value')));
+
+ $request = new SanitizerTestRequest(array('destination' => 'whatever'));
+ $tests['destination no query'] = array($request, array('query' => array('destination' => 'whatever')));
+
+ return $tests;
+ }
+
+ /**
+ * Catches and logs errors to $this->errors.
+ *
+ * @param int $errno
+ * The severity level of the error.
+ * @param string $errstr
+ * The error message.
+ */
+ public function sanitizerTestErrorHandler($errno, $errstr) {
+ $this->errors[] = compact('errno', 'errstr');
+ }
+
+ /**
+ * Asserts that the expected error has been logged.
+ *
+ * @param string $errstr
+ * The error message.
+ * @param int $errno
+ * The severity level of the error.
+ * @param string $label
+ * The label to include with the message.
+ *
+ * @return bool
+ * TRUE if the assertion succeeded, FALSE otherwise.
+ */
+ protected function assertError($errstr, $errno, $label) {
+ $label = (empty($label)) ? '' : $label . ': ';
+ foreach ($this->errors as $error) {
+ if ($error['errstr'] === $errstr && $error['errno'] === $errno) {
+ return $this->pass($label . "Error with level $errno and message '$errstr' found");
+ }
+ }
+ return $this->fail($label . "Error with level $errno and message '$errstr' not found in " . var_export($this->errors, TRUE));
+ }
+
+ /**
+ * Asserts two values are equal, includes a label.
+ *
+ * @param mixed $first
+ * The first value to check.
+ * @param mixed $second
+ * The second value to check.
+ * @param string $message
+ * The message to display along with the assertion.
+ * @param string $group
+ * The type of assertion - examples are "Browser", "PHP".
+ * @param string $label
+ * The label to include with the message.
+ *
+ * @return bool
+ * TRUE if the assertion succeeded, FALSE otherwise.
+ */
+ protected function assertEqualLabelled($first, $second, $message = '', $group = 'Other', $label = '') {
+ $label = (empty($label)) ? '' : $label . ': ';
+ $message = $message ? $message : t('Value @first is equal to value @second.', array(
+ '@first' => var_export($first, TRUE),
+ '@second' => var_export($second, TRUE),
+ ));
+ return $this->assert($first == $second, $label . $message, $group);
+ }
+
+}
+
+/**
+ * Basic HTTP Request class.
+ */
+class SanitizerTestRequest {
+
+ /**
+ * The query (GET).
+ *
+ * @var array
+ */
+ protected $query;
+
+ /**
+ * The request (POST).
+ *
+ * @var array
+ */
+ protected $request;
+
+ /**
+ * The request attributes.
+ *
+ * @var array
+ */
+ protected $attributes;
+
+ /**
+ * The request cookies.
+ *
+ * @var array
+ */
+ protected $cookies;
+
+ /**
+ * Constructor.
+ *
+ * @param array $query
+ * The GET parameters.
+ * @param array $request
+ * The POST parameters.
+ * @param array $attributes
+ * The request attributes.
+ * @param array $cookies
+ * The COOKIE parameters.
+ */
+ public function __construct(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array()) {
+ $this->query = $query;
+ $this->request = $request;
+ $this->attributes = $attributes;
+ $this->cookies = $cookies;
+ }
+
+ /**
+ * Getter for $query.
+ */
+ public function getQuery() {
+ return $this->query;
+ }
+
+ /**
+ * Getter for $request.
+ */
+ public function getRequest() {
+ return $this->request;
+ }
+
+ /**
+ * Getter for $attributes.
+ */
+ public function getAttributes() {
+ return $this->attributes;
+ }
+
+ /**
+ * Getter for $cookies.
+ */
+ public function getCookies() {
+ return $this->cookies;
+ }
+
+}
diff --git a/modules/simpletest/tests/requirements1_test.info b/modules/simpletest/tests/requirements1_test.info
index ca134253..da22662a 100644
--- a/modules/simpletest/tests/requirements1_test.info
+++ b/modules/simpletest/tests/requirements1_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/requirements2_test.info b/modules/simpletest/tests/requirements2_test.info
index cbf1cba1..2d3b81ce 100644
--- a/modules/simpletest/tests/requirements2_test.info
+++ b/modules/simpletest/tests/requirements2_test.info
@@ -7,7 +7,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/session_test.info b/modules/simpletest/tests/session_test.info
index 98e3759d..d3035aaa 100644
--- a/modules/simpletest/tests/session_test.info
+++ b/modules/simpletest/tests/session_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/system_dependencies_test.info b/modules/simpletest/tests/system_dependencies_test.info
index ed53903d..f85a2ed2 100644
--- a/modules/simpletest/tests/system_dependencies_test.info
+++ b/modules/simpletest/tests/system_dependencies_test.info
@@ -6,7 +6,7 @@ core = 7.x
hidden = TRUE
dependencies[] = _missing_dependency
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.info b/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.info
index 1c8875e7..e794e96f 100644
--- a/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.info
+++ b/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.info
@@ -6,7 +6,7 @@ core = 7.x
hidden = TRUE
dependencies[] = system_incompatible_core_version_test
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/system_incompatible_core_version_test.info b/modules/simpletest/tests/system_incompatible_core_version_test.info
index 067952c9..b4a95332 100644
--- a/modules/simpletest/tests/system_incompatible_core_version_test.info
+++ b/modules/simpletest/tests/system_incompatible_core_version_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 5.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.info b/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.info
index 50e93ad1..76a90008 100644
--- a/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.info
+++ b/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.info
@@ -7,7 +7,7 @@ hidden = TRUE
; system_incompatible_module_version_test declares version 1.0
dependencies[] = system_incompatible_module_version_test (>2.0)
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/system_incompatible_module_version_test.info b/modules/simpletest/tests/system_incompatible_module_version_test.info
index 920e1271..3aac4aee 100644
--- a/modules/simpletest/tests/system_incompatible_module_version_test.info
+++ b/modules/simpletest/tests/system_incompatible_module_version_test.info
@@ -5,7 +5,7 @@ version = 1.0
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/system_project_namespace_test.info b/modules/simpletest/tests/system_project_namespace_test.info
index f83572b8..00919281 100644
--- a/modules/simpletest/tests/system_project_namespace_test.info
+++ b/modules/simpletest/tests/system_project_namespace_test.info
@@ -6,7 +6,7 @@ core = 7.x
hidden = TRUE
dependencies[] = drupal:filter
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/system_test.info b/modules/simpletest/tests/system_test.info
index 4cec79fe..eede27b1 100644
--- a/modules/simpletest/tests/system_test.info
+++ b/modules/simpletest/tests/system_test.info
@@ -6,7 +6,7 @@ core = 7.x
files[] = system_test.module
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/taxonomy_test.info b/modules/simpletest/tests/taxonomy_test.info
index efa54058..dcd0a958 100644
--- a/modules/simpletest/tests/taxonomy_test.info
+++ b/modules/simpletest/tests/taxonomy_test.info
@@ -6,7 +6,7 @@ core = 7.x
hidden = TRUE
dependencies[] = taxonomy
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/theme_test.info b/modules/simpletest/tests/theme_test.info
index d383b787..793358dc 100644
--- a/modules/simpletest/tests/theme_test.info
+++ b/modules/simpletest/tests/theme_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info b/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info
index 369a839b..905cec3c 100644
--- a/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info
+++ b/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info
@@ -6,7 +6,7 @@ hidden = TRUE
settings[basetheme_only] = base theme value
settings[subtheme_override] = base theme value
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info b/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info
index f3391215..04fa0a1d 100644
--- a/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info
+++ b/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info
@@ -6,7 +6,7 @@ hidden = TRUE
settings[subtheme_override] = subtheme value
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/themes/test_theme/test_theme.info b/modules/simpletest/tests/themes/test_theme/test_theme.info
index b6b690df..957ea9cd 100644
--- a/modules/simpletest/tests/themes/test_theme/test_theme.info
+++ b/modules/simpletest/tests/themes/test_theme/test_theme.info
@@ -17,7 +17,7 @@ stylesheets[all][] = system.base.css
settings[theme_test_setting] = default value
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/themes/test_theme_nyan_cat/test_theme_nyan_cat.info b/modules/simpletest/tests/themes/test_theme_nyan_cat/test_theme_nyan_cat.info
index 09f5dd64..45565f89 100644
--- a/modules/simpletest/tests/themes/test_theme_nyan_cat/test_theme_nyan_cat.info
+++ b/modules/simpletest/tests/themes/test_theme_nyan_cat/test_theme_nyan_cat.info
@@ -4,7 +4,7 @@ core = 7.x
hidden = TRUE
engine = nyan_cat
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/update_script_test.info b/modules/simpletest/tests/update_script_test.info
index b537f9a8..3f712fa9 100644
--- a/modules/simpletest/tests/update_script_test.info
+++ b/modules/simpletest/tests/update_script_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/update_test_1.info b/modules/simpletest/tests/update_test_1.info
index 577e21b0..cb13e495 100644
--- a/modules/simpletest/tests/update_test_1.info
+++ b/modules/simpletest/tests/update_test_1.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/update_test_2.info b/modules/simpletest/tests/update_test_2.info
index 577e21b0..cb13e495 100644
--- a/modules/simpletest/tests/update_test_2.info
+++ b/modules/simpletest/tests/update_test_2.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/update_test_3.info b/modules/simpletest/tests/update_test_3.info
index 577e21b0..cb13e495 100644
--- a/modules/simpletest/tests/update_test_3.info
+++ b/modules/simpletest/tests/update_test_3.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/url_alter_test.info b/modules/simpletest/tests/url_alter_test.info
index 41f85edd..cc99920f 100644
--- a/modules/simpletest/tests/url_alter_test.info
+++ b/modules/simpletest/tests/url_alter_test.info
@@ -5,7 +5,7 @@ package = Testing
version = VERSION
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/simpletest/tests/xmlrpc_test.info b/modules/simpletest/tests/xmlrpc_test.info
index 272a09b7..a3a61e59 100644
--- a/modules/simpletest/tests/xmlrpc_test.info
+++ b/modules/simpletest/tests/xmlrpc_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/statistics/statistics.info b/modules/statistics/statistics.info
index e2aa9039..5245ab8f 100644
--- a/modules/statistics/statistics.info
+++ b/modules/statistics/statistics.info
@@ -6,7 +6,7 @@ core = 7.x
files[] = statistics.test
configure = admin/config/system/statistics
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/syslog/syslog.info b/modules/syslog/syslog.info
index 923daa50..8d5620f5 100644
--- a/modules/syslog/syslog.info
+++ b/modules/syslog/syslog.info
@@ -6,7 +6,7 @@ core = 7.x
files[] = syslog.test
configure = admin/config/development/logging
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/system/system.info b/modules/system/system.info
index cf756b41..6f73eff3 100644
--- a/modules/system/system.info
+++ b/modules/system/system.info
@@ -12,7 +12,7 @@ files[] = system.test
required = TRUE
configure = admin/config/system
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/system/system.install b/modules/system/system.install
index 3bb07d95..d6707bed 100644
--- a/modules/system/system.install
+++ b/modules/system/system.install
@@ -3292,6 +3292,20 @@ function system_update_7082() {
// Empty update to force a rebuild of hook_library() and JS aggregates.
}
+/**
+ * Add 'jquery-html-prefilter-3.5.0-backport.js' to the 'jquery' library.
+ */
+function system_update_7083() {
+ // Empty update to force a rebuild of hook_library() and JS aggregates.
+}
+
+/**
+ * Rebuild JavaScript aggregates to include 'ajax.js' fix for Chrome 83.
+ */
+function system_update_7084() {
+ // Empty update to force a rebuild of JS aggregates.
+}
+
/**
* @} End of "defgroup updates-7.x-extra".
* The next series of updates should start at 8000.
diff --git a/modules/system/system.module b/modules/system/system.module
index 25344218..02785ef5 100644
--- a/modules/system/system.module
+++ b/modules/system/system.module
@@ -1186,9 +1186,10 @@ function system_library() {
'version' => '1.4.4',
'js' => array(
'misc/jquery.js' => array('group' => JS_LIBRARY, 'weight' => -20),
- // This includes a security fix, so assign a weight that makes this load
+ // These include security fixes, so assign a weight that makes them load
// as soon after jquery.js is loaded as possible.
'misc/jquery-extend-3.4.0.js' => array('group' => JS_LIBRARY, 'weight' => -19),
+ 'misc/jquery-html-prefilter-3.5.0-backport.js' => array('group' => JS_LIBRARY, 'weight' => -19),
),
);
diff --git a/modules/system/system.test b/modules/system/system.test
index 5ae33416..270311ec 100644
--- a/modules/system/system.test
+++ b/modules/system/system.test
@@ -2995,7 +2995,16 @@ class SystemValidTokenTest extends DrupalUnitTestCase {
// The following checks will throw PHP notices, so we disable error
// assertions.
$this->assertErrors = FALSE;
- $this->assertFalse(drupal_valid_token(NULL, new stdClass()), 'Token NULL, value object returns FALSE.');
+
+ try {
+ $this->assertFalse(drupal_valid_token(NULL, new stdClass()), 'Token NULL, value object returns FALSE.');
+ }
+ // PHP 7.4 compatibility: the stdClass string conversion throws an exception
+ // which is also an acceptable outcome of this test.
+ catch (Error $e) {
+ $this->pass('Token NULL, value object throws error exception which is ok.');
+ }
+
$this->assertFalse(drupal_valid_token(0, array()), 'Token 0, value array returns FALSE.');
$this->assertFalse(drupal_valid_token('', array()), "Token '', value array returns FALSE.");
$this->assertFalse('' === drupal_get_token(array()), 'Token generation does not return an empty string on invalid parameters.');
diff --git a/modules/system/tests/cron_queue_test.info b/modules/system/tests/cron_queue_test.info
index 0c31859b..2b3c47eb 100644
--- a/modules/system/tests/cron_queue_test.info
+++ b/modules/system/tests/cron_queue_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/system/tests/system_cron_test.info b/modules/system/tests/system_cron_test.info
index 0d69d19f..8b78eb9f 100644
--- a/modules/system/tests/system_cron_test.info
+++ b/modules/system/tests/system_cron_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/taxonomy/taxonomy.info b/modules/taxonomy/taxonomy.info
index bc9b1b0a..60af3b21 100644
--- a/modules/taxonomy/taxonomy.info
+++ b/modules/taxonomy/taxonomy.info
@@ -8,7 +8,7 @@ files[] = taxonomy.module
files[] = taxonomy.test
configure = admin/structure/taxonomy
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/taxonomy/taxonomy.install b/modules/taxonomy/taxonomy.install
index 60a9b5d2..ecbd0f2e 100644
--- a/modules/taxonomy/taxonomy.install
+++ b/modules/taxonomy/taxonomy.install
@@ -448,7 +448,7 @@ function taxonomy_update_7004() {
}
else {
$instance['widget'] = array(
- 'type' => 'select',
+ 'type' => 'options_select',
'module' => 'options',
'settings' => array(),
);
diff --git a/modules/toolbar/toolbar.info b/modules/toolbar/toolbar.info
index a13e75ff..a73d83b4 100644
--- a/modules/toolbar/toolbar.info
+++ b/modules/toolbar/toolbar.info
@@ -4,7 +4,7 @@ core = 7.x
package = Core
version = VERSION
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/tracker/tracker.info b/modules/tracker/tracker.info
index 6a3d4e77..fdc99428 100644
--- a/modules/tracker/tracker.info
+++ b/modules/tracker/tracker.info
@@ -6,7 +6,7 @@ version = VERSION
core = 7.x
files[] = tracker.test
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/translation/tests/translation_test.info b/modules/translation/tests/translation_test.info
index 31fc4a37..88743288 100644
--- a/modules/translation/tests/translation_test.info
+++ b/modules/translation/tests/translation_test.info
@@ -5,7 +5,7 @@ package = Testing
version = VERSION
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/translation/translation.info b/modules/translation/translation.info
index 041d34a7..c3258026 100644
--- a/modules/translation/translation.info
+++ b/modules/translation/translation.info
@@ -6,7 +6,7 @@ version = VERSION
core = 7.x
files[] = translation.test
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/trigger/tests/trigger_test.info b/modules/trigger/tests/trigger_test.info
index 339b5904..8ce4cfb6 100644
--- a/modules/trigger/tests/trigger_test.info
+++ b/modules/trigger/tests/trigger_test.info
@@ -4,7 +4,7 @@ package = Testing
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/trigger/trigger.info b/modules/trigger/trigger.info
index 6c9ad35e..01a4fd67 100644
--- a/modules/trigger/trigger.info
+++ b/modules/trigger/trigger.info
@@ -6,7 +6,7 @@ core = 7.x
files[] = trigger.test
configure = admin/structure/trigger
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/update/tests/aaa_update_test.info b/modules/update/tests/aaa_update_test.info
index 248060e2..13c4c992 100644
--- a/modules/update/tests/aaa_update_test.info
+++ b/modules/update/tests/aaa_update_test.info
@@ -4,7 +4,7 @@ package = Testing
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/update/tests/bbb_update_test.info b/modules/update/tests/bbb_update_test.info
index 873d89cf..ceae19f0 100644
--- a/modules/update/tests/bbb_update_test.info
+++ b/modules/update/tests/bbb_update_test.info
@@ -4,7 +4,7 @@ package = Testing
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/update/tests/ccc_update_test.info b/modules/update/tests/ccc_update_test.info
index 39dc80a4..2043b61e 100644
--- a/modules/update/tests/ccc_update_test.info
+++ b/modules/update/tests/ccc_update_test.info
@@ -4,7 +4,7 @@ package = Testing
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/update/tests/themes/update_test_admintheme/update_test_admintheme.info b/modules/update/tests/themes/update_test_admintheme/update_test_admintheme.info
index 01975fb3..1845c74d 100644
--- a/modules/update/tests/themes/update_test_admintheme/update_test_admintheme.info
+++ b/modules/update/tests/themes/update_test_admintheme/update_test_admintheme.info
@@ -3,7 +3,7 @@ description = Test theme which is used as admin theme.
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/update/tests/themes/update_test_basetheme/update_test_basetheme.info b/modules/update/tests/themes/update_test_basetheme/update_test_basetheme.info
index e8c7905d..c8b25be3 100644
--- a/modules/update/tests/themes/update_test_basetheme/update_test_basetheme.info
+++ b/modules/update/tests/themes/update_test_basetheme/update_test_basetheme.info
@@ -3,7 +3,7 @@ description = Test theme which acts as a base theme for other test subthemes.
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/update/tests/themes/update_test_subtheme/update_test_subtheme.info b/modules/update/tests/themes/update_test_subtheme/update_test_subtheme.info
index f335016a..0bc9c1ef 100644
--- a/modules/update/tests/themes/update_test_subtheme/update_test_subtheme.info
+++ b/modules/update/tests/themes/update_test_subtheme/update_test_subtheme.info
@@ -4,7 +4,7 @@ core = 7.x
base theme = update_test_basetheme
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/update/tests/update_test.info b/modules/update/tests/update_test.info
index 57ab2f30..c8d62114 100644
--- a/modules/update/tests/update_test.info
+++ b/modules/update/tests/update_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/update/update.info b/modules/update/update.info
index c5afd5a7..9c99e17e 100644
--- a/modules/update/update.info
+++ b/modules/update/update.info
@@ -6,7 +6,7 @@ core = 7.x
files[] = update.test
configure = admin/reports/updates/settings
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/user/tests/user_form_test.info b/modules/user/tests/user_form_test.info
index e2b0a089..46d74ed4 100644
--- a/modules/user/tests/user_form_test.info
+++ b/modules/user/tests/user_form_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/user/tests/user_session_test.info b/modules/user/tests/user_session_test.info
index 32b60584..2272808a 100644
--- a/modules/user/tests/user_session_test.info
+++ b/modules/user/tests/user_session_test.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/user/user.info b/modules/user/user.info
index 9d9b9e06..b03ea1af 100644
--- a/modules/user/user.info
+++ b/modules/user/user.info
@@ -9,7 +9,7 @@ required = TRUE
configure = admin/config/people
stylesheets[all][] = user.css
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/modules/user/user.module b/modules/user/user.module
index 4ad9af79..2309aa92 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -2359,26 +2359,14 @@ function user_external_login_register($name, $module) {
* following properties:
* - uid: The user ID number.
* - login: The UNIX timestamp of the user's last login.
- * @param array $options
- * (optional) A keyed array of settings. Supported options are:
- * - langcode: A language code to be used when generating locale-sensitive
- * urls. If langcode is NULL the users preferred language is used.
*
* @return
* A unique URL that provides a one-time log in for the user, from which
* they can change their password.
*/
-function user_pass_reset_url($account, $options = array()) {
+function user_pass_reset_url($account) {
$timestamp = REQUEST_TIME;
- $url_options = array('absolute' => TRUE);
- if (isset($options['langcode'])) {
- $languages = language_list();
- $url_options['language'] = $languages[$options['langcode']];
- }
- else {
- $url_options['language'] = user_preferred_language($account);
- }
- return url("user/reset/$account->uid/$timestamp/" . user_pass_rehash($account->pass, $timestamp, $account->login, $account->uid), $url_options);
+ return url("user/reset/$account->uid/$timestamp/" . user_pass_rehash($account->pass, $timestamp, $account->login, $account->uid), array('absolute' => TRUE));
}
/**
@@ -2390,10 +2378,6 @@ function user_pass_reset_url($account, $options = array()) {
* - uid: The user ID number.
* - pass: The hashed user password string.
* - login: The UNIX timestamp of the user's last login.
- * @param array $options
- * (optional) A keyed array of settings. Supported options are:
- * - langcode: A language code to be used when generating locale-sensitive
- * urls. If langcode is NULL the users preferred language is used.
*
* @return
* A unique URL that may be used to confirm the cancellation of the user
@@ -2402,17 +2386,9 @@ function user_pass_reset_url($account, $options = array()) {
* @see user_mail_tokens()
* @see user_cancel_confirm()
*/
-function user_cancel_url($account, $options = array()) {
+function user_cancel_url($account) {
$timestamp = REQUEST_TIME;
- $url_options = array('absolute' => TRUE);
- if (isset($options['langcode'])) {
- $languages = language_list();
- $url_options['language'] = $languages[$options['langcode']];
- }
- else {
- $url_options['language'] = user_preferred_language($account);
- }
- return url("user/$account->uid/cancel/confirm/$timestamp/" . user_pass_rehash($account->pass, $timestamp, $account->login, $account->uid), $url_options);
+ return url("user/$account->uid/cancel/confirm/$timestamp/" . user_pass_rehash($account->pass, $timestamp, $account->login, $account->uid), array('absolute' => TRUE));
}
/**
@@ -2902,7 +2878,7 @@ Your account on [site:name] has been canceled.
if ($replace) {
// We do not sanitize the token replacement, since the output of this
// replacement is intended for an e-mail message, not a web browser.
- return token_replace($text, $variables, array('language' => $language, 'langcode' => $langcode, 'callback' => 'user_mail_tokens', 'sanitize' => FALSE, 'clear' => TRUE));
+ return token_replace($text, $variables, array('language' => $language, 'callback' => 'user_mail_tokens', 'sanitize' => FALSE, 'clear' => TRUE));
}
return $text;
@@ -2929,8 +2905,8 @@ Your account on [site:name] has been canceled.
*/
function user_mail_tokens(&$replacements, $data, $options) {
if (isset($data['user'])) {
- $replacements['[user:one-time-login-url]'] = user_pass_reset_url($data['user'], $options);
- $replacements['[user:cancel-url]'] = user_cancel_url($data['user'], $options);
+ $replacements['[user:one-time-login-url]'] = user_pass_reset_url($data['user']);
+ $replacements['[user:cancel-url]'] = user_cancel_url($data['user']);
}
}
diff --git a/modules/user/user.test b/modules/user/user.test
index d5048ac0..835154b2 100644
--- a/modules/user/user.test
+++ b/modules/user/user.test
@@ -2336,26 +2336,6 @@ class UserTokenReplaceTestCase extends DrupalWebTestCase {
);
}
- public function setUp() {
- parent::setUp('locale');
-
- $account = $this->drupalCreateUser(array('access administration pages', 'administer languages'));
- $this->drupalLogin($account);
-
- // Add language.
- $edit = array('langcode' => 'de');
- $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
-
- // Enable URL language detection and selection.
- $edit = array('language[enabled][locale-url]' => 1);
- $this->drupalPost('admin/config/regional/language/configure', $edit, t('Save settings'));
-
- // Reset static caching.
- drupal_static_reset('language_list');
- drupal_static_reset('locale_url_outbound_alter');
- drupal_static_reset('locale_language_url_rewrite_url');
- }
-
/**
* Creates a user, then tests the tokens generated from it.
*/
@@ -2406,39 +2386,6 @@ class UserTokenReplaceTestCase extends DrupalWebTestCase {
$output = token_replace($input, array('user' => $account), array('language' => $language, 'sanitize' => FALSE));
$this->assertEqual($output, $expected, format_string('Unsanitized user token %token replaced.', array('%token' => $input)));
}
-
- $languages = language_list();
-
- // Generate login and cancel link.
- $tests = array();
- $tests['[user:one-time-login-url]'] = user_pass_reset_url($account);
- $tests['[user:cancel-url]'] = user_cancel_url($account);
-
- // Generate tokens with interface language.
- $link = url('user', array('absolute' => TRUE));
- foreach ($tests as $input => $expected) {
- $output = token_replace($input, array('user' => $account), array('langcode' => $language->language, 'callback' => 'user_mail_tokens', 'sanitize' => FALSE, 'clear' => TRUE));
- $this->assertTrue(strpos($output, $link) === 0, 'Generated URL is in interface language.');
- }
-
- // Generate tokens with the user's preferred language.
- $edit['language'] = 'de';
- $account = user_save($account, $edit);
- $link = url('user', array('language' => $languages[$account->language], 'absolute' => TRUE));
- foreach ($tests as $input => $expected) {
- $output = token_replace($input, array('user' => $account), array('callback' => 'user_mail_tokens', 'sanitize' => FALSE, 'clear' => TRUE));
- $this->assertTrue(strpos($output, $link) === 0, "Generated URL is in the user's preferred language.");
- }
-
- // Generate tokens with one specific language.
- $link = url('user', array('language' => $languages['de'], 'absolute' => TRUE));
- foreach ($tests as $input => $expected) {
- foreach (array($user1, $user2) as $account) {
- $output = token_replace($input, array('user' => $account), array('langcode' => 'de', 'callback' => 'user_mail_tokens', 'sanitize' => FALSE, 'clear' => TRUE));
- $this->assertTrue(strpos($output, $link) === 0, "Generated URL in in the requested language.");
- }
- }
-
}
}
diff --git a/profiles/minimal/minimal.info b/profiles/minimal/minimal.info
index 1f3d451b..755927bf 100644
--- a/profiles/minimal/minimal.info
+++ b/profiles/minimal/minimal.info
@@ -5,7 +5,7 @@ core = 7.x
dependencies[] = block
dependencies[] = dblog
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/profiles/standard/standard.info b/profiles/standard/standard.info
index 4f85555c..770d8437 100644
--- a/profiles/standard/standard.info
+++ b/profiles/standard/standard.info
@@ -24,7 +24,7 @@ dependencies[] = field_ui
dependencies[] = file
dependencies[] = rdf
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info b/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info
index 4576d093..a4b0d1dc 100644
--- a/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info
+++ b/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info
@@ -6,7 +6,7 @@ core = 7.x
hidden = TRUE
files[] = drupal_system_listing_compatible_test.test
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info b/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info
index f910d3bf..cbc1f80f 100644
--- a/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info
+++ b/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info
@@ -8,7 +8,7 @@ version = VERSION
core = 6.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/profiles/testing/testing.info b/profiles/testing/testing.info
index 86272fce..90652f32 100644
--- a/profiles/testing/testing.info
+++ b/profiles/testing/testing.info
@@ -4,7 +4,7 @@ version = VERSION
core = 7.x
hidden = TRUE
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/scripts/run-tests.sh b/scripts/run-tests.sh
index a42215e8..8c0be40e 100755
--- a/scripts/run-tests.sh
+++ b/scripts/run-tests.sh
@@ -729,7 +729,7 @@ function simpletest_script_print_error($message) {
*/
function simpletest_script_print($message, $color_code) {
global $args;
- if ($args['color']) {
+ if (!empty($args['color'])) {
echo "\033[" . $color_code . "m" . $message . "\033[0m";
}
else {
diff --git a/themes/bartik/bartik.info b/themes/bartik/bartik.info
index e0b19d06..4fb09cd4 100644
--- a/themes/bartik/bartik.info
+++ b/themes/bartik/bartik.info
@@ -34,7 +34,7 @@ regions[footer] = Footer
settings[shortcut_module_link] = 0
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/themes/garland/garland.info b/themes/garland/garland.info
index feb59e8e..ec143fac 100644
--- a/themes/garland/garland.info
+++ b/themes/garland/garland.info
@@ -7,7 +7,7 @@ stylesheets[all][] = style.css
stylesheets[print][] = print.css
settings[garland_width] = fluid
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/themes/seven/seven.info b/themes/seven/seven.info
index 8f443b6f..65a5a2e7 100644
--- a/themes/seven/seven.info
+++ b/themes/seven/seven.info
@@ -13,7 +13,7 @@ regions[page_bottom] = Page bottom
regions[sidebar_first] = First sidebar
regions_hidden[] = sidebar_first
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"
diff --git a/themes/stark/stark.info b/themes/stark/stark.info
index 07b3f259..59af485f 100644
--- a/themes/stark/stark.info
+++ b/themes/stark/stark.info
@@ -5,7 +5,7 @@ version = VERSION
core = 7.x
stylesheets[all][] = layout.css
-; Information added by Drupal.org packaging script on 2019-12-18
-version = "7.69"
+; Information added by Drupal.org packaging script on 2020-09-16
+version = "7.73"
project = "drupal"
-datestamp = "1576696221"
+datestamp = "1600272641"