Update bonanza
This commit is contained in:
1 parent
1cc68c88b2
commit
483f8419ac
18 files changed
+166
-47
No files matched your search
+1
-1
@@ -9,7 +9,7 @@
|
||||
<body>
|
||||
<h1 id="logo">
|
||||
<a href="https://wordpress.org/"><img alt="WordPress" src="wp-admin/images/wordpress-logo.png" /></a>
|
||||
<br /> Version 3.9.1
|
||||
<br /> Version 3.9.2
|
||||
</h1>
|
||||
<p style="text-align: center">Semantic Personal Publishing Platform</p>
|
||||
|
||||
|
||||
+5
-1
@@ -39,7 +39,11 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
|
||||
</h2>
|
||||
|
||||
<div class="changelog point-releases">
|
||||
<h3><?php echo _n( 'Maintenance Release', 'Maintenance Releases', 1 ); ?></h3>
|
||||
<h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 2 ); ?></h3>
|
||||
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
|
||||
'<strong>Version %1$s</strong> addressed some security issues.', 6 ), '3.9.2', number_format_i18n( 6 ) ); ?>
|
||||
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'http://codex.wordpress.org/Version_3.9.2' ); ?>
|
||||
</p>
|
||||
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed %2$s bug.',
|
||||
'<strong>Version %1$s</strong> addressed %2$s bugs.', 34 ), '3.9.1', number_format_i18n( 34 ) ); ?>
|
||||
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'http://codex.wordpress.org/Version_3.9.1' ); ?>
|
||||
|
||||
Binary file not shown.
@@ -2,7 +2,7 @@
|
||||
# This file is distributed under the same license as the Administration package.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2014-04-16 13:08:40+0000\n"
|
||||
"PO-Revision-Date: 2014-07-22 09:45:21+0000\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -651,7 +651,7 @@ msgstr "Legg til nytt"
|
||||
|
||||
#: wp-admin/themes.php:227 wp-admin/themes.php:304 wp-admin/themes.php:334
|
||||
msgid "Update Available"
|
||||
msgstr "Oppdater tilgjengelige"
|
||||
msgstr "Oppdatering tilgjengelig"
|
||||
|
||||
#: wp-admin/themes.php:314
|
||||
msgid "Close overlay"
|
||||
@@ -6493,11 +6493,11 @@ msgstr "Siste"
|
||||
|
||||
#: wp-admin/includes/update.php:433
|
||||
msgid "An automated WordPress update has failed to complete - <a href=\"%s\">please attempt the update again now</a>."
|
||||
msgstr "En automatisert WordPress-oppdatering feilet—<a href=\"%s\">vennligst prøv igjen nå</a>."
|
||||
msgstr "En automatisk WordPress-oppdatering feilet—<a href=\"%s\">vennligst prøv igjen nå</a>."
|
||||
|
||||
#: wp-admin/includes/update.php:435
|
||||
msgid "An automated WordPress update has failed to complete! Please notify the site administrator."
|
||||
msgstr "En automatisert WordPress-oppdatering feilet! Vennligst si ifra til nettstedets administrator."
|
||||
msgstr "En automatisk WordPress-oppdatering feilet! Vennligst si ifra til nettstedets administrator."
|
||||
|
||||
#: wp-admin/includes/upgrade.php:66
|
||||
msgid "<strong><em>Note that password</em></strong> carefully! It is a <em>random</em> password that was generated just for you."
|
||||
|
||||
Binary file not shown.
@@ -2,7 +2,7 @@
|
||||
# This file is distributed under the same license as the Twenty Fourteen package.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2014-04-07 15:34:54+0000\n"
|
||||
"PO-Revision-Date: 2014-07-22 09:46:59+0000\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -91,7 +91,7 @@ msgstr "Stikkord"
|
||||
|
||||
#: inc/featured-content.php:436
|
||||
msgid "Don’t display tag on front end."
|
||||
msgstr "Ikke vis slagord på forsiden."
|
||||
msgstr "Ikke vis dette stikkordet på fremsidene."
|
||||
|
||||
msgid "In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier."
|
||||
msgstr "I 2014 gjør vårt standardtema deg i stand til å lage et responsivt magasinnettsted med et moderne design. Fremhev ditt favorittinnhold i et rutenett eller en slider. Bruk de tre widgetområdene for å tilpasse nettstedet og endre layouten med fullbreddeformat og bidragsytersider for å fremheve dine ulike forfattere. Å lage et magasinnettsted med WordPress har aldri vært enklere."
|
||||
|
||||
@@ -883,7 +883,8 @@ class Ure_Lib extends Garvs_WP_Lib {
|
||||
$caps['delete_users'] = 1;
|
||||
$caps['create_users'] = 1;
|
||||
if ($this->multisite) {
|
||||
$caps['manage_network'] = 1;
|
||||
$caps['manage_network'] = 1;
|
||||
$caps['manage_sites'] = 1;
|
||||
$caps['manage_network_users'] = 1;
|
||||
$caps['manage_network_themes'] = 1;
|
||||
$caps['manage_network_plugins'] = 1;
|
||||
|
||||
Binary file not shown.
@@ -278,7 +278,7 @@ msgstr "Другие роли"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:904
|
||||
msgid "Edit"
|
||||
msgstr "Редактор"
|
||||
msgstr "Изменить"
|
||||
|
||||
#: ../includes/ure-role-edit.php:17
|
||||
msgid "Select Role and change its capabilities:"
|
||||
|
||||
@@ -83,6 +83,11 @@ Share with me new ideas about plugin further development and link to your site w
|
||||
|
||||
|
||||
== Changelog ==
|
||||
= 4.14.4 =
|
||||
* 08.08.2014
|
||||
* Missed "manage_sites" user capability was added to the list of built-in WordPress capabilities managed by User Role Editor.
|
||||
* Russian translation was updated.
|
||||
|
||||
= 4.14.3 =
|
||||
* 25.07.2014
|
||||
* Integer "1" as default capability value for new added empty role was excluded for the better compatibility with WordPress core. Boolean "true" is used instead as WordPress itself does.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Plugin Name: User Role Editor
|
||||
Plugin URI: http://role-editor.com
|
||||
Description: Change/add/delete WordPress user roles and capabilities.
|
||||
Version: 4.14.3
|
||||
Version: 4.14.4
|
||||
Author: Vladimir Garagulya
|
||||
Author URI: http://www.shinephp.com
|
||||
Text Domain: ure
|
||||
@@ -23,7 +23,7 @@ if (defined('URE_PLUGIN_URL')) {
|
||||
wp_die('It seems that other version of User Role Editor is active. Please deactivate it before use this version');
|
||||
}
|
||||
|
||||
define('URE_VERSION', '4.14.3');
|
||||
define('URE_VERSION', '4.14.4');
|
||||
define('URE_PLUGIN_URL', plugin_dir_url(__FILE__));
|
||||
define('URE_PLUGIN_DIR', plugin_dir_path(__FILE__));
|
||||
define('URE_PLUGIN_FILE', basename(__FILE__));
|
||||
|
||||
@@ -519,11 +519,12 @@ class getid3_lib
|
||||
}
|
||||
|
||||
public static function XML2array($XMLstring) {
|
||||
if (function_exists('simplexml_load_string')) {
|
||||
if (function_exists('get_object_vars')) {
|
||||
$XMLobject = simplexml_load_string($XMLstring);
|
||||
return self::SimpleXMLelement2array($XMLobject);
|
||||
}
|
||||
if ( function_exists( 'simplexml_load_string' ) && function_exists( 'libxml_disable_entity_loader' ) ) {
|
||||
$loader = libxml_disable_entity_loader( true );
|
||||
$XMLobject = simplexml_load_string( $XMLstring, 'SimpleXMLElement', LIBXML_NOENT );
|
||||
$return = self::SimpleXMLelement2array( $XMLobject );
|
||||
libxml_disable_entity_loader( $loader );
|
||||
return $return;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -203,11 +203,37 @@ class IXR_Message
|
||||
{
|
||||
// first remove the XML declaration
|
||||
// merged from WP #10698 - this method avoids the RAM usage of preg_replace on very large messages
|
||||
$header = preg_replace( '/<\?xml.*?\?'.'>/', '', substr($this->message, 0, 100), 1);
|
||||
$this->message = substr_replace($this->message, $header, 0, 100);
|
||||
if (trim($this->message) == '') {
|
||||
$header = preg_replace( '/<\?xml.*?\?'.'>/s', '', substr( $this->message, 0, 100 ), 1 );
|
||||
$this->message = trim( substr_replace( $this->message, $header, 0, 100 ) );
|
||||
if ( '' == $this->message ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Then remove the DOCTYPE
|
||||
$header = preg_replace( '/^<!DOCTYPE[^>]*+>/i', '', substr( $this->message, 0, 200 ), 1 );
|
||||
$this->message = trim( substr_replace( $this->message, $header, 0, 200 ) );
|
||||
if ( '' == $this->message ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check that the root tag is valid
|
||||
$root_tag = substr( $this->message, 0, strcspn( substr( $this->message, 0, 20 ), "> \t\r\n" ) );
|
||||
if ( '<!DOCTYPE' === strtoupper( $root_tag ) ) {
|
||||
return false;
|
||||
}
|
||||
if ( ! in_array( $root_tag, array( '<methodCall', '<methodResponse', '<fault' ) ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Bail if there are too many elements to parse
|
||||
$element_limit = 30000;
|
||||
if ( function_exists( 'apply_filters' ) ) {
|
||||
$element_limit = apply_filters( 'xmlrpc_element_limit', $element_limit );
|
||||
}
|
||||
if ( $element_limit && 2 * $element_limit < substr_count( $this->message, '<' ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->_parser = xml_parser_create();
|
||||
// Set XML parser to take the case of tags in to account
|
||||
xml_parser_set_option($this->_parser, XML_OPTION_CASE_FOLDING, false);
|
||||
|
||||
@@ -1119,22 +1119,19 @@ final class WP_Customize_Widgets {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a widget instance's hash key.
|
||||
* Get MAC for a serialized widget instance string.
|
||||
*
|
||||
* Serialize an instance and hash it with the AUTH_KEY; when a JS value is
|
||||
* posted back to save, this instance hash key is used to ensure that the
|
||||
* serialized_instance was not tampered with, but that it had originated
|
||||
* from WordPress and so is sanitized.
|
||||
* Allows values posted back from JS to be rejected if any tampering of the
|
||||
* data has occurred.
|
||||
*
|
||||
* @since 3.9.0
|
||||
* @access protected
|
||||
*
|
||||
* @param array $instance Widget instance.
|
||||
* @return string Widget instance's hash key.
|
||||
* @param string $serialized_instance Widget instance.
|
||||
* @return string MAC for serialized widget instance.
|
||||
*/
|
||||
protected function get_instance_hash_key( $instance ) {
|
||||
$hash = md5( AUTH_KEY . serialize( $instance ) );
|
||||
return $hash;
|
||||
protected function get_instance_hash_key( $serialized_instance ) {
|
||||
return wp_hash( $serialized_instance );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1162,18 +1159,19 @@ final class WP_Customize_Widgets {
|
||||
}
|
||||
|
||||
$decoded = base64_decode( $value['encoded_serialized_instance'], true );
|
||||
|
||||
if ( false === $decoded ) {
|
||||
return null;
|
||||
}
|
||||
$instance = unserialize( $decoded );
|
||||
|
||||
if ( $this->get_instance_hash_key( $decoded ) !== $value['instance_hash_key'] ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$instance = unserialize( $decoded );
|
||||
if ( false === $instance ) {
|
||||
return null;
|
||||
}
|
||||
if ( $this->get_instance_hash_key( $instance ) !== $value['instance_hash_key'] ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $instance;
|
||||
}
|
||||
|
||||
@@ -1194,7 +1192,7 @@ final class WP_Customize_Widgets {
|
||||
'encoded_serialized_instance' => base64_encode( $serialized ),
|
||||
'title' => empty( $value['title'] ) ? '' : $value['title'],
|
||||
'is_widget_customizer_js_value' => true,
|
||||
'instance_hash_key' => $this->get_instance_hash_key( $value ),
|
||||
'instance_hash_key' => $this->get_instance_hash_key( $serialized ),
|
||||
);
|
||||
}
|
||||
return $value;
|
||||
|
||||
@@ -94,3 +94,32 @@ if ( !function_exists('json_decode') ) {
|
||||
return is_array($data) ? array_map(__FUNCTION__, $data) : $data;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'hash_equals' ) ) :
|
||||
/**
|
||||
* Compare two strings in constant time.
|
||||
*
|
||||
* This function was added in PHP 5.6.
|
||||
* It can leak the length of a string.
|
||||
*
|
||||
* @since 3.9.2
|
||||
*
|
||||
* @param string $a Expected string.
|
||||
* @param string $b Actual string.
|
||||
* @return bool Whether strings are equal.
|
||||
*/
|
||||
function hash_equals( $a, $b ) {
|
||||
$a_length = strlen( $a );
|
||||
if ( $a_length !== strlen( $b ) ) {
|
||||
return false;
|
||||
}
|
||||
$result = 0;
|
||||
|
||||
// Do not attempt to "optimize" this.
|
||||
for ( $i = 0; $i < $a_length; $i++ ) {
|
||||
$result |= ord( $a[ $i ] ) ^ ord( $b[ $i ] );
|
||||
}
|
||||
|
||||
return $result === 0;
|
||||
}
|
||||
endif;
|
||||
@@ -647,7 +647,7 @@ function wp_validate_auth_cookie($cookie = '', $scheme = '') {
|
||||
$key = wp_hash($username . $pass_frag . '|' . $expiration, $scheme);
|
||||
$hash = hash_hmac('md5', $username . '|' . $expiration, $key);
|
||||
|
||||
if ( hash_hmac( 'md5', $hmac, $key ) !== hash_hmac( 'md5', $hash, $key ) ) {
|
||||
if ( ! hash_equals( $hash, $hmac ) ) {
|
||||
/**
|
||||
* Fires if a bad authentication cookie hash is encountered.
|
||||
*
|
||||
@@ -1658,11 +1658,17 @@ function wp_verify_nonce($nonce, $action = -1) {
|
||||
$i = wp_nonce_tick();
|
||||
|
||||
// Nonce generated 0-12 hours ago
|
||||
if ( substr(wp_hash($i . $action . $uid, 'nonce'), -12, 10) === $nonce )
|
||||
$expected = substr( wp_hash( $i . '|' . $action . '|' . $uid, 'nonce'), -12, 10 );
|
||||
if ( hash_equals( $expected, $nonce ) ) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Nonce generated 12-24 hours ago
|
||||
if ( substr(wp_hash(($i - 1) . $action . $uid, 'nonce'), -12, 10) === $nonce )
|
||||
$expected = substr( wp_hash( ( $i - 1 ) . '|' . $action . '|' . $uid, 'nonce' ), -12, 10 );
|
||||
if ( hash_equals( $expected, $nonce ) ) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
// Invalid nonce
|
||||
return false;
|
||||
}
|
||||
@@ -1687,7 +1693,7 @@ function wp_create_nonce($action = -1) {
|
||||
|
||||
$i = wp_nonce_tick();
|
||||
|
||||
return substr(wp_hash($i . $action . $uid, 'nonce'), -12, 10);
|
||||
return substr(wp_hash($i . '|' . $action . '|' . $uid, 'nonce'), -12, 10);
|
||||
}
|
||||
endif;
|
||||
|
||||
@@ -2107,7 +2113,8 @@ function get_avatar( $id_or_email, $size = '96', $default = '', $alt = false ) {
|
||||
$out = str_replace( '&', '&', esc_url( $out ) );
|
||||
$avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
|
||||
} else {
|
||||
$avatar = "<img alt='{$safe_alt}' src='{$default}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
|
||||
$out = esc_url( $default );
|
||||
$avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2200,3 +2207,35 @@ function wp_text_diff( $left_string, $right_string, $args = null ) {
|
||||
}
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'hash_equals' ) ) :
|
||||
/**
|
||||
* Compare two strings in constant time.
|
||||
*
|
||||
* This function is NOT pluggable. It is in this file (in addition to
|
||||
* compat.php) to prevent errors if, during an update, pluggable.php
|
||||
* copies over but compat.php does not.
|
||||
*
|
||||
* This function was added in PHP 5.6.
|
||||
* It can leak the length of a string.
|
||||
*
|
||||
* @since 3.9.2
|
||||
*
|
||||
* @param string $a Expected string.
|
||||
* @param string $b Actual string.
|
||||
* @return bool Whether strings are equal.
|
||||
*/
|
||||
function hash_equals( $a, $b ) {
|
||||
$a_length = strlen( $a );
|
||||
if ( $a_length !== strlen( $b ) ) {
|
||||
return false;
|
||||
}
|
||||
$result = 0;
|
||||
|
||||
// Do not attempt to "optimize" this.
|
||||
for ( $i = 0; $i < $a_length; $i++ ) {
|
||||
$result |= ord( $a[ $i ] ) ^ ord( $b[ $i ] );
|
||||
}
|
||||
|
||||
return $result === 0;
|
||||
}
|
||||
endif;
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* @global string $wp_version
|
||||
*/
|
||||
$wp_version = '3.9.1';
|
||||
$wp_version = '3.9.2';
|
||||
|
||||
/**
|
||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||
|
||||
+21
-5
@@ -562,10 +562,25 @@ break;
|
||||
|
||||
case 'resetpass' :
|
||||
case 'rp' :
|
||||
$user = check_password_reset_key($_GET['key'], $_GET['login']);
|
||||
list( $rp_path ) = explode( '?', wp_unslash( $_SERVER['REQUEST_URI'] ) );
|
||||
$rp_cookie = 'wp-resetpass-' . COOKIEHASH;
|
||||
if ( isset( $_GET['key'] ) ) {
|
||||
$value = sprintf( '%s:%s', wp_unslash( $_GET['login'] ), wp_unslash( $_GET['key'] ) );
|
||||
setcookie( $rp_cookie, $value, 0, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
|
||||
wp_safe_redirect( remove_query_arg( array( 'key', 'login' ) ) );
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( is_wp_error($user) ) {
|
||||
if ( $user->get_error_code() === 'expired_key' )
|
||||
if ( isset( $_COOKIE[ $rp_cookie ] ) && 0 < strpos( $_COOKIE[ $rp_cookie ], ':' ) ) {
|
||||
list( $rp_login, $rp_key ) = explode( ':', wp_unslash( $_COOKIE[ $rp_cookie ] ), 2 );
|
||||
$user = check_password_reset_key( $rp_key, $rp_login );
|
||||
} else {
|
||||
$user = false;
|
||||
}
|
||||
|
||||
if ( ! $user || is_wp_error( $user ) ) {
|
||||
setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
|
||||
if ( $user && $user->get_error_code() === 'expired_key' )
|
||||
wp_redirect( site_url( 'wp-login.php?action=lostpassword&error=expiredkey' ) );
|
||||
else
|
||||
wp_redirect( site_url( 'wp-login.php?action=lostpassword&error=invalidkey' ) );
|
||||
@@ -589,6 +604,7 @@ case 'rp' :
|
||||
|
||||
if ( ( ! $errors->get_error_code() ) && isset( $_POST['pass1'] ) && !empty( $_POST['pass1'] ) ) {
|
||||
reset_password($user, $_POST['pass1']);
|
||||
setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
|
||||
login_header( __( 'Password Reset' ), '<p class="message reset-pass">' . __( 'Your password has been reset.' ) . ' <a href="' . esc_url( wp_login_url() ) . '">' . __( 'Log in' ) . '</a></p>' );
|
||||
login_footer();
|
||||
exit;
|
||||
@@ -600,8 +616,8 @@ case 'rp' :
|
||||
login_header(__('Reset Password'), '<p class="message reset-pass">' . __('Enter your new password below.') . '</p>', $errors );
|
||||
|
||||
?>
|
||||
<form name="resetpassform" id="resetpassform" action="<?php echo esc_url( site_url( 'wp-login.php?action=resetpass&key=' . urlencode( $_GET['key'] ) . '&login=' . urlencode( $_GET['login'] ), 'login_post' ) ); ?>" method="post" autocomplete="off">
|
||||
<input type="hidden" id="user_login" value="<?php echo esc_attr( $_GET['login'] ); ?>" autocomplete="off" />
|
||||
<form name="resetpassform" id="resetpassform" action="<?php echo esc_url( site_url( 'wp-login.php?action=resetpass', 'login_post' ) ); ?>" method="post" autocomplete="off">
|
||||
<input type="hidden" id="user_login" value="<?php echo esc_attr( $rp_login ); ?>" autocomplete="off" />
|
||||
|
||||
<p>
|
||||
<label for="pass1"><?php _e('New password') ?><br />
|
||||
|
||||
Reference in new issue
Block a user