From 98f60f984d18c383a410a49f7e0fcec12258f784 Mon Sep 17 00:00:00 2001 From: Olof Bokedal Date: Mon, 27 May 2019 08:23:00 +0200 Subject: [PATCH] Drupal core 7.67 --- public/includes/bootstrap.inc | 2 +- public/includes/common.inc | 18 +- public/includes/file.phar.inc | 14 + public/includes/install.core.inc | 88 ++----- public/includes/install.inc | 87 ++----- public/includes/module.inc | 6 +- .../brumann/polyfill-unserialize/.gitignore | 4 + .../brumann/polyfill-unserialize/.travis.yml | 20 ++ .../misc/brumann/polyfill-unserialize/LICENSE | 21 ++ .../brumann/polyfill-unserialize/README.md | 61 +++++ .../polyfill-unserialize/composer.json | 26 ++ .../polyfill-unserialize/phpunit.xml.dist | 25 ++ .../polyfill-unserialize/src/Unserialize.php | 58 +++++ .../misc/typo3/phar-stream-wrapper/.gitignore | 3 + .../misc/typo3/phar-stream-wrapper/README.md | 69 ++++- .../typo3/phar-stream-wrapper/composer.json | 6 +- .../phar-stream-wrapper/src/Collectable.php | 37 +++ .../typo3/phar-stream-wrapper/src/Helper.php | 20 +- .../Interceptor/ConjunctionInterceptor.php | 88 +++++++ .../Interceptor/PharExtensionInterceptor.php | 8 +- .../Interceptor/PharMetaDataInterceptor.php | 73 ++++++ .../typo3/phar-stream-wrapper/src/Manager.php | 62 ++++- .../src/Phar/Container.php | 59 +++++ .../src/Phar/DeserializationException.php | 18 ++ .../phar-stream-wrapper/src/Phar/Manifest.php | 176 +++++++++++++ .../phar-stream-wrapper/src/Phar/Reader.php | 220 ++++++++++++++++ .../src/Phar/ReaderException.php | 18 ++ .../phar-stream-wrapper/src/Phar/Stub.php | 65 +++++ .../src/PharStreamWrapper.php | 38 ++- .../phar-stream-wrapper/src/Resolvable.php | 24 ++ .../src/Resolver/PharInvocation.php | 125 +++++++++ .../src/Resolver/PharInvocationCollection.php | 156 ++++++++++++ .../src/Resolver/PharInvocationResolver.php | 241 ++++++++++++++++++ public/modules/aggregator/aggregator.info | 6 +- .../aggregator/tests/aggregator_test.info | 6 +- public/modules/block/block.info | 6 +- public/modules/block/tests/block_test.info | 6 +- .../block_test_theme/block_test_theme.info | 6 +- public/modules/blog/blog.info | 6 +- public/modules/book/book.info | 6 +- public/modules/color/color.info | 6 +- public/modules/comment/comment.info | 6 +- public/modules/contact/contact.info | 6 +- public/modules/contextual/contextual.info | 6 +- public/modules/dashboard/dashboard.info | 6 +- public/modules/dblog/dblog.info | 6 +- public/modules/field/field.info | 6 +- .../field_sql_storage/field_sql_storage.info | 6 +- public/modules/field/modules/list/list.info | 6 +- .../field/modules/list/tests/list_test.info | 6 +- .../modules/field/modules/number/number.info | 6 +- .../field/modules/options/options.info | 6 +- public/modules/field/modules/text/text.info | 6 +- public/modules/field/tests/field_test.info | 6 +- public/modules/field_ui/field_ui.info | 6 +- public/modules/file/file.info | 6 +- .../modules/file/tests/file_module_test.info | 6 +- public/modules/filter/filter.info | 6 +- public/modules/forum/forum.info | 6 +- public/modules/help/help.info | 6 +- public/modules/image/image.info | 6 +- .../image/tests/image_module_test.info | 6 +- public/modules/locale/locale.info | 6 +- public/modules/locale/tests/locale_test.info | 6 +- public/modules/menu/menu.info | 6 +- public/modules/node/node.info | 6 +- .../modules/node/tests/node_access_test.info | 6 +- public/modules/node/tests/node_test.info | 6 +- .../node/tests/node_test_exception.info | 6 +- public/modules/openid/openid.info | 6 +- public/modules/openid/tests/openid_test.info | 6 +- public/modules/overlay/overlay.info | 6 +- public/modules/path/path.info | 6 +- public/modules/php/php.info | 6 +- public/modules/poll/poll.info | 6 +- public/modules/profile/profile.info | 6 +- public/modules/rdf/rdf.info | 6 +- public/modules/rdf/tests/rdf_test.info | 6 +- public/modules/search/search.info | 6 +- .../search/tests/search_embedded_form.info | 6 +- .../search/tests/search_extra_type.info | 6 +- .../search/tests/search_node_tags.info | 6 +- public/modules/shortcut/shortcut.info | 6 +- .../simpletest/drupal_web_test_case.php | 10 +- public/modules/simpletest/simpletest.info | 6 +- .../simpletest/tests/actions_loop_test.info | 6 +- .../simpletest/tests/ajax_forms_test.info | 6 +- .../modules/simpletest/tests/ajax_test.info | 6 +- .../modules/simpletest/tests/batch_test.info | 6 +- .../modules/simpletest/tests/boot_test_1.info | 6 +- .../modules/simpletest/tests/boot_test_2.info | 6 +- .../modules/simpletest/tests/common_test.info | 6 +- .../tests/common_test_cron_helper.info | 6 +- .../simpletest/tests/database_test.info | 6 +- .../drupal_autoload_test.info | 6 +- ...drupal_system_listing_compatible_test.info | 6 +- ...upal_system_listing_incompatible_test.info | 6 +- .../simpletest/tests/entity_cache_test.info | 6 +- .../tests/entity_cache_test_dependency.info | 6 +- .../tests/entity_crud_hook_test.info | 6 +- .../tests/entity_query_access_test.info | 6 +- .../modules/simpletest/tests/error_test.info | 6 +- .../modules/simpletest/tests/file_test.info | 6 +- .../modules/simpletest/tests/filter_test.info | 6 +- .../modules/simpletest/tests/form_test.info | 6 +- .../modules/simpletest/tests/image_test.info | 6 +- .../modules/simpletest/tests/menu_test.info | 6 +- .../modules/simpletest/tests/module_test.info | 6 +- .../modules/simpletest/tests/path_test.info | 6 +- .../tests/psr_0_test/psr_0_test.info | 6 +- .../tests/psr_4_test/psr_4_test.info | 6 +- .../simpletest/tests/requirements1_test.info | 6 +- .../simpletest/tests/requirements2_test.info | 6 +- .../simpletest/tests/session_test.info | 6 +- .../tests/system_dependencies_test.info | 6 +- ...atible_core_version_dependencies_test.info | 6 +- ...system_incompatible_core_version_test.info | 6 +- ...ible_module_version_dependencies_test.info | 6 +- ...stem_incompatible_module_version_test.info | 6 +- .../tests/system_project_namespace_test.info | 6 +- .../modules/simpletest/tests/system_test.info | 6 +- .../simpletest/tests/taxonomy_test.info | 6 +- .../modules/simpletest/tests/theme_test.info | 6 +- .../themes/test_basetheme/test_basetheme.info | 6 +- .../themes/test_subtheme/test_subtheme.info | 6 +- .../tests/themes/test_theme/test_theme.info | 6 +- .../test_theme_nyan_cat.info | 6 +- .../simpletest/tests/update_script_test.info | 6 +- .../simpletest/tests/update_test_1.info | 6 +- .../simpletest/tests/update_test_2.info | 6 +- .../simpletest/tests/update_test_3.info | 6 +- .../simpletest/tests/url_alter_test.info | 6 +- .../modules/simpletest/tests/xmlrpc_test.info | 6 +- public/modules/statistics/statistics.info | 6 +- public/modules/syslog/syslog.info | 6 +- public/modules/system/system.admin.inc | 4 +- public/modules/system/system.info | 6 +- public/modules/system/system.install | 4 +- public/modules/system/system.module | 37 ++- .../modules/system/tests/cron_queue_test.info | 6 +- .../system/tests/system_cron_test.info | 6 +- public/modules/taxonomy/taxonomy.info | 6 +- public/modules/toolbar/toolbar.info | 6 +- public/modules/tracker/tracker.info | 6 +- .../translation/tests/translation_test.info | 6 +- public/modules/translation/translation.info | 6 +- .../modules/trigger/tests/trigger_test.info | 6 +- public/modules/trigger/trigger.info | 6 +- .../modules/update/tests/aaa_update_test.info | 6 +- .../modules/update/tests/bbb_update_test.info | 6 +- .../modules/update/tests/ccc_update_test.info | 6 +- .../update_test_admintheme.info | 6 +- .../update_test_basetheme.info | 6 +- .../update_test_subtheme.info | 6 +- public/modules/update/tests/update_test.info | 6 +- public/modules/update/update.info | 6 +- public/modules/user/tests/user_form_test.info | 6 +- public/modules/user/user.info | 6 +- public/modules/user/user.pages.inc | 5 +- public/themes/bartik/bartik.info | 6 +- public/themes/garland/garland.info | 6 +- public/themes/seven/seven.info | 6 +- public/themes/stark/stark.info | 6 +- 163 files changed, 2169 insertions(+), 577 deletions(-) create mode 100644 public/misc/brumann/polyfill-unserialize/.gitignore create mode 100644 public/misc/brumann/polyfill-unserialize/.travis.yml create mode 100644 public/misc/brumann/polyfill-unserialize/LICENSE create mode 100644 public/misc/brumann/polyfill-unserialize/README.md create mode 100644 public/misc/brumann/polyfill-unserialize/composer.json create mode 100644 public/misc/brumann/polyfill-unserialize/phpunit.xml.dist create mode 100644 public/misc/brumann/polyfill-unserialize/src/Unserialize.php create mode 100644 public/misc/typo3/phar-stream-wrapper/.gitignore create mode 100644 public/misc/typo3/phar-stream-wrapper/src/Collectable.php create mode 100644 public/misc/typo3/phar-stream-wrapper/src/Interceptor/ConjunctionInterceptor.php create mode 100644 public/misc/typo3/phar-stream-wrapper/src/Interceptor/PharMetaDataInterceptor.php create mode 100644 public/misc/typo3/phar-stream-wrapper/src/Phar/Container.php create mode 100644 public/misc/typo3/phar-stream-wrapper/src/Phar/DeserializationException.php create mode 100644 public/misc/typo3/phar-stream-wrapper/src/Phar/Manifest.php create mode 100644 public/misc/typo3/phar-stream-wrapper/src/Phar/Reader.php create mode 100644 public/misc/typo3/phar-stream-wrapper/src/Phar/ReaderException.php create mode 100644 public/misc/typo3/phar-stream-wrapper/src/Phar/Stub.php create mode 100644 public/misc/typo3/phar-stream-wrapper/src/Resolvable.php create mode 100644 public/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocation.php create mode 100644 public/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocationCollection.php create mode 100644 public/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocationResolver.php diff --git a/public/includes/bootstrap.inc b/public/includes/bootstrap.inc index 98c31ad3d1..8b05bc5c68 100644 --- a/public/includes/bootstrap.inc +++ b/public/includes/bootstrap.inc @@ -8,7 +8,7 @@ /** * The current system version. */ -define('VERSION', '7.66'); +define('VERSION', '7.67'); /** * Core API compatibility. diff --git a/public/includes/common.inc b/public/includes/common.inc index 48f7acd45d..44ff460787 100644 --- a/public/includes/common.inc +++ b/public/includes/common.inc @@ -232,22 +232,6 @@ function drupal_get_profile() { return $profile; } -/** - * Returns a list of related install profiles in decending order of their - * dependencies. - */ -function drupal_get_profiles() { - global $install_state; - - if (isset($install_state['parameters']['profile'])) { - $profiles = install_get_base_profiles(); - } - else { - $profiles = variable_get('install_profiles', array('standard')); - } - - return $profiles; -} /** * Sets the breadcrumb trail for the current page. @@ -5582,7 +5566,7 @@ function drupal_system_listing($mask, $directory, $key = 'name', $min_depth = 1) } // In case both profile directories contain the same extension, the actual // profile always has precedence. - $profiles = array_merge($profiles, drupal_get_profiles()); + $profiles[] = $profile; foreach ($profiles as $profile) { if (file_exists("profiles/$profile/$directory")) { $searchdir[] = "profiles/$profile/$directory"; diff --git a/public/includes/file.phar.inc b/public/includes/file.phar.inc index 3d7ba01d4d..a0b0e12faf 100644 --- a/public/includes/file.phar.inc +++ b/public/includes/file.phar.inc @@ -18,7 +18,21 @@ function file_register_phar_wrapper() { include_once $directory . '/Helper.php'; include_once $directory . '/Manager.php'; include_once $directory . '/PharStreamWrapper.php'; + include_once $directory . '/Collectable.php'; + include_once $directory . '/Interceptor/ConjunctionInterceptor.php'; + include_once $directory . '/Interceptor/PharMetaDataInterceptor.php'; + include_once $directory . '/Phar/Container.php'; + include_once $directory . '/Phar/DeserializationException.php'; + include_once $directory . '/Phar/Manifest.php'; + include_once $directory . '/Phar/Reader.php'; + include_once $directory . '/Phar/ReaderException.php'; + include_once $directory . '/Phar/Stub.php'; + include_once $directory . '/Resolvable.php'; + include_once $directory . '/Resolver/PharInvocation.php'; + include_once $directory . '/Resolver/PharInvocationCollection.php'; + include_once $directory . '/Resolver/PharInvocationResolver.php'; include_once DRUPAL_ROOT . '/misc/typo3/drupal-security/PharExtensionInterceptor.php'; + include_once DRUPAL_ROOT . '/misc/brumann/polyfill-unserialize/src/Unserialize.php'; // Set up a stream wrapper to handle insecurities due to PHP's built-in // phar stream wrapper. diff --git a/public/includes/install.core.inc b/public/includes/install.core.inc index 1b0ed70b08..b18d23d213 100644 --- a/public/includes/install.core.inc +++ b/public/includes/install.core.inc @@ -162,9 +162,6 @@ function install_state_defaults() { // An array of information about the chosen installation profile. This will // be filled in based on the profile's .info file. 'profile_info' => array(), - // An array of information for each of the base profiles of the chosen - // install profile. - 'base_profiles_info' => array(), // An array of available installation profiles. 'profiles' => array(), // An array of server variables that will be substituted into the global @@ -577,17 +574,15 @@ function install_tasks($install_state) { if (!empty($install_state['parameters']['profile'])) { // Load the profile install file, because it is not always loaded when // hook_install_tasks() is invoked (e.g. batch processing). - foreach (drupal_get_profiles() as $profile) { - $profile_install_file = DRUPAL_ROOT . "/profiles/$profile/$profile.install"; - if (file_exists($profile_install_file)) { - include_once $profile_install_file; - } - $function = $profile . '_install_tasks'; - if (function_exists($function)) { - $result = $function($install_state); - if (is_array($result)) { - $tasks += $result; - } + $profile_install_file = DRUPAL_ROOT . '/profiles/' . $install_state['parameters']['profile'] . '/' . $install_state['parameters']['profile'] . '.install'; + if (file_exists($profile_install_file)) { + include_once $profile_install_file; + } + $function = $install_state['parameters']['profile'] . '_install_tasks'; + if (function_exists($function)) { + $result = $function($install_state); + if (is_array($result)) { + $tasks += $result; } } } @@ -607,14 +602,12 @@ function install_tasks($install_state) { // Allow the installation profile to modify the full list of tasks. if (!empty($install_state['parameters']['profile'])) { - foreach (drupal_get_profiles() as $profile) { - $profile_file = DRUPAL_ROOT . "/profiles/$profile/$profile.profile"; - if (file_exists($profile_file)) { - include_once $profile_file; - $function = $profile . '_install_tasks_alter'; - if (function_exists($function)) { - $function($tasks, $install_state); - } + $profile_file = DRUPAL_ROOT . '/profiles/' . $install_state['parameters']['profile'] . '/' . $install_state['parameters']['profile'] . '.profile'; + if (file_exists($profile_file)) { + include_once $profile_file; + $function = $install_state['parameters']['profile'] . '_install_tasks_alter'; + if (function_exists($function)) { + $function($tasks, $install_state); } } } @@ -808,19 +801,11 @@ function install_system_module(&$install_state) { // Save the list of other modules to install for the upcoming tasks. // variable_set() can be used now that system.module is installed. - $profiles = drupal_get_profiles(); - $profile_dependencies = array(); - - foreach ($profiles as $profile) { - $info = install_profile_info($profile); - $profile_dependencies = array_unique(array_merge($profile_dependencies, $info['dependencies'])); - } - - $modules = $profile_dependencies; + $modules = $install_state['profile_info']['dependencies']; // The installation profile is also a module, which needs to be installed // after all the dependencies have been installed. - $modules = array_merge($modules, $profiles); + $modules[] = drupal_get_profile(); variable_set('install_profile_modules', array_diff($modules, array('system'))); $install_state['database_tables_exist'] = TRUE; @@ -1246,15 +1231,8 @@ function install_find_locales($profilename) { */ function install_select_locale(&$install_state) { // Find all available locales. - $locales = array(); $profilename = $install_state['parameters']['profile']; - - // @todo remove duplicate 'en' languages from install_find_locales() to avoid - // polluting the 'locales' install state key. - foreach (drupal_get_profiles() as $profile) { - $locales = array_merge($locales, install_find_locales($profile)); - } - + $locales = install_find_locales($profilename); $install_state['locales'] += $locales; if (!empty($_POST['locale'])) { @@ -1397,21 +1375,13 @@ function install_already_done_error() { * the profile cannot be loaded. */ function install_load_profile(&$install_state) { - foreach (drupal_get_profiles() as $profile) { - $profile_file = DRUPAL_ROOT . "/profiles/$profile/$profile.profile"; - if (file_exists($profile_file)) { - include_once $profile_file; - - if ($install_state['parameters']['profile'] == $profile) { - $install_state['profile_info'] = install_profile_info($profile, $install_state['parameters']['locale']); - } - else { - $install_state['base_profiles_info'][] = install_profile_info($profile, $install_state['parameters']['locale']); - } - } - else { - throw new Exception(st('Sorry, the profile you have chosen cannot be loaded.')); - } + $profile_file = DRUPAL_ROOT . '/profiles/' . $install_state['parameters']['profile'] . '/' . $install_state['parameters']['profile'] . '.profile'; + if (file_exists($profile_file)) { + include_once $profile_file; + $install_state['profile_info'] = install_profile_info($install_state['parameters']['profile'], $install_state['parameters']['locale']); + } + else { + throw new Exception(st('Sorry, the profile you have chosen cannot be loaded.')); } } @@ -1446,9 +1416,7 @@ function install_profile_modules(&$install_state) { // Although the profile module is marked as required, it needs to go after // every dependency, including non-required ones. So clear its required // flag for now to allow it to install late. - foreach (drupal_get_profiles() as $profile) { - $files[$profile]->info['required'] = FALSE; - } + $files[$install_state['parameters']['profile']]->info['required'] = FALSE; // Add modules that other modules depend on. foreach ($modules as $module) { if ($files[$module]->requires) { @@ -1609,10 +1577,6 @@ function install_finished(&$install_state) { // Remember the profile which was used. variable_set('install_profile', drupal_get_profile()); - // When sub-profiles are used, remember the dependency tree. - if ($profiles = install_get_base_profiles()) { - variable_set('install_profiles', $profiles); - } // Installation profiles are always loaded last db_update('system') diff --git a/public/includes/install.inc b/public/includes/install.inc index ac0cdcfb37..b7db783586 100644 --- a/public/includes/install.inc +++ b/public/includes/install.inc @@ -676,28 +676,15 @@ function drupal_rewrite_settings($settings = array(), $prefix = '') { * The list of modules to install. */ function drupal_verify_profile($install_state) { - $selected_profile = $install_state['parameters']['profile']; + $profile = $install_state['parameters']['profile']; $locale = $install_state['parameters']['locale']; include_once DRUPAL_ROOT . '/includes/file.inc'; include_once DRUPAL_ROOT . '/includes/common.inc'; - $profiles = drupal_get_profiles(); + $profile_file = DRUPAL_ROOT . "/profiles/$profile/$profile.profile"; - if (!empty($profiles)) { - $profile_dependencies = array(); - - foreach ($profiles as $profile) { - $profile_file = DRUPAL_ROOT . "/profiles/$profile/$profile.profile"; - - if (!file_exists($profile_file)) { - throw new Exception(install_no_profile_error()); - } - $info = install_profile_info($profile); - $profile_dependencies = array_unique(array_merge($profile_dependencies, $info['dependencies'])); - } - } - else { + if (!isset($profile) || !file_exists($profile_file)) { throw new Exception(install_no_profile_error()); } $info = $install_state['profile_info']; @@ -710,10 +697,10 @@ function drupal_verify_profile($install_state) { // The installation profile is also a module, which needs to be installed // after all the other dependencies have been installed. - $present_modules = array_merge($present_modules, $profiles); + $present_modules[] = drupal_get_profile(); // Verify that all of the profile's required modules are present. - $missing_modules = array_diff($profile_dependencies, $present_modules); + $missing_modules = array_diff($info['dependencies'], $present_modules); $requirements = array(); @@ -791,7 +778,7 @@ function drupal_uninstall_modules($module_list = array(), $uninstall_dependents // Create an associative array with weights as values. $module_list = array_flip(array_values($module_list)); - $profiles = drupal_get_profiles(); + $profile = drupal_get_profile(); foreach (array_keys($module_list) as $module) { if (!isset($module_data[$module]) || drupal_get_installed_schema_version($module) == SCHEMA_UNINSTALLED) { // This module doesn't exist or is already uninstalled. Skip it. @@ -805,7 +792,7 @@ function drupal_uninstall_modules($module_list = array(), $uninstall_dependents // them automatically because uninstalling a module is a destructive // operation. foreach (array_keys($module_data[$module]->required_by) as $dependent) { - if (!isset($module_list[$dependent]) && drupal_get_installed_schema_version($dependent) != SCHEMA_UNINSTALLED && !in_array($dependent, $profiles)) { + if (!isset($module_list[$dependent]) && drupal_get_installed_schema_version($dependent) != SCHEMA_UNINSTALLED && $dependent != $profile) { return FALSE; } } @@ -1144,12 +1131,7 @@ function st($string, array $args = array(), array $options = array()) { // with its name ending in {$install_state['parameters']['locale']}.po // This might or might not be the entire filename. It is also possible // that multiple files end with the same extension, even if unlikely. - $po_files = array(); - - foreach (drupal_get_profiles() as $profile) { - $locales = file_scan_directory('./profiles/' . $profile . '/translations', '/'. $install_state['parameters']['locale'] .'\.po$/', array('recurse' => FALSE)); - $po_files = array_merge($po_files, $locales); - } + $po_files = file_scan_directory('./profiles/' . $install_state['parameters']['profile'] . '/translations', '/'. $install_state['parameters']['locale'] .'\.po$/', array('recurse' => FALSE)); if (count($po_files)) { require_once DRUPAL_ROOT . '/includes/locale.inc'; foreach ($po_files as $po_file) { @@ -1189,36 +1171,24 @@ function st($string, array $args = array(), array $options = array()) { */ function drupal_check_profile($profile) { include_once DRUPAL_ROOT . '/includes/file.inc'; - $requirements = array(); - - if (isset($profile)) { - $profile_dependencies = array(); - // Loop through all active install profiles to collect dependencies. - foreach (drupal_get_profiles() as $profile) { - $profile_file = DRUPAL_ROOT . "/profiles/$profile/$profile.profile"; + $profile_file = DRUPAL_ROOT . "/profiles/$profile/$profile.profile"; - if (!file_exists($profile_file)) { - throw new Exception(install_no_profile_error()); - } + if (!isset($profile) || !file_exists($profile_file)) { + throw new Exception(install_no_profile_error()); + } - $info = install_profile_info($profile); - $profile_dependencies = array_unique(array_merge($profile_dependencies, $info['dependencies'])); - } + $info = install_profile_info($profile); - // Collect requirement testing results. - foreach ($profile_dependencies as $module) { - module_load_install($module); - $function = $module . '_requirements'; - if (function_exists($function)) { - $requirements = array_merge($requirements, $function('install')); - } + // Collect requirement testing results. + $requirements = array(); + foreach ($info['dependencies'] as $module) { + module_load_install($module); + $function = $module . '_requirements'; + if (function_exists($function)) { + $requirements = array_merge($requirements, $function('install')); } } - else { - throw new Exception(install_no_profile_error()); - } - return $requirements; } @@ -1344,23 +1314,6 @@ function install_profile_info($profile, $locale = 'en') { return $cache[$profile]; } -/** - * Get a list of base install profiles from a specified install profile. - */ -function install_get_base_profiles() { - $profile = drupal_get_profile(); - $info = drupal_parse_info_file("profiles/$profile/$profile.info"); - - $profiles = array($profile); - while (!empty($info) && isset($info['base'])) { - $profiles[] = $info['base']; - $profile = $info['base']; - $info = drupal_parse_info_file("profiles/$profile/$profile.info"); - } - $profiles = array_reverse($profiles); - return $profiles; -} - /** * Ensures the environment for a Drupal database on a predefined connection. * diff --git a/public/includes/module.inc b/public/includes/module.inc index 96758de9cb..4c2b3fbeeb 100644 --- a/public/includes/module.inc +++ b/public/includes/module.inc @@ -543,7 +543,7 @@ function module_disable($module_list, $disable_dependents = TRUE) { // Create an associative array with weights as values. $module_list = array_flip(array_values($module_list)); - $profiles = drupal_get_profiles(); + $profile = drupal_get_profile(); // The array is iterated over manually (instead of using a foreach) because // modules may be added to the list within the loop and we need to process // them. @@ -559,7 +559,7 @@ function module_disable($module_list, $disable_dependents = TRUE) { // Add dependent modules to the list, with a placeholder weight. // The new modules will be processed as the while loop continues. foreach ($module_data[$module]->required_by as $dependent => $dependent_data) { - if (!isset($module_list[$dependent]) && !in_array($dependent, $profiles)) { + if (!isset($module_list[$dependent]) && $dependent != $profile) { $module_list[$dependent] = 0; } } @@ -987,7 +987,7 @@ function drupal_required_modules() { $required = array(); // An installation profile is required and one must always be loaded. - $required = array_merge($required, drupal_get_profiles()); + $required[] = drupal_get_profile(); foreach ($files as $name => $file) { $info = drupal_parse_info_file($file->uri); diff --git a/public/misc/brumann/polyfill-unserialize/.gitignore b/public/misc/brumann/polyfill-unserialize/.gitignore new file mode 100644 index 0000000000..767699f1b8 --- /dev/null +++ b/public/misc/brumann/polyfill-unserialize/.gitignore @@ -0,0 +1,4 @@ +/vendor/ +/phpunit.xml +/.composer.lock + diff --git a/public/misc/brumann/polyfill-unserialize/.travis.yml b/public/misc/brumann/polyfill-unserialize/.travis.yml new file mode 100644 index 0000000000..352536f458 --- /dev/null +++ b/public/misc/brumann/polyfill-unserialize/.travis.yml @@ -0,0 +1,20 @@ +language: php + +sudo: false + +php: + - '5.3' + - '5.4' + - '5.5' + - '5.6' + - '7.0' + - '7.1' + +before_install: + - phpenv config-rm xdebug.ini + - composer self-update + +install: + - composer install + +script: phpunit diff --git a/public/misc/brumann/polyfill-unserialize/LICENSE b/public/misc/brumann/polyfill-unserialize/LICENSE new file mode 100644 index 0000000000..0cb53d3b02 --- /dev/null +++ b/public/misc/brumann/polyfill-unserialize/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Denis Brumann + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/public/misc/brumann/polyfill-unserialize/README.md b/public/misc/brumann/polyfill-unserialize/README.md new file mode 100644 index 0000000000..bac25fe049 --- /dev/null +++ b/public/misc/brumann/polyfill-unserialize/README.md @@ -0,0 +1,61 @@ +Polyfill unserialize [![Build Status](https://travis-ci.org/dbrumann/polyfill-unserialize.svg?branch=master)](https://travis-ci.org/dbrumann/polyfill-unserialize) +=== + +Backports unserialize options introduced in PHP 7.0 to older PHP versions. +This was originally designed as a Proof of Concept for Symfony Issue [#21090](https://github.com/symfony/symfony/pull/21090). + +You can use this package in projects that rely on PHP versions older than PHP 7.0. +In case you are using PHP 7.0+ the original `unserialize()` will be used instead. + +From the [documentation](https://secure.php.net/manual/en/function.unserialize.php): + +> Warning: Do not pass untrusted user input to unserialize(). Unserialization can +> result in code being loaded and executed due to object instantiation +> and autoloading, and a malicious user may be able to exploit this. + +This warning holds true even when `allowed_classes` is used. + +Requirements +------------ + + - PHP 5.3+ + +Installation +------------ + +You can install this package via composer: + +``` +composer require brumann/polyfill-unserialize "^1.0" +``` + +Known Issues +------------ + +There is a mismatch in behavior when `allowed_classes` in `$options` is not +of the correct type (array or boolean). PHP 7.1 will issue a warning, whereas +PHP 7.0 will not. I opted to copy the behavior of the former. + +Tests +----- + +You can run the test suite using PHPUnit. It is intentionally not bundled as +dev dependency to make sure this package has the lowest restrictions on the +implementing system as possible. + +Please read the [PHPUnit Manual](https://phpunit.de/manual/current/en/installation.html) +for information how to install it on your system. + +You can run the test suite as follows: + +``` +phpunit -c phpunit.xml.dist tests/ +``` + +Contributing +------------ + +This package is considered feature complete. As such I will likely not update it +unless there are security issues. + +Should you find any bugs or have questions, feel free to submit an Issue or a Pull Request. diff --git a/public/misc/brumann/polyfill-unserialize/composer.json b/public/misc/brumann/polyfill-unserialize/composer.json new file mode 100644 index 0000000000..ec4a2cf0ea --- /dev/null +++ b/public/misc/brumann/polyfill-unserialize/composer.json @@ -0,0 +1,26 @@ +{ + "name": "brumann/polyfill-unserialize", + "description": "Backports unserialize options introduced in PHP 7.0 to older PHP versions.", + "type": "library", + "license": "MIT", + "authors": [ + { + "name": "Denis Brumann", + "email": "denis.brumann@sensiolabs.de" + } + ], + "autoload": { + "psr-4": { + "Brumann\\Polyfill\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\Brumann\\Polyfill\\": "tests/" + } + }, + "minimum-stability": "stable", + "require": { + "php": "^5.3|^7.0" + } +} diff --git a/public/misc/brumann/polyfill-unserialize/phpunit.xml.dist b/public/misc/brumann/polyfill-unserialize/phpunit.xml.dist new file mode 100644 index 0000000000..8fea1bab86 --- /dev/null +++ b/public/misc/brumann/polyfill-unserialize/phpunit.xml.dist @@ -0,0 +1,25 @@ + + + + + + + + + + ./tests/ + + + + + + ./src/ + + + diff --git a/public/misc/brumann/polyfill-unserialize/src/Unserialize.php b/public/misc/brumann/polyfill-unserialize/src/Unserialize.php new file mode 100644 index 0000000000..e025d55ed4 --- /dev/null +++ b/public/misc/brumann/polyfill-unserialize/src/Unserialize.php @@ -0,0 +1,58 @@ += 70000) { + return \unserialize($serialized, $options); + } + if (!array_key_exists('allowed_classes', $options)) { + $options['allowed_classes'] = true; + } + $allowedClasses = $options['allowed_classes']; + if (true === $allowedClasses) { + return \unserialize($serialized); + } + if (false === $allowedClasses) { + $allowedClasses = array(); + } + if (!is_array($allowedClasses)) { + trigger_error( + 'unserialize(): allowed_classes option should be array or boolean', + E_USER_WARNING + ); + $allowedClasses = array(); + } + + $sanitizedSerialized = preg_replace_callback( + '/(^|;)O:\d+:"([^"]*)":(\d+):{/', + function ($match) use ($allowedClasses) { + list($completeMatch, $leftBorder, $className, $objectSize) = $match; + if (in_array($className, $allowedClasses)) { + return $completeMatch; + } else { + return sprintf( + '%sO:22:"__PHP_Incomplete_Class":%d:{s:27:"__PHP_Incomplete_Class_Name";%s', + $leftBorder, + $objectSize + 1, // size of object + 1 for added string + \serialize($className) + ); + } + }, + $serialized + ); + + return \unserialize($sanitizedSerialized); + } +} diff --git a/public/misc/typo3/phar-stream-wrapper/.gitignore b/public/misc/typo3/phar-stream-wrapper/.gitignore new file mode 100644 index 0000000000..157ff0c598 --- /dev/null +++ b/public/misc/typo3/phar-stream-wrapper/.gitignore @@ -0,0 +1,3 @@ +.idea +vendor/ +composer.lock diff --git a/public/misc/typo3/phar-stream-wrapper/README.md b/public/misc/typo3/phar-stream-wrapper/README.md index b632784bdd..179bb6fd77 100644 --- a/public/misc/typo3/phar-stream-wrapper/README.md +++ b/public/misc/typo3/phar-stream-wrapper/README.md @@ -63,7 +63,7 @@ adjusted to according requirements. ``` $behavior = new \TYPO3\PharStreamWrapper\Behavior(); -Manager::initialize( +\TYPO3\PharStreamWrapper\Manager::initialize( $behavior->withAssertion(new PharExtensionInterceptor()) ); @@ -90,7 +90,7 @@ if (in_array('phar', stream_get_wrappers())) { + `COMMAND_UNLINK` + `COMMAND_URL_STAT` -## Interceptor +## Interceptors The following interceptor is shipped with the package and ready to use in order to block any Phar invocation of files not having a `.phar` suffix. Besides that @@ -137,9 +137,72 @@ class PharExtensionInterceptor implements Assertable } ``` +### ConjunctionInterceptor + +This interceptor combines multiple interceptors implementing `Assertable`. +It succeeds when all nested interceptors succeed as well (logical `AND`). + +``` +$behavior = new \TYPO3\PharStreamWrapper\Behavior(); +\TYPO3\PharStreamWrapper\Manager::initialize( + $behavior->withAssertion(new ConjunctionInterceptor(array( + new PharExtensionInterceptor(), + new PharMetaDataInterceptor() + ))) +); +``` + +### PharExtensionInterceptor + +This (basic) interceptor just checks whether the invoked Phar archive has +an according `.phar` file extension. Resolving symbolic links as well as +Phar internal alias resolving are considered as well. + +``` +$behavior = new \TYPO3\PharStreamWrapper\Behavior(); +\TYPO3\PharStreamWrapper\Manager::initialize( + $behavior->withAssertion(new PharExtensionInterceptor()) +); +``` + +### PharMetaDataInterceptor + +This interceptor is actually checking serialized Phar meta-data against +PHP objects and would consider a Phar archive malicious in case not only +scalar values are found. A custom low-level `Phar\Reader` is used in order to +avoid using PHP's `Phar` object which would trigger the initial vulnerability. + +``` +$behavior = new \TYPO3\PharStreamWrapper\Behavior(); +\TYPO3\PharStreamWrapper\Manager::initialize( + $behavior->withAssertion(new PharMetaDataInterceptor()) +); +``` + +## Reader + +* `Phar\Reader::__construct(string $fileName)`: Creates low-level reader for Phar archive +* `Phar\Reader::resolveContainer(): Phar\Container`: Resolves model representing Phar archive +* `Phar\Container::getStub(): Phar\Stub`: Resolves (plain PHP) stub section of Phar archive +* `Phar\Container::getManifest(): Phar\Manifest`: Resolves parsed Phar archive manifest as + documented at http://php.net/manual/en/phar.fileformat.manifestfile.php +* `Phar\Stub::getMappedAlias(): string`: Resolves internal Phar archive alias defined in stub + using `Phar::mapPhar('alias.phar')` - actually the plain PHP source is analyzed here +* `Phar\Manifest::getAlias(): string` - Resolves internal Phar archive alias defined in manifest + using `Phar::setAlias('alias.phar')` +* `Phar\Manifest::getMetaData(): string`: Resolves serialized Phar archive meta-data +* `Phar\Manifest::deserializeMetaData(): mixed`: Resolves deserialized Phar archive meta-data + containing only scalar values - in case an object is determined, an according + `Phar\DeserializationException` will be thrown + +``` +$reader = new Phar\Reader('example.phar'); +var_dump($reader->resolveContainer()->getManifest()->deserializeMetaData()); +``` + ## Helper -* `Helper::determineBaseFile(string $path)`: Determines base file that can be +* `Helper::determineBaseFile(string $path): string`: Determines base file that can be accessed using the regular file system. For instance the following path `phar:///home/user/bundle.phar/content.txt` would be resolved to `/home/user/bundle.phar`. diff --git a/public/misc/typo3/phar-stream-wrapper/composer.json b/public/misc/typo3/phar-stream-wrapper/composer.json index d308f8c874..8c22411875 100644 --- a/public/misc/typo3/phar-stream-wrapper/composer.json +++ b/public/misc/typo3/phar-stream-wrapper/composer.json @@ -6,9 +6,13 @@ "homepage": "https://typo3.org/", "keywords": ["php", "phar", "stream-wrapper", "security"], "require": { - "php": "^5.3.3|^7.0" + "php": "^5.3.3|^7.0", + "ext-fileinfo": "*", + "ext-json": "*", + "brumann/polyfill-unserialize": "^1.0" }, "require-dev": { + "ext-xdebug": "*", "phpunit/phpunit": "^4.8.36" }, "autoload": { diff --git a/public/misc/typo3/phar-stream-wrapper/src/Collectable.php b/public/misc/typo3/phar-stream-wrapper/src/Collectable.php new file mode 100644 index 0000000000..4694dc946e --- /dev/null +++ b/public/misc/typo3/phar-stream-wrapper/src/Collectable.php @@ -0,0 +1,37 @@ +assertAssertions($assertions); + $this->assertions = $assertions; + } + + /** + * Executes assertions based on all contained assertions. + * + * @param string $path + * @param string $command + * @return bool + * @throws Exception + */ + public function assert($path, $command) + { + if ($this->invokeAssertions($path, $command)) { + return true; + } + throw new Exception( + sprintf( + 'Assertion failed in "%s"', + $path + ), + 1539625084 + ); + } + + /** + * @param Assertable[] $assertions + */ + private function assertAssertions(array $assertions) + { + foreach ($assertions as $assertion) { + if (!$assertion instanceof Assertable) { + throw new \InvalidArgumentException( + sprintf( + 'Instance %s must implement Assertable', + get_class($assertion) + ), + 1539624719 + ); + } + } + } + + /** + * @param string $path + * @param string $command + * @return bool + */ + private function invokeAssertions($path, $command) + { + try { + foreach ($this->assertions as $assertion) { + if (!$assertion->assert($path, $command)) { + return false; + } + } + } catch (Exception $exception) { + return false; + } + return true; + } +} diff --git a/public/misc/typo3/phar-stream-wrapper/src/Interceptor/PharExtensionInterceptor.php b/public/misc/typo3/phar-stream-wrapper/src/Interceptor/PharExtensionInterceptor.php index db500afc8a..6e7aeedcbe 100644 --- a/public/misc/typo3/phar-stream-wrapper/src/Interceptor/PharExtensionInterceptor.php +++ b/public/misc/typo3/phar-stream-wrapper/src/Interceptor/PharExtensionInterceptor.php @@ -12,8 +12,8 @@ */ use TYPO3\PharStreamWrapper\Assertable; -use TYPO3\PharStreamWrapper\Helper; use TYPO3\PharStreamWrapper\Exception; +use TYPO3\PharStreamWrapper\Manager; class PharExtensionInterceptor implements Assertable { @@ -45,11 +45,11 @@ public function assert($path, $command) */ private function baseFileContainsPharExtension($path) { - $baseFile = Helper::determineBaseFile($path); - if ($baseFile === null) { + $invocation = Manager::instance()->resolve($path); + if ($invocation === null) { return false; } - $fileExtension = pathinfo($baseFile, PATHINFO_EXTENSION); + $fileExtension = pathinfo($invocation->getBaseName(), PATHINFO_EXTENSION); return strtolower($fileExtension) === 'phar'; } } diff --git a/public/misc/typo3/phar-stream-wrapper/src/Interceptor/PharMetaDataInterceptor.php b/public/misc/typo3/phar-stream-wrapper/src/Interceptor/PharMetaDataInterceptor.php new file mode 100644 index 0000000000..e981dc6a69 --- /dev/null +++ b/public/misc/typo3/phar-stream-wrapper/src/Interceptor/PharMetaDataInterceptor.php @@ -0,0 +1,73 @@ +baseFileDoesNotHaveMetaDataIssues($path)) { + return true; + } + throw new Exception( + sprintf( + 'Problematic meta-data in "%s"', + $path + ), + 1539632368 + ); + } + + /** + * @param string $path + * @return bool + */ + private function baseFileDoesNotHaveMetaDataIssues($path) + { + $invocation = Manager::instance()->resolve($path); + if ($invocation === null) { + return false; + } + // directly return in case invocation was checked before + if ($invocation->getVariable(__CLASS__) === true) { + return true; + } + // otherwise analyze meta-data + try { + $reader = new Reader($invocation->getBaseName()); + $reader->resolveContainer()->getManifest()->deserializeMetaData(); + $invocation->setVariable(__CLASS__, true); + } catch (DeserializationException $exception) { + return false; + } + return true; + } +} diff --git a/public/misc/typo3/phar-stream-wrapper/src/Manager.php b/public/misc/typo3/phar-stream-wrapper/src/Manager.php index 1eb9735d98..f938ad9854 100644 --- a/public/misc/typo3/phar-stream-wrapper/src/Manager.php +++ b/public/misc/typo3/phar-stream-wrapper/src/Manager.php @@ -11,7 +11,11 @@ * The TYPO3 project - inspiring people to share! */ -class Manager implements Assertable +use TYPO3\PharStreamWrapper\Resolver\PharInvocation; +use TYPO3\PharStreamWrapper\Resolver\PharInvocationCollection; +use TYPO3\PharStreamWrapper\Resolver\PharInvocationResolver; + +class Manager { /** * @var self @@ -23,14 +27,29 @@ class Manager implements Assertable */ private $behavior; + /** + * @var Resolvable + */ + private $resolver; + + /** + * @var Collectable + */ + private $collection; + /** * @param Behavior $behaviour + * @param Resolvable $resolver + * @param Collectable $collection * @return self */ - public static function initialize(Behavior $behaviour) - { + public static function initialize( + Behavior $behaviour, + Resolvable $resolver = null, + Collectable $collection = null + ) { if (self::$instance === null) { - self::$instance = new self($behaviour); + self::$instance = new self($behaviour, $resolver, $collection); return self::$instance; } throw new \LogicException( @@ -67,9 +86,22 @@ public static function destroy() /** * @param Behavior $behaviour + * @param Resolvable $resolver + * @param Collectable $collection */ - private function __construct(Behavior $behaviour) - { + private function __construct( + Behavior $behaviour, + Resolvable $resolver = null, + Collectable $collection = null + ) { + if ($collection === null) { + $collection = new PharInvocationCollection(); + } + if ($resolver === null) { + $resolver = new PharInvocationResolver(); + } + $this->collection = $collection; + $this->resolver = $resolver; $this->behavior = $behaviour; } @@ -82,4 +114,22 @@ public function assert($path, $command) { return $this->behavior->assert($path, $command); } + + /** + * @param string $path + * @param null|int $flags + * @return null|PharInvocation + */ + public function resolve($path, $flags = null) + { + return $this->resolver->resolve($path, $flags); + } + + /** + * @return Collectable + */ + public function getCollection() + { + return $this->collection; + } } diff --git a/public/misc/typo3/phar-stream-wrapper/src/Phar/Container.php b/public/misc/typo3/phar-stream-wrapper/src/Phar/Container.php new file mode 100644 index 0000000000..f02387d738 --- /dev/null +++ b/public/misc/typo3/phar-stream-wrapper/src/Phar/Container.php @@ -0,0 +1,59 @@ +stub = $stub; + $this->manifest = $manifest; + } + + /** + * @return Stub + */ + public function getStub() + { + return $this->stub; + } + + /** + * @return Manifest + */ + public function getManifest() + { + return $this->manifest; + } + + /** + * @return string + */ + public function getAlias() + { + return $this->manifest->getAlias() ?: $this->stub->getMappedAlias(); + } +} diff --git a/public/misc/typo3/phar-stream-wrapper/src/Phar/DeserializationException.php b/public/misc/typo3/phar-stream-wrapper/src/Phar/DeserializationException.php new file mode 100644 index 0000000000..5a675d34fe --- /dev/null +++ b/public/misc/typo3/phar-stream-wrapper/src/Phar/DeserializationException.php @@ -0,0 +1,18 @@ +manifestLength = Reader::resolveFourByteLittleEndian($content, 0); + $target->amountOfFiles = Reader::resolveFourByteLittleEndian($content, 4); + $target->flags = Reader::resolveFourByteLittleEndian($content, 10); + $target->aliasLength = Reader::resolveFourByteLittleEndian($content, 14); + $target->alias = substr($content, 18, $target->aliasLength); + $target->metaDataLength = Reader::resolveFourByteLittleEndian($content, 18 + $target->aliasLength); + $target->metaData = substr($content, 22 + $target->aliasLength, $target->metaDataLength); + + $apiVersionNibbles = Reader::resolveTwoByteBigEndian($content, 8); + $target->apiVersion = implode('.', array( + ($apiVersionNibbles & 0xf000) >> 12, + ($apiVersionNibbles & 0x0f00) >> 8, + ($apiVersionNibbles & 0x00f0) >> 4, + )); + + return $target; + } + + /** + * @var int + */ + private $manifestLength; + + /** + * @var int + */ + private $amountOfFiles; + + /** + * @var string + */ + private $apiVersion; + + /** + * @var int + */ + private $flags; + + /** + * @var int + */ + private $aliasLength; + + /** + * @var string + */ + private $alias; + + /** + * @var int + */ + private $metaDataLength; + + /** + * @var string + */ + private $metaData; + + /** + * Avoid direct instantiation. + */ + private function __construct() + { + } + + /** + * @return int + */ + public function getManifestLength() + { + return $this->manifestLength; + } + + /** + * @return int + */ + public function getAmountOfFiles() + { + return $this->amountOfFiles; + } + + /** + * @return string + */ + public function getApiVersion() + { + return $this->apiVersion; + } + + /** + * @return int + */ + public function getFlags() + { + return $this->flags; + } + + /** + * @return int + */ + public function getAliasLength() + { + return $this->aliasLength; + } + + /** + * @return string + */ + public function getAlias() + { + return $this->alias; + } + + /** + * @return int + */ + public function getMetaDataLength() + { + return $this->metaDataLength; + } + + /** + * @return string + */ + public function getMetaData() + { + return $this->metaData; + } + + /** + * @return mixed|null + */ + public function deserializeMetaData() + { + if (empty($this->metaData)) { + return null; + } + + $result = Unserialize::unserialize($this->metaData, array('allowed_classes' => false)); + + $serialized = json_encode($result); + if (strpos($serialized, '__PHP_Incomplete_Class_Name') !== false) { + throw new DeserializationException( + 'Meta-data contains serialized object', + 1539623382 + ); + } + + return $result; + } +} diff --git a/public/misc/typo3/phar-stream-wrapper/src/Phar/Reader.php b/public/misc/typo3/phar-stream-wrapper/src/Phar/Reader.php new file mode 100644 index 0000000000..32e516be3a --- /dev/null +++ b/public/misc/typo3/phar-stream-wrapper/src/Phar/Reader.php @@ -0,0 +1,220 @@ +fileName = $fileName; + $this->fileType = $this->determineFileType(); + } + + /** + * @return Container + */ + public function resolveContainer() + { + $data = $this->extractData($this->resolveStream() . $this->fileName); + + if ($data['stubContent'] === null) { + throw new ReaderException( + 'Cannot resolve stub', + 1547807881 + ); + } + if ($data['manifestContent'] === null || $data['manifestLength'] === null) { + throw new ReaderException( + 'Cannot resolve manifest', + 1547807882 + ); + } + if (strlen($data['manifestContent']) < $data['manifestLength']) { + throw new ReaderException( + sprintf( + 'Exected manifest length %d, got %d', + strlen($data['manifestContent']), + $data['manifestLength'] + ), + 1547807883 + ); + } + + return new Container( + Stub::fromContent($data['stubContent']), + Manifest::fromContent($data['manifestContent']) + ); + } + + /** + * @param string $fileName e.g. '/path/file.phar' or 'compress.zlib:///path/file.phar' + * @return array + */ + private function extractData($fileName) + { + $stubContent = null; + $manifestContent = null; + $manifestLength = null; + + $resource = fopen($fileName, 'r'); + if (!is_resource($resource)) { + throw new ReaderException( + sprintf('Resource %s could not be opened', $fileName), + 1547902055 + ); + } + + while (!feof($resource)) { + $line = fgets($resource); + // stop reading file when manifest can be extracted + if ($manifestLength !== null && $manifestContent !== null && strlen($manifestContent) >= $manifestLength) { + break; + } + + $manifestPosition = strpos($line, '__HALT_COMPILER();'); + + // first line contains start of manifest + if ($stubContent === null && $manifestContent === null && $manifestPosition !== false) { + $stubContent = substr($line, 0, $manifestPosition - 1); + $manifestContent = preg_replace('#^.*__HALT_COMPILER\(\);(?>[ \n]\?>(?>\r\n|\n)?)?#', '', $line); + $manifestLength = $this->resolveManifestLength($manifestContent); + // line contains start of stub + } elseif ($stubContent === null) { + $stubContent = $line; + // line contains start of manifest + } elseif ($manifestContent === null && $manifestPosition !== false) { + $manifestContent = preg_replace('#^.*__HALT_COMPILER\(\);(?>[ \n]\?>(?>\r\n|\n)?)?#', '', $line); + $manifestLength = $this->resolveManifestLength($manifestContent); + // manifest has been started (thus is cannot be stub anymore), add content + } elseif ($manifestContent !== null) { + $manifestContent .= $line; + $manifestLength = $this->resolveManifestLength($manifestContent); + // stub has been started (thus cannot be manifest here, yet), add content + } elseif ($stubContent !== null) { + $stubContent .= $line; + } + } + fclose($resource); + + return array( + 'stubContent' => $stubContent, + 'manifestContent' => $manifestContent, + 'manifestLength' => $manifestLength, + ); + } + + /** + * Resolves stream in order to handle compressed Phar archives. + * + * @return string + */ + private function resolveStream() + { + if ($this->fileType === 'application/x-gzip') { + return 'compress.zlib://'; + } elseif ($this->fileType === 'application/x-bzip2') { + return 'compress.bzip2://'; + } + return ''; + } + + /** + * @return string + */ + private function determineFileType() + { + $fileInfo = new \finfo(); + return $fileInfo->file($this->fileName, FILEINFO_MIME_TYPE); + } + + /** + * @param string $content + * @return int|null + */ + private function resolveManifestLength($content) + { + if (strlen($content) < 4) { + return null; + } + return static::resolveFourByteLittleEndian($content, 0); + } + + /** + * @param string $content + * @param int $start + * @return int + */ + public static function resolveFourByteLittleEndian($content, $start) + { + $payload = substr($content, $start, 4); + if (!is_string($payload)) { + throw new ReaderException( + sprintf('Cannot resolve value at offset %d', $start), + 1539614260 + ); + } + + $value = unpack('V', $payload); + if (!isset($value[1])) { + throw new ReaderException( + sprintf('Cannot resolve value at offset %d', $start), + 1539614261 + ); + } + return $value[1]; + } + + /** + * @param string $content + * @param int $start + * @return int + */ + public static function resolveTwoByteBigEndian($content, $start) + { + $payload = substr($content, $start, 2); + if (!is_string($payload)) { + throw new ReaderException( + sprintf('Cannot resolve value at offset %d', $start), + 1539614263 + ); + } + + $value = unpack('n', $payload); + if (!isset($value[1])) { + throw new ReaderException( + sprintf('Cannot resolve value at offset %d', $start), + 1539614264 + ); + } + return $value[1]; + } +} diff --git a/public/misc/typo3/phar-stream-wrapper/src/Phar/ReaderException.php b/public/misc/typo3/phar-stream-wrapper/src/Phar/ReaderException.php new file mode 100644 index 0000000000..002afe158d --- /dev/null +++ b/public/misc/typo3/phar-stream-wrapper/src/Phar/ReaderException.php @@ -0,0 +1,18 @@ +content = $content; + + if ( + stripos($content, 'Phar::mapPhar(') !== false + && preg_match('#Phar\:\:mapPhar\(([^)]+)\)#', $content, $matches) + ) { + // remove spaces, single & double quotes + // @todo `'my' . 'alias' . '.phar'` is not evaluated here + $target->mappedAlias = trim($matches[1], ' \'"'); + } + + return $target; + } + + /** + * @var string + */ + private $content; + + /** + * @var string + */ + private $mappedAlias = ''; + + /** + * @return string + */ + public function getContent() + { + return $this->content; + } + + /** + * @return string + */ + public function getMappedAlias() + { + return $this->mappedAlias; + } +} diff --git a/public/misc/typo3/phar-stream-wrapper/src/PharStreamWrapper.php b/public/misc/typo3/phar-stream-wrapper/src/PharStreamWrapper.php index 5a924e4ccd..acd5656f47 100644 --- a/public/misc/typo3/phar-stream-wrapper/src/PharStreamWrapper.php +++ b/public/misc/typo3/phar-stream-wrapper/src/PharStreamWrapper.php @@ -11,6 +11,8 @@ * The TYPO3 project - inspiring people to share! */ +use TYPO3\PharStreamWrapper\Resolver\PharInvocation; + class PharStreamWrapper { /** @@ -29,6 +31,11 @@ class PharStreamWrapper */ protected $internalResource; + /** + * @var PharInvocation + */ + protected $invocation; + /** * @return bool */ @@ -409,7 +416,8 @@ public function url_stat($path, $flags) */ protected function assert($path, $command) { - if ($this->resolveAssertable()->assert($path, $command) === true) { + if (Manager::instance()->assert($path, $command) === true) { + $this->collectInvocation($path); return; } @@ -424,7 +432,33 @@ protected function assert($path, $command) } /** - * @return Assertable + * @param string $path + */ + protected function collectInvocation($path) + { + if (isset($this->invocation)) { + return; + } + + $manager = Manager::instance(); + $this->invocation = $manager->resolve($path); + if ($this->invocation === null) { + throw new Exception( + 'Expected invocation could not be resolved', + 1556389591 + ); + } + // confirm, previous interceptor(s) validated invocation + $this->invocation->confirm(); + $collection = $manager->getCollection(); + if (!$collection->has($this->invocation)) { + $collection->collect($this->invocation); + } + } + + /** + * @return Manager|Assertable + * @deprecated Use Manager::instance() directly */ protected function resolveAssertable() { diff --git a/public/misc/typo3/phar-stream-wrapper/src/Resolvable.php b/public/misc/typo3/phar-stream-wrapper/src/Resolvable.php new file mode 100644 index 0000000000..5d5fdc63ee --- /dev/null +++ b/public/misc/typo3/phar-stream-wrapper/src/Resolvable.php @@ -0,0 +1,24 @@ +baseName = $baseName; + $this->alias = $alias; + } + + /** + * @return string + */ + public function __toString() + { + return $this->baseName; + } + + /** + * @return string + */ + public function getBaseName() + { + return $this->baseName; + } + + /** + * @return null|string + */ + public function getAlias() + { + return $this->alias; + } + + /** + * @return bool + */ + public function isConfirmed() + { + return $this->confirmed; + } + + public function confirm() + { + $this->confirmed = true; + } + + /** + * @param string $name + * @return mixed|null + */ + public function getVariable($name) + { + if (!isset($this->variables[$name])) { + return null; + } + return $this->variables[$name]; + } + + /** + * @param string $name + * @param mixed $value + */ + public function setVariable($name, $value) + { + $this->variables[$name] = $value; + } + + /** + * @param PharInvocation $other + * @return bool + */ + public function equals(PharInvocation $other) + { + return $other->baseName === $this->baseName + && $other->alias === $this->alias; + } +} \ No newline at end of file diff --git a/public/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocationCollection.php b/public/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocationCollection.php new file mode 100644 index 0000000000..e445ff66e9 --- /dev/null +++ b/public/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocationCollection.php @@ -0,0 +1,156 @@ +invocations, true); + } + + /** + * @param PharInvocation $invocation + * @param null|int $flags + * @return bool + */ + public function collect(PharInvocation $invocation, $flags = null) + { + if ($flags === null) { + $flags = static::UNIQUE_INVOCATION | static::DUPLICATE_ALIAS_WARNING; + } + if ($invocation->getBaseName() === '' + || $invocation->getAlias() === '' + || !$this->assertUniqueBaseName($invocation, $flags) + || !$this->assertUniqueInvocation($invocation, $flags) + ) { + return false; + } + if ($flags & static::DUPLICATE_ALIAS_WARNING) { + $this->triggerDuplicateAliasWarning($invocation); + } + + $this->invocations[] = $invocation; + return true; + } + + /** + * @param callable $callback + * @param bool $reverse + * @return null|PharInvocation + */ + public function findByCallback($callback, $reverse = false) + { + foreach ($this->getInvocations($reverse) as $invocation) { + if (call_user_func($callback, $invocation) === true) { + return $invocation; + } + } + return null; + } + + /** + * Asserts that base-name is unique. This disallows having multiple invocations for + * same base-name but having different alias names. + * + * @param PharInvocation $invocation + * @param int $flags + * @return bool + */ + private function assertUniqueBaseName(PharInvocation $invocation, $flags) + { + if (!($flags & static::UNIQUE_BASE_NAME)) { + return true; + } + return $this->findByCallback( + function (PharInvocation $candidate) use ($invocation) { + return $candidate->getBaseName() === $invocation->getBaseName(); + } + ) === null; + } + + /** + * Asserts that combination of base-name and alias is unique. This allows having multiple + * invocations for same base-name but having different alias names (for whatever reason). + * + * @param PharInvocation $invocation + * @param int $flags + * @return bool + */ + private function assertUniqueInvocation(PharInvocation $invocation, $flags) + { + if (!($flags & static::UNIQUE_INVOCATION)) { + return true; + } + return $this->findByCallback( + function (PharInvocation $candidate) use ($invocation) { + return $candidate->equals($invocation); + } + ) === null; + } + + /** + * Triggers warning for invocations with same alias and same confirmation state. + * + * @param PharInvocation $invocation + * @see \TYPO3\PharStreamWrapper\PharStreamWrapper::collectInvocation() + */ + private function triggerDuplicateAliasWarning(PharInvocation $invocation) + { + $sameAliasInvocation = $this->findByCallback( + function (PharInvocation $candidate) use ($invocation) { + return $candidate->isConfirmed() === $invocation->isConfirmed() + && $candidate->getAlias() === $invocation->getAlias(); + }, + true + ); + if ($sameAliasInvocation === null) { + return; + } + trigger_error( + sprintf( + 'Alias %s cannot be used by %s, already used by %s', + $invocation->getAlias(), + $invocation->getBaseName(), + $sameAliasInvocation->getBaseName() + ), + E_USER_WARNING + ); + } + + /** + * @param bool $reverse + * @return PharInvocation[] + */ + private function getInvocations($reverse = false) + { + if ($reverse) { + return array_reverse($this->invocations); + } + return $this->invocations; + } +} \ No newline at end of file diff --git a/public/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocationResolver.php b/public/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocationResolver.php new file mode 100644 index 0000000000..80b86d3db4 --- /dev/null +++ b/public/misc/typo3/phar-stream-wrapper/src/Resolver/PharInvocationResolver.php @@ -0,0 +1,241 @@ +findByAlias($path); + if ($invocation !== null) { + return $invocation; + } + } + + $baseName = $this->resolveBaseName($path, $flags); + if ($baseName === null) { + return null; + } + + if ($flags & static::RESOLVE_REALPATH) { + $baseName = $this->baseNames[$baseName]; + } + + return $this->retrieveInvocation($baseName, $flags); + } + + /** + * Retrieves PharInvocation, either existing in collection or created on demand + * with resolving a potential alias name used in the according Phar archive. + * + * @param string $baseName + * @param int $flags + * @return PharInvocation + */ + private function retrieveInvocation($baseName, $flags) + { + $invocation = $this->findByBaseName($baseName); + if ($invocation !== null) { + return $invocation; + } + + if ($flags & static::RESOLVE_ALIAS) { + $reader = new Reader($baseName); + $alias = $reader->resolveContainer()->getAlias(); + } else { + $alias = ''; + } + // add unconfirmed(!) new invocation to collection + $invocation = new PharInvocation($baseName, $alias); + Manager::instance()->getCollection()->collect($invocation); + return $invocation; + } + + /** + * @param string $path + * @param int $flags + * @return null|string + */ + private function resolveBaseName($path, $flags) + { + $baseName = $this->findInBaseNames($path); + if ($baseName !== null) { + return $baseName; + } + + $baseName = Helper::determineBaseFile($path); + if ($baseName !== null) { + $this->addBaseName($baseName); + return $baseName; + } + + $possibleAlias = $this->resolvePossibleAlias($path); + if (!($flags & static::RESOLVE_ALIAS) || $possibleAlias === null) { + return null; + } + + $trace = debug_backtrace(); + foreach ($trace as $item) { + if (!isset($item['function']) || !isset($item['args'][0]) + || !in_array($item['function'], $this->invocationFunctionNames, true)) { + continue; + } + $currentPath = $item['args'][0]; + if (Helper::hasPharPrefix($currentPath)) { + continue; + } + $currentBaseName = Helper::determineBaseFile($currentPath); + if ($currentBaseName === null) { + continue; + } + // 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) { + continue; + } + $this->addBaseName($currentBaseName); + return $currentBaseName; + } + + return null; + } + + /** + * @param string $path + * @return null|string + */ + private function resolvePossibleAlias($path) + { + $normalizedPath = Helper::normalizePath($path); + return strstr($normalizedPath, '/', true) ?: null; + } + + /** + * @param string $baseName + * @return null|PharInvocation + */ + private function findByBaseName($baseName) + { + return Manager::instance()->getCollection()->findByCallback( + function (PharInvocation $candidate) use ($baseName) { + return $candidate->getBaseName() === $baseName; + }, + true + ); + } + + /** + * @param string $path + * @return null|string + */ + private function findInBaseNames($path) + { + // return directly if the resolved base name was submitted + if (in_array($path, $this->baseNames, true)) { + return $path; + } + + $parts = explode('/', Helper::normalizePath($path)); + + while (count($parts)) { + $currentPath = implode('/', $parts); + if (isset($this->baseNames[$currentPath])) { + return $currentPath; + } + array_pop($parts); + } + + return null; + } + + /** + * @param string $baseName + */ + private function addBaseName($baseName) + { + if (isset($this->baseNames[$baseName])) { + return; + } + $this->baseNames[$baseName] = realpath($baseName); + } + + /** + * Finds confirmed(!) invocations by alias. + * + * @param string $path + * @return null|PharInvocation + * @see \TYPO3\PharStreamWrapper\PharStreamWrapper::collectInvocation() + */ + private function findByAlias($path) + { + $possibleAlias = $this->resolvePossibleAlias($path); + if ($possibleAlias === null) { + return null; + } + return Manager::instance()->getCollection()->findByCallback( + function (PharInvocation $candidate) use ($possibleAlias) { + return $candidate->isConfirmed() && $candidate->getAlias() === $possibleAlias; + }, + true + ); + } +} diff --git a/public/modules/aggregator/aggregator.info b/public/modules/aggregator/aggregator.info index 9f05dcf47b..d96edbdbf3 100644 --- a/public/modules/aggregator/aggregator.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/aggregator/tests/aggregator_test.info b/public/modules/aggregator/tests/aggregator_test.info index 64c3fe423d..e0253ce911 100644 --- a/public/modules/aggregator/tests/aggregator_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/block/block.info b/public/modules/block/block.info index a2e05b1660..8fccc4881d 100644 --- a/public/modules/block/block.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/block/tests/block_test.info b/public/modules/block/tests/block_test.info index 6b140b503e..dbd4862618 100644 --- a/public/modules/block/tests/block_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/block/tests/themes/block_test_theme/block_test_theme.info b/public/modules/block/tests/themes/block_test_theme/block_test_theme.info index b7f49ff8a7..9fe95fa66c 100644 --- a/public/modules/block/tests/themes/block_test_theme/block_test_theme.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/blog/blog.info b/public/modules/blog/blog.info index 953836c6e9..aade484942 100644 --- a/public/modules/blog/blog.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/book/book.info b/public/modules/book/book.info index 071f910e44..95054e4610 100644 --- a/public/modules/book/book.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/color/color.info b/public/modules/color/color.info index 0ea9bcf580..764e249442 100644 --- a/public/modules/color/color.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/comment/comment.info b/public/modules/comment/comment.info index 601c769ef5..8cf5f16735 100644 --- a/public/modules/comment/comment.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/contact/contact.info b/public/modules/contact/contact.info index af662b64a9..b7c403c8cd 100644 --- a/public/modules/contact/contact.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/contextual/contextual.info b/public/modules/contextual/contextual.info index 5a79fb6dee..17a83bd3e4 100644 --- a/public/modules/contextual/contextual.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/dashboard/dashboard.info b/public/modules/dashboard/dashboard.info index 850c896b66..4fc749d3c5 100644 --- a/public/modules/dashboard/dashboard.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/dblog/dblog.info b/public/modules/dblog/dblog.info index 345995b310..cbc892687e 100644 --- a/public/modules/dblog/dblog.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/field/field.info b/public/modules/field/field.info index 0c2a5a90fe..5a60e62aee 100644 --- a/public/modules/field/field.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/field/modules/field_sql_storage/field_sql_storage.info b/public/modules/field/modules/field_sql_storage/field_sql_storage.info index 50ffa0ea8f..ecf448ea69 100644 --- a/public/modules/field/modules/field_sql_storage/field_sql_storage.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/field/modules/list/list.info b/public/modules/field/modules/list/list.info index 03a9340751..433bb72f80 100644 --- a/public/modules/field/modules/list/list.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/field/modules/list/tests/list_test.info b/public/modules/field/modules/list/tests/list_test.info index e4417a936c..f1a2511793 100644 --- a/public/modules/field/modules/list/tests/list_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/field/modules/number/number.info b/public/modules/field/modules/number/number.info index 97f5a7c8ff..18b595b1a2 100644 --- a/public/modules/field/modules/number/number.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/field/modules/options/options.info b/public/modules/field/modules/options/options.info index b7d068d974..b55064304b 100644 --- a/public/modules/field/modules/options/options.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/field/modules/text/text.info b/public/modules/field/modules/text/text.info index 6ed7fad4c8..1627800bc4 100644 --- a/public/modules/field/modules/text/text.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/field/tests/field_test.info b/public/modules/field/tests/field_test.info index 6066d769d0..a74f7b1d3e 100644 --- a/public/modules/field/tests/field_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/field_ui/field_ui.info b/public/modules/field_ui/field_ui.info index 76df6f33a5..b44f1c96a9 100644 --- a/public/modules/field_ui/field_ui.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/file/file.info b/public/modules/file/file.info index 0378130499..220bae2ae8 100644 --- a/public/modules/file/file.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/file/tests/file_module_test.info b/public/modules/file/tests/file_module_test.info index 6593ab29df..5bad5c83d2 100644 --- a/public/modules/file/tests/file_module_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/filter/filter.info b/public/modules/filter/filter.info index b8a0744737..3133b03a92 100644 --- a/public/modules/filter/filter.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/forum/forum.info b/public/modules/forum/forum.info index 859b4a7bd9..d389c244ae 100644 --- a/public/modules/forum/forum.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/help/help.info b/public/modules/help/help.info index 90d05b81a4..18f1cd3420 100644 --- a/public/modules/help/help.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/image/image.info b/public/modules/image/image.info index ff15f3b90a..b2940584d5 100644 --- a/public/modules/image/image.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/image/tests/image_module_test.info b/public/modules/image/tests/image_module_test.info index 4226c34f5a..57d065efb8 100644 --- a/public/modules/image/tests/image_module_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/locale/locale.info b/public/modules/locale/locale.info index 9fff4fe0b8..f295d88909 100644 --- a/public/modules/locale/locale.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/locale/tests/locale_test.info b/public/modules/locale/tests/locale_test.info index bb4cbaa012..15f49ec889 100644 --- a/public/modules/locale/tests/locale_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/menu/menu.info b/public/modules/menu/menu.info index 1d8fd3d808..b24f2966cb 100644 --- a/public/modules/menu/menu.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/node/node.info b/public/modules/node/node.info index 9a267fc9c9..e802aa6822 100644 --- a/public/modules/node/node.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/node/tests/node_access_test.info b/public/modules/node/tests/node_access_test.info index 1ba891b8a6..c78209ad4b 100644 --- a/public/modules/node/tests/node_access_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/node/tests/node_test.info b/public/modules/node/tests/node_test.info index a46165f3af..c12a8c154f 100644 --- a/public/modules/node/tests/node_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/node/tests/node_test_exception.info b/public/modules/node/tests/node_test_exception.info index 5b51ffff61..a23c4c7caa 100644 --- a/public/modules/node/tests/node_test_exception.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/openid/openid.info b/public/modules/openid/openid.info index 11574a7331..5e630f9cc0 100644 --- a/public/modules/openid/openid.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/openid/tests/openid_test.info b/public/modules/openid/tests/openid_test.info index 4e385bdbea..f7ea5dca36 100644 --- a/public/modules/openid/tests/openid_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/overlay/overlay.info b/public/modules/overlay/overlay.info index 18f6908393..00a167bc53 100644 --- a/public/modules/overlay/overlay.info +++ b/public/modules/overlay/overlay.info @@ -4,7 +4,7 @@ package = Core version = VERSION core = 7.x -; Information added by Drupal.org packaging script on 2019-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/path/path.info b/public/modules/path/path.info index 6157813351..40fb7ea355 100644 --- a/public/modules/path/path.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/php/php.info b/public/modules/php/php.info index 0cb5e6f99c..256116e9bd 100644 --- a/public/modules/php/php.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/poll/poll.info b/public/modules/poll/poll.info index 3ca58400cf..7224eadcb9 100644 --- a/public/modules/poll/poll.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/profile/profile.info b/public/modules/profile/profile.info index f59afc4307..907b1b0a83 100644 --- a/public/modules/profile/profile.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/rdf/rdf.info b/public/modules/rdf/rdf.info index 7ac3dd9897..5ae8c6569b 100644 --- a/public/modules/rdf/rdf.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/rdf/tests/rdf_test.info b/public/modules/rdf/tests/rdf_test.info index bbaada743d..c95e12da9e 100644 --- a/public/modules/rdf/tests/rdf_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/search/search.info b/public/modules/search/search.info index cd99637e94..5478e5b96e 100644 --- a/public/modules/search/search.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/search/tests/search_embedded_form.info b/public/modules/search/tests/search_embedded_form.info index c91a0aaff4..bc8e49cd58 100644 --- a/public/modules/search/tests/search_embedded_form.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/search/tests/search_extra_type.info b/public/modules/search/tests/search_extra_type.info index c4719fcb81..85e45dfb5c 100644 --- a/public/modules/search/tests/search_extra_type.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/search/tests/search_node_tags.info b/public/modules/search/tests/search_node_tags.info index 12cba55bf3..a62e6f1cf1 100644 --- a/public/modules/search/tests/search_node_tags.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/shortcut/shortcut.info b/public/modules/shortcut/shortcut.info index 7d1c261e25..69c95d1b13 100644 --- a/public/modules/shortcut/shortcut.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/drupal_web_test_case.php b/public/modules/simpletest/drupal_web_test_case.php index 52aabbaa4e..a0872c234a 100644 --- a/public/modules/simpletest/drupal_web_test_case.php +++ b/public/modules/simpletest/drupal_web_test_case.php @@ -1520,16 +1520,10 @@ protected function setUp() { // Include the testing profile. variable_set('install_profile', $this->profile); + $profile_details = install_profile_info($this->profile, 'en'); // Install the modules specified by the testing profile. - $profiles = drupal_get_profiles(); - $profile_dependencies = array(); - - foreach ($profiles as $profile) { - $info = install_profile_info($profile); - $profile_dependencies = array_unique(array_merge($profile_dependencies, $info['dependencies'])); - } - module_enable($profile_dependencies); + module_enable($profile_details['dependencies'], FALSE); // Install modules needed for this test. This could have been passed in as // either a single array argument or a variable number of string arguments. diff --git a/public/modules/simpletest/simpletest.info b/public/modules/simpletest/simpletest.info index 98e7a8bcf1..783ace4475 100644 --- a/public/modules/simpletest/simpletest.info +++ b/public/modules/simpletest/simpletest.info @@ -57,7 +57,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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/actions_loop_test.info b/public/modules/simpletest/tests/actions_loop_test.info index b32360624a..25db0c71a7 100644 --- a/public/modules/simpletest/tests/actions_loop_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/ajax_forms_test.info b/public/modules/simpletest/tests/ajax_forms_test.info index b8f812252f..56e2f1a913 100644 --- a/public/modules/simpletest/tests/ajax_forms_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/ajax_test.info b/public/modules/simpletest/tests/ajax_test.info index fae288b72b..39cf716d9a 100644 --- a/public/modules/simpletest/tests/ajax_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/batch_test.info b/public/modules/simpletest/tests/batch_test.info index b25a4bed1d..ef335ad423 100644 --- a/public/modules/simpletest/tests/batch_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/boot_test_1.info b/public/modules/simpletest/tests/boot_test_1.info index 06992b6027..139fe8f097 100644 --- a/public/modules/simpletest/tests/boot_test_1.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/boot_test_2.info b/public/modules/simpletest/tests/boot_test_2.info index 2926eac684..7e38cc274e 100644 --- a/public/modules/simpletest/tests/boot_test_2.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/common_test.info b/public/modules/simpletest/tests/common_test.info index 8c75266738..79f8badded 100644 --- a/public/modules/simpletest/tests/common_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/common_test_cron_helper.info b/public/modules/simpletest/tests/common_test_cron_helper.info index 4de0614aed..cf545fa05a 100644 --- a/public/modules/simpletest/tests/common_test_cron_helper.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/database_test.info b/public/modules/simpletest/tests/database_test.info index cbe4d25337..2862e6a608 100644 --- a/public/modules/simpletest/tests/database_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/drupal_autoload_test/drupal_autoload_test.info b/public/modules/simpletest/tests/drupal_autoload_test/drupal_autoload_test.info index d02d9aaad2..da77216097 100644 --- a/public/modules/simpletest/tests/drupal_autoload_test/drupal_autoload_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info b/public/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info index 70e739a6dd..a5697a704e 100644 --- a/public/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info b/public/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info index ce798aab15..4897bbd2f5 100644 --- a/public/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/entity_cache_test.info b/public/modules/simpletest/tests/entity_cache_test.info index 3bb91af8f0..3f7211a6af 100644 --- a/public/modules/simpletest/tests/entity_cache_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/entity_cache_test_dependency.info b/public/modules/simpletest/tests/entity_cache_test_dependency.info index 5ce064a8ed..8710673f07 100644 --- a/public/modules/simpletest/tests/entity_cache_test_dependency.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/entity_crud_hook_test.info b/public/modules/simpletest/tests/entity_crud_hook_test.info index 8afcdee41d..f2a6b50f88 100644 --- a/public/modules/simpletest/tests/entity_crud_hook_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/entity_query_access_test.info b/public/modules/simpletest/tests/entity_query_access_test.info index f80bf867e3..dd1fd0f0e7 100644 --- a/public/modules/simpletest/tests/entity_query_access_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/error_test.info b/public/modules/simpletest/tests/error_test.info index eff06a1061..40048ccbe6 100644 --- a/public/modules/simpletest/tests/error_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/file_test.info b/public/modules/simpletest/tests/file_test.info index 4cac2a0459..849fcb3169 100644 --- a/public/modules/simpletest/tests/file_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/filter_test.info b/public/modules/simpletest/tests/filter_test.info index bfc6b5667d..3b847858b1 100644 --- a/public/modules/simpletest/tests/filter_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/form_test.info b/public/modules/simpletest/tests/form_test.info index d1316bc070..350ce25956 100644 --- a/public/modules/simpletest/tests/form_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/image_test.info b/public/modules/simpletest/tests/image_test.info index 25d7bc89a9..5724949e54 100644 --- a/public/modules/simpletest/tests/image_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/menu_test.info b/public/modules/simpletest/tests/menu_test.info index 486857d958..717c525803 100644 --- a/public/modules/simpletest/tests/menu_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/module_test.info b/public/modules/simpletest/tests/module_test.info index 6f06fb6b04..c985a04124 100644 --- a/public/modules/simpletest/tests/module_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/path_test.info b/public/modules/simpletest/tests/path_test.info index 68bc81e3d6..2590639677 100644 --- a/public/modules/simpletest/tests/path_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/psr_0_test/psr_0_test.info b/public/modules/simpletest/tests/psr_0_test/psr_0_test.info index 642a30915d..5d83fcb277 100644 --- a/public/modules/simpletest/tests/psr_0_test/psr_0_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/psr_4_test/psr_4_test.info b/public/modules/simpletest/tests/psr_4_test/psr_4_test.info index edca372d63..ac574e1517 100644 --- a/public/modules/simpletest/tests/psr_4_test/psr_4_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/requirements1_test.info b/public/modules/simpletest/tests/requirements1_test.info index 7655ca5380..2901a6badf 100644 --- a/public/modules/simpletest/tests/requirements1_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/requirements2_test.info b/public/modules/simpletest/tests/requirements2_test.info index f554d0bdce..8c03a0cc8e 100644 --- a/public/modules/simpletest/tests/requirements2_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/session_test.info b/public/modules/simpletest/tests/session_test.info index 466d41168c..37f3538493 100644 --- a/public/modules/simpletest/tests/session_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/system_dependencies_test.info b/public/modules/simpletest/tests/system_dependencies_test.info index f67e37b8fe..de4b981223 100644 --- a/public/modules/simpletest/tests/system_dependencies_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.info b/public/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.info index 41e301c21f..e0bd91bd97 100644 --- a/public/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/system_incompatible_core_version_test.info b/public/modules/simpletest/tests/system_incompatible_core_version_test.info index fd7bccabc9..6afe2e4fad 100644 --- a/public/modules/simpletest/tests/system_incompatible_core_version_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.info b/public/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.info index 59ae15f8c5..a12a356cbd 100644 --- a/public/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/system_incompatible_module_version_test.info b/public/modules/simpletest/tests/system_incompatible_module_version_test.info index 1ab9bff80c..0281838057 100644 --- a/public/modules/simpletest/tests/system_incompatible_module_version_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/system_project_namespace_test.info b/public/modules/simpletest/tests/system_project_namespace_test.info index e78bc76587..136c6b6ad2 100644 --- a/public/modules/simpletest/tests/system_project_namespace_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/system_test.info b/public/modules/simpletest/tests/system_test.info index 2eeae17457..b66b34b8fd 100644 --- a/public/modules/simpletest/tests/system_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/taxonomy_test.info b/public/modules/simpletest/tests/taxonomy_test.info index ec710ef6f1..09893faa68 100644 --- a/public/modules/simpletest/tests/taxonomy_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/theme_test.info b/public/modules/simpletest/tests/theme_test.info index 964b3c5a8c..31faf08cd8 100644 --- a/public/modules/simpletest/tests/theme_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info b/public/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info index a402bdaed5..e3cac6c30f 100644 --- a/public/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info b/public/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info index 9da9a93db3..6287d8ed5e 100644 --- a/public/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/themes/test_theme/test_theme.info b/public/modules/simpletest/tests/themes/test_theme/test_theme.info index b01534a0f7..04324c809d 100644 --- a/public/modules/simpletest/tests/themes/test_theme/test_theme.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/themes/test_theme_nyan_cat/test_theme_nyan_cat.info b/public/modules/simpletest/tests/themes/test_theme_nyan_cat/test_theme_nyan_cat.info index c090c30baf..2276ea8968 100644 --- a/public/modules/simpletest/tests/themes/test_theme_nyan_cat/test_theme_nyan_cat.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/update_script_test.info b/public/modules/simpletest/tests/update_script_test.info index e6d955a363..839b054e58 100644 --- a/public/modules/simpletest/tests/update_script_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/update_test_1.info b/public/modules/simpletest/tests/update_test_1.info index a8e0e3de9c..5ed2892087 100644 --- a/public/modules/simpletest/tests/update_test_1.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/update_test_2.info b/public/modules/simpletest/tests/update_test_2.info index a8e0e3de9c..5ed2892087 100644 --- a/public/modules/simpletest/tests/update_test_2.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/update_test_3.info b/public/modules/simpletest/tests/update_test_3.info index a8e0e3de9c..5ed2892087 100644 --- a/public/modules/simpletest/tests/update_test_3.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/url_alter_test.info b/public/modules/simpletest/tests/url_alter_test.info index ba5129cc61..0d55fbf0b2 100644 --- a/public/modules/simpletest/tests/url_alter_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/simpletest/tests/xmlrpc_test.info b/public/modules/simpletest/tests/xmlrpc_test.info index 40723d9fa5..488bc50bdf 100644 --- a/public/modules/simpletest/tests/xmlrpc_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/statistics/statistics.info b/public/modules/statistics/statistics.info index b4b1440a20..f078b41436 100644 --- a/public/modules/statistics/statistics.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/syslog/syslog.info b/public/modules/syslog/syslog.info index dc67dc5dbb..28197ac3ed 100644 --- a/public/modules/syslog/syslog.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/system/system.admin.inc b/public/modules/system/system.admin.inc index f9244e7b7a..b7e6fc9e70 100644 --- a/public/modules/system/system.admin.inc +++ b/public/modules/system/system.admin.inc @@ -1275,7 +1275,7 @@ function system_modules_uninstall($form, $form_state = NULL) { // Only build the rest of the form if there are any modules available to // uninstall. if (!empty($disabled_modules)) { - $profiles = drupal_get_profiles(); + $profile = drupal_get_profile(); uasort($disabled_modules, 'system_sort_modules_by_info_name'); $form['uninstall'] = array('#tree' => TRUE); foreach ($disabled_modules as $module) { @@ -1292,7 +1292,7 @@ function system_modules_uninstall($form, $form_state = NULL) { // we can allow this module to be uninstalled. (The installation profile // is excluded from this list.) foreach (array_keys($module->required_by) as $dependent) { - if (!in_array($dependent, $profiles) && drupal_get_installed_schema_version($dependent) != SCHEMA_UNINSTALLED) { + if ($dependent != $profile && drupal_get_installed_schema_version($dependent) != SCHEMA_UNINSTALLED) { $dependent_name = isset($all_modules[$dependent]->info['name']) ? $all_modules[$dependent]->info['name'] : $dependent; $form['modules'][$module->name]['#required_by'][] = $dependent_name; $form['uninstall'][$module->name]['#disabled'] = TRUE; diff --git a/public/modules/system/system.info b/public/modules/system/system.info index 65cf8c6ce8..74c8fa4aa7 100644 --- a/public/modules/system/system.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/system/system.install b/public/modules/system/system.install index 5fa36969dc..3bb07d955e 100644 --- a/public/modules/system/system.install +++ b/public/modules/system/system.install @@ -443,11 +443,11 @@ function system_requirements($phase) { // Display an error if a newly introduced dependency in a module is not resolved. if ($phase == 'update') { - $profiles = drupal_get_profiles(); + $profile = drupal_get_profile(); $files = system_rebuild_module_data(); foreach ($files as $module => $file) { // Ignore disabled modules and installation profiles. - if (!$file->status || in_array($module, $profiles)) { + if (!$file->status || $module == $profile) { continue; } // Check the module's PHP version. diff --git a/public/modules/system/system.module b/public/modules/system/system.module index b9f5fe8173..4ce6b9b99d 100644 --- a/public/modules/system/system.module +++ b/public/modules/system/system.module @@ -2371,18 +2371,15 @@ function _system_rebuild_module_data() { // Find modules $modules = drupal_system_listing('/^' . DRUPAL_PHP_FUNCTION_PATTERN . '\.module$/', 'modules', 'name', 0); - // Include the active install profile(s) in modules that are loaded. - $profile_weight = 1000; - $profiles = drupal_get_profiles(); - foreach ($profiles as $profile) { - $modules[$profile] = new stdClass(); - $modules[$profile]->name = $profile; - $modules[$profile]->uri = 'profiles/' . $profile . '/' . $profile . '.profile'; - $modules[$profile]->filename = $profile . '.profile'; + // Include the installation profile in modules that are loaded. + $profile = drupal_get_profile(); + $modules[$profile] = new stdClass(); + $modules[$profile]->name = $profile; + $modules[$profile]->uri = 'profiles/' . $profile . '/' . $profile . '.profile'; + $modules[$profile]->filename = $profile . '.profile'; - // Install profile hooks are always executed last. - $modules[$profile]->weight = $profile_weight++; - } + // Installation profile hooks are always executed last. + $modules[$profile]->weight = 1000; // Set defaults for module info. $defaults = array( @@ -2432,7 +2429,7 @@ function _system_rebuild_module_data() { // Installation profiles are hidden by default, unless explicitly specified // otherwise in the .info file. - if (in_array($key, $profiles) && !isset($modules[$key]->info['hidden'])) { + if ($key == $profile && !isset($modules[$key]->info['hidden'])) { $modules[$key]->info['hidden'] = TRUE; } @@ -2442,15 +2439,13 @@ function _system_rebuild_module_data() { drupal_alter('system_info', $modules[$key]->info, $modules[$key], $type); } - foreach ($profiles as $profile) { - if (isset($modules[$profile])) { - // The installation profile is required, if it's a valid module. - $modules[$profile]->info['required'] = TRUE; - // Add a default distribution name if the profile did not provide one. - // This matches the default value used in install_profile_info(). - if (!isset($modules[$profile]->info['distribution_name'])) { - $modules[$profile]->info['distribution_name'] = 'Drupal'; - } + if (isset($modules[$profile])) { + // The installation profile is required, if it's a valid module. + $modules[$profile]->info['required'] = TRUE; + // Add a default distribution name if the profile did not provide one. This + // matches the default value used in install_profile_info(). + if (!isset($modules[$profile]->info['distribution_name'])) { + $modules[$profile]->info['distribution_name'] = 'Drupal'; } } diff --git a/public/modules/system/tests/cron_queue_test.info b/public/modules/system/tests/cron_queue_test.info index c6614a695a..f43ee03a84 100644 --- a/public/modules/system/tests/cron_queue_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/system/tests/system_cron_test.info b/public/modules/system/tests/system_cron_test.info index 8a29644bc4..086825f49f 100644 --- a/public/modules/system/tests/system_cron_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/taxonomy/taxonomy.info b/public/modules/taxonomy/taxonomy.info index 8f00e9fe29..28a287ec82 100644 --- a/public/modules/taxonomy/taxonomy.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/toolbar/toolbar.info b/public/modules/toolbar/toolbar.info index 7af42b0b3b..0fb05069e5 100644 --- a/public/modules/toolbar/toolbar.info +++ b/public/modules/toolbar/toolbar.info @@ -4,7 +4,7 @@ core = 7.x package = Core version = VERSION -; Information added by Drupal.org packaging script on 2019-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/tracker/tracker.info b/public/modules/tracker/tracker.info index 7edca1f933..867aa592ba 100644 --- a/public/modules/tracker/tracker.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/translation/tests/translation_test.info b/public/modules/translation/tests/translation_test.info index 32a2203cd2..1efe113d93 100644 --- a/public/modules/translation/tests/translation_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/translation/translation.info b/public/modules/translation/translation.info index 8b007da73e..7184e9909d 100644 --- a/public/modules/translation/translation.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/trigger/tests/trigger_test.info b/public/modules/trigger/tests/trigger_test.info index 0023f1957d..bf83fa0843 100644 --- a/public/modules/trigger/tests/trigger_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/trigger/trigger.info b/public/modules/trigger/trigger.info index fca1698a8e..92e6fc83cc 100644 --- a/public/modules/trigger/trigger.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/update/tests/aaa_update_test.info b/public/modules/update/tests/aaa_update_test.info index 9802769580..3d8718ac99 100644 --- a/public/modules/update/tests/aaa_update_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/update/tests/bbb_update_test.info b/public/modules/update/tests/bbb_update_test.info index 4014483e69..9916b50480 100644 --- a/public/modules/update/tests/bbb_update_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/update/tests/ccc_update_test.info b/public/modules/update/tests/ccc_update_test.info index 6857ee8642..b80db4dbdc 100644 --- a/public/modules/update/tests/ccc_update_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/update/tests/themes/update_test_admintheme/update_test_admintheme.info b/public/modules/update/tests/themes/update_test_admintheme/update_test_admintheme.info index c7e8397e4b..f3bf0a622b 100644 --- a/public/modules/update/tests/themes/update_test_admintheme/update_test_admintheme.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/update/tests/themes/update_test_basetheme/update_test_basetheme.info b/public/modules/update/tests/themes/update_test_basetheme/update_test_basetheme.info index 406c41997d..27ca277d36 100644 --- a/public/modules/update/tests/themes/update_test_basetheme/update_test_basetheme.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/update/tests/themes/update_test_subtheme/update_test_subtheme.info b/public/modules/update/tests/themes/update_test_subtheme/update_test_subtheme.info index 89ab55da0d..9184b5c562 100644 --- a/public/modules/update/tests/themes/update_test_subtheme/update_test_subtheme.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/update/tests/update_test.info b/public/modules/update/tests/update_test.info index 06aa16bedd..6b6a9f7b88 100644 --- a/public/modules/update/tests/update_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/update/update.info b/public/modules/update/update.info index 10256738c8..9c49f6dcd7 100644 --- a/public/modules/update/update.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/user/tests/user_form_test.info b/public/modules/user/tests/user_form_test.info index abda2bc957..a761b4e4e5 100644 --- a/public/modules/user/tests/user_form_test.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/user/user.info b/public/modules/user/user.info index c51cf2716e..e23c49137a 100644 --- a/public/modules/user/user.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/modules/user/user.pages.inc b/public/modules/user/user.pages.inc index a854a13115..2a1b291b13 100644 --- a/public/modules/user/user.pages.inc +++ b/public/modules/user/user.pages.inc @@ -89,8 +89,11 @@ function user_pass_validate($form, &$form_state) { * @see user_pass_validate() */ function user_pass_submit($form, &$form_state) { + global $language; + $account = $form_state['values']['account']; - $mail = _user_mail_notify('password_reset', $account); + // Mail one time login URL and instructions using current language. + $mail = _user_mail_notify('password_reset', $account, $language); if (!empty($mail)) { watchdog('user', 'Password reset instructions mailed to %name at %email.', array('%name' => $account->name, '%email' => $account->mail)); drupal_set_message(t('Further instructions have been sent to your e-mail address.')); diff --git a/public/themes/bartik/bartik.info b/public/themes/bartik/bartik.info index c334abd5d3..4d6d16837b 100644 --- a/public/themes/bartik/bartik.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/themes/garland/garland.info b/public/themes/garland/garland.info index 576ada67b5..53ff390dc9 100644 --- a/public/themes/garland/garland.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/themes/seven/seven.info b/public/themes/seven/seven.info index f8b80509c8..88d895d660 100644 --- a/public/themes/seven/seven.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079" diff --git a/public/themes/stark/stark.info b/public/themes/stark/stark.info index 0721ccb103..e9b2ee0ad0 100644 --- a/public/themes/stark/stark.info +++ b/public/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-04-17 -version = "7.66" +; Information added by Drupal.org packaging script on 2019-05-08 +version = "7.67" project = "drupal" -datestamp = "1555533576" +datestamp = "1557336079"