diff --git a/core/includes/file.inc b/core/includes/file.inc
index 133d64f..7fe742d 100644
--- a/core/includes/file.inc
+++ b/core/includes/file.inc
@@ -322,7 +322,7 @@ function file_uri_target($uri) {
* 'public', 'private' or any other file scheme defined as the default.
*/
function file_default_scheme() {
- return variable_get('file_default_scheme', 'public');
+ return config('system.file')->get('default_scheme');
}
/**
@@ -528,7 +528,8 @@ function file_prepare_directory(&$directory, $options = FILE_MODIFY_PERMISSIONS)
*/
function file_ensure_htaccess() {
file_save_htaccess('public://', FALSE);
- if (variable_get('file_private_path', FALSE)) {
+ $private_path = config('system.file')->get('path.private');
+ if (!empty($private_path)) {
file_save_htaccess('private://', TRUE);
}
file_save_htaccess('temporary://', TRUE);
@@ -1126,9 +1127,9 @@ function file_unmanaged_move($source, $destination = NULL, $replace = FILE_EXIST
* between 2 and 5 characters in length, internal to the file name, and not
* included in $extensions.
*
- * Function behavior is also controlled by the Drupal variable
- * 'allow_insecure_uploads'. If 'allow_insecure_uploads' evaluates to TRUE, no
- * alterations will be made, if it evaluates to FALSE, the filename is 'munged'.
+ * Function behavior is also controlled by the configuration
+ * 'system.file.allow_insecure_uploads'. If it evaluates to TRUE, no alterations
+ * will be made, if it evaluates to FALSE, the filename is 'munged'.
*
* @param $filename
* File name to modify.
@@ -1145,7 +1146,7 @@ function file_munge_filename($filename, $extensions, $alerts = TRUE) {
$original = $filename;
// Allow potentially insecure uploads for very savvy users and admin
- if (!variable_get('allow_insecure_uploads', 0)) {
+ if (!config('system.file')->get('allow_insecure_uploads')) {
$whitelist = array_unique(explode(' ', trim($extensions)));
// Split the filename up by periods. The first part becomes the basename
@@ -1494,7 +1495,7 @@ function file_save_upload($source, $validators = array(), $destination = FALSE,
// rename filename.php.foo and filename.php to filename.php.foo.txt and
// filename.php.txt, respectively). Don't rename if 'allow_insecure_uploads'
// evaluates to TRUE.
- if (!variable_get('allow_insecure_uploads', 0) && preg_match('/\.(php|pl|py|cgi|asp|js)(\.|$)/i', $file->filename) && (substr($file->filename, -4) != '.txt')) {
+ if (!config('system.file')->get('allow_insecure_uploads') && preg_match('/\.(php|pl|py|cgi|asp|js)(\.|$)/i', $file->filename) && (substr($file->filename, -4) != '.txt')) {
$file->filemime = 'text/plain';
$file->uri .= '.txt';
$file->filename .= '.txt';
@@ -2113,13 +2114,13 @@ function file_get_mimetype($uri, $mapping = NULL) {
/**
* Sets the permissions on a file or directory.
*
- * This function will use the 'file_chmod_directory' and 'file_chmod_file'
- * variables for the default modes for directories and uploaded/generated
- * files. By default these will give everyone read access so that users
- * accessing the files with a user account without the webserver group (e.g.
- * via FTP) can read these files, and give group write permissions so webserver
- * group members (e.g. a vhost account) can alter files uploaded and owned by
- * the webserver.
+ * This function will use the system.file.permission.directory and
+ * system.file.permission.file configuration for the default modes for
+ * directories and uploaded/generated files. By default these will give everyone
+ * read access so that users accessing the files with a user account without the
+ * webserver group (e.g. via FTP) can read these files, and give group write
+ * permissions so webserver group members (e.g. a vhost account) can alter files
+ * uploaded and owned by the webserver.
*
* PHP's chmod does not support stream wrappers so we use our wrapper
* implementation which interfaces with chmod() by default. Contrib wrappers
@@ -2139,10 +2140,16 @@ function file_get_mimetype($uri, $mapping = NULL) {
function drupal_chmod($uri, $mode = NULL) {
if (!isset($mode)) {
if (is_dir($uri)) {
- $mode = variable_get('file_chmod_directory', 0775);
+ $mode = intval(config('system.file')->get('permission.directory'), 8);
+ if (!$mode) {
+ $mode = 0775;
+ }
}
else {
- $mode = variable_get('file_chmod_file', 0664);
+ $mode = intval(config('system.file')->get('permission.file'), 8);
+ if (!$mode) {
+ $mode = 0664;
+ }
}
}
@@ -2319,7 +2326,10 @@ function drupal_basename($uri, $suffix = NULL) {
*/
function drupal_mkdir($uri, $mode = NULL, $recursive = FALSE, $context = NULL) {
if (!isset($mode)) {
- $mode = variable_get('file_chmod_directory', 0775);
+ $mode = intval(config('system.file')->get('permission.directory'), 8);
+ if (!$mode) {
+ $mode = 0775;
+ }
}
if (!isset($context)) {
@@ -2405,7 +2415,8 @@ function drupal_tempnam($directory, $prefix) {
* Gets the path of system-appropriate temporary directory.
*/
function file_directory_temp() {
- $temporary_directory = variable_get('file_temporary_path', NULL);
+ $config = config('system.file');
+ $temporary_directory = $config->get('path.temporary');
if (empty($temporary_directory)) {
$directories = array();
@@ -2435,7 +2446,7 @@ function file_directory_temp() {
if (empty($temporary_directory)) {
// If no directory has been found default to 'files/tmp'.
- $temporary_directory = variable_get('file_public_path', conf_path() . '/files') . '/tmp';
+ $temporary_directory = $config->get('path.public') . '/tmp';
// Windows accepts paths with either slash (/) or backslash (\), but will
// not accept a path which contains both a slash and a backslash. Since
@@ -2444,7 +2455,7 @@ function file_directory_temp() {
$temporary_directory = str_replace('\\', '/', $temporary_directory);
}
// Save the path of the discovered directory.
- variable_set('file_temporary_path', $temporary_directory);
+ $config->set('path.temporary', $temporary_directory)->save();
}
return $temporary_directory;
@@ -2464,7 +2475,7 @@ function file_get_content_headers(File $file) {
$name = mime_header_encode($file->filename);
$type = mime_header_encode($file->filemime);
// Serve images, text, and flash content for display rather than download.
- $inline_types = variable_get('file_inline_types', array('^text/', '^image/', 'flash$'));
+ $inline_types = config('system.file')->get('inline_types');
$disposition = 'attachment';
foreach ($inline_types as $inline_type) {
// Exclamation marks are used as delimiters to avoid escaping slashes.
diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index a112b5e..fb466ad 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -1233,7 +1233,7 @@ function install_find_translations() {
* @see file_scan_directory()
*/
function install_find_translation_files($langcode = NULL) {
- $directory = variable_get('locale_translate_file_directory', conf_path() . '/files/translations');
+ $directory = conf_path() . '/files/translations';
$files = file_scan_directory($directory, '!install\.' . (!empty($langcode) ? preg_quote($langcode, '!') : '[^\.]+') . '\.po$!', array('recurse' => FALSE));
return $files;
}
@@ -1273,7 +1273,7 @@ function install_select_language(&$install_state) {
// is doing.
if (count($files) == 1) {
if ($install_state['interactive']) {
- $directory = variable_get('locale_translate_file_directory', conf_path() . '/files/translations');
+ $directory = conf_path() . '/files/translations';
drupal_set_title(st('Choose language'));
if (!empty($install_state['parameters']['translate'])) {
diff --git a/core/lib/Drupal/Core/StreamWrapper/PrivateStream.php b/core/lib/Drupal/Core/StreamWrapper/PrivateStream.php
index 87316eb..833580f 100644
--- a/core/lib/Drupal/Core/StreamWrapper/PrivateStream.php
+++ b/core/lib/Drupal/Core/StreamWrapper/PrivateStream.php
@@ -19,7 +19,7 @@ class PrivateStream extends LocalStream {
* Implements Drupal\Core\StreamWrapper\LocalStream::getDirectoryPath()
*/
public function getDirectoryPath() {
- return variable_get('file_private_path', '');
+ return config('system.file')->get('path.private');
}
/**
diff --git a/core/lib/Drupal/Core/StreamWrapper/PublicStream.php b/core/lib/Drupal/Core/StreamWrapper/PublicStream.php
index 207b77a..dade4e9 100644
--- a/core/lib/Drupal/Core/StreamWrapper/PublicStream.php
+++ b/core/lib/Drupal/Core/StreamWrapper/PublicStream.php
@@ -19,7 +19,7 @@ class PublicStream extends LocalStream {
* Implements Drupal\Core\StreamWrapper\LocalStream::getDirectoryPath()
*/
public function getDirectoryPath() {
- return variable_get('file_public_path', conf_path() . '/files');
+ return config('system.file')->get('path.public');
}
/**
diff --git a/core/lib/Drupal/Core/StreamWrapper/TemporaryStream.php b/core/lib/Drupal/Core/StreamWrapper/TemporaryStream.php
index 52a6321..da14a68 100644
--- a/core/lib/Drupal/Core/StreamWrapper/TemporaryStream.php
+++ b/core/lib/Drupal/Core/StreamWrapper/TemporaryStream.php
@@ -19,7 +19,11 @@ class TemporaryStream extends LocalStream {
* Implements Drupal\Core\StreamWrapper\LocalStream::getDirectoryPath()
*/
public function getDirectoryPath() {
- return variable_get('file_temporary_path', file_directory_temp());
+ $temporary_path = config('system.file')->get('path.temporary');
+ if (empty($temporary_path)) {
+ $temporary_path = sys_get_temp_dir();
+ }
+ return $temporary_path;
}
/**
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Tests/ImportOpmlTest.php b/core/modules/aggregator/lib/Drupal/aggregator/Tests/ImportOpmlTest.php
index fa79f1c..69b929f 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Tests/ImportOpmlTest.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Tests/ImportOpmlTest.php
@@ -53,6 +53,7 @@ class ImportOpmlTest extends AggregatorTestBase {
'files[upload]' => $path,
'remote' => file_create_url($path),
);
+ $this->verbose("alex: " . config('system.file')->get('path.temporary'));
$this->drupalPost('admin/config/services/aggregator/add/opml', $edit, t('Import'));
$this->assertRaw(t('You must either upload a file or enter a URL.'), t('Error if both fields are filled.'));
diff --git a/core/modules/file/file.field.inc b/core/modules/file/file.field.inc
index 32834f4..4804e83 100644
--- a/core/modules/file/file.field.inc
+++ b/core/modules/file/file.field.inc
@@ -16,7 +16,7 @@ function file_field_info() {
'settings' => array(
'display_field' => 0,
'display_default' => 0,
- 'uri_scheme' => variable_get('file_default_scheme', 'public'),
+ 'uri_scheme' => file_default_scheme(),
),
'instance_settings' => array(
'file_extensions' => 'txt',
diff --git a/core/modules/file/file.module b/core/modules/file/file.module
index 374e1f8..3f03236 100644
--- a/core/modules/file/file.module
+++ b/core/modules/file/file.module
@@ -727,7 +727,8 @@ function file_managed_file_pre_render($element) {
* An associative array containing:
* - file: A file object to which the link will be created.
* - icon_directory: (optional) A path to a directory of icons to be used for
- * files. Defaults to the value of the "file_icon_directory" variable.
+ * files. Defaults to the value of the "system.file.path.icon"
+ * configuration.
*
* @ingroup themeable
*/
@@ -766,7 +767,8 @@ function theme_file_link($variables) {
* An associative array containing:
* - file: A file entity for which to make an icon.
* - icon_directory: (optional) A path to a directory of icons to be used for
- * files. Defaults to the value of the "file_icon_directory" variable.
+ * files. Defaults to the value of the "system.file.path.icon"
+ * configuration.
*
* @ingroup themeable
*/
@@ -814,7 +816,7 @@ function file_icon_url(File $file, $icon_directory = NULL) {
function file_icon_path(File $file, $icon_directory = NULL) {
// Use the default set of icons if none specified.
if (!isset($icon_directory)) {
- $icon_directory = variable_get('file_icon_directory', drupal_get_path('module', 'file') . '/icons');
+ $icon_directory = config('system.file')->get('path.icon');
}
// If there's an icon matching the exact mimetype, go for it.
diff --git a/core/modules/image/image.field.inc b/core/modules/image/image.field.inc
index 66d935f..41b2459 100644
--- a/core/modules/image/image.field.inc
+++ b/core/modules/image/image.field.inc
@@ -14,7 +14,7 @@ function image_field_info() {
'label' => t('Image'),
'description' => t('This field stores the ID of an image file as an integer value.'),
'settings' => array(
- 'uri_scheme' => variable_get('file_default_scheme', 'public'),
+ 'uri_scheme' => file_default_scheme(),
'default_image' => 0,
),
'instance_settings' => array(
diff --git a/core/modules/image/lib/Drupal/image/Tests/ImageStylesPathAndUrlTest.php b/core/modules/image/lib/Drupal/image/Tests/ImageStylesPathAndUrlTest.php
index 6bf4eb4..359a942 100644
--- a/core/modules/image/lib/Drupal/image/Tests/ImageStylesPathAndUrlTest.php
+++ b/core/modules/image/lib/Drupal/image/Tests/ImageStylesPathAndUrlTest.php
@@ -83,7 +83,7 @@ class ImageStylesPathAndUrlTest extends WebTestBase {
// Make the default scheme neither "public" nor "private" to verify the
// functions work for other than the default scheme.
- variable_set('file_default_scheme', 'temporary');
+ config('system.file')->set('default_scheme', 'temporary')->save();
// Create the directories for the styles.
$directory = $scheme . '://styles/' . $this->style_name;
diff --git a/core/modules/locale/config/locale.settings.yml b/core/modules/locale/config/locale.settings.yml
new file mode 100644
index 0000000..2e3d6ac
--- /dev/null
+++ b/core/modules/locale/config/locale.settings.yml
@@ -0,0 +1,2 @@
+path:
+ translations: public://translations
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleFileImportStatus.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleFileImportStatus.php
index 2126b26..831d00f 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleFileImportStatus.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleFileImportStatus.php
@@ -29,7 +29,7 @@ class LocaleFileImportStatus extends WebTestBase {
$this->drupalLogin($admin_user);
// Set the translation file directory.
- variable_set('locale_translate_file_directory', drupal_get_path('module', 'locale') . '/tests');
+ config('locale.settings')->set('path.translations', drupal_get_path('module', 'locale') . '/tests')->save();
}
/**
@@ -72,7 +72,7 @@ class LocaleFileImportStatus extends WebTestBase {
* A file object of type stdClass.
*/
function mockImportedPoFile($langcode, $timestamp_difference = 0) {
- $dir = variable_get('locale_translate_file_directory', drupal_get_path('module', 'locale') . '/tests');
+ $dir = config('locale.settings')->get('path.translations');
$testfile_uri = $dir . '/test.' . $langcode . '.po';
$file = locale_translate_file_create($testfile_uri);
@@ -184,7 +184,7 @@ class LocaleFileImportStatus extends WebTestBase {
function testDeleteLanguage() {
$dir = conf_path() . '/files/translations';
file_prepare_directory($dir, FILE_CREATE_DIRECTORY);
- variable_set('locale_translate_file_directory', $dir);
+ config('locale.settings')->set('path.translations', $dir)->save();
$langcode = 'de';
$this->addLanguage($langcode);
$file_uri = $dir . '/po_' . $this->randomName() . '.' . $langcode . '.po';
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleImportFunctionalTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleImportFunctionalTest.php
index 016082a..cf84526 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleImportFunctionalTest.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleImportFunctionalTest.php
@@ -30,7 +30,7 @@ class LocaleImportFunctionalTest extends WebTestBase {
parent::setUp(array('locale', 'dblog'));
// Set the translation file directory.
- variable_set('locale_translate_file_directory', drupal_get_path('module', 'locale') . '/tests');
+ config('locale.settings')->set('path.translations', drupal_get_path('module', 'locale') . '/tests')->save();
$this->admin_user = $this->drupalCreateUser(array('administer languages', 'translate interface', 'access administration pages'));
$this->drupalLogin($this->admin_user);
diff --git a/core/modules/locale/locale.bulk.inc b/core/modules/locale/locale.bulk.inc
index 8a9c2fe..133f579 100644
--- a/core/modules/locale/locale.bulk.inc
+++ b/core/modules/locale/locale.bulk.inc
@@ -349,7 +349,7 @@ function locale_translate_batch_import_files($langcode = NULL, $finish_feedback
* An array of interface translation files.
*/
function locale_translate_get_interface_translation_files($langcode = NULL) {
- $directory = variable_get('locale_translate_file_directory', conf_path() . '/files/translations');
+ $directory = config('locale.settings')->get('path.translations');
return file_scan_directory($directory, '!' . (!empty($langcode) ? '\.' . preg_quote($langcode, '!') : '') . '\.po$!', array('recurse' => FALSE));
}
diff --git a/core/modules/locale/locale.install b/core/modules/locale/locale.install
index 35106ae..3a9e773 100644
--- a/core/modules/locale/locale.install
+++ b/core/modules/locale/locale.install
@@ -623,6 +623,17 @@ function locale_update_8010() {
}
/**
+ * Moves locale translation directory settings from variable to config.
+ *
+ * @ingroup config_upgrade
+ */
+function locale_update_8011() {
+ update_variables_to_config('locale.settings', array(
+ 'locale_translate_file_directory' => 'path.translations',
+ ));
+}
+
+/**
* @} End of "addtogroup updates-7.x-to-8.x".
* The next series of updates should start at 9000.
*/
diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module
index ce20b59..9de4733 100644
--- a/core/modules/locale/locale.module
+++ b/core/modules/locale/locale.module
@@ -553,10 +553,10 @@ function locale_translate_english() {
* Add interface translation directory setting to directories configuration.
*/
function locale_form_system_file_system_settings_alter(&$form, $form_state) {
- $form['locale_translate_file_directory'] = array(
+ $form['path_translations'] = array(
'#type' => 'textfield',
'#title' => t('Interface translations directory'),
- '#default_value' => variable_get('locale_translate_file_directory', conf_path() . '/files/translations'),
+ '#default_value' => config('locale.settings')->get('path.translations'),
'#maxlength' => 255,
'#description' => t('A local file system path where interface translation files are looked for. This directory must exist.'),
'#after_build' => array('system_check_directory'),
@@ -565,6 +565,18 @@ function locale_form_system_file_system_settings_alter(&$form, $form_state) {
if ($form['file_default_scheme']) {
$form['file_default_scheme']['#weight'] = 20;
}
+ $form['#submit'][] = 'locale_form_system_file_system_settings_submit';
+}
+
+/**
+ * Form builder submit handler; Handle submission for locale translation path.
+ *
+ * @ingroup forms
+ */
+function locale_form_system_file_system_settings_submit($form, &$form_state) {
+ config('locale.settings')
+ ->set('path.translations', $form_state['values']['path_translations'])
+ ->save();
}
/**
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php
index 794054d..133757a 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php
@@ -479,7 +479,7 @@ abstract class TestBase {
public function run(array $methods = array()) {
// Initialize verbose debugging.
$class = get_class($this);
- simpletest_verbose(NULL, variable_get('file_public_path', conf_path() . '/files'), str_replace('\\', '_', $class));
+ simpletest_verbose(NULL, config('system.file')->get('path.public'), str_replace('\\', '_', $class));
// HTTP auth settings (:) for the simpletest browser
// when sending requests to the test site.
@@ -633,7 +633,7 @@ abstract class TestBase {
$this->originalConfigDirectory = $GLOBALS['config_directory_name'];
// Save further contextual information.
- $this->originalFileDirectory = variable_get('file_public_path', conf_path() . '/files');
+ $this->originalFileDirectory = config('system.file')->get('path.public');
$this->originalProfile = drupal_get_profile();
$this->originalUser = $user;
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
index 73afaa6..1b6ce86 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
@@ -313,7 +313,7 @@ abstract class WebTestBase extends TestBase {
$original = drupal_get_path('module', 'simpletest') . '/files';
$files = file_scan_directory($original, '/(html|image|javascript|php|sql)-.*/');
foreach ($files as $file) {
- file_unmanaged_copy($file->uri, variable_get('file_public_path', conf_path() . '/files'));
+ file_unmanaged_copy($file->uri, config('system.file')->get('path.public'));
}
$this->generatedTestFiles = TRUE;
@@ -617,9 +617,11 @@ abstract class WebTestBase extends TestBase {
$this->preloadRegistry();
// Set path variables.
- variable_set('file_public_path', $this->public_files_directory);
- variable_set('file_private_path', $this->private_files_directory);
- variable_set('file_temporary_path', $this->temp_files_directory);
+ config('system.file')
+ ->set('path.public', $this->public_files_directory)
+ ->set('path.private', $this->private_files_directory)
+ ->set('path.temporary', $this->temp_files_directory)
+ ->save();
// Set the 'simpletest_parent_profile' variable to add the parent profile's
// search path to the child site's search paths.
diff --git a/core/modules/system/config/system.file.yml b/core/modules/system/config/system.file.yml
new file mode 100644
index 0000000..d616f72
--- /dev/null
+++ b/core/modules/system/config/system.file.yml
@@ -0,0 +1,14 @@
+allow_insecure_uploads: '0'
+default_scheme: public
+inline_types:
+ - ^text/
+ - ^image/
+ - flash$
+path:
+ private: ''
+ public: ''
+ temporary: ''
+ icon: ''
+permission:
+ directory: '0775'
+ file: '0664'
diff --git a/core/modules/system/lib/Drupal/system/Tests/Common/InstallerLanguageTest.php b/core/modules/system/lib/Drupal/system/Tests/Common/InstallerLanguageTest.php
index 18d349c..3f504ce 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Common/InstallerLanguageTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Common/InstallerLanguageTest.php
@@ -24,7 +24,7 @@ class InstallerLanguageTest extends WebTestBase {
function setUp() {
parent::setUp();
- variable_set('locale_translate_file_directory', drupal_get_path('module', 'simpletest') . '/files/translations');
+ config('locale.settings')->set('path.translations', drupal_get_path('module', 'simpletest') . '/files/translations')->save();
}
/**
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/DirectoryTest.php b/core/modules/system/lib/Drupal/system/Tests/File/DirectoryTest.php
index 5d57bdf..4a6fe03 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/DirectoryTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/DirectoryTest.php
@@ -51,7 +51,7 @@ class DirectoryTest extends FileTestBase {
}
// Test that the directory has the correct permissions.
- $this->assertDirectoryPermissions($directory, variable_get('file_chmod_directory', 0775));
+ $this->assertDirectoryPermissions($directory, config('system.file')->get('permission.directory'));
// Remove .htaccess file to then test that it gets re-created.
@drupal_unlink(file_default_scheme() . '://.htaccess');
@@ -122,10 +122,9 @@ class DirectoryTest extends FileTestBase {
*/
function testFileDirectoryTemp() {
// Start with an empty variable to ensure we have a clean slate.
- variable_set('file_temporary_path', '');
+ config('system.file')->set('path.temporary', '')->save();
$tmp_directory = file_directory_temp();
$this->assertEqual(empty($tmp_directory), FALSE, t('file_directory_temp() returned a non-empty value.'));
- $setting = variable_get('file_temporary_path', '');
- $this->assertEqual($setting, $tmp_directory, t("The 'file_temporary_path' variable has the same value that file_directory_temp() returned."));
+ $this->assertEqual(config('system.file')->get('path.temporary'), $tmp_directory);
}
}
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/FileTestBase.php b/core/modules/system/lib/Drupal/system/Tests/File/FileTestBase.php
index 2c72383..af669b4 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/FileTestBase.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/FileTestBase.php
@@ -85,6 +85,11 @@ class FileTestBase extends WebTestBase {
* Optional message.
*/
function assertFilePermissions($filepath, $expected_mode, $message = NULL) {
+ // Configuration system stores default modes as strings.
+ if (is_string($expected_mode)) {
+ // Convert string to octal.
+ $expected_mode = intval($expected_mode, 8);
+ }
// Clear out PHP's file stat cache to be sure we see the current value.
clearstatcache();
@@ -120,6 +125,11 @@ class FileTestBase extends WebTestBase {
* Optional message.
*/
function assertDirectoryPermissions($directory, $expected_mode, $message = NULL) {
+ // Configuration system stores default modes as strings.
+ if (is_string($expected_mode)) {
+ // Convert string to octal.
+ $expected_mode = intval($expected_mode, 8);
+ }
// Clear out PHP's file stat cache to be sure we see the current value.
clearstatcache();
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/NameMungingTest.php b/core/modules/system/lib/Drupal/system/Tests/File/NameMungingTest.php
index 926a34a..0f2d148 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/NameMungingTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/NameMungingTest.php
@@ -30,7 +30,7 @@ class NameMungingTest extends FileTestBase {
*/
function testMunging() {
// Disable insecure uploads.
- variable_set('allow_insecure_uploads', 0);
+ config('system.file')->set('allow_insecure_uploads', 0)->save();
$munged_name = file_munge_filename($this->name, '', TRUE);
$messages = drupal_get_messages();
$this->assertTrue(in_array(t('For security reasons, your upload has been renamed to %filename.', array('%filename' => $munged_name)), $messages['status']), t('Alert properly set when a file is renamed.'));
@@ -42,7 +42,7 @@ class NameMungingTest extends FileTestBase {
* come out untouched, no matter how evil the filename.
*/
function testMungeIgnoreInsecure() {
- variable_set('allow_insecure_uploads', 1);
+ config('system.file')->set('allow_insecure_uploads', 1)->save();
$munged_name = file_munge_filename($this->name, '');
$this->assertIdentical($munged_name, $this->name, t('The original filename (%original) matches the munged filename (%munged) when insecure uploads are enabled.', array('%munged' => $munged_name, '%original' => $this->name)));
}
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileDirectoryTest.php b/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileDirectoryTest.php
index 1a2ef48..5b81b36 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileDirectoryTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileDirectoryTest.php
@@ -19,6 +19,6 @@ class RemoteFileDirectoryTest extends DirectoryTest {
function setUp() {
parent::setUp('file_test');
- variable_set('file_default_scheme', 'dummy-remote');
+ config('system.file')->set('default_scheme', 'dummy-remote')->save();
}
}
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileSaveUploadTest.php b/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileSaveUploadTest.php
index dd4eb49..844308a 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileSaveUploadTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileSaveUploadTest.php
@@ -19,6 +19,6 @@ class RemoteFileSaveUploadTest extends SaveUploadTest {
function setUp() {
parent::setUp('file_test');
- variable_set('file_default_scheme', 'dummy-remote');
+ config('system.file')->set('default_scheme', 'dummy-remote')->save();
}
}
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileScanDirectoryTest.php b/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileScanDirectoryTest.php
index 75fa904..cea0a47 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileScanDirectoryTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileScanDirectoryTest.php
@@ -19,6 +19,6 @@ class RemoteFileScanDirectoryTest extends ScanDirectoryTest {
function setUp() {
parent::setUp('file_test');
- variable_set('file_default_scheme', 'dummy-remote');
+ config('system.file')->set('default_scheme', 'dummy-remote')->save();
}
}
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedCopyTest.php b/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedCopyTest.php
index 5aff075..f25c0fe 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedCopyTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedCopyTest.php
@@ -19,6 +19,6 @@ class RemoteFileUnmanagedCopyTest extends UnmanagedCopyTest {
function setUp() {
parent::setUp('file_test');
- variable_set('file_default_scheme', 'dummy-remote');
+ config('system.file')->set('default_scheme', 'dummy-remote')->save();
}
}
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedDeleteRecursiveTest.php b/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedDeleteRecursiveTest.php
index 081dc3d..e10f5b8 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedDeleteRecursiveTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedDeleteRecursiveTest.php
@@ -19,6 +19,6 @@ class RemoteFileUnmanagedDeleteRecursiveTest extends UnmanagedDeleteRecursiveTes
function setUp() {
parent::setUp('file_test');
- variable_set('file_default_scheme', 'dummy-remote');
+ config('system.file')->set('default_scheme', 'dummy-remote')->save();
}
}
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedDeleteTest.php b/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedDeleteTest.php
index 44dbf14..d5e0d32 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedDeleteTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedDeleteTest.php
@@ -19,6 +19,6 @@ class RemoteFileUnmanagedDeleteTest extends UnmanagedDeleteTest {
function setUp() {
parent::setUp('file_test');
- variable_set('file_default_scheme', 'dummy-remote');
+ config('system.file')->set('default_scheme', 'dummy-remote')->save();
}
}
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedMoveTest.php b/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedMoveTest.php
index fd53fd8..25d970e 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedMoveTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedMoveTest.php
@@ -19,6 +19,6 @@ class RemoteFileUnmanagedMoveTest extends UnmanagedMoveTest {
function setUp() {
parent::setUp('file_test');
- variable_set('file_default_scheme', 'dummy-remote');
+ config('system.file')->set('default_scheme', 'dummy-remote')->save();
}
}
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedSaveDataTest.php b/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedSaveDataTest.php
index 3463e6a..09c9d05 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedSaveDataTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/RemoteFileUnmanagedSaveDataTest.php
@@ -19,6 +19,6 @@ class RemoteFileUnmanagedSaveDataTest extends UnmanagedSaveDataTest {
function setUp() {
parent::setUp('file_test');
- variable_set('file_default_scheme', 'dummy-remote');
+ config('system.file')->set('default_scheme', 'dummy-remote')->save();
}
}
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/SaveUploadTest.php b/core/modules/system/lib/Drupal/system/Tests/File/SaveUploadTest.php
index 2cccaec..81aabbc 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/SaveUploadTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/SaveUploadTest.php
@@ -183,6 +183,7 @@ class SaveUploadTest extends FileHookTestBase {
* Test dangerous file handling.
*/
function testHandleDangerousFile() {
+ $config = config('system.file');
// Allow the .php extension and make sure it gets renamed to .txt for
// safety. Also check to make sure its MIME type was changed.
$edit = array(
@@ -204,7 +205,7 @@ class SaveUploadTest extends FileHookTestBase {
// Ensure dangerous files are not renamed when insecure uploads is TRUE.
// Turn on insecure uploads.
- variable_set('allow_insecure_uploads', 1);
+ $config->set('allow_insecure_uploads', 1)->save();
// Reset the hook counters.
file_test_reset();
@@ -218,7 +219,7 @@ class SaveUploadTest extends FileHookTestBase {
$this->assertFileHooksCalled(array('validate', 'insert'));
// Turn off insecure uploads.
- variable_set('allow_insecure_uploads', 0);
+ $config->set('allow_insecure_uploads', 0)->save();
}
/**
@@ -226,7 +227,7 @@ class SaveUploadTest extends FileHookTestBase {
*/
function testHandleFileMunge() {
// Ensure insecure uploads are disabled for this test.
- variable_set('allow_insecure_uploads', 0);
+ config('system.file')->set('allow_insecure_uploads', 0)->save();
$this->image = file_move($this->image, $this->image->uri . '.foo.' . $this->image_extension);
// Reset the hook counters to get rid of the 'move' we just called.
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/StreamWrapperTest.php b/core/modules/system/lib/Drupal/system/Tests/File/StreamWrapperTest.php
index 5a4d58d..f16b73f6 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/StreamWrapperTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/StreamWrapperTest.php
@@ -60,6 +60,8 @@ class StreamWrapperTest extends WebTestBase {
* Test the URI and target functions.
*/
function testUriFunctions() {
+ $config = config('system.file');
+
$instance = file_stream_wrapper_get_instance_by_uri($this->scheme . '://foo');
$this->assertEqual($this->classname, get_class($instance), t('Got correct class type for dummy URI.'));
@@ -73,10 +75,10 @@ class StreamWrapperTest extends WebTestBase {
// Test file_build_uri() and
// Drupal\Core\StreamWrapper\LocalStream::getDirectoryPath().
$this->assertEqual(file_build_uri('foo/bar.txt'), 'public://foo/bar.txt', t('Expected scheme was added.'));
- $this->assertEqual(file_stream_wrapper_get_instance_by_scheme('public')->getDirectoryPath(), variable_get('file_public_path'), t('Expected default directory path was returned.'));
- $this->assertEqual(file_stream_wrapper_get_instance_by_scheme('temporary')->getDirectoryPath(), variable_get('file_temporary_path'), t('Expected temporary directory path was returned.'));
+ $this->assertEqual(file_stream_wrapper_get_instance_by_scheme('public')->getDirectoryPath(), $config->get('path.public'), t('Expected default directory path was returned.'));
+ $this->assertEqual(file_stream_wrapper_get_instance_by_scheme('temporary')->getDirectoryPath(), $config->get('path.temporary'), t('Expected temporary directory path was returned.'));
- variable_set('file_default_scheme', 'private');
+ $config->set('default_scheme', 'private')->save();
$this->assertEqual(file_build_uri('foo/bar.txt'), 'private://foo/bar.txt', t('Got a valid URI from foo/bar.txt.'));
}
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedCopyTest.php b/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedCopyTest.php
index 5d5aa21..3c9b7ce 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedCopyTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedCopyTest.php
@@ -23,6 +23,7 @@ class UnmanagedCopyTest extends FileTestBase {
* Copy a normal file.
*/
function testNormal() {
+ $config = config('system.file');
// Create a file for testing
$file = $this->createFile();
@@ -33,7 +34,7 @@ class UnmanagedCopyTest extends FileTestBase {
$this->assertEqual($new_filepath, $desired_filepath, t('Returned expected filepath.'));
$this->assertTrue(file_exists($file->uri), t('Original file remains.'));
$this->assertTrue(file_exists($new_filepath), t('New file exists.'));
- $this->assertFilePermissions($new_filepath, variable_get('file_chmod_file', 0664));
+ $this->assertFilePermissions($new_filepath, $config->get('permission.file'));
// Copying with rename.
$desired_filepath = 'public://' . $this->randomName();
@@ -43,7 +44,7 @@ class UnmanagedCopyTest extends FileTestBase {
$this->assertNotEqual($newer_filepath, $desired_filepath, t('Returned expected filepath.'));
$this->assertTrue(file_exists($file->uri), t('Original file remains.'));
$this->assertTrue(file_exists($newer_filepath), t('New file exists.'));
- $this->assertFilePermissions($newer_filepath, variable_get('file_chmod_file', 0664));
+ $this->assertFilePermissions($newer_filepath, $config->get('permission.file'));
// TODO: test copying to a directory (rather than full directory/file path)
// TODO: test copying normal files using normal paths (rather than only streams)
@@ -64,6 +65,7 @@ class UnmanagedCopyTest extends FileTestBase {
* Copy a file onto itself.
*/
function testOverwriteSelf() {
+ $config = config('system.file');
// Create a file for testing
$file = $this->createFile();
@@ -73,7 +75,7 @@ class UnmanagedCopyTest extends FileTestBase {
$this->assertNotEqual($new_filepath, $file->uri, t('Copied file has a new name.'));
$this->assertTrue(file_exists($file->uri), t('Original file exists after copying onto itself.'));
$this->assertTrue(file_exists($new_filepath), t('Copied file exists after copying onto itself.'));
- $this->assertFilePermissions($new_filepath, variable_get('file_chmod_file', 0664));
+ $this->assertFilePermissions($new_filepath, $config->get('permission.file'));
// Copy the file onto itself without renaming fails.
$new_filepath = file_unmanaged_copy($file->uri, $file->uri, FILE_EXISTS_ERROR);
@@ -91,6 +93,6 @@ class UnmanagedCopyTest extends FileTestBase {
$this->assertNotEqual($new_filepath, $file->uri, t('Copied file has a new name.'));
$this->assertTrue(file_exists($file->uri), t('Original file exists after copying onto itself.'));
$this->assertTrue(file_exists($new_filepath), t('Copied file exists after copying onto itself.'));
- $this->assertFilePermissions($new_filepath, variable_get('file_chmod_file', 0664));
+ $this->assertFilePermissions($new_filepath, $config->get('permission.file'));
}
}
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedMoveTest.php b/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedMoveTest.php
index 4e5c8c4..57fa13c 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedMoveTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedMoveTest.php
@@ -23,6 +23,7 @@ class UnmanagedMoveTest extends FileTestBase {
* Move a normal file.
*/
function testNormal() {
+ $config = config('system.file');
// Create a file for testing
$file = $this->createFile();
@@ -33,7 +34,7 @@ class UnmanagedMoveTest extends FileTestBase {
$this->assertEqual($new_filepath, $desired_filepath, t('Returned expected filepath.'));
$this->assertTrue(file_exists($new_filepath), t('File exists at the new location.'));
$this->assertFalse(file_exists($file->uri), t('No file remains at the old location.'));
- $this->assertFilePermissions($new_filepath, variable_get('file_chmod_file', 0664));
+ $this->assertFilePermissions($new_filepath, $config->get('permission.file'));
// Moving with rename.
$desired_filepath = 'public://' . $this->randomName();
@@ -44,7 +45,7 @@ class UnmanagedMoveTest extends FileTestBase {
$this->assertNotEqual($newer_filepath, $desired_filepath, t('Returned expected filepath.'));
$this->assertTrue(file_exists($newer_filepath), t('File exists at the new location.'));
$this->assertFalse(file_exists($new_filepath), t('No file remains at the old location.'));
- $this->assertFilePermissions($newer_filepath, variable_get('file_chmod_file', 0664));
+ $this->assertFilePermissions($newer_filepath, $config->get('permission.file'));
// TODO: test moving to a directory (rather than full directory/file path)
// TODO: test creating and moving normal files (rather than streams)
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedSaveDataTest.php b/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedSaveDataTest.php
index 6494b86..a3d1d7a 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedSaveDataTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedSaveDataTest.php
@@ -36,6 +36,6 @@ class UnmanagedSaveDataTest extends FileTestBase {
$this->assertTrue($filepath, t('Unnamed file saved correctly.'));
$this->assertEqual('asdf.txt', drupal_basename($filepath), t('File was named correctly.'));
$this->assertEqual($contents, file_get_contents($filepath), t('Contents of the file are correct.'));
- $this->assertFilePermissions($filepath, variable_get('file_chmod_file', 0664));
+ $this->assertFilePermissions($filepath, config('system.file')->get('permission.file'));
}
}
diff --git a/core/modules/system/lib/Drupal/system/Tests/FileTransfer/FileTransferTest.php b/core/modules/system/lib/Drupal/system/Tests/FileTransfer/FileTransferTest.php
index e106e04..2f73f15 100644
--- a/core/modules/system/lib/Drupal/system/Tests/FileTransfer/FileTransferTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/FileTransfer/FileTransferTest.php
@@ -91,7 +91,7 @@ class FileTransferTest extends WebTestBase {
$gotit = TRUE;
try {
- $this->testConnection->copyDirectory($source, DRUPAL_ROOT . '/'. variable_get('file_public_path', conf_path() . '/files'));
+ $this->testConnection->copyDirectory($source, DRUPAL_ROOT . '/'. config('system.file')->get('path.public'));
}
catch (FileTransferException $e) {
$gotit = FALSE;
diff --git a/core/modules/system/lib/Drupal/system/Tests/System/ThemeTest.php b/core/modules/system/lib/Drupal/system/Tests/System/ThemeTest.php
index 30d8422..f233222 100644
--- a/core/modules/system/lib/Drupal/system/Tests/System/ThemeTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/System/ThemeTest.php
@@ -37,7 +37,7 @@ class ThemeTest extends WebTestBase {
function testThemeSettings() {
// Specify a filesystem path to be used for the logo.
$file = current($this->drupalGetTestFiles('image'));
- $file_relative = strtr($file->uri, array('public:/' => variable_get('file_public_path', conf_path() . '/files')));
+ $file_relative = strtr($file->uri, array('public:/' => config('system.file')->get('path.public')));
$default_theme_path = 'core/themes/stark';
$supported_paths = array(
@@ -89,7 +89,7 @@ class ThemeTest extends WebTestBase {
if (file_uri_scheme($input) == 'public') {
$implicit_public_file = file_uri_target($input);
$explicit_file = $input;
- $local_file = strtr($input, array('public:/' => variable_get('file_public_path', conf_path() . '/files')));
+ $local_file = strtr($input, array('public:/' => config('system.file')->get('path.public')));
}
// Adjust for fully qualified stream wrapper URI elsewhere.
elseif (file_uri_scheme($input) !== FALSE) {
@@ -99,7 +99,7 @@ class ThemeTest extends WebTestBase {
elseif ($input == file_uri_target($file->uri)) {
$implicit_public_file = $input;
$explicit_file = 'public://' . $input;
- $local_file = variable_get('file_public_path', conf_path() . '/files') . '/' . $input;
+ $local_file = config('system.file')->get('path.public') . '/' . $input;
}
$this->assertEqual((string) $elements[0], $implicit_public_file);
$this->assertEqual((string) $elements[1], $explicit_file);
@@ -124,9 +124,9 @@ class ThemeTest extends WebTestBase {
// Relative path within the public filesystem to non-existing file.
'whatever.png',
// Relative path to non-existing file in public filesystem.
- variable_get('file_public_path', conf_path() . '/files') . '/whatever.png',
+ config('system.file')->get('path.public') . '/whatever.png',
// Semi-absolute path to non-existing file in public filesystem.
- '/' . variable_get('file_public_path', conf_path() . '/files') . '/whatever.png',
+ '/' . config('system.file')->get('path.public') . '/whatever.png',
// Relative path to arbitrary non-existing file.
'core/misc/whatever.png',
// Semi-absolute path to arbitrary non-existing file.
diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc
index 2947245..1a74139 100644
--- a/core/modules/system/system.admin.inc
+++ b/core/modules/system/system.admin.inc
@@ -512,7 +512,7 @@ function system_theme_settings($form, &$form_state, $key = '') {
// Prepare local file path for description.
if ($original_path && isset($friendly_path)) {
- $local_file = strtr($original_path, array('public:/' => variable_get('file_public_path', conf_path() . '/files')));
+ $local_file = strtr($original_path, array('public:/' => config('system.file')->get('path.public')));
}
elseif ($key) {
$local_file = drupal_get_path('theme', $key) . '/' . $default;
@@ -1802,13 +1802,14 @@ function system_clear_page_cache_submit($form, &$form_state) {
* Form builder; Configure the site file handling.
*
* @ingroup forms
- * @see system_settings_form()
+ * @see system_file_system_settings_submit()
*/
function system_file_system_settings() {
+ $config = config('system.file');
$form['file_public_path'] = array(
'#type' => 'textfield',
'#title' => t('Public file system path'),
- '#default_value' => variable_get('file_public_path', conf_path() . '/files'),
+ '#default_value' => $config->get('path.public'),
'#maxlength' => 255,
'#description' => t('A local file system path where public files will be stored. This directory must exist and be writable by Drupal. This directory must be relative to the Drupal installation directory and be accessible over the web.'),
'#after_build' => array('system_check_directory'),
@@ -1817,7 +1818,7 @@ function system_file_system_settings() {
$form['file_private_path'] = array(
'#type' => 'textfield',
'#title' => t('Private file system path'),
- '#default_value' => variable_get('file_private_path', ''),
+ '#default_value' => $config->get('path.private'),
'#maxlength' => 255,
'#description' => t('An existing local file system path for storing private files. It should be writable by Drupal and not accessible over the web. See the online handbook for more information about securing private files.', array('@handbook' => 'http://drupal.org/documentation/modules/file')),
'#after_build' => array('system_check_directory'),
@@ -1826,7 +1827,7 @@ function system_file_system_settings() {
$form['file_temporary_path'] = array(
'#type' => 'textfield',
'#title' => t('Temporary directory'),
- '#default_value' => variable_get('file_temporary_path', file_directory_temp()),
+ '#default_value' => $config->get('path.temporary'),
'#maxlength' => 255,
'#description' => t('A local file system path where temporary files will be stored. This directory should not be accessible over the web.'),
'#after_build' => array('system_check_directory'),
@@ -1836,18 +1837,36 @@ function system_file_system_settings() {
foreach (file_get_stream_wrappers(STREAM_WRAPPERS_WRITE_VISIBLE) as $scheme => $info) {
$options[$scheme] = check_plain($info['description']);
}
-
if (!empty($options)) {
$form['file_default_scheme'] = array(
'#type' => 'radios',
'#title' => t('Default download method'),
- '#default_value' => variable_get('file_default_scheme', isset($options['public']) ? 'public' : key($options)),
+ '#default_value' => $config->get('default_scheme'),
'#options' => $options,
'#description' => t('This setting is used as the preferred download method. The use of public files is more efficient, but does not provide any access control.'),
);
}
- return system_settings_form($form);
+ return system_config_form($form, $form_state);
+}
+
+/**
+ * Save configuration values for file system.
+ *
+ * @ingroup forms
+ * @see system_file_system_settings()
+ */
+function system_file_system_settings_submit($form, &$form_state) {
+ $config = config('system.file');
+ $config
+ ->set('path.public', $form_state['values']['file_public_path'])
+ ->set('path.private', $form_state['values']['file_private_path'])
+ ->set('path.temporary', $form_state['values']['file_temporary_path']);
+
+ if(isset($form_state['values']['file_default_scheme'])) {
+ $config->set('default_scheme', $form_state['values']['file_default_scheme']);
+ }
+ $config->save();
}
/**
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index 96c02c3..5427bba 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -305,26 +305,38 @@ function system_requirements($phase) {
}
// Test files directories.
- // If we are installing Drupal, the settings.php file might not exist yet in
- // the intended conf_path() directory, so don't require it. The conf_path()
- // cache must also be reset in this case.
- $require_settings = ($phase != 'install');
- $reset_cache = !$require_settings;
- $directories = array(
- variable_get('file_public_path', conf_path($require_settings, $reset_cache) . '/files'),
- // By default no private files directory is configured. For private files
- // to be secure the admin needs to provide a path outside the webroot.
- variable_get('file_private_path', FALSE),
- );
-
- // Do not check for the temporary files directory at install time
- // unless it has been set in settings.php. In this case the user has
- // no alternative but to fix the directory if it is not writable.
- if ($phase == 'install') {
- $directories[] = variable_get('file_temporary_path', FALSE);
+ if ($phase != 'install') {
+ $filesystem_config = config('system.file');
+ $directories = array(
+ $filesystem_config->get('path.public'),
+ // By default no private files directory is configured. For private files
+ // to be secure the admin needs to provide a path outside the webroot.
+ $filesystem_config->get('path.private'),
+ file_directory_temp(),
+ );
}
else {
- $directories[] = variable_get('file_temporary_path', file_directory_temp());
+ // During an install we need to make assumptions about the file system
+ // unless overrides are provided in settings.php.
+ $directories = array();
+ if (!empty($GLOBALS['system.file.path.public'])) {
+ $directories[] = $GLOBALS['system.file.path.public'];
+ }
+ else {
+ // If we are installing Drupal, the settings.php file might not exist yet
+ // in the intended conf_path() directory, so don't require it. The
+ // conf_path() cache must also be reset in this case.
+ $directories[] = conf_path(FALSE, TRUE) . '/files';
+ }
+ if (!empty($GLOBALS['system.file.path.private'])) {
+ $directories[] = $GLOBALS['system.file.path.private'];
+ }
+ if (!empty($GLOBALS['system.file.path.temporary'])) {
+ $directories[] = $GLOBALS['system.file.path.temporary'];
+ }
+ else {
+ $directories[] = sys_get_temp_dir();
+ }
}
// Check the config directory if it is defined in settings.php. If it isn't
@@ -519,6 +531,13 @@ function system_install() {
config('system.cron')
->set('key', $cron_key)
->save();
+
+ // Populate default for public file path.
+ if (empty($GLOBALS['system.file.path.public'])) {
+ config('system.file')
+ ->set('path.public', conf_path(TRUE, TRUE) . '/files')
+ ->save();
+ }
}
/**
@@ -1998,6 +2017,24 @@ function system_update_8014() {
}
/**
+ * Moves site system settings from variable to config.
+ *
+ * @ingroup config_upgrade
+ */
+function system_update_8015() {
+ update_variables_to_config('system.file', array(
+ 'allow_insecure_uploads' => 'allow_insecure_uploads',
+ 'file_default_scheme' => 'default_scheme',
+ 'file_chmod_directory' => 'permission.directory',
+ 'file_chmod_file' => 'permission.file',
+ 'file_icon_directory' => 'path.icon',
+ 'file_public_path' => 'path.public',
+ 'file_private_path' => 'path.private',
+ 'file_temporary_path' => 'path.temporary',
+ ));
+}
+
+/**
* @} End of "defgroup updates-7.x-to-8.x".
* The next series of updates should start at 9000.
*/
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index 4c34dd2..6ae515d 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -1853,7 +1853,7 @@ function system_stream_wrappers() {
);
// Only register the private file stream wrapper if a file path has been set.
- if (variable_get('file_private_path', FALSE)) {
+ if (config('system.file')->get('path.private')) {
$wrappers['private'] = array(
'name' => t('Private files'),
'class' => 'Drupal\Core\StreamWrapper\PrivateStream',
diff --git a/core/modules/system/tests/modules/file_test/lib/Drupal/file_test/DummyStreamWrapper.php b/core/modules/system/tests/modules/file_test/lib/Drupal/file_test/DummyStreamWrapper.php
index 0651f37..4836f09 100644
--- a/core/modules/system/tests/modules/file_test/lib/Drupal/file_test/DummyStreamWrapper.php
+++ b/core/modules/system/tests/modules/file_test/lib/Drupal/file_test/DummyStreamWrapper.php
@@ -16,7 +16,7 @@ use Drupal\Core\StreamWrapper\LocalStream;
*/
class DummyStreamWrapper extends LocalStream {
function getDirectoryPath() {
- return variable_get('stream_public_path', 'sites/default/files');
+ return 'sites/default/files';
}
/**
diff --git a/core/scripts/run-tests.sh b/core/scripts/run-tests.sh
index 54f619b..5b5ef56 100755
--- a/core/scripts/run-tests.sh
+++ b/core/scripts/run-tests.sh
@@ -442,7 +442,7 @@ function simpletest_script_cleanup($test_id, $test_class, $exitcode) {
// Check whether a test file directory was setup already.
// @see prepareEnvironment()
- $public_files = variable_get('file_public_path', conf_path() . '/files');
+ $public_files = config('system.file')->get('path.public');
$test_directory = $public_files . '/simpletest/' . substr($db_prefix, 10);
if (is_dir($test_directory)) {
// Output the error_log.