322 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			322 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
 | 
						|
if ( ! function_exists( '_sanitize_text_fields' ) ):
 | 
						|
/**
 | 
						|
 * Internal helper function to sanitize a string from user input or from the db
 | 
						|
 *
 | 
						|
 * @since 4.7.0
 | 
						|
 * @access private
 | 
						|
 *
 | 
						|
 * @param string $str String to sanitize.
 | 
						|
 * @param bool $keep_newlines optional Whether to keep newlines. Default: false.
 | 
						|
 * @return string Sanitized string.
 | 
						|
 */
 | 
						|
function _sanitize_text_fields( $str, $keep_newlines = false ) {
 | 
						|
	$filtered = wp_check_invalid_utf8( $str );
 | 
						|
 | 
						|
	if ( strpos( $filtered, '<' ) !== false ) {
 | 
						|
		$filtered = wp_pre_kses_less_than( $filtered );
 | 
						|
		// This will strip extra whitespace for us.
 | 
						|
		$filtered = wp_strip_all_tags( $filtered, false );
 | 
						|
 | 
						|
		// Use html entities in a special case to make sure no later
 | 
						|
		// newline stripping stage could lead to a functional tag
 | 
						|
		$filtered = str_replace( "<\n", "<\n", $filtered );
 | 
						|
	}
 | 
						|
 | 
						|
	if ( ! $keep_newlines ) {
 | 
						|
		$filtered = preg_replace( '/[\r\n\t ]+/', ' ', $filtered );
 | 
						|
	}
 | 
						|
 | 
						|
	$filtered = trim( $filtered );
 | 
						|
	$found    = false;
 | 
						|
 | 
						|
	while ( preg_match( '/%[a-f0-9]{2}/i', $filtered, $match ) ) {
 | 
						|
		$filtered = str_replace( $match[0], '', $filtered );
 | 
						|
		$found    = true;
 | 
						|
	}
 | 
						|
 | 
						|
	if ( $found ) {
 | 
						|
		// Strip out the whitespace that may now exist after removing the octets.
 | 
						|
		$filtered = trim( preg_replace( '/ +/', ' ', $filtered ) );
 | 
						|
	}
 | 
						|
 | 
						|
	return $filtered;
 | 
						|
}
 | 
						|
endif;
 | 
						|
 | 
						|
 | 
						|
if ( ! function_exists( 'get_site' ) ):
 | 
						|
/**
 | 
						|
 * Retrieves site data given a site ID or site object.
 | 
						|
 *
 | 
						|
 * Site data will be cached and returned after being passed through a filter.
 | 
						|
 * If the provided site is empty, the current site global will be used.
 | 
						|
 *
 | 
						|
 * @since 4.6.0
 | 
						|
 *
 | 
						|
 * @param WP_Site|int|null $site Optional. Site to retrieve. Default is the current site.
 | 
						|
 * @return WP_Site|null The site object or null if not found.
 | 
						|
 */
 | 
						|
function get_site( $site = null ) {
 | 
						|
	if ( empty( $site ) ) {
 | 
						|
		$site = get_current_blog_id();
 | 
						|
	}
 | 
						|
 | 
						|
	if ( $site instanceof WP_Site ) {
 | 
						|
		$_site = $site;
 | 
						|
	} elseif ( is_object( $site ) ) {
 | 
						|
		$_site = new WP_Site( $site );
 | 
						|
	} else {
 | 
						|
		$_site = WP_Site::get_instance( $site );
 | 
						|
	}
 | 
						|
 | 
						|
	if ( ! $_site ) {
 | 
						|
		return null;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Fires after a site is retrieved.
 | 
						|
	 *
 | 
						|
	 * @since 4.6.0
 | 
						|
	 *
 | 
						|
	 * @param WP_Site $_site Site data.
 | 
						|
	 */
 | 
						|
	$_site = apply_filters( 'get_site', $_site );
 | 
						|
 | 
						|
	return $_site;
 | 
						|
}
 | 
						|
endif;
 | 
						|
 | 
						|
 | 
						|
if ( ! function_exists( 'sanitize_textarea_field' ) ):
 | 
						|
/**
 | 
						|
 * Sanitizes a multiline string from user input or from the database.
 | 
						|
 *
 | 
						|
 * The function is like sanitize_text_field(), but preserves
 | 
						|
 * new lines (\n) and other whitespace, which are legitimate
 | 
						|
 * input in textarea elements.
 | 
						|
 *
 | 
						|
 * @see sanitize_text_field()
 | 
						|
 *
 | 
						|
 * @since 4.7.0
 | 
						|
 *
 | 
						|
 * @param string $str String to sanitize.
 | 
						|
 * @return string Sanitized string.
 | 
						|
 */
 | 
						|
function sanitize_textarea_field( $str ) {
 | 
						|
	$filtered = _sanitize_text_fields( $str, true );
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Filters a sanitized textarea field string.
 | 
						|
	 *
 | 
						|
	 * @since 4.7.0
 | 
						|
	 *
 | 
						|
	 * @param string $filtered The sanitized string.
 | 
						|
	 * @param string $str      The string prior to being sanitized.
 | 
						|
	 */
 | 
						|
	return apply_filters( 'sanitize_textarea_field', $filtered, $str );
 | 
						|
}
 | 
						|
endif;
 | 
						|
 | 
						|
 | 
						|
if ( ! function_exists( 'wp_doing_ajax' ) ):
 | 
						|
function wp_doing_ajax() {
 | 
						|
	/**
 | 
						|
	 * Filters whether the current request is an Ajax request.
 | 
						|
	 *
 | 
						|
	 * @since 4.7.0
 | 
						|
	 *
 | 
						|
	 * @param bool $wp_doing_ajax Whether the current request is an Ajax request.
 | 
						|
	 */
 | 
						|
	return apply_filters( 'wp_doing_ajax', defined( 'DOING_AJAX' ) && DOING_AJAX );
 | 
						|
}
 | 
						|
endif;
 | 
						|
 | 
						|
 | 
						|
if ( ! function_exists( 'wp_doing_cron' ) ):
 | 
						|
function wp_doing_cron() {
 | 
						|
	/**
 | 
						|
	 * Filters whether the current request is a WordPress cron request.
 | 
						|
	 *
 | 
						|
	 * @since 4.8.0
 | 
						|
	 *
 | 
						|
	 * @param bool $wp_doing_cron Whether the current request is a WordPress cron request.
 | 
						|
	 */
 | 
						|
	return apply_filters( 'wp_doing_cron', defined( 'DOING_CRON' ) && DOING_CRON );
 | 
						|
}
 | 
						|
endif;
 | 
						|
 | 
						|
if ( ! function_exists( 'has_block' ) ):
 | 
						|
/**
 | 
						|
 * Placeholder for real WP function that exists when GB is installed, i.e. WP >= 5.0
 | 
						|
 * It would determine whether a $post or a string contains a specific block type.
 | 
						|
 *
 | 
						|
 * @see has_block()
 | 
						|
 *
 | 
						|
 * @since 4.2
 | 
						|
 *
 | 
						|
 * @return bool forced false result.
 | 
						|
 */
 | 
						|
function has_block() {
 | 
						|
	return false;
 | 
						|
}
 | 
						|
endif;
 | 
						|
 | 
						|
if ( ! function_exists( 'wp_get_default_update_php_url' ) ) :
 | 
						|
/**
 | 
						|
 * Gets the default URL to learn more about updating the PHP version the site is running on.
 | 
						|
 *
 | 
						|
 * Do not use this function to retrieve this URL. Instead, use {@see wp_get_update_php_url()} when relying on the URL.
 | 
						|
 * This function does not allow modifying the returned URL, and is only used to compare the actually used URL with the
 | 
						|
 * default one.
 | 
						|
 *
 | 
						|
 * @since 5.1.0
 | 
						|
 * @access private
 | 
						|
 *
 | 
						|
 * @return string Default URL to learn more about updating PHP.
 | 
						|
 */
 | 
						|
function wp_get_default_update_php_url() {
 | 
						|
	return _x( 'https://wordpress.org/support/update-php/', 'localized PHP upgrade information page' );
 | 
						|
}
 | 
						|
endif;
 | 
						|
 | 
						|
if ( ! function_exists( 'wp_get_update_php_url' ) ) :
 | 
						|
/**
 | 
						|
 * Gets the URL to learn more about updating the PHP version the site is running on.
 | 
						|
 *
 | 
						|
 * This URL can be overridden by specifying an environment variable `WP_UPDATE_PHP_URL` or by using the
 | 
						|
 * {@see 'wp_update_php_url'} filter. Providing an empty string is not allowed and will result in the
 | 
						|
 * default URL being used. Furthermore the page the URL links to should preferably be localized in the
 | 
						|
 * site language.
 | 
						|
 *
 | 
						|
 * @since 5.1.0
 | 
						|
 *
 | 
						|
 * @return string URL to learn more about updating PHP.
 | 
						|
 */
 | 
						|
function wp_get_update_php_url() {
 | 
						|
	$default_url = wp_get_default_update_php_url();
 | 
						|
 | 
						|
	$update_url = $default_url;
 | 
						|
	if ( false !== getenv( 'WP_UPDATE_PHP_URL' ) ) {
 | 
						|
		$update_url = getenv( 'WP_UPDATE_PHP_URL' );
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Filters the URL to learn more about updating the PHP version the site is running on.
 | 
						|
	 *
 | 
						|
	 * Providing an empty string is not allowed and will result in the default URL being used. Furthermore
 | 
						|
	 * the page the URL links to should preferably be localized in the site language.
 | 
						|
	 *
 | 
						|
	 * @since 5.1.0
 | 
						|
	 *
 | 
						|
	 * @param string $update_url URL to learn more about updating PHP.
 | 
						|
	 */
 | 
						|
	$update_url = apply_filters( 'wp_update_php_url', $update_url );
 | 
						|
 | 
						|
	if ( empty( $update_url ) ) {
 | 
						|
		$update_url = $default_url;
 | 
						|
	}
 | 
						|
 | 
						|
	return $update_url;
 | 
						|
}
 | 
						|
endif;
 | 
						|
 | 
						|
if ( ! function_exists( 'wp_get_update_php_annotation' ) ) :
 | 
						|
/**
 | 
						|
 * Returns the default annotation for the web hosting altering the "Update PHP" page URL.
 | 
						|
 *
 | 
						|
 * This function is to be used after {@see wp_get_update_php_url()} to return a consistent
 | 
						|
 * annotation if the web host has altered the default "Update PHP" page URL.
 | 
						|
 *
 | 
						|
 * @since 5.2.0
 | 
						|
 *
 | 
						|
 * @return string Update PHP page annotation. An empty string if no custom URLs are provided.
 | 
						|
 */
 | 
						|
function wp_get_update_php_annotation() {
 | 
						|
	$update_url  = wp_get_update_php_url();
 | 
						|
	$default_url = wp_get_default_update_php_url();
 | 
						|
 | 
						|
	if ( $update_url === $default_url ) {
 | 
						|
		return '';
 | 
						|
	}
 | 
						|
 | 
						|
	$annotation = sprintf(
 | 
						|
		/* translators: %s: Default Update PHP page URL. */
 | 
						|
		__( 'This resource is provided by your web host, and is specific to your site. For more information, <a href="%s" target="_blank">see the official WordPress documentation</a>.' ),
 | 
						|
		esc_url( $default_url )
 | 
						|
	);
 | 
						|
 | 
						|
	return $annotation;
 | 
						|
}
 | 
						|
endif;
 | 
						|
 | 
						|
if ( ! function_exists( 'wp_update_php_annotation' ) ) :
 | 
						|
/**
 | 
						|
 * Prints the default annotation for the web host altering the "Update PHP" page URL.
 | 
						|
 *
 | 
						|
 * This function is to be used after {@see wp_get_update_php_url()} to display a consistent
 | 
						|
 * annotation if the web host has altered the default "Update PHP" page URL.
 | 
						|
 *
 | 
						|
 * @since 5.1.0
 | 
						|
 * @since 5.2.0 Added the `$before` and `$after` parameters.
 | 
						|
 *
 | 
						|
 * @param string $before Markup to output before the annotation. Default `<p class="description">`.
 | 
						|
 * @param string $after  Markup to output after the annotation. Default `</p>`.
 | 
						|
 */
 | 
						|
function wp_update_php_annotation( $before = '<p class="description">', $after = '</p>' ) {
 | 
						|
	$annotation = wp_get_update_php_annotation();
 | 
						|
 | 
						|
	if ( $annotation ) {
 | 
						|
		echo et_core_intentionally_unescaped( $before . $annotation . $after, 'html' );
 | 
						|
	}
 | 
						|
}
 | 
						|
endif;
 | 
						|
 | 
						|
if ( ! function_exists( 'is_wp_version_compatible' ) ) :
 | 
						|
/**
 | 
						|
 * Checks compatibility with the current WordPress version.
 | 
						|
 *
 | 
						|
 * @since 5.2.0
 | 
						|
 *
 | 
						|
 * @param string $required Minimum required WordPress version.
 | 
						|
 * @return bool True if required version is compatible or empty, false if not.
 | 
						|
 */
 | 
						|
function is_wp_version_compatible( $required ) {
 | 
						|
	return empty( $required ) || version_compare( get_bloginfo( 'version' ), $required, '>=' );
 | 
						|
}
 | 
						|
endif;
 | 
						|
 | 
						|
if ( ! function_exists( 'is_php_version_compatible' ) ) :
 | 
						|
/**
 | 
						|
 * Checks compatibility with the current PHP version.
 | 
						|
 *
 | 
						|
 * @since 5.2.0
 | 
						|
 *
 | 
						|
 * @param string $required Minimum required PHP version.
 | 
						|
 * @return bool True if required version is compatible or empty, false if not.
 | 
						|
 */
 | 
						|
function is_php_version_compatible( $required ) {
 | 
						|
	return empty( $required ) || version_compare( phpversion(), $required, '>=' );
 | 
						|
}
 | 
						|
endif;
 | 
						|
 | 
						|
if ( ! function_exists( 'wp_body_open' ) ) :
 | 
						|
	/**
 | 
						|
	 * Fire the wp_body_open action.
 | 
						|
	 *
 | 
						|
	 * See {@see 'wp_body_open'}.
 | 
						|
	 *
 | 
						|
	 * @since 5.2.0
 | 
						|
	 */
 | 
						|
	function wp_body_open() {
 | 
						|
		/**
 | 
						|
		 * Triggered after the opening body tag.
 | 
						|
		 *
 | 
						|
		 * @since 5.2.0
 | 
						|
		 */
 | 
						|
		do_action( 'wp_body_open' );
 | 
						|
	}
 | 
						|
endif;
 |