120 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace DeployerForGit\Subpages\MiscellaneousPage;
 | 
						|
 | 
						|
use DeployerForGit\DataManager;
 | 
						|
use DeployerForGit\Helper;
 | 
						|
 | 
						|
/**
 | 
						|
 * Miscellaneous page
 | 
						|
 */
 | 
						|
class Miscellaneous {
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Constructor
 | 
						|
	 */
 | 
						|
	public function __construct() {
 | 
						|
		add_action( is_multisite() ? 'network_admin_menu' : 'admin_menu', array( $this, 'init_menu' ) );
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Initialize menu
 | 
						|
	 *
 | 
						|
	 * @return void
 | 
						|
	 */
 | 
						|
	public function init_menu() {
 | 
						|
		$menu_slug  = Helper::menu_slug();
 | 
						|
		$capability = is_multisite() ? 'manage_network_options' : 'manage_options';
 | 
						|
 | 
						|
		add_submenu_page(
 | 
						|
			$menu_slug,
 | 
						|
			esc_attr__( 'Miscellaneous', 'deployer-for-git' ),
 | 
						|
			esc_attr__( 'Miscellaneous', 'deployer-for-git' ),
 | 
						|
			$capability,
 | 
						|
			"{$menu_slug}-miscellaneous",
 | 
						|
			array( $this, 'init_page' )
 | 
						|
		);
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Initialize page
 | 
						|
	 *
 | 
						|
	 * @return void
 | 
						|
	 */
 | 
						|
	public function init_page() {
 | 
						|
		$regenerate_secret_key_result = $this->handle_regenerate_secret_key_form();
 | 
						|
		$flush_cache_result           = $this->handle_flush_cache_form();
 | 
						|
		$alert_notification_result    = $this->handle_alert_notification_form();
 | 
						|
		$data_manager                 = new DataManager();
 | 
						|
 | 
						|
		include_once __DIR__ . '/template.php';
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Handle regenerate secret key form
 | 
						|
	 *
 | 
						|
	 * @return boolean|null
 | 
						|
	 */
 | 
						|
	public function handle_regenerate_secret_key_form() {
 | 
						|
		$result = null;
 | 
						|
 | 
						|
		if ( isset( $_POST['action'] ) && $_POST['action'] === 'regenerate_secret_key' ) {
 | 
						|
			$result = false;
 | 
						|
 | 
						|
			if ( isset( $_POST[ DFG_SLUG . '_nonce' ] ) || wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST[ DFG_SLUG . '_nonce' ] ) ), DFG_SLUG . '_regenerate_secret_key' ) ) {
 | 
						|
				$result = true;
 | 
						|
				Helper::generate_api_secret();
 | 
						|
 | 
						|
				do_action( 'dfg_after_secret_key_regenerate' );
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		return $result;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Handle flush cache form
 | 
						|
	 *
 | 
						|
	 * @return boolean|null
 | 
						|
	 */
 | 
						|
	public function handle_flush_cache_form() {
 | 
						|
		$result = null;
 | 
						|
 | 
						|
		if ( isset( $_POST['action'] ) && $_POST['action'] === 'flush_cache' ) {
 | 
						|
			$result = false;
 | 
						|
 | 
						|
			if ( isset( $_POST[ DFG_SLUG . '_nonce' ] ) || wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST[ DFG_SLUG . '_nonce' ] ) ), DFG_SLUG . '_flush_cache' ) ) {
 | 
						|
				$data_manager = new DataManager();
 | 
						|
 | 
						|
				$result = $data_manager->update_flush_cache_setting( isset( $_POST['flush_cache_setting'] ) );
 | 
						|
 | 
						|
				do_action( 'dfg_after_flush_cache_setting_update' );
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		return $result;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Handle alert notification form
 | 
						|
	 *
 | 
						|
	 * @return boolean|null
 | 
						|
	 */
 | 
						|
	public function handle_alert_notification_form() {
 | 
						|
		$result = null;
 | 
						|
 | 
						|
		if ( isset( $_POST['action'] ) && $_POST['action'] === 'alert_notification' ) {
 | 
						|
			$result = false;
 | 
						|
 | 
						|
			if ( isset( $_POST[ DFG_SLUG . '_nonce' ] ) || wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST[ DFG_SLUG . '_nonce' ] ) ), DFG_SLUG . '_alert_notification' ) ) {
 | 
						|
				$data_manager = new DataManager();
 | 
						|
 | 
						|
				$result = $data_manager->update_alert_notification_setting( isset( $_POST['alert_notification_setting'] ) );
 | 
						|
 | 
						|
				do_action( 'dfg_after_alert_notification_setting_update' );
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		return $result;
 | 
						|
	}
 | 
						|
}
 |