WP_Privacy_Policy_Content::text_change_check()public staticWP 4.9.6

Performs a quick check to determine whether any privacy info has changed.

Method of the class: WP_Privacy_Policy_Content{}

No Hooks.

Return

null. Nothing (null).

Usage

$result = WP_Privacy_Policy_Content::text_change_check();

Changelog

Since 4.9.6 Introduced.

WP_Privacy_Policy_Content::text_change_check() code WP 6.4.3

public static function text_change_check() {

	$policy_page_id = (int) get_option( 'wp_page_for_privacy_policy' );

	// The site doesn't have a privacy policy.
	if ( empty( $policy_page_id ) ) {
		return false;
	}

	if ( ! current_user_can( 'edit_post', $policy_page_id ) ) {
		return false;
	}

	$old = (array) get_post_meta( $policy_page_id, '_wp_suggested_privacy_policy_content' );

	// Updates are not relevant if the user has not reviewed any suggestions yet.
	if ( empty( $old ) ) {
		return false;
	}

	$cached = get_option( '_wp_suggested_policy_text_has_changed' );

	/*
	 * When this function is called before `admin_init`, `self::$policy_content`
	 * has not been populated yet, so use the cached result from the last
	 * execution instead.
	 */
	if ( ! did_action( 'admin_init' ) ) {
		return 'changed' === $cached;
	}

	$new = self::$policy_content;

	// Remove the extra values added to the meta.
	foreach ( $old as $key => $data ) {
		if ( ! is_array( $data ) || ! empty( $data['removed'] ) ) {
			unset( $old[ $key ] );
			continue;
		}

		$old[ $key ] = array(
			'plugin_name' => $data['plugin_name'],
			'policy_text' => $data['policy_text'],
		);
	}

	// Normalize the order of texts, to facilitate comparison.
	sort( $old );
	sort( $new );

	/*
	 * The == operator (equal, not identical) was used intentionally.
	 * See https://www.php.net/manual/en/language.operators.array.php
	 */
	if ( $new != $old ) {
		/*
		 * A plugin was activated or deactivated, or some policy text has changed.
		 * Show a notice on the relevant screens to inform the admin.
		 */
		add_action( 'admin_notices', array( 'WP_Privacy_Policy_Content', 'policy_text_changed_notice' ) );
		$state = 'changed';
	} else {
		$state = 'not-changed';
	}

	// Cache the result for use before `admin_init` (see above).
	if ( $cached !== $state ) {
		update_option( '_wp_suggested_policy_text_has_changed', $state );
	}

	return 'changed' === $state;
}