PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / 4.17.1
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress v4.17.1
4.17.1 4.17.0 4.16.19 4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / Admin / SettingsPages / Membership / CouponsPage / SettingsPage.php
wp-user-avatar / src / Admin / SettingsPages / Membership / CouponsPage Last commit date
CouponWPListTable.php 1 year ago SettingsPage.php 1 year ago index.php 4 years ago
SettingsPage.php
185 lines
1 <?php
2
3 namespace ProfilePress\Core\Admin\SettingsPages\Membership\CouponsPage;
4
5 use ProfilePress\Core\Admin\SettingsPages\AbstractSettingsPage;
6 use ProfilePress\Core\Membership\Models\Coupon\CouponFactory;
7 use ProfilePress\Custom_Settings_Page_Api;
8
9 class SettingsPage extends AbstractSettingsPage
10 {
11 public $error_bucket;
12
13 /** @var CouponWPListTable */
14 private $couponListTable;
15
16 function __construct()
17 {
18 add_action('ppress_admin_settings_page_coupons', [$this, 'settings_page_function']);
19 add_filter('ppress_membership_plans_settings_page_title', [$this, 'admin_page_title']);
20 add_action('ppress_membership_plans_settings_page_register', function ($hook) {
21 add_action("load-$hook", array($this, 'add_options'));
22 });
23
24 if (ppressGET_var('page') == PPRESS_MEMBERSHIP_PLANS_SETTINGS_SLUG && ppressGET_var('view') == 'coupons') {
25
26 add_filter('set-screen-option', [__CLASS__, 'set_screen'], 10, 3);
27 add_filter('set_screen_option_rules_per_page', [__CLASS__, 'set_screen'], 10, 3);
28
29 add_action('admin_init', function () {
30 $this->save_coupon();
31 });
32 }
33 }
34
35 /**
36 * @return string|void
37 */
38 public function save_coupon()
39 {
40 if ( ! isset($_POST['ppress_save_coupon'])) return;
41
42 check_admin_referer('wp-csa-nonce', 'wp_csa_nonce');
43
44 if ( ! current_user_can('manage_options')) return;
45
46 $required_fields = [
47 'amount' => esc_html__('Discount', 'wp-user-avatar'),
48 'unit' => esc_html__('Discount', 'wp-user-avatar'),
49 'coupon_type' => esc_html__('Coupon Type', 'wp-user-avatar'),
50 'coupon_application' => esc_html__('Coupon Application', 'wp-user-avatar')
51 ];
52
53 foreach ($required_fields as $field_id => $field_name) {
54 if (empty($_POST[$field_id])) {
55 return $this->error_bucket = sprintf(esc_html__('%s cannot be empty.', 'wp-user-avatar'), $field_name);
56 }
57 }
58
59 $coupon_code = empty($_POST['code']) ? strtoupper(wp_generate_password(8, false)) : sanitize_text_field($_POST['code']);
60
61 $coupon = CouponFactory::fromId(absint(ppressGET_var('id')));
62 $coupon->code = $coupon_code;
63 $coupon->description = sanitize_textarea_field($_POST['description']);
64 $coupon->amount = sanitize_text_field($_POST['amount']);
65 $coupon->unit = sanitize_text_field($_POST['unit']);
66 $coupon->coupon_type = sanitize_text_field($_POST['coupon_type']);
67 $coupon->coupon_application = sanitize_text_field($_POST['coupon_application']);
68 $coupon->is_onetime_use = sanitize_text_field($_POST['is_onetime_use']);
69 $coupon->plan_ids = ppress_clean(ppressPOST_var('plan_ids', [], true), 'absint');
70 $coupon->start_date = sanitize_text_field($_POST['start_date']);
71 $coupon->end_date = sanitize_text_field($_POST['end_date']);
72 $coupon->usage_limit = absint($_POST['usage_limit']);
73
74 $coupon_id = $coupon->save();
75
76 wp_safe_redirect(add_query_arg(['ppress_coupon_action' => 'edit', 'id' => $coupon_id, 'saved' => 'true'], PPRESS_MEMBERSHIP_COUPONS_SETTINGS_PAGE));
77 exit;
78 }
79
80 public function admin_page_title($title = '')
81 {
82 if (ppressGET_var('view') == 'coupons') {
83
84 $title = esc_html__('Coupons', 'wp-user-avatar');
85
86 if (ppressGET_var('ppress_coupon_action') == 'new') {
87 $title = esc_html__('Add a Coupon', 'wp-user-avatar');
88 }
89
90 if (ppressGET_var('ppress_coupon_action') == 'edit') {
91 $title = esc_html__('Edit Coupon', 'wp-user-avatar');
92 }
93 }
94
95 return $title;
96 }
97
98 public static function set_screen($status, $option, $value)
99 {
100 return $value;
101 }
102
103 public function add_options()
104 {
105 if (ppressGET_var('view') == 'coupons') {
106
107 $args = [
108 'label' => esc_html__('Coupons', 'wp-user-avatar'),
109 'default' => 10,
110 'option' => 'coupons_per_page'
111 ];
112
113 add_screen_option('per_page', $args);
114
115 $this->couponListTable = new CouponWPListTable();
116 }
117 }
118
119 public function admin_notices()
120 {
121 if ( ! isset($_GET['saved']) && ! isset($this->error_bucket)) return;
122
123 $status = 'updated';
124 $message = '';
125
126 if ( ! empty($this->error_bucket)) {
127 $message = $this->error_bucket;
128 $status = 'error';
129 }
130
131 if (isset($_GET['saved'])) {
132 $message = esc_html__('Changes saved.', 'wp-user-avatar');
133 }
134
135 printf('<div id="message" class="%s notice is-dismissible"><p>%s</strong></p></div>', $status, $message);
136 }
137
138 public function settings_page_function()
139 {
140 add_filter('wp_cspa_main_content_area', [$this, 'admin_settings_page_callback'], 10, 2);
141 add_action('wp_cspa_before_closing_header', [$this, 'add_new_button']);
142
143 $instance = Custom_Settings_Page_Api::instance();
144 $instance->option_name('ppview'); // adds ppview css class to #poststuff
145 $instance->page_header($this->admin_page_title());
146 $instance->build(true);
147 }
148
149 public function add_new_button()
150 {
151 if ( ! isset($_GET['ppress_subp_action'])) {
152 $url = esc_url_raw(add_query_arg('ppress_coupon_action', 'new', self::$parent_menu_url_map['coupons']));
153 echo "<a class=\"add-new-h2\" href=\"$url\">" . esc_html__('Add New Coupon', 'wp-user-avatar') . '</a>';
154 }
155 }
156
157 public function admin_settings_page_callback()
158 {
159 if (in_array(ppressGET_var('ppress_coupon_action'), ['new', 'edit'])) {
160 $this->admin_notices();
161 require_once dirname(dirname(__FILE__)) . '/views/add-edit-coupon.php';
162
163 return;
164 }
165
166 $this->couponListTable->prepare_items(); // has to be here.
167
168 echo '<form method="post">';
169 $this->couponListTable->display();
170 echo '</form>';
171
172 do_action('ppress_coupon_wp_list_table_bottom');
173 }
174
175 public static function get_instance()
176 {
177 static $instance = null;
178
179 if (is_null($instance)) {
180 $instance = new self();
181 }
182
183 return $instance;
184 }
185 }