PluginProbe ʕ •ᴥ•ʔ
Advanced Custom Fields: Extended / trunk
Advanced Custom Fields: Extended vtrunk
0.9.2.6 0.9.2.5 0.8.6 0.8.6.1 0.8.6.3 0.8.6.5 0.8.6.6 0.8.6.7 0.8.6.8 0.8.6.9 0.8.7 0.8.7.1 0.8.7.2 0.8.7.3 0.8.7.4 0.8.7.5 0.8.7.6 0.8.8 0.8.8.1 0.8.8.10 0.8.8.11 0.8.8.2 0.8.8.3 0.8.8.4 0.8.8.5 0.8.8.6 0.8.8.7 0.8.8.8 0.8.8.9 0.8.9 0.8.9.1 0.8.9.2 0.8.9.3 0.8.9.4 0.8.9.5 0.9 0.9.0.1 0.9.0.2 0.9.0.3 0.9.0.4 0.9.0.5 0.9.0.6 0.9.0.7 0.9.0.8 0.9.0.9 0.9.1 0.9.1.1 0.9.2 0.9.2.1 0.9.2.2 0.9.2.3 0.9.2.4 trunk 0.5 0.5.1 0.5.2 0.5.2.1 0.5.2.3 0.5.5 0.5.5.1 0.5.8 0.5.8.1 0.6 0.6.0.1 0.6.0.2 0.6.1 0.6.3 0.6.5 0.6.7 0.6.7.2 0.7 0.7.0.3 0.7.5 0.7.5.5 0.7.8 0.7.9 0.7.9.3 0.7.9.4 0.7.9.9.8 0.7.9.9.9 0.8 0.8.1 0.8.2 0.8.3 0.8.3.1 0.8.4 0.8.4.1 0.8.4.5 0.8.4.6 0.8.5 0.8.5.5
acf-extended / includes / modules / dev / module-dev-delete-meta.php
acf-extended / includes / modules / dev Last commit date
module-dev-delete-meta.php 3 years ago module-dev.php 1 month ago
module-dev-delete-meta.php
219 lines
1 <?php
2
3 if(!defined('ABSPATH')){
4 exit;
5 }
6
7 if(!class_exists('acfe_dev_delete_meta')):
8
9 class acfe_dev_delete_meta{
10
11 /**
12 * construct
13 */
14 function __construct(){
15
16 // check settings
17 if((!acfe_is_dev() && !acfe_is_super_dev()) || !acf_current_user_can_admin()){
18 return;
19 }
20
21 // table
22 add_filter('acfe/dev/meta/row_actions', array($this, 'meta_row_actions'), 10, 3);
23 add_action('acfe/dev/meta/after_table', array($this, 'meta_after_table'));
24
25 // ajax
26 add_action('wp_ajax_acfe/dev/single_delete_meta', array($this, 'ajax_delete_single_meta'));
27 add_action('wp_ajax_acfe/dev/bulk_delete_meta', array($this, 'ajax_delete_bulk_meta'));
28
29 }
30
31
32 /**
33 * meta_row_actions
34 *
35 * acfe/dev/meta/row_actions
36 *
37 * @param $row_actions
38 * @param $meta
39 * @param $args
40 *
41 * @return mixed
42 */
43 function meta_row_actions($row_actions, $meta, $args){
44
45 // check permission
46 if(!current_user_can(acf_get_setting('capability'))){
47 return $row_actions;
48 }
49
50 // delete link
51 $delete = array(
52 'href' => '#',
53 'class' => 'acfe-dev-delete-meta',
54 'data-meta-id' => $meta['id'],
55 'data-meta-key' => $meta['key'],
56 'data-meta-type' => $meta['type'],
57 'data-nonce' => wp_create_nonce("acfe-dev-delete-meta-{$meta['id']}"),
58 );
59
60 $row_actions['delete'] = '<a ' . acf_esc_atts($delete). '>' . __('Delete') . '</a>';
61
62 // return
63 return $row_actions;
64
65 }
66
67
68 /**
69 * meta_after_table
70 *
71 * acfe/dev/meta/after_table
72 *
73 * @param $args
74 */
75 function meta_after_table($args){
76
77 // bail early
78 if(!current_user_can(acf_get_setting('capability')) || !$args['bulk']){
79 return;
80 }
81
82 ?>
83 <div class="acfe-dev-bulk tablenav bottom">
84
85 <div class="alignleft actions bulkactions">
86
87 <label for="bulk-action-selector-bottom" class="screen-reader-text"><?php _e('Select bulk action'); ?></label>
88 <input type="hidden" class="acfe-dev-bulk-meta-type" value="<?php echo $args['type']; ?>" />
89 <input type="hidden" class="acfe-dev-bulk-nonce" value="<?php echo wp_create_nonce('acfe-dev-bulk'); ?>" />
90
91 <select class="acfe-dev-bulk-action">
92 <option value="-1"><?php _e('Bulk Actions'); ?></option>
93 <option value="delete"><?php _e('Delete'); ?></option>
94 </select>
95
96 <input type="submit" class="button action" value="<?php _e('Apply'); ?>">
97
98 </div>
99
100 <br class="clear">
101
102 </div>
103 <?php
104 }
105
106
107 /**
108 * ajax_delete_single_meta
109 *
110 * wp_ajax_acfe/delete_meta
111 */
112 function ajax_delete_single_meta(){
113
114 // vars
115 $id = acf_maybe_get_POST('id');
116 $key = acf_maybe_get_POST('key');
117 $type = acf_maybe_get_POST('type');
118
119 // check vars
120 if(!$id || !$key || !$type){
121 wp_die(0);
122 }
123
124 // check referer
125 check_ajax_referer("acfe-dev-delete-meta-{$id}");
126
127 // check permission
128 if(!current_user_can(acf_get_setting('capability'))){
129 wp_die(-1);
130 }
131
132 // delete option
133 if($type === 'option'){
134
135 global $wpdb;
136
137 // retrieve option from option_id
138 $row = $wpdb->get_row($wpdb->prepare("SELECT option_name FROM $wpdb->options WHERE option_id = %d LIMIT 1", $id));
139
140 if($row){
141
142 if(delete_option($row->option_name)){
143 wp_die(1);
144 }
145
146 }
147
148 wp_die(0);
149
150 }
151
152 // delete by meta type
153 if(delete_metadata_by_mid($type, $id)){
154 wp_die(1);
155 }
156
157 wp_die(0);
158
159 }
160
161
162 /**
163 * ajax_delete_bulk_meta
164 *
165 * wp_ajax_acfe/bulk_delete_meta
166 */
167 function ajax_delete_bulk_meta(){
168
169 // vars
170 $ids = acf_maybe_get_POST('ids');
171 $type = acf_maybe_get_POST('type');
172
173 // check vars
174 if(!$ids || !$type){
175 wp_die(0);
176 }
177
178 // check referer
179 check_ajax_referer('acfe-dev-bulk');
180
181 // check permission
182 if(!current_user_can(acf_get_setting('capability'))){
183 wp_die(-1);
184 }
185
186 // delete option
187 if($type === 'option'){
188
189 global $wpdb;
190
191 foreach($ids as $id){
192
193 // retrieve option from option_id
194 $row = $wpdb->get_row($wpdb->prepare("SELECT option_name FROM $wpdb->options WHERE option_id = %d LIMIT 1", $id));
195
196 if($row){
197 delete_option($row->option_name);
198 }
199
200 }
201
202 wp_die(1);
203
204 }
205
206 // delete by meta type
207 foreach($ids as $id){
208 delete_metadata_by_mid($type, $id);
209 }
210
211 wp_die(1);
212
213 }
214
215 }
216
217 acf_new_instance('acfe_dev_delete_meta');
218
219 endif;