PluginProbe
weForms – Easy Drag & Drop Contact Form Builder For WordPress / 1.2.3
weForms – Easy Drag & Drop Contact Form Builder For WordPress v1.2.3
1.6.7 1.6.8 1.6.9 1.6.12 1.6.13 1.6.14 1.6.15 1.6.16 1.6.17 1.6.18 1.6.19 1.6.2 1.6.20 1.6.21 1.6.22 1.6.23 1.6.24 1.6.25 1.6.26 1.6.27 1.6.28 1.6.3 1.6.4 1.6.5 1.6.6 All 74 releases
weforms / includes / admin / class-admin.php

class-admin.php in weForms – Easy Drag & Drop Contact Form Builder For WordPress 1.2.3, at includes/admin/class-admin.php

329 lines 11.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * The admin page handler class
5 */
6 class WeForms_Admin {
7
8 public function __construct() {
9
10 add_action( 'init', array( $this, 'register_post_type' ) );
11
12 add_action( 'admin_menu', array( $this, 'register_admin_menu' ) );
13
14 add_action( 'pre_update_option_wpuf_general', array( $this, 'watch_wpuf_settings' ) );
15
16 add_filter( 'admin_post_weforms_export_forms', array( $this, 'export_forms' ) );
17 add_filter( 'admin_post_weforms_export_form_entries', array( $this, 'export_form_entries' ) );
18
19 // load default settings tabs
20 add_filter( 'weforms_settings_tabs', array( $this, 'set_default_settings' ), 5 );
21 add_action( 'weforms_settings_tab_content_general', array( $this, 'settings_tab_general' ) );
22 add_action( 'weforms_settings_tab_content_recaptcha', array( $this, 'settings_tab_recaptcha' ) );
23 }
24
25 /**
26 * Register form post types
27 *
28 * @return void
29 */
30 public function register_post_type() {
31 $capability = weforms_form_access_capability();
32
33 register_post_type( 'wpuf_contact_form', array(
34 'label' => __( 'Contact Forms', 'weforms' ),
35 'public' => false,
36 'show_ui' => true,
37 'show_in_menu' => false,
38 'capability_type' => 'post',
39 'hierarchical' => false,
40 'query_var' => false,
41 'supports' => array('title'),
42 'capabilities' => array(
43 'publish_posts' => $capability,
44 'edit_posts' => $capability,
45 'edit_others_posts' => $capability,
46 'delete_posts' => $capability,
47 'delete_others_posts' => $capability,
48 'read_private_posts' => $capability,
49 'edit_post' => $capability,
50 'delete_post' => $capability,
51 'read_post' => $capability,
52 ),
53 'labels' => array(
54 'name' => __( 'Forms', 'weforms' ),
55 'singular_name' => __( 'Form', 'weforms' ),
56 'menu_name' => __( 'Contact Forms', 'weforms' ),
57 'add_new' => __( 'Add Form', 'weforms' ),
58 'add_new_item' => __( 'Add New Form', 'weforms' ),
59 'edit' => __( 'Edit', 'weforms' ),
60 'edit_item' => __( 'Edit Form', 'weforms' ),
61 'new_item' => __( 'New Form', 'weforms' ),
62 'view' => __( 'View Form', 'weforms' ),
63 'view_item' => __( 'View Form', 'weforms' ),
64 'search_items' => __( 'Search Form', 'weforms' ),
65 'not_found' => __( 'No Form Found', 'weforms' ),
66 'not_found_in_trash' => __( 'No Form Found in Trash', 'weforms' ),
67 'parent' => __( 'Parent Form', 'weforms' ),
68 ),
69 ) );
70 }
71
72 /**
73 * Register the admin menu
74 *
75 * @return void
76 */
77 public function register_admin_menu() {
78 global $submenu;
79
80 $capability = weforms_form_access_capability();
81
82 $hook = add_menu_page( __( 'weForms - The Best Contact Form', 'weforms' ), 'weForms', $capability, 'weforms', array( $this, 'contact_form_page'), 'data:image/svg+xml;base64,' . base64_encode( '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 300 300" style="enable-background:new 0 0 300 300;" xml:space="preserve"><g fill="#9ea3a8"><path d="M285.1,24.1C273.1,9.4,254.8,0,234.3,0H65.7C46.6,0,29.3,8.2,17.3,21.2C6.6,32.9,0,48.5,0,65.7v60.5v108.1 C0,270.6,29.4,300,65.7,300h140h28.6c15.3,0,29.5-5.3,40.7-14.1c15.2-12,25-30.7,25-51.6V65.7C300,49.9,294.4,35.4,285.1,24.1z M212.7,187L104.6,233c-11.1,4.8-24-0.3-28.7-11.4c-4.8-11.1,0.3-24,11.4-28.7l108.1-46.1c11.1-4.8,24,0.3,28.7,11.4 C228.9,169.3,223.8,182.2,212.7,187z M217.4,107.1L99.9,157.8c-11.1,4.8-24-0.3-28.7-11.4c-4.8-11.1,0.3-24,11.4-28.7L200.1,67 c11.1-4.8,24,0.3,28.7,11.4v0C233.6,89.5,228.5,102.3,217.4,107.1z"/></g></svg>' ), 56 );
83
84 if ( current_user_can( $capability ) ) {
85 $submenu['weforms'][] = array( __( 'All Forms', 'weforms' ), $capability, 'admin.php?page=weforms#/' );
86 $submenu['weforms'][] = array( __( 'Entries', 'weforms' ), $capability, 'admin.php?page=weforms#/entries' );
87 $submenu['weforms'][] = array( __( 'Tools', 'weforms' ), $capability, 'admin.php?page=weforms#/tools' );
88
89 if ( class_exists( 'WeForms_Pro' ) ) {
90 if ( current_user_can( 'manage_options' ) ) {
91 $submenu['weforms'][] = array( __( 'Modules', 'weforms' ), $capability, 'admin.php?page=weforms#/modules' );
92 }
93 } else {
94 $submenu['weforms'][] = array( __( 'Premium', 'weforms' ), $capability, 'admin.php?page=weforms#/premium' );
95 }
96
97 do_action( 'weforms-admin-menu', $hook, $capability );
98
99 $submenu['weforms'][] = array( __( 'Help', 'weforms' ), $capability, 'admin.php?page=weforms#/help' );
100 }
101
102 // only admins should see the settings page
103 if ( current_user_can( 'manage_options' ) ) {
104 $submenu['weforms'][] = array( __( 'Settings', 'weforms' ), 'manage_options', 'admin.php?page=weforms#/settings' );
105 }
106
107 add_action( 'load-'. $hook, array( $this, 'load_assets' ) );
108 }
109
110 /**
111 * Load the asset libraries
112 *
113 * @return void
114 */
115 public function load_assets() {
116 require_once dirname( __FILE__ ) . '/class-form-builder-assets.php';
117 new WeForms_Form_Builder_Assets();
118 }
119
120 /**
121 * The contact form page handler
122 *
123 * @return void
124 */
125 public function contact_form_page() {
126 require_once dirname( __FILE__ ) . '/views/vue-index.php';
127 }
128
129 /**
130 * Export forms to JSON
131 *
132 * @return void
133 */
134 public function export_forms() {
135
136 check_admin_referer( 'weforms-export-forms' );
137
138 if ( ! isset( $_REQUEST['weforms_export_forms'] ) ) {
139 return;
140 }
141
142 $export_type = isset( $_POST['export_type'] ) ? $_POST['export_type'] : 'all';
143 $selected = isset( $_POST['selected_forms'] ) ? array_map( 'absint', $_POST['selected_forms'] ) : array();
144
145 if ( ! class_exists( 'WeForms_Admin_Tools' ) ) {
146 require_once dirname( __FILE__ ) . '/class-admin-tools.php';
147 }
148
149 switch ($export_type) {
150 case 'all':
151 WeForms_Admin_Tools::export_to_json();
152 return;
153
154 case 'selected':
155 WeForms_Admin_Tools::export_to_json( $selected );
156 return;
157 }
158
159 exit;
160 }
161
162 /**
163 * Export form entries to CSV
164 *
165 * @return void
166 */
167 public function export_form_entries() {
168
169 $form_id = isset( $_REQUEST['selected_forms'] ) ? absint( $_REQUEST['selected_forms'] ) : 0;
170
171 if ( ! $form_id ) {
172 return;
173 }
174
175 $entry_array = [];
176 $columns = weforms_get_entry_columns( $form_id, false );
177 $total_entries = weforms_count_form_entries( $form_id );
178 $entries = weforms_get_form_entries( $form_id, array(
179 'number' => $total_entries,
180 'offset' => 0
181 ) );
182 $extra_columns = array(
183 'ip_address' => __( 'IP Address', 'weforms' ),
184 'created_at' => __( 'Date', 'weforms' )
185 );
186
187 $columns = array_merge( array( 'id' => 'Entry ID' ), $columns, $extra_columns );
188
189 foreach ($entries as $entry) {
190 $temp = array();
191
192 foreach ($columns as $column_id => $label) {
193 switch ( $column_id ) {
194 case 'id':
195 $temp[ $column_id ] = $entry->id;
196 break;
197
198 case 'ip_address':
199 $temp[ $column_id ] = $entry->ip_address;
200 break;
201
202 case 'created_at':
203 $temp[ $column_id ] = $entry->created_at;
204 break;
205
206 default:
207
208 $value = weforms_get_entry_meta( $entry->id, $column_id, true );
209 $value = weforms_get_pain_text( $value );
210 $temp[ $column_id ] = str_replace( WeForms::$field_separator, ' ', $value );
211
212 break;
213 }
214 }
215
216 $entry_array[] = $temp;
217 }
218
219
220 error_reporting(0);
221
222 if ( ob_get_contents() ) {
223 ob_clean();
224 }
225
226 $blogname = strtolower( str_replace( " ", "-", get_option( 'blogname' ) ) );
227 $file_name = $blogname . "-weforms-entries-" . time() . '.csv';
228
229 // force download
230 header("Content-Type: application/force-download");
231 header("Content-Type: application/octet-stream");
232 header("Content-Type: application/download");
233
234 // disposition / encoding on response body
235 header("Content-Disposition: attachment;filename={$file_name}");
236 header("Content-Transfer-Encoding: binary");
237
238 $handle = fopen("php://output", 'w');
239
240 // put the column headers
241 fputcsv( $handle, array_values( $columns ) );
242
243 // put the entry values
244 foreach ($entry_array as $row) {
245 fputcsv( $handle, $row );
246 }
247
248 fclose( $handle );
249
250 exit;
251 }
252
253 /**
254 * Watch the wpuf general settings and sync with weforms settings
255 *
256 * @param array $value
257 *
258 * @return array
259 */
260 public function watch_wpuf_settings( $settings ) {
261 $merge_array = array();
262
263 if ( isset( $settings['gmap_api_key'] ) ) {
264 $merge_array['gmap_api'] = $settings['gmap_api_key'];
265 }
266
267 if ( isset( $settings['recaptcha_public'] ) ) {
268 $recaptcha = new StdClass;
269 $recaptcha->key = $settings['recaptcha_public'];
270 $recaptcha->secret = $settings['recaptcha_private'];
271
272 $merge_array['recaptcha'] = $recaptcha;
273 }
274
275 if ( $merge_array ) {
276 $weforms_settings = get_option( 'weforms_settings', array() );
277 $weforms_settings = array_merge( $weforms_settings, $merge_array );
278
279 update_option( 'weforms_settings', $weforms_settings );
280 }
281
282 return $settings;
283 }
284
285 /**
286 * Set default settings tabs
287 *
288 * @param array $tabs
289 *
290 * @return array
291 */
292 function set_default_settings( $tabs = array() ) {
293
294 $tabs['general'] = array(
295 'label' => __('General Settings', 'weforms'),
296 'icon' => WEFORMS_ASSET_URI . '/images/integrations/general-setting.svg',
297 );
298
299 $tabs['recaptcha'] = array(
300 'label' => __('reCaptcha', 'weforms'),
301 'icon' => WEFORMS_ASSET_URI . '/images/integrations/reCaptcha.svg',
302 );
303
304 return $tabs;
305 }
306
307 /**
308 * General tab content
309 *
310 * @param array $tab
311 *
312 * @return void
313 */
314 function settings_tab_general( $tab ) {
315 include dirname( __FILE__ ) . '/views/weforms-settings-general.php';
316 }
317
318 /**
319 * recaptcha tab content
320 *
321 * @param array $tab
322 *
323 * @return void
324 */
325 function settings_tab_recaptcha( $tab ) {
326 include dirname( __FILE__ ) . '/views/weforms-settings-recaptcha.php';
327 }
328 }
329