PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / trunk
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress vtrunk
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 / DownloadLogsPage / WPListTable.php
wp-user-avatar / src / Admin / SettingsPages / Membership / DownloadLogsPage Last commit date
SettingsPage.php 1 year ago WPListTable.php 1 year ago index.php 3 years ago
WPListTable.php
153 lines
1 <?php
2
3 namespace ProfilePress\Core\Admin\SettingsPages\Membership\DownloadLogsPage;
4
5 use ProfilePress\Core\Admin\SettingsPages\Membership\CustomersPage\CustomerWPListTable;
6 use ProfilePress\Core\Admin\SettingsPages\Membership\OrdersPage\OrderWPListTable;
7 use ProfilePress\Core\Classes\PROFILEPRESS_sql;
8 use ProfilePress\Core\Membership\DigitalProducts\DownloadService;
9 use ProfilePress\Core\Membership\Models\Order\OrderFactory;
10
11 class WPListTable extends \WP_List_Table
12 {
13 public function __construct()
14 {
15 parent::__construct(array(
16 'singular' => 'ppress-download-log',
17 'plural' => 'ppress-download-logs',
18 'ajax' => false
19 ));
20 }
21
22 public function no_items()
23 {
24 _e('No download log found.', 'wp-user-avatar');
25 }
26
27 public function get_columns()
28 {
29 $columns = [
30 'cb' => '<input type="checkbox" />',
31 'membership_plan' => esc_html__('Membership Plan', 'wp-user-avatar'),
32 'customer' => esc_html__('Customer', 'wp-user-avatar'),
33 'order_number' => esc_html__('Order Number', 'wp-user-avatar'),
34 'file' => esc_html__('File', 'wp-user-avatar'),
35 'ip_address' => esc_html__('IP Address', 'wp-user-avatar'),
36 'date' => esc_html__('Date', 'wp-user-avatar'),
37 ];
38
39 return $columns;
40 }
41
42 /**
43 * Render the bulk edit checkbox
44 *
45 * @param $item
46 *
47 * @return string
48 */
49 public function column_cb($item)
50 {
51 return sprintf('<input type="checkbox" name="ppress_download_log_id[]" value="%s" />', $item['id']);
52 }
53
54 public function column_membership_plan($item)
55 {
56 $plan_id = absint($item['plan_id']);
57 $plan_name = ppress_get_plan($plan_id)->get_name();
58
59 $url = add_query_arg(['ppress_subp_action' => 'edit', 'id' => $plan_id], PPRESS_MEMBERSHIP_SUBSCRIPTION_PLANS_SETTINGS_PAGE);
60
61 return '<a href="' . $url . '">' . sanitize_text_field($plan_name) . '</a>';
62 }
63
64 public function column_customer($item)
65 {
66 $order_id = absint($item['order_id']);
67
68 $customer = OrderFactory::fromId($order_id)->get_customer();
69
70 $name = $customer->get_name();
71
72 $url = CustomerWPListTable::view_customer_url($customer->get_id());
73
74 return '<a href="' . esc_url($url) . '">' . sanitize_text_field($name) . '</a>';
75 }
76
77 public function column_order_number($item)
78 {
79 $order_id = absint($item['order_id']);
80
81 $url = OrderWPListTable::view_edit_order_url($order_id);
82
83 return '<a href="' . esc_url($url) . '">' . $order_id . '</a>';
84 }
85
86 public function column_default($item, $column_name)
87 {
88 $output = '';
89
90 switch ($column_name) {
91 case 'file':
92 $output = DownloadService::init()->get_download_file_name(
93 $item['plan_id'],
94 $item['file_url']
95 );
96 break;
97 case 'ip_address':
98 $output = '<a href="' . esc_url('https://ipinfo.io/' . esc_attr($item['ip'])) . '" target="_blank" rel="noopener noreferrer">' . esc_html($item['ip']) . '</a>';
99 break;
100 case 'date':
101 $output = ppress_format_date_time($item['date'], 'Y-m-d H:i:s');
102 break;
103 }
104
105 return $output;
106 }
107
108 public function prepare_items()
109 {
110 $this->_column_headers = $this->get_column_info();
111
112 $this->process_bulk_action();
113
114 $by_order_id = ppress_var($_GET, 'by_oid', 0, true);
115
116 $per_page = $this->get_items_per_page('download_logs_per_page', 10);
117 $current_page = $this->get_pagenum();
118 $total_items = DownloadService::init()->get_download_log_count($by_order_id);
119
120 $this->set_pagination_args([
121 'total_items' => $total_items,
122 'per_page' => $per_page
123 ]);
124
125 $this->items = DownloadService::init()->get_download_log($per_page, $current_page, $by_order_id);
126 }
127
128 public function get_bulk_actions()
129 {
130 return ['bulk-delete' => esc_html__('Delete', 'wp-user-avatar')];
131 }
132
133 public function process_bulk_action()
134 {
135 if ('bulk-delete' === $this->current_action()) {
136
137 if ( ! current_user_can('manage_options')) return;
138
139 check_admin_referer('bulk-' . $this->_args['plural']);
140
141 if ( ! current_user_can('manage_options')) return;
142
143 $log_ids = array_map('absint', $_POST['ppress_download_log_id']);
144
145 foreach ($log_ids as $log_id) {
146 PROFILEPRESS_sql::delete_meta_data($log_id);
147 }
148
149 ppress_do_admin_redirect(PPRESS_MEMBERSHIP_DOWNLOAD_LOGS_SETTINGS_PAGE);
150 }
151 }
152 }
153