| | 1990 | |
| | 1991 | /** |
| | 1992 | * Return an array of sites on the specified network. If no network is specified, |
| | 1993 | * return all sites, regardless of network. |
| | 1994 | * |
| | 1995 | * @since 3.7.0 |
| | 1996 | * |
| | 1997 | * @param array $args { |
| | 1998 | * Array of arguments. Optional. |
| | 1999 | * |
| | 2000 | * @type int|array 'network_id' A network ID or array of network IDs. Default null. |
| | 2001 | * @type int 'public' Retrieve public or non-public sites. Default null. |
| | 2002 | * @type int 'archived' Retrieve archived or non-archived sites. Default null. |
| | 2003 | * @type int 'mature' Retrieve mature or non-mature sites. Default null. |
| | 2004 | * @type int 'spam' Retrieve spam or non-spam sites. Default null. |
| | 2005 | * @type int 'deleted' Retrieve deleted or non-deleted sites. Default null. |
| | 2006 | * @type int 'limit' Number of sites to limit the query to. Default 100. |
| | 2007 | * } |
| | 2008 | * |
| | 2009 | * @return array An array of site data |
| | 2010 | */ |
| | 2011 | function wp_get_sites( $args = array() ) { |
| | 2012 | global $wpdb; |
| | 2013 | |
| | 2014 | if ( wp_is_large_network() ) |
| | 2015 | return array(); |
| | 2016 | |
| | 2017 | $defaults = array( |
| | 2018 | 'network_id' => null, |
| | 2019 | 'public' => null, |
| | 2020 | 'archived' => null, |
| | 2021 | 'mature' => null, |
| | 2022 | 'spam' => null, |
| | 2023 | 'deleted' => null, |
| | 2024 | 'limit' => 100, |
| | 2025 | ); |
| | 2026 | |
| | 2027 | $args = wp_parse_args( $args, $defaults ); |
| | 2028 | |
| | 2029 | $query = "SELECT * FROM $wpdb->blogs WHERE 1=1 "; |
| | 2030 | |
| | 2031 | if ( isset( $args['network_id'] ) && ( is_array( $args['network_id'] ) || is_numeric( $args['network_id'] ) ) ) { |
| | 2032 | $network_ids = array_map('intval', (array) $args['network_id'] ); |
| | 2033 | $network_ids = implode( ',', $network_ids ); |
| | 2034 | $query .= "AND site_id IN ($network_ids) "; |
| | 2035 | } |
| | 2036 | |
| | 2037 | if ( isset( $args['public'] ) ) |
| | 2038 | $query .= $wpdb->prepare( "AND public = %d ", $args['public'] ); |
| | 2039 | |
| | 2040 | if ( isset( $args['archived'] ) ) |
| | 2041 | $query .= $wpdb->prepare( "AND archived = %d ", $args['archived'] ); |
| | 2042 | |
| | 2043 | if ( isset( $args['mature'] ) ) |
| | 2044 | $query .= $wpdb->prepare( "AND mature = %d ", $args['mature'] ); |
| | 2045 | |
| | 2046 | if ( isset( $args['spam'] ) ) |
| | 2047 | $query .= $wpdb->prepare( "AND spam = %d ", $args['spam'] ); |
| | 2048 | |
| | 2049 | if ( isset( $args['deleted'] ) ) |
| | 2050 | $query .= $wpdb->prepare( "AND deleted = %d ", $args['deleted'] ); |
| | 2051 | |
| | 2052 | if ( isset( $args['limit'] ) ) |
| | 2053 | $query .= $wpdb->prepare( "LIMIT %d ", $args['limit'] ); |
| | 2054 | |
| | 2055 | $site_results = $wpdb->get_results( $query, ARRAY_A ); |
| | 2056 | |
| | 2057 | return $site_results; |
| | 2058 | } |