updated core to 7.80
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
/**
|
||||
* The current system version.
|
||||
*/
|
||||
define('VERSION', '7.67');
|
||||
define('VERSION', '7.80');
|
||||
|
||||
/**
|
||||
* Core API compatibility.
|
||||
@@ -1189,19 +1189,21 @@ function variable_initialize($conf = array()) {
|
||||
$variables = $cached->data;
|
||||
}
|
||||
else {
|
||||
// Cache miss. Avoid a stampede.
|
||||
// Cache miss. Avoid a stampede by acquiring a lock. If the lock fails to
|
||||
// acquire, optionally just continue with uncached processing.
|
||||
$name = 'variable_init';
|
||||
if (!lock_acquire($name, 1)) {
|
||||
// Another request is building the variable cache.
|
||||
// Wait, then re-run this function.
|
||||
$lock_acquired = lock_acquire($name, 1);
|
||||
if (!$lock_acquired && variable_get('variable_initialize_wait_for_lock', FALSE)) {
|
||||
lock_wait($name);
|
||||
return variable_initialize($conf);
|
||||
}
|
||||
else {
|
||||
// Proceed with variable rebuild.
|
||||
// Load the variables from the table.
|
||||
$variables = array_map('unserialize', db_query('SELECT name, value FROM {variable}')->fetchAllKeyed());
|
||||
cache_set('variables', $variables, 'cache_bootstrap');
|
||||
lock_release($name);
|
||||
if ($lock_acquired) {
|
||||
cache_set('variables', $variables, 'cache_bootstrap');
|
||||
lock_release($name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1998,7 +2000,7 @@ function watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NO
|
||||
|
||||
// It is possible that the error handling will itself trigger an error. In that case, we could
|
||||
// end up in an infinite loop. To avoid that, we implement a simple static semaphore.
|
||||
if (!$in_error_state && function_exists('module_implements')) {
|
||||
if (!$in_error_state && function_exists('module_invoke_all')) {
|
||||
$in_error_state = TRUE;
|
||||
|
||||
// The user object may not exist in all conditions, so 0 is substituted if needed.
|
||||
@@ -2021,9 +2023,7 @@ function watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NO
|
||||
);
|
||||
|
||||
// Call the logging hooks to log/process the message
|
||||
foreach (module_implements('watchdog') as $module) {
|
||||
module_invoke($module, 'watchdog', $log_entry);
|
||||
}
|
||||
module_invoke_all('watchdog', $log_entry);
|
||||
|
||||
// It is critical that the semaphore is only cleared here, in the parent
|
||||
// watchdog() call (not outside the loop), to prevent recursive execution.
|
||||
@@ -2518,6 +2518,7 @@ function drupal_bootstrap($phase = NULL, $new_phase = TRUE) {
|
||||
|
||||
switch ($current_phase) {
|
||||
case DRUPAL_BOOTSTRAP_CONFIGURATION:
|
||||
require_once DRUPAL_ROOT . '/includes/request-sanitizer.inc';
|
||||
_drupal_bootstrap_configuration();
|
||||
break;
|
||||
|
||||
@@ -2595,13 +2596,10 @@ function drupal_get_hash_salt() {
|
||||
* The filename that the error was raised in.
|
||||
* @param $line
|
||||
* The line number the error was raised at.
|
||||
* @param $context
|
||||
* An array that points to the active symbol table at the point the error
|
||||
* occurred.
|
||||
*/
|
||||
function _drupal_error_handler($error_level, $message, $filename, $line, $context) {
|
||||
function _drupal_error_handler($error_level, $message, $filename, $line) {
|
||||
require_once DRUPAL_ROOT . '/includes/errors.inc';
|
||||
_drupal_error_handler_real($error_level, $message, $filename, $line, $context);
|
||||
_drupal_error_handler_real($error_level, $message, $filename, $line);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2622,6 +2620,10 @@ function _drupal_exception_handler($exception) {
|
||||
_drupal_log_error(_drupal_decode_exception($exception), TRUE);
|
||||
}
|
||||
catch (Exception $exception2) {
|
||||
// Add a 500 status code in case an exception was thrown before the 500
|
||||
// status could be set (e.g. while loading a maintenance theme from cache).
|
||||
drupal_add_http_header('Status', '500 Internal Server Error');
|
||||
|
||||
// Another uncaught exception was thrown while handling the first one.
|
||||
// If we are displaying errors, then do so with no possibility of a further uncaught exception being thrown.
|
||||
if (error_displayable()) {
|
||||
@@ -2647,7 +2649,6 @@ function _drupal_bootstrap_configuration() {
|
||||
drupal_settings_initialize();
|
||||
|
||||
// Sanitize unsafe keys from the request.
|
||||
require_once DRUPAL_ROOT . '/includes/request-sanitizer.inc';
|
||||
DrupalRequestSanitizer::sanitize();
|
||||
}
|
||||
|
||||
@@ -3875,3 +3876,85 @@ function drupal_clear_opcode_cache($filepath) {
|
||||
@apc_delete_file($filepath);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Drupal's wrapper around PHP's setcookie() function.
|
||||
*
|
||||
* This allows the cookie's $value and $options to be altered.
|
||||
*
|
||||
* @param $name
|
||||
* The name of the cookie.
|
||||
* @param $value
|
||||
* The value of the cookie.
|
||||
* @param $options
|
||||
* An associative array which may have any of the keys expires, path, domain,
|
||||
* secure, httponly, samesite.
|
||||
*
|
||||
* @see setcookie()
|
||||
* @ingroup php_wrappers
|
||||
*/
|
||||
function drupal_setcookie($name, $value, $options) {
|
||||
$options = _drupal_cookie_params($options);
|
||||
if (\PHP_VERSION_ID >= 70300) {
|
||||
setcookie($name, $value, $options);
|
||||
}
|
||||
else {
|
||||
setcookie($name, $value, $options['expires'], $options['path'], $options['domain'], $options['secure'], $options['httponly']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process the params for cookies. This emulates support for the SameSite
|
||||
* attribute in earlier versions of PHP, and allows the value of that attribute
|
||||
* to be overridden.
|
||||
*
|
||||
* @param $options
|
||||
* An associative array which may have any of the keys expires, path, domain,
|
||||
* secure, httponly, samesite.
|
||||
*
|
||||
* @return
|
||||
* An associative array which may have any of the keys expires, path, domain,
|
||||
* secure, httponly, and samesite.
|
||||
*/
|
||||
function _drupal_cookie_params($options) {
|
||||
$options['samesite'] = _drupal_samesite_cookie($options);
|
||||
if (\PHP_VERSION_ID < 70300) {
|
||||
// Emulate SameSite support in older PHP versions.
|
||||
if (!empty($options['samesite'])) {
|
||||
// Ensure the SameSite attribute is only added once.
|
||||
if (!preg_match('/SameSite=/i', $options['path'])) {
|
||||
$options['path'] .= '; SameSite=' . $options['samesite'];
|
||||
}
|
||||
}
|
||||
}
|
||||
return $options;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine the value for the samesite cookie attribute, in the following order
|
||||
* of precedence:
|
||||
*
|
||||
* 1) A value explicitly passed to drupal_setcookie()
|
||||
* 2) A value set in $conf['samesite_cookie_value']
|
||||
* 3) The setting from php ini
|
||||
* 4) The default of None, or FALSE (no attribute) if the cookie is not Secure
|
||||
*
|
||||
* @param $options
|
||||
* An associative array as passed to drupal_setcookie().
|
||||
* @return
|
||||
* The value for the samesite cookie attribute.
|
||||
*/
|
||||
function _drupal_samesite_cookie($options) {
|
||||
if (isset($options['samesite'])) {
|
||||
return $options['samesite'];
|
||||
}
|
||||
$override = variable_get('samesite_cookie_value', NULL);
|
||||
if ($override !== NULL) {
|
||||
return $override;
|
||||
}
|
||||
$ini_options = session_get_cookie_params();
|
||||
if (isset($ini_options['samesite'])) {
|
||||
return $ini_options['samesite'];
|
||||
}
|
||||
return empty($options['secure']) ? FALSE : 'None';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user