From 9dafd622f00485a1889bfd22bcf1291e2aed647b Mon Sep 17 00:00:00 2001 From: David Rothstein Date: Sun, 29 Mar 2015 22:56:35 -0400 Subject: Issue #1404050 by JamesOakley, David_Rothstein: system_update_7061 breaks private files by leaving one too many forward slashes in protocol of migrated URIs --- modules/system/system.install | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'modules/system') diff --git a/modules/system/system.install b/modules/system/system.install index 43c7383a3..64c989a61 100644 --- a/modules/system/system.install +++ b/modules/system/system.install @@ -2854,7 +2854,14 @@ function system_update_7061(&$sandbox) { // We will convert filepaths to URI using the default scheme // and stripping off the existing file directory path. $file['uri'] = $scheme . preg_replace('!^' . preg_quote($basename) . '!', '', $file['filepath']); - $file['uri'] = file_stream_wrapper_uri_normalize($file['uri']); + // Normalize the URI but don't call file_stream_wrapper_uri_normalize() + // directly, since that is a higher-level API function which invokes + // hooks while validating the scheme, and those will not work during + // the upgrade. Instead, use a simpler version that just assumes the + // scheme from above is already valid. + if (($file_uri_scheme = file_uri_scheme($file['uri'])) && ($file_uri_target = file_uri_target($file['uri']))) { + $file['uri'] = $file_uri_scheme . '://' . $file_uri_target; + } unset($file['filepath']); // Insert into the file_managed table. // Each fid should only be stored once in file_managed. -- cgit v1.2.3