-1, 'search' => '*' . $query['search'] . '*', 'fields' => array('blog_id'), )); $domain_ids = array_column($domain_ids, 'blog_id'); if (!empty($domain_ids)) { $query['blog_id__in'] = $domain_ids; unset($query['search']); } // end if; } // end if; return \WP_Ultimo\Models\Site::query($query); } // end wu_get_sites; /** * Returns the list of Site Templates. * * @since 2.0.0 * * @param array $query Query arguments. * @return array */ function wu_get_site_templates($query = array()) { $query = wp_parse_args($query, array( 'number' => 9999, // By default, we try to get ALL available templates. )); return \WP_Ultimo\Models\Site::get_all_by_type('site_template', $query); } // end wu_get_site_templates; /** * Parses a URL and breaks it into different parts * * @since 2.0.0 * * @param string $domain The domain to break up. * @return object */ function wu_handle_site_domain($domain) { global $current_site; if (strpos($domain, 'http') === false) { $domain = "https://{$domain}"; } // end if; $parsed = parse_url($domain); return (object) $parsed; } // end wu_handle_site_domain; /** * Creates a new site. * * @since 2.0.0 * * @param array $site_data Site data. * @return \WP_Error|\WP_Ultimo\Models\Site */ function wu_create_site($site_data) { $current_site = get_current_site(); $site_data = wp_parse_args($site_data, array( 'domain' => $current_site->domain, 'path' => '/', 'title' => false, 'type' => false, 'template_id' => false, 'featured_image_id' => 0, 'duplication_arguments' => false, 'public' => true, )); $site = new \WP_Ultimo\Models\Site($site_data); $site->set_public($site_data['public']); $saved = $site->save(); return is_wp_error($saved) ? $saved : $site; } // end wu_create_site; /** * Returns the correct domain/path combination when creating a new site. * * @since 2.0.0 * * @param string $path_or_subdomain The site path. * @param string|bool $base_domain The domain selected. * @return object Object with a domain and path properties. */ function wu_get_site_domain_and_path($path_or_subdomain = '/', $base_domain = false) { global $current_site; $path_or_subdomain = trim($path_or_subdomain, '/'); $domain = $base_domain ? $base_domain : $current_site->domain; $d = new \stdClass; if (is_multisite() && is_subdomain_install()) { /* * Treat for the www. case. */ $domain = str_replace('www.', '', (string) $domain); $d->domain = "{$path_or_subdomain}.{$domain}"; $d->path = '/'; return $d; } // end if; $d->domain = $domain; $d->path = "/{$path_or_subdomain}"; /** * Allow developers to manipulate the domain/path pairs. * * This can be useful for a number of things, such as implementing some * sort of staging solution, different servers, etc. * * @since 2.0.0 * @param object $d The current object containing a domain and path keys. * @param string $path_or_subdomain The original path/subdomain passed to the function. * @return object An object containing a domain and path keys. */ return apply_filters('wu_get_site_domain_and_path', $d, $path_or_subdomain); } // end wu_get_site_domain_and_path;