Mercurial > hg > isophonics-drupal-site
diff core/modules/config/config.module @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | af1871eacc83 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/config/config.module Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,81 @@ +<?php + +/** + * @file + * Allows site administrators to modify configuration. + */ + +use Drupal\Core\Routing\RouteMatchInterface; + +/** + * Implements hook_help(). + */ +function config_help($route_name, RouteMatchInterface $route_match) { + switch ($route_name) { + case 'help.page.config': + $output = ''; + $output .= '<h3>' . t('About') . '</h3>'; + $output .= '<p>' . t('The Configuration Manager module provides a user interface for importing and exporting configuration changes between installations of your website in different environments. Configuration is stored in YAML format. For more information, see the <a href=":url">online documentation for the Configuration Manager module</a>.', [':url' => 'https://www.drupal.org/documentation/administer/config']) . '</p>'; + $output .= '<h3>' . t('Uses') . '</h3>'; + $output .= '<dl>'; + $output .= '<dt>' . t('Exporting the full configuration') . '</dt>'; + $output .= '<dd>' . t('You can create and download an archive consisting of all your site\'s configuration exported as <em>*.yml</em> files on the <a href=":url">Export</a> page.', [':url' => \Drupal::url('config.export_full')]) . '</dd>'; + $output .= '<dt>' . t('Importing a full configuration') . '</dt>'; + $output .= '<dd>' . t('You can upload a full site configuration from an archive file on the <a href=":url">Import</a> page. When importing data from a different environment, the site and import files must have matching configuration values for UUID in the <em>system.site</em> configuration item. That means that your other environments should initially be set up as clones of the target site. Migrations are not supported.', [':url' => \Drupal::url('config.import_full')]) . '</dd>'; + $output .= '<dt>' . t('Synchronizing configuration') . '</dt>'; + $output .= '<dd>' . t('You can review differences between the active configuration and an imported configuration archive on the <a href=":synchronize">Synchronize</a> page to ensure that the changes are as expected, before finalizing the import. The Synchronize page also shows configuration items that would be added or removed.', [':synchronize' => \Drupal::url('config.sync')]) . '</dd>'; + $output .= '<dt>' . t('Exporting a single configuration item') . '</dt>'; + $output .= '<dd>' . t('You can export a single configuration item by selecting a <em>Configuration type</em> and <em>Configuration name</em> on the <a href=":single-export">Single export</a> page. The configuration and its corresponding <em>*.yml file name</em> are then displayed on the page for you to copy.', [':single-export' => \Drupal::url('config.export_single')]) . '</dd>'; + $output .= '<dt>' . t('Importing a single configuration item') . '</dt>'; + $output .= '<dd>' . t('You can import a single configuration item by pasting it in YAML format into the form on the <a href=":single-import">Single import</a> page.', [':single-import' => \Drupal::url('config.import_single')]) . '</dd>'; + $output .= '</dl>'; + return $output; + + case 'config.sync': + $output = ''; + $output .= '<p>' . t('Compare the configuration uploaded to your sync directory with the active configuration before completing the import.') . '</p>'; + return $output; + + case 'config.export_full': + $output = ''; + $output .= '<p>' . t('Export and download the full configuration of this site as a gzipped tar file.') . '</p>'; + return $output; + + case 'config.import_full': + $output = ''; + $output .= '<p>' . t('Upload a full site configuration archive to the sync directory. It can then be compared and imported on the Synchronize page.') . '</p>'; + return $output; + + case 'config.export_single': + $output = ''; + $output .= '<p>' . t('Choose a configuration item to display its YAML structure.') . '</p>'; + return $output; + + case 'config.import_single': + $output = ''; + $output .= '<p>' . t('Import a single configuration item by pasting its YAML structure into the text field.') . '</p>'; + return $output; + } +} + +/** + * Implements hook_file_download(). + */ +function config_file_download($uri) { + $scheme = file_uri_scheme($uri); + $target = file_uri_target($uri); + if ($scheme == 'temporary' && $target == 'config.tar.gz') { + if (\Drupal::currentUser()->hasPermission('export configuration')) { + $request = \Drupal::request(); + $date = DateTime::createFromFormat('U', $request->server->get('REQUEST_TIME')); + $date_string = $date->format('Y-m-d-H-i'); + $hostname = str_replace('.', '-', $request->getHttpHost()); + $filename = 'config' . '-' . $hostname . '-' . $date_string . '.tar.gz'; + $disposition = 'attachment; filename="' . $filename . '"'; + return [ + 'Content-disposition' => $disposition, + ]; + } + return -1; + } +}