id = 'payments'; $this->text = esc_html__( 'Payments', 'learnpress' ); parent::__construct(); add_filter( 'learn-press/admin/submenu-section-title', array( $this, 'custom_section_title' ), 10, 2 ); } public function custom_section_title( $title, $slug ) { $sections = $this->get_sections(); if ( ! empty( $sections[ $slug ] ) && $sections[ $slug ] instanceof LP_Gateway_Abstract ) { $title = $title . sprintf( '', esc_attr( $sections[ $slug ]->get_method_description() ) ); } return $title; } /** * Get sections. * Add a general section and each registered payment is a section. * * @return mixed */ public function get_sections() { static $sections; if ( is_null( $sections ) ) { $gateways = LP_Gateways::instance()->get_gateways(); $sections = array( 'general' => esc_html__( 'General', 'learnpress' ), 'refund' => esc_html__( 'Refund', 'learnpress' ), ); if ( $gateways ) { foreach ( $gateways as $id => $gateway ) { $sections[ $id ] = $gateway; } } } return $sections; } /** * Settings fields of general section. * * @return mixed */ public function get_settings_general() { $checkout_url = learn_press_get_checkout_url(); $guest = apply_filters( 'learn-press/payment-settings/general', array( array( 'type' => 'title', ), array( 'title' => esc_html__( 'Guest checkout', 'learnpress' ), 'id' => 'guest_checkout', 'default' => 'no', 'type' => 'checkbox', 'desc' => esc_html__( 'Enable guest checkout.', 'learnpress' ), ), array( 'title' => esc_html__( 'Account login', 'learnpress' ), 'id' => 'enable_login_checkout', 'default' => 'yes', 'type' => 'checkbox', 'desc' => esc_html__( 'Enable the login form in the checkout.', 'learnpress' ), ), array( 'title' => esc_html__( 'Account creation', 'learnpress' ), 'id' => 'enable_registration_checkout', 'default' => 'yes', 'type' => 'checkbox', 'desc' => esc_html__( 'Enable the register form in the checkout.', 'learnpress' ), ), ) ); $enpoints = apply_filters( 'learn-press/payment-settings/checkout-endpoints', array( array( 'title' => esc_html__( 'Custom order slug', 'learnpress' ), 'id' => 'checkout_endpoints[lp_order_received]', 'default' => 'lp-order-received', 'placeholder' => 'lp-order-received', 'type' => 'text', 'desc' => sprintf( 'e.g. %s', "{$checkout_url}" . LP_Settings::instance()->get( 'checkout_endpoints.lp_order_received', 'lp-order-received' ) . '' ), ), ) ); $payment = array( array( 'title' => esc_html__( 'Payments', 'learnpress' ), 'id' => 'payment_order', 'default' => '', 'type' => 'payment-order', ), array( 'type' => 'sectionend', ), ); return apply_filters( 'learn-press/payment-settings', array_merge( $guest, $enpoints, $payment ) ); } /** * Settings fields of refund section. * * @return array */ public function get_settings_refund() { return Config::instance()->get( 'refund', 'settings/payments' ); } /** * Keep refund option names compatible with the former general settings fields. * * @param string $name Field name. * * @return mixed */ public function get_admin_field_name( $name ) { $items = LP_Admin_Menu::instance()->get_menu_items(); $tab = ''; $section = ''; if ( ! empty( $items['settings'] ) ) { $tab = $items['settings']->get_active_tab(); $section = $items['settings']->get_active_section(); } if ( 'payments' === $tab && 'refund' === $section ) { if ( empty( $name ) ) { $name = md5( microtime( true ) ); } return apply_filters( 'learn_press_settings_field_name_' . $name, "learn_press_{$name}" ); } return parent::get_admin_field_name( $name ); } public function admin_page_settings( $section = null, $tab = null ) { $sections = array(); $items = LP_Admin_Menu::instance()->get_menu_items(); if ( ! empty( $items['settings'] ) ) { $tab = $items['settings']->get_active_tab(); $section = $items['settings']->get_active_section(); $sections = $items['settings']->get_sections(); } $section_data = ! empty( $sections[ $section ] ) ? $sections[ $section ] : false; if ( $section_data instanceof LP_Abstract_Settings ) { $section_data->admin_option_settings(); } elseif ( is_callable( array( $this, 'admin_options_' . $section ) ) ) { call_user_func_array( array( $this, 'admin_options_' . $section ), array( $section, $tab ) ); } else { do_action( 'learn-press/admin/setting-payments/admin-options-' . $section, $tab ); } } /** * Output admin option of general page. * * @param string $section * @param string $tab */ public function admin_options_general( $section, $tab ) { parent::admin_page_settings( $section, $tab ); } /** * Output admin option of refund page. * * @param string $section * @param string $tab */ public function admin_options_refund( $section, $tab ) { parent::admin_page_settings( $section, $tab ); } } return new LP_Settings_Payments();