Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
benscott committed Jun 5, 2019
2 parents 658a02b + bf3caf8 commit 532a0b5
Show file tree
Hide file tree
Showing 150 changed files with 589 additions and 450 deletions.
2 changes: 0 additions & 2 deletions coverage/.gitignore

This file was deleted.

2 changes: 1 addition & 1 deletion includes/bootstrap.inc
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
/**
* The current system version.
*/
define('VERSION', '7.63');
define('VERSION', '7.67');

/**
* Core API compatibility.
Expand Down
35 changes: 13 additions & 22 deletions includes/common.inc
Original file line number Diff line number Diff line change
Expand Up @@ -1094,6 +1094,11 @@ function drupal_http_request($url, array $options = array()) {
elseif ($options['max_redirects']) {
// Redirect to the new location.
$options['max_redirects']--;

// We need to unset the 'Host' header
// as we are redirecting to a new location.
unset($options['headers']['Host']);

$result = drupal_http_request($location, $options);
$result->redirect_code = $code;
}
Expand Down Expand Up @@ -5539,11 +5544,6 @@ function drupal_cron_cleanup() {
* - 'name': Name of file without the extension.
*/
function drupal_system_listing($mask, $directory, $key = 'name', $min_depth = 1) {
$cid = "drupal_system_listing|$mask|$directory|$key|$min_depth";
$cache = cache_get($cid);
if(!empty($cache->data)){
return $cache->data;
}
$config = conf_path();

$searchdir = array($directory);
Expand Down Expand Up @@ -5611,7 +5611,7 @@ function drupal_system_listing($mask, $directory, $key = 'name', $min_depth = 1)
}
$files = array_merge($files, $files_to_add);
}
cache_set($cid, $files, 'cache', time() + 604800);

return $files;
}

Expand Down Expand Up @@ -7487,18 +7487,12 @@ function drupal_parse_info_file($filename) {
$info = &drupal_static(__FUNCTION__, array());

if (!isset($info[$filename])) {
$cache = cache_get(__FUNCTION__);
if(empty($cache->data) || empty($cache->data[$filename])){
if (!file_exists($filename)) {
$info[$filename] = array();
}
else {
$data = file_get_contents($filename);
$info[$filename] = drupal_parse_info_format($data);
}
cache_set(__FUNCTION__, $info, 'cache', time() + 604800);
} else {
$info = $cache->data;
if (!file_exists($filename)) {
$info[$filename] = array();
}
else {
$data = file_get_contents($filename);
$info[$filename] = drupal_parse_info_format($data);
}
}
return $info[$filename];
Expand Down Expand Up @@ -7845,17 +7839,14 @@ function drupal_check_incompatibility($v, $current_version) {
* @see hook_entity_info()
* @see hook_entity_info_alter()
*/
function entity_get_info($entity_type = NULL, $reset = FALSE) {
function entity_get_info($entity_type = NULL) {
global $language;

// Use the advanced drupal_static() pattern, since this is called very often.
static $drupal_static_fast;
if (!isset($drupal_static_fast)) {
$drupal_static_fast['entity_info'] = &drupal_static(__FUNCTION__);
}
if($reset){
$drupal_static_fast = NULL;
}
$entity_info = &$drupal_static_fast['entity_info'];

// hook_entity_info() includes translated strings, so each language is cached
Expand Down
2 changes: 0 additions & 2 deletions includes/database/mysql/schema.inc
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,6 @@ class DatabaseSchema_mysql extends DatabaseSchema {
// Remove the last comma and space.
$sql = substr($sql, 0, -3) . "\n) ";

$sql .= 'ROW_FORMAT=DYNAMIC ';

$sql .= 'ENGINE = ' . $table['mysql_engine'] . ' DEFAULT CHARACTER SET ' . $table['mysql_character_set'];
// By default, MySQL uses the default collation for new tables, which is
// 'utf8_general_ci' for utf8. If an alternate collation has been set, it
Expand Down
55 changes: 49 additions & 6 deletions includes/file.inc
Original file line number Diff line number Diff line change
Expand Up @@ -611,9 +611,7 @@ function file_load($fid) {
*/
function file_save(stdClass $file) {
$file->timestamp = REQUEST_TIME;
if(empty($file->filesize) || (function_exists('file_entity_file_is_local') && file_entity_file_is_local($file))){
$file->filesize = filesize($file->uri);
}
$file->filesize = filesize($file->uri);

// Load the stored entity, if any.
if (!empty($file->fid) && !isset($file->original)) {
Expand Down Expand Up @@ -995,16 +993,22 @@ function file_build_uri($path) {
* @return
* The destination filepath, or FALSE if the file already exists
* and FILE_EXISTS_ERROR is specified.
*
* @throws RuntimeException
* Thrown if the filename contains invalid UTF-8.
*/
function file_destination($destination, $replace) {
$basename = drupal_basename($destination);
if (!drupal_validate_utf8($basename)) {
throw new RuntimeException(sprintf("Invalid filename '%s'", $basename));
}
if (file_exists($destination)) {
switch ($replace) {
case FILE_EXISTS_REPLACE:
// Do nothing here, we want to overwrite the existing file.
break;

case FILE_EXISTS_RENAME:
$basename = drupal_basename($destination);
$directory = drupal_dirname($destination);
$destination = file_create_filename($basename, $directory);
break;
Expand Down Expand Up @@ -1220,11 +1224,20 @@ function file_unmunge_filename($filename) {
* @return
* File path consisting of $directory and a unique filename based off
* of $basename.
*
* @throws RuntimeException
* Thrown if the $basename is not valid UTF-8 or another error occurs
* stripping control characters.
*/
function file_create_filename($basename, $directory) {
$original = $basename;
// Strip control characters (ASCII value < 32). Though these are allowed in
// some filesystems, not many applications handle them well.
$basename = preg_replace('/[\x00-\x1F]/u', '_', $basename);
if (preg_last_error() !== PREG_NO_ERROR) {
throw new RuntimeException(sprintf("Invalid filename '%s'", $original));
}

if (substr(PHP_OS, 0, 3) == 'WIN') {
// These characters are not allowed in Windows filenames
$basename = str_replace(array(':', '*', '?', '"', '<', '>', '|'), '_', $basename);
Expand Down Expand Up @@ -1565,7 +1578,13 @@ function file_save_upload($form_field_name, $validators = array(), $destination
if (substr($destination, -1) != '/') {
$destination .= '/';
}
$file->destination = file_destination($destination . $file->filename, $replace);
try {
$file->destination = file_destination($destination . $file->filename, $replace);
}
catch (RuntimeException $e) {
drupal_set_message(t('The file %source could not be uploaded because the name is invalid.', array('%source' => $form_field_name)), 'error');
return FALSE;
}
// If file_destination() returns FALSE then $replace == FILE_EXISTS_ERROR and
// there's an existing file so we need to bail.
if ($file->destination === FALSE) {
Expand Down Expand Up @@ -2132,9 +2151,33 @@ function file_download_access($uri) {
* 'filename', and 'name' members corresponding to the matching files.
*/
function file_scan_directory($dir, $mask, $options = array(), $depth = 0) {
// Default nomask option.
$nomask = '/(\.\.?|CVS)$/';

// Overrides the $nomask variable accordingly if $options['nomask'] is set.
//
// Allow directories specified in settings.php to be ignored. You can use this
// to not check for files in common special-purpose directories. For example,
// node_modules and bower_components. Ignoring irrelevant directories is a
// performance boost.
if (!isset($options['nomask'])) {
$ignore_directories = variable_get(
'file_scan_ignore_directories',
array()
);

foreach ($ignore_directories as $index => $ignore_directory) {
$ignore_directories[$index] = preg_quote($ignore_directory, '/');
}

if (!empty($ignore_directories)) {
$nomask = '/^(\.\.?)|CVS|' . implode('|', $ignore_directories) . '$/';
}
}

// Merge in defaults.
$options += array(
'nomask' => '/(\.\.?|CVS)$/',
'nomask' => $nomask,
'callback' => 0,
'recurse' => TRUE,
'key' => 'uri',
Expand Down
14 changes: 14 additions & 0 deletions includes/file.phar.inc
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,21 @@ function file_register_phar_wrapper() {
include_once $directory . '/Helper.php';
include_once $directory . '/Manager.php';
include_once $directory . '/PharStreamWrapper.php';
include_once $directory . '/Collectable.php';
include_once $directory . '/Interceptor/ConjunctionInterceptor.php';
include_once $directory . '/Interceptor/PharMetaDataInterceptor.php';
include_once $directory . '/Phar/Container.php';
include_once $directory . '/Phar/DeserializationException.php';
include_once $directory . '/Phar/Manifest.php';
include_once $directory . '/Phar/Reader.php';
include_once $directory . '/Phar/ReaderException.php';
include_once $directory . '/Phar/Stub.php';
include_once $directory . '/Resolvable.php';
include_once $directory . '/Resolver/PharInvocation.php';
include_once $directory . '/Resolver/PharInvocationCollection.php';
include_once $directory . '/Resolver/PharInvocationResolver.php';
include_once DRUPAL_ROOT . '/misc/typo3/drupal-security/PharExtensionInterceptor.php';
include_once DRUPAL_ROOT . '/misc/brumann/polyfill-unserialize/src/Unserialize.php';

// Set up a stream wrapper to handle insecurities due to PHP's built-in
// phar stream wrapper.
Expand Down
35 changes: 30 additions & 5 deletions includes/registry.inc
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
* Does the work for registry_update().
*/
function _registry_update() {

// The registry serves as a central autoloader for all classes, including
// the database query builders. However, the registry rebuild process
// requires write ability to the database, which means having access to the
Expand All @@ -33,6 +32,11 @@ function _registry_update() {
require_once DRUPAL_ROOT . '/includes/database/select.inc';
require_once DRUPAL_ROOT . '/includes/database/' . $driver . '/query.inc';

// During the first registry rebuild in a request, we check all the files.
// During subsequent rebuilds, we only add new files. It makes the rebuilding
// process faster during installation of modules.
static $check_existing_files = TRUE;

// Get current list of modules and their files.
$modules = db_query("SELECT * FROM {system} WHERE type = 'module'")->fetchAll();
// Get the list of files we are going to parse.
Expand All @@ -55,6 +59,9 @@ function _registry_update() {
$files["$filename"] = array('module' => '', 'weight' => 0);
}

// Initialize an empty array for the unchanged files.
$unchanged_files = array();

$transaction = db_transaction();
try {
// Allow modules to manually modify the list of files before the registry
Expand All @@ -63,10 +70,19 @@ function _registry_update() {
// list can then be added to the list of files that the registry will parse,
// or modify attributes of a file.
drupal_alter('registry_files', $files, $modules);

foreach (registry_get_parsed_files() as $filename => $file) {
// Add the hash for those files we have already parsed.
if (isset($files[$filename])) {
$files[$filename]['hash'] = $file['hash'];
if ($check_existing_files === TRUE) {
$files[$filename]['hash'] = $file['hash'];
}
else {
// Ignore that file for this request, it has been parsed previously
// and it is unlikely it has changed.
unset($files[$filename]);
$unchanged_files[$filename] = $file;
}
}
else {
// Flush the registry of resources in files that are no longer on disc
Expand All @@ -79,8 +95,12 @@ function _registry_update() {
->execute();
}
}

$parsed_files = _registry_parse_files($files);

// Add unchanged files to the files.
$files += $unchanged_files;

$unchanged_resources = array();
$lookup_cache = array();
if ($cache = cache_get('lookup_cache', 'cache_bootstrap')) {
Expand All @@ -89,19 +109,24 @@ function _registry_update() {
foreach ($lookup_cache as $key => $file) {
// If the file for this cached resource is carried over unchanged from
// the last registry build, then we can safely re-cache it.
if ($file && in_array($file, array_keys($files)) && !in_array($file, $parsed_files)) {
if ($file && isset($files[$file]) && !in_array($file, $parsed_files, TRUE)) {
$unchanged_resources[$key] = $file;
}
}
module_implements('', FALSE, TRUE);
_registry_check_code(REGISTRY_RESET_LOOKUP_CACHE);
}
catch (Exception $e) {
$transaction->rollback();
watchdog_exception('registry', $e);
throw $e;
}

module_implements('', FALSE, TRUE);
_registry_check_code(REGISTRY_RESET_LOOKUP_CACHE);

// During the next run in this request, don't bother re-checking existing
// files.
$check_existing_files = FALSE;

// We have some unchanged resources, warm up the cache - no need to pay
// for looking them up again.
if (count($unchanged_resources) > 0) {
Expand Down
6 changes: 3 additions & 3 deletions modules/aggregator/aggregator.info
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ files[] = aggregator.test
configure = admin/config/services/aggregator/settings
stylesheets[all][] = aggregator.css

; Information added by Drupal.org packaging script on 2019-01-16
version = "7.63"
; Information added by Drupal.org packaging script on 2019-05-08
version = "7.67"
project = "drupal"
datestamp = "1547681965"
datestamp = "1557336079"
6 changes: 3 additions & 3 deletions modules/aggregator/tests/aggregator_test.info
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE

; Information added by Drupal.org packaging script on 2019-01-16
version = "7.63"
; Information added by Drupal.org packaging script on 2019-05-08
version = "7.67"
project = "drupal"
datestamp = "1547681965"
datestamp = "1557336079"
6 changes: 3 additions & 3 deletions modules/block/block.info
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ core = 7.x
files[] = block.test
configure = admin/structure/block

; Information added by Drupal.org packaging script on 2019-01-16
version = "7.63"
; Information added by Drupal.org packaging script on 2019-05-08
version = "7.67"
project = "drupal"
datestamp = "1547681965"
datestamp = "1557336079"
6 changes: 3 additions & 3 deletions modules/block/tests/block_test.info
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ version = VERSION
core = 7.x
hidden = TRUE

; Information added by Drupal.org packaging script on 2019-01-16
version = "7.63"
; Information added by Drupal.org packaging script on 2019-05-08
version = "7.67"
project = "drupal"
datestamp = "1547681965"
datestamp = "1557336079"
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ regions[footer] = Footer
regions[highlighted] = Highlighted
regions[help] = Help

; Information added by Drupal.org packaging script on 2019-01-16
version = "7.63"
; Information added by Drupal.org packaging script on 2019-05-08
version = "7.67"
project = "drupal"
datestamp = "1547681965"
datestamp = "1557336079"
6 changes: 3 additions & 3 deletions modules/blog/blog.info
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ version = VERSION
core = 7.x
files[] = blog.test

; Information added by Drupal.org packaging script on 2019-01-16
version = "7.63"
; Information added by Drupal.org packaging script on 2019-05-08
version = "7.67"
project = "drupal"
datestamp = "1547681965"
datestamp = "1557336079"
6 changes: 3 additions & 3 deletions modules/book/book.info
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ files[] = book.test
configure = admin/content/book/settings
stylesheets[all][] = book.css

; Information added by Drupal.org packaging script on 2019-01-16
version = "7.63"
; Information added by Drupal.org packaging script on 2019-05-08
version = "7.67"
project = "drupal"
datestamp = "1547681965"
datestamp = "1557336079"
Loading

0 comments on commit 532a0b5

Please sign in to comment.