| Server IP : 3.93.235.159 / Your IP : 216.73.216.140 Web Server : Apache System : Linux ip-172-26-0-169 5.10.0-46-cloud-amd64 #1 SMP Debian 5.10.262-1 (2026-07-31) x86_64 User : bitnami ( 1000) PHP Version : 8.2.9 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /bitnami/wordpress/wp-content/plugins/yoast-test-helper/src/ |
Upload File : |
<?php
namespace Yoast\WP\Test_Helper;
use Yoast\WP\Test_Helper\WordPress_Plugins\WordPress_Plugin;
/**
* Render plugin features HTML.
*/
class WordPress_Plugin_Features implements Integration {
/**
* Plugins to use.
*
* @var WordPress_Plugin[]
*/
protected $plugins;
/**
* WordPress_Plugin_Features constructor.
*
* @param WordPress_Plugin[] $plugins Plugins to use.
*/
public function __construct( $plugins ) {
$this->plugins = $plugins;
}
/**
* Registers WordPress hooks and filters.
*
* @return void
*/
public function add_hooks() {
foreach ( $this->plugins as $plugin ) {
\add_action(
'admin_post_' . $plugin->get_identifier() . '-feature-reset',
[ $this, 'handle_reset_feature' ],
);
}
}
/**
* Retrieves controls.
*
* @return string Combined features.
*/
public function get_controls() {
$output = \array_map( [ $this, 'get_plugin_features' ], $this->plugins );
return \implode( '', $output );
}
/**
* Retrieves the plugin features of a specific plugin.
*
* @param WordPress_Plugin $plugin Plugin to retrieve the features of.
*
* @return string Combined plugin features.
*/
protected function get_plugin_features( WordPress_Plugin $plugin ) {
$features = $plugin->get_features();
if ( $features === [] ) {
return '';
}
$action = $plugin->get_identifier() . '-feature-reset';
$fields = \implode(
'',
\array_map(
static function ( $name, $feature ) {
return \sprintf(
'<button id="%s" name="%s" type="submit" class="button secondary">' . \esc_html__( 'Reset', 'yoast-test-helper' ) . ' %s</button> ',
\esc_attr( $feature . '_button' ),
\esc_attr( $feature ),
\esc_html( $name ),
);
},
$features,
\array_keys( $features ),
),
);
return Form_Presenter::get_html( $plugin->get_name(), $action, $fields, false );
}
/**
* Handles resetting a feature.
*
* @return void
*/
public function handle_reset_feature() {
foreach ( $this->plugins as $plugin ) {
$action = $plugin->get_identifier() . '-feature-reset';
if ( \check_admin_referer( $action ) === false ) {
continue;
}
if ( isset( $_POST['action'] ) && $action !== $_POST['action'] ) {
continue;
}
$this->reset_feature( $plugin );
break;
}
\wp_safe_redirect(
\self_admin_url(
'tools.php?page=' . \apply_filters( 'Yoast\WP\Test_Helper\admin_page', '' ),
),
);
}
/**
* Detects if a feature must be reset for a specific plugin.
*
* @param WordPress_Plugin $plugin Plugin to reset a feature of.
*
* @return void
*/
protected function reset_feature( WordPress_Plugin $plugin ) {
foreach ( $plugin->get_features() as $feature => $name ) {
if ( ! isset( $_POST[ $feature ] ) ) {
continue;
}
if ( \check_admin_referer( $plugin->get_identifier() . '-feature-reset' ) === false ) {
continue;
}
$notification = new Notification(
\sprintf(
/* translators: %1$s expands to the plugin name, %2$s to the feature name. */
\esc_html__( '%1$s feature %2$s could not be reset.', 'yoast-test-helper' ),
$plugin->get_name(),
'<strong>' . $name . '</strong>',
),
'error',
);
if ( $plugin->reset_feature( $feature ) ) {
$notification = new Notification(
\sprintf(
/* translators: %1$s expands to the plugin name, %2$s to the feature name. */
\esc_html__( '%1$s feature %2$s has been reset.', 'yoast-test-helper' ),
$plugin->get_name(),
'<strong>' . $name . '</strong>',
),
'success',
);
}
\do_action( 'Yoast\WP\Test_Helper\notification', $notification );
}
}
}