| 1 | if( !function_exists('wp_get_sites') ) { |
|---|
| 2 | /** |
|---|
| 3 | * Return a list of sites for the current network |
|---|
| 4 | * |
|---|
| 5 | * @since 3.5.0 |
|---|
| 6 | * |
|---|
| 7 | * @param array|string $args Optional. Override default arguments. |
|---|
| 8 | * @return array site list and values |
|---|
| 9 | */ |
|---|
| 10 | function wp_get_sites( $args = array() ) { |
|---|
| 11 | // replacement for wp-includes/ms-deprecated.php#get_blog_list |
|---|
| 12 | // see wp-admin/ms-sites.php#352 |
|---|
| 13 | // also wp-includes/ms-functions.php#get_blogs_of_user |
|---|
| 14 | // also wp-includes/post-template.php#wp_list_pages |
|---|
| 15 | global $wpdb; |
|---|
| 16 | |
|---|
| 17 | $defaults = array( |
|---|
| 18 | 'include_public' => '1', // Include blogs marked as public |
|---|
| 19 | 'include_archived' => '0', // Include archived sites |
|---|
| 20 | 'include_mature' => '0', // Included blogs marked as mature |
|---|
| 21 | 'include_spam' => '0', // Include sites marked as "spam" |
|---|
| 22 | 'include_deleted' => '0', // Include deleted sites |
|---|
| 23 | 'domain' => '', // domain is this value |
|---|
| 24 | 'path' => '', // path is like this value |
|---|
| 25 | 'reg_date_since' => '', // sites registered since (accepts pretty much any valid date like tomorrow, today, 5/12/2009, etc.) |
|---|
| 26 | 'reg_date_before' => '', // sites registered before |
|---|
| 27 | 'sort_column' => 'registered',// or last_updated, blogname, site_id. |
|---|
| 28 | 'order' => 'desc', // or asc |
|---|
| 29 | 'limit_results' => '', // return this many results |
|---|
| 30 | 'start' => '', // return results starting with this item |
|---|
| 31 | 'postcount' => false // add postcount info - default to false |
|---|
| 32 | ); |
|---|
| 33 | |
|---|
| 34 | $r = wp_parse_args( $args, $defaults ); |
|---|
| 35 | extract( $r, EXTR_SKIP ); |
|---|
| 36 | |
|---|
| 37 | $query = "SELECT * FROM $wpdb->blogs WHERE site_id = %d "; |
|---|
| 38 | $query_args = Array( $wpdb->siteid ); |
|---|
| 39 | |
|---|
| 40 | foreach( Array( 'public', 'archived', 'mature', 'spam', 'deleted' ) as $param ) { |
|---|
| 41 | $var = "include_{$param}"; |
|---|
| 42 | $var = $$var; |
|---|
| 43 | if ( $var == 1 ) |
|---|
| 44 | $query .= " AND $param = '1' "; |
|---|
| 45 | elseif ( ( $var === 0 ) || ( $var === '0' ) ) |
|---|
| 46 | $query .= " AND $param = '0' "; |
|---|
| 47 | } |
|---|
| 48 | |
|---|
| 49 | if ( !empty( $domain ) ) { |
|---|
| 50 | $query .= " AND ( domain = '%s' ) "; |
|---|
| 51 | $query_args[] = $domain; |
|---|
| 52 | } |
|---|
| 53 | |
|---|
| 54 | if ( !empty( $path ) ) { |
|---|
| 55 | $query .= " AND ( path LIKE '%%%s%%' ) "; |
|---|
| 56 | $query_args[] = $path; |
|---|
| 57 | } |
|---|
| 58 | |
|---|
| 59 | if( !empty( $reg_date_since ) ) { |
|---|
| 60 | $query .= " AND unix_timestamp( b.date_registered ) > '%s' "; |
|---|
| 61 | $query_args[] = strtotime( $reg_date_since ); |
|---|
| 62 | } |
|---|
| 63 | if( !empty( $reg_date_before ) ) { |
|---|
| 64 | $query .= " AND unix_timestamp( b.date_registered ) < '%s' "; |
|---|
| 65 | $query_args[] = strtotime( $reg_date_before ); |
|---|
| 66 | } |
|---|
| 67 | |
|---|
| 68 | $sort_column = strtolower( $sort_column ); |
|---|
| 69 | |
|---|
| 70 | if ( !in_array( $sort_column, Array( 'registered', 'last_updated', 'blog_id', 'domain' ) ) ) |
|---|
| 71 | $sort_column = 'registered'; |
|---|
| 72 | |
|---|
| 73 | $query .= " ORDER BY {$sort_column} "; |
|---|
| 74 | $order = strtoupper( $order ); |
|---|
| 75 | if ( $order !== 'ASC' ) $order = 'DESC'; |
|---|
| 76 | $query .= $order; |
|---|
| 77 | |
|---|
| 78 | if ( !empty( $start ) || !empty( $limit_results ) ) { |
|---|
| 79 | if ( empty( $start ) ) |
|---|
| 80 | $start = 0; |
|---|
| 81 | else |
|---|
| 82 | $start = absint( $start ); |
|---|
| 83 | if ( empty( $limit_results ) ) |
|---|
| 84 | $limit_results = '18446744073709551615'; // 2^64 - 1 -- see docs for LIMIT in http://dev.mysql.com/doc/refman/5.0/en/select.html |
|---|
| 85 | else |
|---|
| 86 | $limit_results = absint( $limit_results ); |
|---|
| 87 | |
|---|
| 88 | if ( empty( $start ) ) { |
|---|
| 89 | if ( !empty( $limit_results ) ) $query .= " LIMIT $limit_results"; |
|---|
| 90 | } else { |
|---|
| 91 | $query .= " LIMIT $start, $limit_results"; |
|---|
| 92 | } |
|---|
| 93 | } |
|---|
| 94 | |
|---|
| 95 | $blogs = $wpdb->get_results( $wpdb->prepare( $query, $query_args ), ARRAY_A ); |
|---|
| 96 | $blog_list = Array(); |
|---|
| 97 | |
|---|
| 98 | foreach ( (array) $blogs as $details ) { |
|---|
| 99 | $blog_list[ $details['blog_id'] ] = $details; |
|---|
| 100 | if ( $postcount ) |
|---|
| 101 | $blog_list[ $details['blog_id'] ]['postcount'] = $wpdb->get_var( "SELECT COUNT(ID) FROM " . $wpdb->get_blog_prefix( $details['blog_id'] ). "posts WHERE post_status='publish' AND post_type='post'" ); |
|---|
| 102 | } |
|---|
| 103 | unset( $blogs ); |
|---|
| 104 | $blogs = $blog_list; |
|---|
| 105 | |
|---|
| 106 | if ( false == is_array( $blogs ) ) |
|---|
| 107 | return array(); |
|---|
| 108 | |
|---|
| 109 | return $blogs; |
|---|
| 110 | } |
|---|
| 111 | } |
|---|