Make WordPress Core

Ticket #37923: sitemeta1.php

File sitemeta1.php, 3.6 KB (added by spacedmonkey, 9 years ago)
Line 
1<?php
2
3function on_site_update(){
4 if( is_multisite() ){
5 $list = list_of_site_meta_keys();
6 $site_id = get_current_blog_id();
7 foreach($list as $option){
8 $value = __get_option($option);
9 add_site_meta($site_id,$option,$value);
10 }
11 }
12}
13
14function add_site_meta( $site_id, $meta_key, $meta_value, $unique = false ) {
15 // Bail if site meta table is not installed.
16 if ( get_option( 'db_version' ) < 34370 ) {
17 $list = list_of_site_meta_keys();
18 if( in_array( $list ) && in_array( $option, $list) ){
19 return add_blog_option ($site_id, $meta_key, $meta_value);
20 }
21
22 return false;
23 }
24
25 $added = add_metadata( 'blog', $site_id, $meta_key, $meta_value, $unique );
26
27 // Bust site query cache.
28 if ( $added ) {
29 wp_cache_set( 'last_changed', microtime(), 'sites' );
30 }
31
32 return $added;
33}
34
35
36function delete_site_meta( $site_id, $meta_key, $meta_value = '' ) {
37 // Bail if site meta table is not installed.
38 if ( get_option( 'db_version' ) < 34370 ) {
39 $list = list_of_site_meta_keys();
40 if( is_array( $list ) && in_array( $option, $list) ){
41 return delete_blog_option ($site_id, $meta_key);
42 }
43
44 return false;
45 }
46
47 $deleted = delete_metadata( 'blog', $site_id, $meta_key, $meta_value );
48
49 // Bust site query cache.
50 if ( $deleted ) {
51 wp_cache_set( 'last_changed', microtime(), 'sites' );
52 }
53
54 return $deleted;
55}
56
57function get_site_meta( $site_id, $key = '', $single = false ) {
58 // Bail if site meta table is not installed.
59 if ( get_option( 'db_version' ) < 34370 ) {
60 $list = list_of_site_meta_keys();
61 if( is_array( $list ) && in_array( $option, $list) ){
62 return get_blog_option ($site_id, $meta_key);
63 }
64
65 return false;
66 }
67
68 // backwards compat
69 $pre = apply_filters( "pre_option_{$key}", false, $key );
70 if ( false !== $pre ){
71 return $pre;
72 }
73
74 $value = get_metadata( 'blog', $site_id, $key, $single );
75 //backwards compat
76 return apply_filters( "option_{$key}", maybe_unserialize( $value ), $key );
77}
78
79function update_site_meta( $site_id, $meta_key, $meta_value, $prev_value = '' ) {
80 // Bail if site meta table is not installed.
81 if ( get_option( 'db_version' ) < 34370 ) {
82 $list = list_of_site_meta_keys();
83 if( is_array( $list ) && in_array( $option, $list) ){
84 return update_blog_option ($site_id, $meta_key, $meta_value);
85 }
86
87 return false;
88 }
89
90 $updated = update_metadata( 'blog', $site_id, $meta_key, $meta_value, $prev_value );
91
92 // Bust site query cache.
93 if ( $updated ) {
94 wp_cache_set( 'last_changed', microtime(), 'sites' );
95 }
96
97 return $updated;
98}
99
100function list_of_site_meta_keys(){
101 $list = array( 'blogname','siteurl','post_count','home','allowedthemes','blog_public','WPLANG','blogdescription','db_version');
102 return apply_filters('list_of_site_meta_keys', $list);
103}
104
105function sync_update_option( $option, $old_value, $value ){
106 $list = list_of_site_meta_keys();
107 if(is_array($list) && !in_array( $option, $list) ){
108 return;
109 }
110 $site_id = get_current_blog_id();
111 update_site_meta( $site_id, $option, $value, $old_value );
112 return;
113}
114add_action( 'updated_option', 'sync_update_option', 99, 3 );
115
116function sync_add_option( $option, $value ){
117 $list = list_of_site_meta_keys();
118 if(is_array($list) && !in_array( $option, $list) ){
119 return;
120 }
121 $site_id = get_current_blog_id();
122 add_site_meta( $site_id, $option, $value );
123 return;
124}
125add_action( 'added_option', 'sync_add_option', 99, 2 );
126
127function sync_delete_option( $option ){
128 $list = list_of_site_meta_keys();
129 if(is_array($list) && !in_array( $option, $list) ){
130 return;
131 }
132 $site_id = get_current_blog_id();
133 delete_site_meta( $site_id, $option );
134 return;
135}
136add_action( 'deleted_option', 'sync_delete_option', 99, 1 );