| 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 | }
|
|---|