CouponsPage
4 years ago
CustomersPage
4 years ago
DashboardPage
4 years ago
OrdersPage
4 years ago
PlansPage
4 years ago
SubscriptionsPage
4 years ago
TaxSettings
4 years ago
views
4 years ago
CheckListHeader.php
4 years ago
CheckoutFieldsManager.php
4 years ago
ContextualStateChangeHelper.php
4 years ago
PaymentMethods.php
4 years ago
PaymentSettings.php
4 years ago
SettingsFieldsParser.php
4 years ago
index.php
4 years ago
SettingsFieldsParser.php
117 lines
| 1 | <?php |
| 2 | |
| 3 | namespace ProfilePress\Core\Admin\SettingsPages\Membership; |
| 4 | |
| 5 | use ProfilePress\Core\Membership\Models\Coupon\CouponUnit; |
| 6 | |
| 7 | class SettingsFieldsParser |
| 8 | { |
| 9 | protected $config; |
| 10 | protected $dbData; |
| 11 | protected $field_class; |
| 12 | |
| 13 | public function __construct($config, $dbData = [], $field_class = 'ppress-plan-control') |
| 14 | { |
| 15 | $this->config = $config; |
| 16 | $this->dbData = $dbData; |
| 17 | $this->field_class = $field_class; |
| 18 | } |
| 19 | |
| 20 | protected function field_output($config) |
| 21 | { |
| 22 | $field_id = sanitize_text_field($config['id']); |
| 23 | $placeholder = esc_attr(ppress_var($config, 'placeholder', '')); |
| 24 | |
| 25 | $field_data = ppressPOST_var($field_id, $this->dbData->$field_id); |
| 26 | |
| 27 | switch ($config['type']) { |
| 28 | case 'text': |
| 29 | printf('<input placeholder="%4$s" class="%3$s" name="%1$s" id="%1$s" type="text" value="%2$s">', esc_attr($field_id), esc_attr($field_data), esc_attr($this->field_class), $placeholder); |
| 30 | break; |
| 31 | case 'number': |
| 32 | printf('<input placeholder="%4$s" class="%3$s" name="%1$s" id="%1$s" type="number" value="%2$s">', esc_attr($field_id), esc_attr($field_data), esc_attr($this->field_class), $placeholder); |
| 33 | break; |
| 34 | case 'price': |
| 35 | printf('<input class="%3$s" step="any" placeholder="0.00" name="%1$s" id="%1$s" type="number" value="%2$s">', esc_attr($field_id), esc_attr($field_data), esc_attr($this->field_class)); |
| 36 | break; |
| 37 | case 'textarea': |
| 38 | printf('<textarea class="%3$s" name="%1$s" id="%1$s">%2$s</textarea>', esc_attr($field_id), esc_attr($field_data), esc_attr($this->field_class)); |
| 39 | break; |
| 40 | case 'discount': |
| 41 | printf('<span class="ppress-amount-type-wrapper"> |
| 42 | <input type="text" required="required" class="%3$s" id="amount" name="amount" value="%6$s" placeholder="0"> |
| 43 | <label for="ppress-discount-type" class="screen-reader-text">%s</label> |
| 44 | <select name="unit" id="ppress-discount-type"> |
| 45 | <option value="percent" %7$s>%</option> |
| 46 | <option value="flat" %8$s>%5$s</option> |
| 47 | </select> |
| 48 | </span>', |
| 49 | esc_attr($field_id), |
| 50 | esc_attr($field_data), |
| 51 | esc_attr($this->field_class), |
| 52 | esc_html__('Discount Type', 'wp-user-avatar'), |
| 53 | ppress_get_currency_symbol(), |
| 54 | $this->dbData->amount, |
| 55 | selected($this->dbData->unit, CouponUnit::PERCENTAGE, false), |
| 56 | selected($this->dbData->unit, CouponUnit::FLAT, false) |
| 57 | ); |
| 58 | break; |
| 59 | case 'wp_editor': |
| 60 | // Remove all TinyMCE plugins. |
| 61 | remove_all_filters('mce_buttons', 10); |
| 62 | remove_all_filters('mce_external_plugins', 10); |
| 63 | remove_all_actions('media_buttons'); |
| 64 | // add core media button back. |
| 65 | add_action('media_buttons', 'media_buttons'); |
| 66 | |
| 67 | wp_editor(wp_kses_post($field_data), sanitize_text_field($field_id), ["editor_height" => 100, 'editor_class' => 'ppress-plan-control']); |
| 68 | break; |
| 69 | case 'select': |
| 70 | if (is_array($config['options']) && ! empty($config['options'])) { |
| 71 | $is_multiple = ppress_var($config, 'multiple') === true; |
| 72 | $name = $is_multiple ? $config['id'] . '[]' : $config['id']; |
| 73 | printf('<select class="%2$s" name="%1$s" id="%3$s"%4$s>', esc_attr($name), esc_attr($this->field_class), $config['id'], $is_multiple ? ' multiple' : ''); |
| 74 | foreach ($config['options'] as $option_id => $option_name) { |
| 75 | if (is_array($field_data) || ppress_var($config, 'multiple') === true) { |
| 76 | $selected = in_array($option_id, $field_data) ? 'selected' : ''; |
| 77 | } else { |
| 78 | $selected = selected($option_id, $field_data, false); |
| 79 | } |
| 80 | printf('<option value="%1$s" %3$s>%2$s</option>', $option_id, $option_name, $selected); |
| 81 | } |
| 82 | echo '</select>'; |
| 83 | } |
| 84 | break; |
| 85 | case 'radio': |
| 86 | if (is_array($config['options']) && ! empty($config['options'])) { |
| 87 | foreach ($config['options'] as $option_id => $option_name) { |
| 88 | printf('<label><input type="radio" name="%4$s" value="%1$s" %3$s>%2$s</label>', $option_id, $option_name, checked($option_id, $field_data, false), $field_id); |
| 89 | } |
| 90 | } |
| 91 | break; |
| 92 | } |
| 93 | } |
| 94 | |
| 95 | public function build() |
| 96 | { |
| 97 | ?> |
| 98 | <table class="form-table"> |
| 99 | <tbody> |
| 100 | <?php foreach ($this->config as $config) : ?> |
| 101 | <tr class="form-field" id="field-role-<?= esc_attr($config['id']) ?>"> |
| 102 | <th scope="row" valign="top"> |
| 103 | <label for="<?= esc_attr($config['id']) ?>"><?= sanitize_text_field($config['label']) ?></label> |
| 104 | </th> |
| 105 | <td> |
| 106 | <?php $this->field_output($config); ?> |
| 107 | <?php if ( ! empty($config['description'])) : ?> |
| 108 | <p class="description"><?php echo esc_attr($config['description']); ?></p> |
| 109 | <?php endif; ?> |
| 110 | </td> |
| 111 | </tr> |
| 112 | <?php endforeach; ?> |
| 113 | </tbody> |
| 114 | </table> |
| 115 | <?php |
| 116 | } |
| 117 | } |