Make WordPress Core

Ticket #37923: sitemeta1.php

File sitemeta1.php, 3.6 KB (added by spacedmonkey, 7 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 );