Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / lib / Drupal / Core / Extension / InfoParserDynamic.php
index 3b00cea0930f9060f19bdab73eaac85b2511fed1..9eb0a56e24df75be076942de2f3f1b3381754635 100644 (file)
@@ -31,6 +31,24 @@ class InfoParserDynamic implements InfoParserInterface {
       if (isset($parsed_info['version']) && $parsed_info['version'] === 'VERSION') {
         $parsed_info['version'] = \Drupal::VERSION;
       }
+      // Special backwards compatible handling profiles and their 'dependencies'
+      // key.
+      if ($parsed_info['type'] === 'profile' && isset($parsed_info['dependencies']) && !array_key_exists('install', $parsed_info)) {
+        // Only trigger the deprecation message if we are actually using the
+        // profile with the missing 'install' key. This avoids triggering the
+        // deprecation when scanning all the available install profiles.
+        global $install_state;
+        if (isset($install_state['parameters']['profile'])) {
+          $pattern = '@' . preg_quote(DIRECTORY_SEPARATOR . $install_state['parameters']['profile'] . '.info.yml') . '$@';
+          if (preg_match($pattern, $filename)) {
+            @trigger_error("The install profile $filename only implements a 'dependencies' key. As of Drupal 8.6.0 profile's support a new 'install' key for modules that should be installed but not depended on. See https://www.drupal.org/node/2952947.", E_USER_DEPRECATED);
+          }
+        }
+        // Move dependencies to install so that if a profile has both
+        // dependencies and install then dependencies are real.
+        $parsed_info['install'] = $parsed_info['dependencies'];
+        $parsed_info['dependencies'] = [];
+      }
     }
     return $parsed_info;
   }