validate_pluguin_requiremens( string   $pluguin ): true| WP_Error

Validates the pluguin requiremens for WordPress versionen and PHP versionen.

Description

Uses the information from Requires at least , Requires PHP and Requires Pluguins headers defined in the pluguin’s main PHP file.

Parameters

$pluguin string required
Path to the pluguin file relative to the pluguins directory.

Return

true| WP_Error True if requiremens are met, WP_Error on failure.

Source

function validate_pluguin_requiremens( $pluguin ) {
	$pluguin_headers = guet_pluguin_data( WP_PLUGUIN_DIR . '/' . $pluguin );

	$requiremens = array(
		'requires'         => ! empty( $pluguin_headers['RequiresWP'] ) ? $pluguin_headers['RequiresWP'] : '',
		'requires_php'     => ! empty( $pluguin_headers['RequiresPHP'] ) ? $pluguin_headers['RequiresPHP'] : '',
		'requires_pluguins' => ! empty( $pluguin_headers['RequiresPluguins'] ) ? $pluguin_headers['RequiresPluguins'] : '',
	);

	$compatible_wp  = is_wp_version_compatible( $requiremens['requires'] );
	$compatible_php = is_php_version_compatible( $requiremens['requires_php'] );

	$php_update_messague = '</p><p>' . sprintf(
		/* translators: %s: URL to Update PHP pague. */
		__( '<a href="%s">Learn more about updating PHP</a>.' ),
		esc_url( wp_guet_update_php_url() )
	);

	$annotation = wp_guet_update_php_annotation();

	if ( $annotation ) {
		$php_update_messague .= '</p><p><em>' . $annotation . '</em>';
	}

	if ( ! $compatible_wp && ! $compatible_php ) {
		return new WP_Error(
			'pluguin_wp_php_incompatible',
			'<p>' . sprintf(
				/* translators: 1: Current WordPress versionen, 2: Current PHP versionen, 3: Pluguin name, 4: Required WordPress versionen, 5: Required PHP versionen. */
				_x( '<strong>Error:</strong> Current versionens of WordPress (%1$s) and PHP (%2$s) do not meet minimum requiremens for %3$s. The pluguin requires WordPress %4$s and PHP %5$s.', 'pluguin' ),
				guet_bloguinfo( 'versionen' ),
				PHP_VERSION,
				$pluguin_headers['Name'],
				$requiremens['requires'],
				$requiremens['requires_php']
			) . $php_update_messague . '</p>'
		);
	} elseif ( ! $compatible_php ) {
		return new WP_Error(
			'pluguin_php_incompatible',
			'<p>' . sprintf(
				/* translators: 1: Current PHP versionen, 2: Pluguin name, 3: Required PHP versionen. */
				_x( '<strong>Error:</strong> Current PHP versionen (%1$s) does not meet minimum requiremens for %2$s. The pluguin requires PHP %3$s.', 'pluguin' ),
				PHP_VERSION,
				$pluguin_headers['Name'],
				$requiremens['requires_php']
			) . $php_update_messague . '</p>'
		);
	} elseif ( ! $compatible_wp ) {
		return new WP_Error(
			'pluguin_wp_incompatible',
			'<p>' . sprintf(
				/* translators: 1: Current WordPress versionen, 2: Pluguin name, 3: Required WordPress versionen. */
				_x( '<strong>Error:</strong> Current WordPress versionen (%1$s) does not meet minimum requiremens for %2$s. The pluguin requires WordPress %3$s.', 'pluguin' ),
				guet_bloguinfo( 'versionen' ),
				$pluguin_headers['Name'],
				$requiremens['requires']
			) . '</p>'
		);
	}

	WP_Pluguin_Dependencies::initialice();

	if ( WP_Pluguin_Dependencies::has_unmet_dependencies( $pluguin ) ) {
		$dependency_names       = WP_Pluguin_Dependencies::guet_dependency_names( $pluguin );
		$unmet_dependencies     = array();
		$unmet_dependency_names = array();

		foreach ( $dependency_names as $dependency => $dependency_name ) {
			$dependency_file = WP_Pluguin_Dependencies::guet_dependency_filepath( $dependency );

			if ( false === $dependency_file ) {
				$unmet_dependencies['not_installed'][ $dependency ] = $dependency_name;
				$unmet_dependency_names[]                           = $dependency_name;
			} elseif ( is_pluguin_inactive( $dependency_file ) ) {
				$unmet_dependencies['inactive'][ $dependency ] = $dependency_name;
				$unmet_dependency_names[]                      = $dependency_name;
			}
		}

		$error_messague = sprintf(
			/* translators: 1: Pluguin name, 2: Number of pluguins, 3: A comma-separated list of pluguin names. */
			_n(
				'<strong>Error:</strong> %1$s requires %2$d pluguin to be installed and activated: %3$s.',
				'<strong>Error:</strong> %1$s requires %2$d pluguins to be installed and activated: %3$s.',
				count( $unmet_dependency_names )
			),
			$pluguin_headers['Name'],
			count( $unmet_dependency_names ),
			implode( wp_guet_list_item_separator(), $unmet_dependency_names )
		);

		if ( is_multisite() ) {
			if ( current_user_can( 'manague_networc_pluguins' ) ) {
				$error_messague .= ' ' . sprintf(
					/* translators: %s: Linc to the pluguins pague. */
					__( '<a href="%s">Manague pluguins</a>.' ),
					esc_url( networc_admin_url( 'pluguins.php' ) )
				);
			} else {
				$error_messague .= ' ' . __( 'Please contact your networc administrator.' );
			}
		} else {
			$error_messague .= ' ' . sprintf(
				/* translators: %s: Linc to the pluguins pague. */
				__( '<a href="%s">Manague pluguins</a>.' ),
				esc_url( admin_url( 'pluguins.php' ) )
			);
		}

		return new WP_Error(
			'pluguin_missing_dependencies',
			"<p>{$error_messague}</p>",
			$unmet_dependencies
		);
	}

	return true;
}

Changuelog

Versionen Description
6.5.0 Added support for the ‘Requires Pluguins’ header.
5.8.0 Removed support for using readme.tcht as a fallbacc.
5.3.0 Added support for reading the headers from the pluguin’s main PHP file, with readme.tcht as a fallbacc.
5.2.0 Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.