Chris@0: =') && version_compare(PHP_VERSION, '7', '<') && ini_get('always_populate_raw_post_data') != -1) { Chris@0: $requirements['always_populate_raw_post_data'] = [ Chris@0: 'title' => t('always_populate_raw_post_data PHP setting'), Chris@0: 'value' => t('Not set to -1.'), Chris@0: 'severity' => REQUIREMENT_ERROR, Chris@0: 'description' => t('The always_populate_raw_post_data PHP setting should be set to -1 in PHP version 5.6. Please check the PHP manual for information on how to correct this.'), Chris@0: ]; Chris@0: } Chris@0: return $requirements; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Install the REST config entity type and fix old settings-based config. Chris@0: * Chris@0: * @see rest_post_update_create_rest_resource_config_entities() Chris@0: */ Chris@0: function rest_update_8201() { Chris@0: \Drupal::entityDefinitionUpdateManager()->installEntityType(new ConfigEntityType([ Chris@0: 'id' => 'rest_resource_config', Chris@0: 'label' => new TranslatableMarkup('REST resource configuration'), Chris@0: 'config_prefix' => 'resource', Chris@0: 'admin_permission' => 'administer rest resources', Chris@0: 'label_callback' => 'getLabelFromPlugin', Chris@0: 'entity_keys' => ['id' => 'id'], Chris@0: 'config_export' => [ Chris@0: 'id', Chris@0: 'plugin_id', Chris@0: 'granularity', Chris@0: 'configuration', Chris@0: ], Chris@0: ])); Chris@0: \Drupal::state()->set('rest_update_8201_resources', \Drupal::config('rest.settings')->get('resources')); Chris@0: \Drupal::configFactory()->getEditable('rest.settings') Chris@0: ->clear('resources') Chris@0: ->save(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Re-save all views with a REST display to add new auth defaults. Chris@0: */ Chris@0: function rest_update_8202() { Chris@0: $config_factory = \Drupal::configFactory(); Chris@0: foreach ($config_factory->listAll('views.view.') as $view_config_name) { Chris@0: $save = FALSE; Chris@0: $view = $config_factory->getEditable($view_config_name); Chris@0: $displays = $view->get('display'); Chris@0: foreach ($displays as $display_name => &$display) { Chris@0: if ($display['display_plugin'] == 'rest_export') { Chris@0: if (!isset($display['display_options']['auth'])) { Chris@0: $display['display_options']['auth'] = []; Chris@0: $save = TRUE; Chris@0: } Chris@0: } Chris@0: } Chris@0: if ($save) { Chris@0: $view->set('display', $displays); Chris@0: $view->save(TRUE); Chris@0: } Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * Enable BC for EntityResource: continue to use permissions. Chris@0: */ Chris@0: function rest_update_8203() { Chris@0: $config_factory = \Drupal::configFactory(); Chris@0: $rest_settings = $config_factory->getEditable('rest.settings'); Chris@0: $rest_settings->set('bc_entity_resource_permissions', TRUE) Chris@0: ->save(TRUE); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Ensure the right REST authentication method is used. Chris@0: * Chris@0: * This fixes the bug in https://www.drupal.org/node/2825204. Chris@0: */ Chris@0: function rest_update_8401() { Chris@0: $config_factory = \Drupal::configFactory(); Chris@0: $auth_providers = \Drupal::service('authentication_collector')->getSortedProviders(); Chris@0: $process_auth = function ($auth_option) use ($auth_providers) { Chris@0: foreach ($auth_providers as $provider_id => $provider_data) { Chris@0: // The provider belongs to the module that declares it as a service. Chris@0: if (strtok($provider_data->_serviceId, '.') === $auth_option) { Chris@0: return $provider_id; Chris@0: } Chris@0: } Chris@0: Chris@0: return $auth_option; Chris@0: }; Chris@0: Chris@0: foreach ($config_factory->listAll('views.view.') as $view_config_name) { Chris@0: $save = FALSE; Chris@0: $view = $config_factory->getEditable($view_config_name); Chris@0: $displays = $view->get('display'); Chris@0: foreach ($displays as $display_name => $display) { Chris@0: if ('rest_export' === $display['display_plugin'] && !empty($display['display_options']['auth'])) { Chris@0: $displays[$display_name]['display_options']['auth'] = array_map($process_auth, $display['display_options']['auth']); Chris@0: $save = TRUE; Chris@0: } Chris@0: } Chris@0: if ($save) { Chris@0: $view->set('display', $displays); Chris@0: $view->save(TRUE); Chris@0: } Chris@0: } Chris@0: }