Files
wp-multisite-waas/inc/functions/domain.php
2025-02-09 00:20:10 -07:00

150 lines
2.9 KiB
PHP

<?php
/**
* Domain Functions
*
* @package WP_Ultimo\Functions
* @since 2.0.0
*/
// Exit if accessed directly
defined('ABSPATH') || exit;
use WP_Ultimo\Models\Domain;
/**
* Returns a domain.
*
* @since 2.0.0
*
* @param int $domain_id The id of the domain. This is not the user ID.
* @return \WP_Ultimo\Models\Domain|false
*/
function wu_get_domain($domain_id) {
return \WP_Ultimo\Models\Domain::get_by_id($domain_id);
}
/**
* Queries domains.
*
* @since 2.0.0
*
* @param array $query Query arguments.
* @return \WP_Ultimo\Models\Domain[]
*/
function wu_get_domains($query = []) {
return \WP_Ultimo\Models\Domain::query($query);
}
/**
* Returns a domain based on domain.
*
* @since 2.0.0
*
* @param string $domain The domain url.
* @return \WP_Ultimo\Models\Domain|false
*/
function wu_get_domain_by_domain($domain) {
return \WP_Ultimo\Models\Domain::get_by('domain', $domain);
}
/**
* Creates a new domain.
*
* Check the wp_parse_args below to see what parameters are necessary.
*
* @since 2.0.0
*
* @param array $domain_data Domain attributes.
* @return \WP_Error|\WP_Ultimo\Models\Domain
*/
function wu_create_domain($domain_data) {
$domain_data = wp_parse_args(
$domain_data,
[
'blog_id' => false,
'domain' => false,
'active' => true,
'primary_domain' => false,
'secure' => false,
'stage' => 'checking-dns',
'date_created' => wu_get_current_time('mysql', true),
'date_modified' => wu_get_current_time('mysql', true),
]
);
$domain = new Domain($domain_data);
$saved = $domain->save();
if (is_wp_error($saved)) {
return $saved;
}
/*
* Add the processing.
*/
wu_enqueue_async_action('wu_async_process_domain_stage', ['domain_id' => $domain->get_id()], 'domain');
return $domain;
}
/**
* Restores the original URL for a mapped URL.
*
* @since 2.0.0
*
* @param string $url URL with mapped domain.
* @param int $blog_id The blog ID.
* @return string
*/
function wu_restore_original_url($url, $blog_id) {
$site = wu_get_site($blog_id);
if ($site) {
$original_site_url = $site->get_site_url();
$mapped_domain_url = $site->get_active_site_url();
$original_domain = trim(preg_replace('#^https?://#', '', $original_site_url), '/');
$mapped_domain = wp_parse_url($mapped_domain_url, PHP_URL_HOST);
if ($original_domain !== $mapped_domain) {
$url = str_replace($mapped_domain, $original_domain, $url);
}
}
return $url;
}
/**
* Adds the sso tags to a given URL.
*
* @since 2.0.11
*
* @param string $url The base url to sso-fy.
* @return string
*/
function wu_with_sso($url) {
return \WP_Ultimo\SSO\SSO::with_sso($url);
}
/**
* Compares the current domain to the main network domain.
*
* @since 2.0.11
* @return bool
*/
function wu_is_same_domain() {
global $current_blog, $current_site;
return wp_parse_url(wu_get_current_url(), PHP_URL_HOST) === $current_blog->domain && $current_blog->domain === $current_site->domain;
}