mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-06-28 14:20:15 +00:00
Upgrade/Install: Introduce populate_site_meta().
Fixes #44896. See #41333. git-svn-id: https://develop.svn.wordpress.org/trunk@43629 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -1292,3 +1292,42 @@ We hope you enjoy your new site. Thanks!
|
||||
}
|
||||
$wpdb->query( "INSERT INTO $wpdb->sitemeta ( site_id, meta_key, meta_value ) VALUES " . $insert ); // phpcs:ignore WordPress.WP.PreparedSQL.NotPrepared
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates WordPress site meta and sets the default values.
|
||||
*
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @global wpdb $wpdb WordPress database abstraction object.
|
||||
*
|
||||
* @param int $site_id Site ID to populate meta for.
|
||||
* @param array $meta Optional. Custom meta $key => $value pairs to use. Default empty array.
|
||||
*/
|
||||
function populate_site_meta( $site_id, array $meta = array() ) {
|
||||
global $wpdb;
|
||||
|
||||
$site_id = (int) $site_id;
|
||||
|
||||
if ( ! is_site_meta_supported() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( empty( $meta ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$insert = '';
|
||||
foreach ( $meta as $meta_key => $meta_value ) {
|
||||
if ( is_array( $meta_value ) ) {
|
||||
$meta_value = serialize( $meta_value );
|
||||
}
|
||||
if ( ! empty( $insert ) ) {
|
||||
$insert .= ', ';
|
||||
}
|
||||
$insert .= $wpdb->prepare( '( %d, %s, %s)', $site_id, $meta_key, $meta_value );
|
||||
}
|
||||
|
||||
$wpdb->query( "INSERT INTO $wpdb->blogmeta ( blog_id, meta_key, meta_value ) VALUES " . $insert ); // phpcs:ignore WordPress.WP.PreparedSQL.NotPrepared
|
||||
|
||||
wp_cache_set( 'last_changed', microtime(), 'sites' );
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
class Tests_Admin_Includes_Schema extends WP_UnitTestCase {
|
||||
|
||||
private static $options;
|
||||
private static $blogmeta;
|
||||
private static $sitemeta;
|
||||
|
||||
/**
|
||||
@@ -16,9 +17,11 @@ class Tests_Admin_Includes_Schema extends WP_UnitTestCase {
|
||||
global $wpdb;
|
||||
|
||||
self::$options = 'testprefix_options';
|
||||
self::$blogmeta = 'testprefix_blogmeta';
|
||||
self::$sitemeta = 'testprefix_sitemeta';
|
||||
|
||||
$options = self::$options;
|
||||
$blogmeta = self::$blogmeta;
|
||||
$sitemeta = self::$sitemeta;
|
||||
|
||||
require_once( ABSPATH . 'wp-admin/includes/schema.php' );
|
||||
@@ -38,6 +41,19 @@ class Tests_Admin_Includes_Schema extends WP_UnitTestCase {
|
||||
) {$charset_collate}
|
||||
"
|
||||
);
|
||||
$wpdb->query(
|
||||
"
|
||||
CREATE TABLE {$blogmeta} (
|
||||
meta_id bigint(20) unsigned NOT NULL auto_increment,
|
||||
blog_id bigint(20) unsigned NOT NULL default '0',
|
||||
meta_key varchar(255) default NULL,
|
||||
meta_value longtext,
|
||||
PRIMARY KEY (meta_id),
|
||||
KEY meta_key (meta_key({$max_index_length})),
|
||||
KEY blog_id (blog_id)
|
||||
) {$charset_collate}
|
||||
"
|
||||
);
|
||||
$wpdb->query(
|
||||
"
|
||||
CREATE TABLE {$sitemeta} (
|
||||
@@ -60,9 +76,11 @@ class Tests_Admin_Includes_Schema extends WP_UnitTestCase {
|
||||
global $wpdb;
|
||||
|
||||
$options = self::$options;
|
||||
$blogmeta = self::$blogmeta;
|
||||
$sitemeta = self::$sitemeta;
|
||||
|
||||
$wpdb->query( "DROP TABLE IF EXISTS {$options}" );
|
||||
$wpdb->query( "DROP TABLE IF EXISTS {$blogmeta}" );
|
||||
$wpdb->query( "DROP TABLE IF EXISTS {$sitemeta}" );
|
||||
}
|
||||
|
||||
@@ -156,8 +174,54 @@ class Tests_Admin_Includes_Schema extends WP_UnitTestCase {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 44896
|
||||
* @group multisite
|
||||
* @group ms-required
|
||||
* @dataProvider data_populate_site_meta
|
||||
*/
|
||||
function test_populate_site_meta( $meta, $expected ) {
|
||||
global $wpdb;
|
||||
|
||||
$orig_blogmeta = $wpdb->blogmeta;
|
||||
$wpdb->blogmeta = self::$blogmeta;
|
||||
|
||||
populate_site_meta( 42, $meta );
|
||||
|
||||
$results = array();
|
||||
foreach ( $expected as $meta_key => $value ) {
|
||||
$results[ $meta_key ] = get_site_meta( 42, $meta_key, true );
|
||||
}
|
||||
|
||||
$wpdb->query( "TRUNCATE TABLE {$wpdb->blogmeta}" );
|
||||
|
||||
$wpdb->blogmeta = $orig_blogmeta;
|
||||
|
||||
$this->assertEquals( $expected, $results );
|
||||
}
|
||||
|
||||
public function data_populate_site_meta() {
|
||||
return array(
|
||||
array(
|
||||
array(),
|
||||
array(
|
||||
'unknown_value' => '',
|
||||
),
|
||||
),
|
||||
array(
|
||||
array(
|
||||
'custom_meta' => '1',
|
||||
),
|
||||
array(
|
||||
'custom_meta' => '1',
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 44895
|
||||
* @group multisite
|
||||
* @dataProvider data_populate_network_meta
|
||||
*/
|
||||
function test_populate_network_meta( $meta, $expected ) {
|
||||
|
||||
Reference in New Issue
Block a user