CouponsPage
1 year ago
CustomersPage
5 months ago
DashboardPage
1 year ago
DownloadLogsPage
1 year ago
ExportPage
5 months ago
GroupsPage
1 year ago
OrdersPage
1 year ago
PlansPage
2 months ago
SubscriptionsPage
3 months ago
TaxSettings
3 years ago
views
1 month ago
CheckListHeader.php
3 years ago
CheckoutFieldsManager.php
1 year ago
ContextualStateChangeHelper.php
3 years ago
FileDownloads.php
3 years ago
PaymentMethods.php
1 year ago
PaymentSettings.php
1 month ago
PlanIntegrationsMetabox.php
10 months ago
SettingsFieldsParser.php
1 year ago
index.php
3 years ago
CheckoutFieldsManager.php
143 lines
| 1 | <?php |
| 2 | |
| 3 | namespace ProfilePress\Core\Admin\SettingsPages\Membership; |
| 4 | |
| 5 | use ProfilePress\Core\Admin\SettingsPages\AbstractSettingsPage; |
| 6 | use ProfilePress\Core\Membership\CheckoutFields; |
| 7 | use ProfilePress\Custom_Settings_Page_Api; |
| 8 | |
| 9 | class CheckoutFieldsManager |
| 10 | { |
| 11 | public function __construct() |
| 12 | { |
| 13 | add_filter('ppress_settings_page_submenus_tabs', [$this, 'header_sub_menu_tab']); |
| 14 | |
| 15 | add_action('ppress_admin_settings_submenu_page_payments_checkout-fields', [$this, 'checkout_fields_page']); |
| 16 | |
| 17 | add_action('ppress_register_menu_page_payments_checkout-fields', function () { |
| 18 | |
| 19 | add_filter('ppress_general_settings_admin_page_title', function () { |
| 20 | return esc_html__('Checkout Fields ‹ Payments', 'wp-user-avatar'); |
| 21 | }); |
| 22 | |
| 23 | add_action('admin_init', [$this, 'save_checkout_fields']); |
| 24 | |
| 25 | add_action('admin_footer', [$this, 'js_template']); |
| 26 | add_action('admin_head', [$this, 'global_js_vars']); |
| 27 | }); |
| 28 | } |
| 29 | |
| 30 | public function header_sub_menu_tab($tabs) |
| 31 | { |
| 32 | $tabs[174] = ['parent' => 'payments', 'id' => 'checkout-fields', 'label' => esc_html__('Checkout Fields', 'wp-user-avatar')]; |
| 33 | |
| 34 | return $tabs; |
| 35 | } |
| 36 | |
| 37 | public function save_checkout_fields() |
| 38 | { |
| 39 | if (isset($_POST['accountInfo']) || isset($_POST['billing'])) { |
| 40 | |
| 41 | check_admin_referer('wp-csa-nonce', 'wp_csa_nonce'); |
| 42 | |
| 43 | update_option(CheckoutFields::DB_OPTION_NAME, [ |
| 44 | 'accountInfo' => ppress_clean(ppressPOST_var('accountInfo', []), 'wp_kses_post'), |
| 45 | 'billing' => ppress_clean(ppressPOST_var('billing', []), 'wp_kses_post'), |
| 46 | ]); |
| 47 | |
| 48 | wp_safe_redirect(esc_url_raw(add_query_arg('settings-updated', 'true'))); |
| 49 | exit; |
| 50 | } |
| 51 | } |
| 52 | |
| 53 | public function checkout_fields_page() |
| 54 | { |
| 55 | add_filter('wp_cspa_main_content_area', function () { |
| 56 | ob_start(); |
| 57 | require dirname(__FILE__) . '/views/checkout-fields.php'; |
| 58 | |
| 59 | return ob_get_clean(); |
| 60 | }); |
| 61 | |
| 62 | add_action('wp_cspa_form_tag', function () { |
| 63 | echo 'id="ppress-checkout-field-manager-form"'; |
| 64 | }); |
| 65 | |
| 66 | add_action('wp_cspa_before_post_body_content', function () { |
| 67 | echo '<div class="ppress-submit-wrap">'; |
| 68 | printf('<input type="submit" name="submit" id="ppress-cfm-submit-btn" class="button button-primary" value="%s">', esc_html__('Save Changes', 'wp-user-avatar')); |
| 69 | echo '</div>'; |
| 70 | }); |
| 71 | |
| 72 | $instance = Custom_Settings_Page_Api::instance(); |
| 73 | $instance->option_name(CheckoutFields::DB_OPTION_NAME); |
| 74 | $instance->page_header(esc_html__('Checkout Fields', 'wp-user-avatar')); |
| 75 | AbstractSettingsPage::register_core_settings($instance); |
| 76 | $instance->build(); |
| 77 | } |
| 78 | |
| 79 | public static function checkout_field_addition_dropdown($fieldGroup = 'accountInfo') |
| 80 | { |
| 81 | $standard_fields = CheckoutFields::standard_account_info_fields(); |
| 82 | $custom_fields = CheckoutFields::standard_custom_fields(); |
| 83 | |
| 84 | if ($fieldGroup == 'billing') { |
| 85 | $standard_fields = CheckoutFields::standard_billing_fields(); |
| 86 | $custom_fields = apply_filters('ppress_checkout_billing_custom_fields', []); |
| 87 | } |
| 88 | |
| 89 | echo '<select class="ppress-checkout-field-list">'; |
| 90 | printf('<option value="">%s</option>', esc_html__('Select...', 'wp-user-avatar')); |
| 91 | |
| 92 | if ( ! empty($standard_fields)) { |
| 93 | printf('<optgroup label="%s">', esc_html__('Standard Fields', 'wp-user-avatar')); |
| 94 | foreach ($standard_fields as $field_key => $field) { |
| 95 | printf('<option value="%s">%s</option>', $field_key, $field['label']); |
| 96 | } |
| 97 | echo '</optgroup>'; |
| 98 | } |
| 99 | |
| 100 | if ( ! empty($custom_fields)) { |
| 101 | printf('<optgroup label="%s">', esc_html__('Custom Fields', 'wp-user-avatar')); |
| 102 | foreach ($custom_fields as $field_key => $field) { |
| 103 | printf('<option value="%s">%s</option>', $field_key, $field['label']); |
| 104 | } |
| 105 | echo '</optgroup>'; |
| 106 | } |
| 107 | |
| 108 | echo '</select>'; |
| 109 | } |
| 110 | |
| 111 | public function global_js_vars() |
| 112 | { |
| 113 | echo '<script type="text/javascript">'; |
| 114 | printf('var ppress_standard_acc_info_fields = %s;', wp_json_encode(CheckoutFields::standard_account_info_fields())); |
| 115 | printf('var ppress_standard_billing_fields = %s;', wp_json_encode(CheckoutFields::standard_billing_fields())); |
| 116 | printf('var ppress_custom_fields = %s;', wp_json_encode(CheckoutFields::standard_custom_fields())); |
| 117 | printf('var ppress_account_info_fields = %s;', wp_json_encode(CheckoutFields::account_info_fields())); |
| 118 | printf('var ppress_blling_address_fields = %s;', wp_json_encode(CheckoutFields::billing_fields())); |
| 119 | printf('var ppress_logged_in_hidden_fields = %s;', wp_json_encode(CheckoutFields::logged_in_hidden_fields())); |
| 120 | echo '</script>'; |
| 121 | } |
| 122 | |
| 123 | public function js_template() |
| 124 | { |
| 125 | ?> |
| 126 | <script type="text/html" id="tmpl-ppress-checkout-field-item"> |
| 127 | <?php require dirname(__FILE__) . '/views/checkout-field-item.php'; ?> |
| 128 | </script> |
| 129 | <?php |
| 130 | } |
| 131 | |
| 132 | public static function get_instance() |
| 133 | { |
| 134 | static $instance = null; |
| 135 | |
| 136 | if (is_null($instance)) { |
| 137 | $instance = new self(); |
| 138 | } |
| 139 | |
| 140 | return $instance; |
| 141 | } |
| 142 | } |
| 143 |