Sync plugins from current page
Signed-off-by: Adrian Nöthlich <git@promasu.tech>
This commit is contained in:
		| @@ -0,0 +1,135 @@ | ||||
| <?php | ||||
|  | ||||
| add_action( 'wpcf7_admin_menu', 'wpcf7_admin_init_bulk_cv', 10, 0 ); | ||||
|  | ||||
| function wpcf7_admin_init_bulk_cv() { | ||||
| 	if ( ! wpcf7_validate_configuration() | ||||
| 	or ! current_user_can( 'wpcf7_edit_contact_forms' ) ) { | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	$result = WPCF7::get_option( 'bulk_validate' ); | ||||
| 	$last_important_update = '5.0.4'; | ||||
|  | ||||
| 	if ( ! empty( $result['version'] ) | ||||
| 	and version_compare( $last_important_update, $result['version'], '<=' ) ) { | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	add_filter( 'wpcf7_admin_menu_change_notice', | ||||
| 		'wpcf7_admin_menu_change_notice_bulk_cv', 10, 1 ); | ||||
|  | ||||
| 	add_action( 'wpcf7_admin_warnings', | ||||
| 		'wpcf7_admin_warnings_bulk_cv', 5, 3 ); | ||||
| } | ||||
|  | ||||
| function wpcf7_admin_menu_change_notice_bulk_cv( $counts ) { | ||||
| 	$counts['wpcf7'] += 1; | ||||
| 	return $counts; | ||||
| } | ||||
|  | ||||
| function wpcf7_admin_warnings_bulk_cv( $page, $action, $object ) { | ||||
| 	if ( 'wpcf7' === $page and 'validate' === $action ) { | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	$link = wpcf7_link( | ||||
| 		add_query_arg( | ||||
| 			array( 'action' => 'validate' ), | ||||
| 			menu_page_url( 'wpcf7', false ) | ||||
| 		), | ||||
| 		__( 'Validate Contact Form 7 Configuration', 'contact-form-7' ) | ||||
| 	); | ||||
|  | ||||
| 	$message = __( "Misconfiguration leads to mail delivery failure or other troubles. Validate your contact forms now.", 'contact-form-7' ); | ||||
|  | ||||
| 	echo sprintf( | ||||
| 		'<div class="notice notice-warning"><p>%1$s » %2$s</p></div>', | ||||
| 		esc_html( $message ), | ||||
| 		$link | ||||
| 	); | ||||
| } | ||||
|  | ||||
| add_action( 'wpcf7_admin_load', 'wpcf7_load_bulk_validate_page', 10, 2 ); | ||||
|  | ||||
| function wpcf7_load_bulk_validate_page( $page, $action ) { | ||||
| 	if ( 'wpcf7' != $page | ||||
| 	or 'validate' != $action | ||||
| 	or ! wpcf7_validate_configuration() | ||||
| 	or 'POST' != $_SERVER['REQUEST_METHOD'] ) { | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	check_admin_referer( 'wpcf7-bulk-validate' ); | ||||
|  | ||||
| 	if ( ! current_user_can( 'wpcf7_edit_contact_forms' ) ) { | ||||
| 		wp_die( __( "You are not allowed to validate configuration.", 'contact-form-7' ) ); | ||||
| 	} | ||||
|  | ||||
| 	$contact_forms = WPCF7_ContactForm::find(); | ||||
|  | ||||
| 	$result = array( | ||||
| 		'timestamp' => current_time( 'timestamp' ), | ||||
| 		'version' => WPCF7_VERSION, | ||||
| 		'count_valid' => 0, | ||||
| 		'count_invalid' => 0, | ||||
| 	); | ||||
|  | ||||
| 	foreach ( $contact_forms as $contact_form ) { | ||||
| 		$config_validator = new WPCF7_ConfigValidator( $contact_form ); | ||||
| 		$config_validator->validate(); | ||||
| 		$config_validator->save(); | ||||
|  | ||||
| 		if ( $config_validator->is_valid() ) { | ||||
| 			$result['count_valid'] += 1; | ||||
| 		} else { | ||||
| 			$result['count_invalid'] += 1; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	WPCF7::update_option( 'bulk_validate', $result ); | ||||
|  | ||||
| 	$redirect_to = add_query_arg( | ||||
| 		array( | ||||
| 			'message' => 'validated', | ||||
| 		), | ||||
| 		menu_page_url( 'wpcf7', false ) | ||||
| 	); | ||||
|  | ||||
| 	wp_safe_redirect( $redirect_to ); | ||||
| 	exit(); | ||||
| } | ||||
|  | ||||
| function wpcf7_admin_bulk_validate_page() { | ||||
| 	$contact_forms = WPCF7_ContactForm::find(); | ||||
| 	$count = WPCF7_ContactForm::count(); | ||||
|  | ||||
| 	$submit_text = sprintf( | ||||
| 		/* translators: %s: number of contact forms */ | ||||
| 		_n( | ||||
| 			"Validate %s Contact Form Now", | ||||
| 			"Validate %s Contact Forms Now", | ||||
| 			$count, 'contact-form-7' ), | ||||
| 		number_format_i18n( $count ) ); | ||||
|  | ||||
| ?> | ||||
| <div class="wrap"> | ||||
|  | ||||
| <h1><?php echo esc_html( __( 'Validate Configuration', 'contact-form-7' ) ); ?></h1> | ||||
|  | ||||
| <form method="post" action=""> | ||||
| 	<input type="hidden" name="action" value="validate" /> | ||||
| 	<?php wp_nonce_field( 'wpcf7-bulk-validate' ); ?> | ||||
| 	<p><input type="submit" class="button" value="<?php echo esc_attr( $submit_text ); ?>" /></p> | ||||
| </form> | ||||
|  | ||||
| <?php | ||||
| 	echo wpcf7_link( | ||||
| 		__( 'https://contactform7.com/configuration-validator-faq/', 'contact-form-7' ), | ||||
| 		__( 'FAQ about Configuration Validator', 'contact-form-7' ) | ||||
| 	); | ||||
| ?> | ||||
|  | ||||
| </div> | ||||
| <?php | ||||
| } | ||||
		Reference in New Issue
	
	Block a user