Changeset 32313
- Timestamp:
- 04/27/2015 05:16:29 PM (11 years ago)
- Location:
- branches/4.0
- Files:
-
- 8 edited
-
package.json (modified) (1 diff)
-
src/readme.html (modified) (1 diff)
-
src/wp-admin/about.php (modified) (1 diff)
-
src/wp-admin/includes/upgrade.php (modified) (2 diffs)
-
src/wp-includes/version.php (modified) (1 diff)
-
src/wp-includes/wp-db.php (modified) (3 diffs)
-
tests/phpunit/tests/comment.php (modified) (1 diff)
-
tests/phpunit/tests/db.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/4.0/package.json
r32283 r32313 1 1 { 2 2 "name": "WordPress", 3 "version": "4.0. 3",3 "version": "4.0.4", 4 4 "description": "WordPress is web software you can use to create a beautiful website or blog.", 5 5 "repository": { -
branches/4.0/src/readme.html
r32283 r32313 10 10 <h1 id="logo"> 11 11 <a href="https://wordpress.org/"><img alt="WordPress" src="wp-admin/images/wordpress-logo.png" /></a> 12 <br /> Version 4.0. 312 <br /> Version 4.0.4 13 13 </h1> 14 14 <p style="text-align: center">Semantic Personal Publishing Platform</p> -
branches/4.0/src/wp-admin/about.php
r32283 r32313 43 43 44 44 <div class="changelog point-releases"> 45 <h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 3 ); ?></h3> 45 <h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 4 ); ?></h3> 46 <p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.', 47 '<strong>Version %1$s</strong> addressed some security issues.', 1 ), '4.0.4' ); ?> 48 <?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'http://codex.wordpress.org/Version_4.0.4' ); ?> 49 </p> 46 50 <p><?php printf( _n( '<strong>Version %1$s</strong> addressed %2$s bug.', 47 51 '<strong>Version %1$s</strong> addressed %2$s bugs.', 1 ), '4.0.3', number_format_i18n( 1 ) ); ?> -
branches/4.0/src/wp-admin/includes/upgrade.php
r29630 r32313 440 440 if ( $wp_current_db_version < 29630 ) 441 441 upgrade_400(); 442 443 if ( $wp_current_db_version < 29631 ) 444 upgrade_404(); 442 445 443 446 maybe_disable_link_manager(); … … 1328 1331 1329 1332 /** 1333 * Execute changes made in WordPress 4.0.4. 1334 * 1335 * @since 4.0.4 1336 */ 1337 function upgrade_404() { 1338 global $wp_current_db_version, $wpdb; 1339 1340 if ( $wp_current_db_version < 29631 ) { 1341 $content_length = $wpdb->get_col_length( $wpdb->comments, 'comment_content' ); 1342 if ( ! $content_length ) { 1343 $content_length = 65535; 1344 } 1345 1346 $comments = $wpdb->get_results( 1347 "SELECT comment_ID FROM $wpdb->comments 1348 WHERE comment_date_gmt > '2015-04-26' 1349 AND CHAR_LENGTH( comment_content ) >= $content_length 1350 AND ( comment_content LIKE '%<%' OR comment_content LIKE '%>%' )" 1351 ); 1352 1353 foreach ( $comments as $comment ) { 1354 wp_delete_comment( $comment->comment_ID, true ); 1355 } 1356 } 1357 } 1358 1359 /** 1330 1360 * Execute network level changes 1331 1361 * -
branches/4.0/src/wp-includes/version.php
r32302 r32313 12 12 * @global int $wp_db_version 13 13 */ 14 $wp_db_version = 2963 0;14 $wp_db_version = 29631; 15 15 16 16 /** -
branches/4.0/src/wp-includes/wp-db.php
r32272 r32313 1929 1929 protected function process_fields( $table, $data, $format ) { 1930 1930 $data = $this->process_field_formats( $data, $format ); 1931 if ( false === $data ) { 1932 return false; 1933 } 1934 1931 1935 $data = $this->process_field_charsets( $data, $table ); 1936 if ( false === $data ) { 1937 return false; 1938 } 1939 1940 $data = $this->process_field_lengths( $data, $table ); 1932 1941 if ( false === $data ) { 1933 1942 return false; … … 2006 2015 // This isn't ASCII. Don't have strip_invalid_text() re-check. 2007 2016 $value['ascii'] = false; 2017 } 2018 2019 $data[ $field ] = $value; 2020 } 2021 2022 return $data; 2023 } 2024 2025 /** 2026 * For string fields, record the maximum string length that field can safely save. 2027 * 2028 * @since 4.2.1 2029 * @access protected 2030 * 2031 * @param array $data As it comes from the wpdb::process_field_charsets() method. 2032 * @param string $table Table name. 2033 * @return array|False The same array as $data with additional 'length' keys, or false if 2034 * any of the values were too long for their corresponding field. 2035 */ 2036 protected function process_field_lengths( $data, $table ) { 2037 foreach ( $data as $field => $value ) { 2038 if ( '%d' === $value['format'] || '%f' === $value['format'] ) { 2039 // We can skip this field if we know it isn't a string. 2040 // This checks %d/%f versus ! %s because it's sprintf() could take more. 2041 $value['length'] = false; 2042 } else { 2043 $value['length'] = $this->get_col_length( $table, $field ); 2044 if ( is_wp_error( $value['length'] ) ) { 2045 return false; 2046 } 2047 } 2048 2049 if ( false !== $value['length'] && strlen( $value['value'] ) > $value['length'] ) { 2050 return false; 2008 2051 } 2009 2052 … … 2336 2379 2337 2380 /** 2381 * Retrieve the maximum string length allowed in a given column. 2382 * 2383 * @since 4.2.1 2384 * @access public 2385 * 2386 * @param string $table Table name. 2387 * @param string $column Column name. 2388 * @return mixed Max column length as an int. False if the column has no 2389 * length. WP_Error object if there was an error. 2390 */ 2391 public function get_col_length( $table, $column ) { 2392 $tablekey = strtolower( $table ); 2393 $columnkey = strtolower( $column ); 2394 2395 // Skip this entirely if this isn't a MySQL database. 2396 if ( false === $this->is_mysql ) { 2397 return false; 2398 } 2399 2400 if ( empty( $this->col_meta[ $tablekey ] ) ) { 2401 // This primes column information for us. 2402 $table_charset = $this->get_table_charset( $table ); 2403 if ( is_wp_error( $table_charset ) ) { 2404 return $table_charset; 2405 } 2406 } 2407 2408 if ( empty( $this->col_meta[ $tablekey ][ $columnkey ] ) ) { 2409 return false; 2410 } 2411 2412 $typeinfo = explode( '(', $this->col_meta[ $tablekey ][ $columnkey ]->Type ); 2413 2414 $type = strtolower( $typeinfo[0] ); 2415 if ( ! empty( $typeinfo[1] ) ) { 2416 $length = trim( $typeinfo[1], ')' ); 2417 } else { 2418 $length = false; 2419 } 2420 2421 switch( $type ) { 2422 case 'binary': 2423 case 'char': 2424 case 'varbinary': 2425 case 'varchar': 2426 return $length; 2427 break; 2428 case 'tinyblob': 2429 case 'tinytext': 2430 return 255; // 2^8 - 1 2431 break; 2432 case 'blob': 2433 case 'text': 2434 return 65535; // 2^16 - 1 2435 break; 2436 case 'mediumblob': 2437 case 'mediumtext': 2438 return 16777215; // 2^24 - 1 2439 break; 2440 case 'longblob': 2441 case 'longtext': 2442 return 4294967295; // 2^32 - 1 2443 break; 2444 default: 2445 return false; 2446 } 2447 2448 return false; 2449 } 2450 2451 /** 2338 2452 * Check if a string is ASCII. 2339 2453 * -
branches/4.0/tests/phpunit/tests/comment.php
r25002 r32313 15 15 $this->assertEquals( 0, $result ); 16 16 } 17 18 public function test_comment_content_length() { 19 // `wp_new_comment()` checks REMOTE_ADDR, so we fake it to avoid PHP notices. 20 if ( isset( $_SERVER['REMOTE_ADDR'] ) ) { 21 $remote_addr = $_SERVER['REMOTE_ADDR']; 22 } else { 23 $_SERVER['REMOTE_ADDR'] = ''; 24 } 25 26 $post_id = $this->factory->post->create(); 27 28 $data = array( 29 'comment_post_ID' => $post_id, 30 'comment_author' => rand_str(), 31 'comment_author_url' => '', 32 'comment_author_email' => '', 33 'comment_type' => '', 34 'comment_content' => str_repeat( 'A', 65536 ), 35 'comment_date' => '2011-01-01 10:00:00', 36 'comment_date_gmt' => '2011-01-01 10:00:00', 37 ); 38 39 $id = wp_new_comment( $data ); 40 41 $this->assertFalse( $id ); 42 43 // Cleanup. 44 if ( isset( $remote_addr ) ) { 45 $_SERVER['REMOTE_ADDR'] = $remote_addr; 46 } else { 47 unset( $_SERVER['REMOTE_ADDR'] ); 48 } 49 } 17 50 } -
branches/4.0/tests/phpunit/tests/db.php
r32181 r32313 713 713 'charset' => $expected_charset, 714 714 'ascii' => false, 715 'length' => $wpdb->get_col_length( $wpdb->posts, 'post_content' ), 715 716 ) 716 717 );
Note: See TracChangeset
for help on using the changeset viewer.