_setup(); } public function add_admin_menu_page () { add_submenu_page( BOOKED_WC_APPOINTMENTS_PAGE, __('WooCommerce', 'booked-woocommerce-payments'), __('WooCommerce', 'booked-woocommerce-payments'), 'manage_booked_options', BOOKED_WC_PLUGIN_PREFIX . 'payment_options', array($this, 'render_payment_options_page') ); } public function render_payment_options_page() { Booked_WC_Fragments::load('settings', 'payment-options'); } public static function get_option($option_name) { $options = get_option(BOOKED_WC_PLUGIN_PREFIX . 'payment_options'); if ( isset($options[$option_name]) ) { return $options[$option_name]; } } } class Booked_WC_Settings_Hooks { public static function booked_admin_booked_screens( $screens ) { $screens[] = BOOKED_WC_PLUGIN_PREFIX . 'payment_options'; return $screens; } } class Booked_WC_Settings_Fields { protected $options_name; private function __construct() { $this->options_name = BOOKED_WC_PLUGIN_PREFIX . 'payment_options'; $this->register_fields(); } public static function register() { return new self(); } protected function register_fields() { // Sets the defaults if settings aren't saved yet. $settings = get_option($this->options_name); if ( !$settings ) { $default_settings['email_confirmations'] = 'after_complete'; $default_settings['enable_thumbnails'] = 'enable'; $default_settings['enable_auto_cleanup'] = 'disable'; $default_settings['cleanup_mode'] = 'twicedaily'; update_option($this->options_name, $default_settings); } add_settings_section( $this->options_name, '', array($this, 'field_section'), $this->options_name ); add_settings_field( 'email_confirmations', __('Email Confirmations', 'booked-woocommerce-payments'), array($this, 'email_confirmations'), $this->options_name, $this->options_name ); add_settings_field( 'enable_thumbnails', __('Enable Thumbnails', 'booked-woocommerce-payments'), array($this, 'enable_thumbnails'), $this->options_name, $this->options_name ); add_settings_field( 'enable_auto_cleanup', __('Enable Auto-Cleanup', 'booked-woocommerce-payments'), array($this, 'enable_auto_cleanup'), $this->options_name, $this->options_name ); add_settings_field( 'cleanup_mode', __('Cleanup Schedule', 'booked-woocommerce-payments'), array($this, 'field_modes'), $this->options_name, $this->options_name ); add_settings_field( 'redirect_page', __('Redirect After Booking', 'booked-woocommerce-payments'), array($this, 'redirect_page'), $this->options_name, $this->options_name ); // Register our setting so that $_POST handling is done for us and // our callback function just has to echo the register_setting($this->options_name, $this->options_name); } public function field_section() { // } public function email_confirmations() { $options = get_option($this->options_name); $field_value = isset($options['email_confirmations']) ? $options['email_confirmations'] : 'after_complete'; $radio_options = array( 'after_complete' => __('Send Booked confirmation emails ONLY after payment is marked as "complete".', 'booked-woocommerce-payments'), 'before_complete' => __('Send Booked confirmation emails right away.', 'booked-woocommerce-payments') ); ?>

$option_label): ?>
/>

options_name); $field_value = isset($options['enable_thumbnails']) ? $options['enable_thumbnails'] : 'enable'; $radio_options = array( 'enable' => __('Enable', 'booked-woocommerce-payments'), 'disable' => __('Disable', 'booked-woocommerce-payments') ); ?>

$option_label): ?>
/>

options_name); $field_value = isset($options['enable_auto_cleanup']) ? $options['enable_auto_cleanup'] : 'enable'; $radio_options = array( 'enable' => __('Enable', 'booked-woocommerce-payments'), 'disable' => __('Disable', 'booked-woocommerce-payments') ); ?>

$option_label): ?>
/>

options_name); $field_value = isset($options['redirect_page']) ? $options['redirect_page'] : 'checkout'; $radio_options = array( 'checkout' => __('Checkout Page (default)', 'booked-woocommerce-payments'), 'cart' => __('Cart Page', 'booked-woocommerce-payments') ); ?>

$option_label): ?>
/>

options_name); $field_value = isset($options['cleanup_mode']) ? $options['cleanup_mode'] : false; $available_schedules = wp_get_schedules(); $schedules = array(); foreach ($available_schedules as $name => $data) { $interval = (int)$data['interval']; if ( !isset($schedules[$interval]) ){ $schedules[$interval] = array_merge( array('name' => $name), $data ); } } usort($schedules, array($this, 'booked_schedule_sort')); ?>

WP Crontrol.', 'booked-woocommerce-payments') ?>

$schedule_data): ?>
/>