PluginProbe
weForms – Easy Drag & Drop Contact Form Builder For WordPress / 1.2.8
weForms – Easy Drag & Drop Contact Form Builder For WordPress v1.2.8
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.8, at includes/admin/class-admin.php

332 lines 11.5 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 //handle UTF-8 chars conversion for CSV
241 fprintf( $handle, chr(0xEF).chr(0xBB).chr(0xBF) );
242
243 // put the column headers
244 fputcsv( $handle, array_values( $columns ) );
245
246 // put the entry values
247 foreach ( $entry_array as $row ) {
248 fputcsv( $handle, $row );
249 }
250
251 fclose( $handle );
252
253 exit;
254 }
255
256 /**
257 * Watch the wpuf general settings and sync with weforms settings
258 *
259 * @param array $value
260 *
261 * @return array
262 */
263 public function watch_wpuf_settings( $settings ) {
264 $merge_array = array();
265
266 if ( isset( $settings['gmap_api_key'] ) ) {
267 $merge_array['gmap_api'] = $settings['gmap_api_key'];
268 }
269
270 if ( isset( $settings['recaptcha_public'] ) ) {
271 $recaptcha = new StdClass;
272 $recaptcha->key = $settings['recaptcha_public'];
273 $recaptcha->secret = $settings['recaptcha_private'];
274
275 $merge_array['recaptcha'] = $recaptcha;
276 }
277
278 if ( $merge_array ) {
279 $weforms_settings = get_option( 'weforms_settings', array() );
280 $weforms_settings = array_merge( $weforms_settings, $merge_array );
281
282 update_option( 'weforms_settings', $weforms_settings );
283 }
284
285 return $settings;
286 }
287
288 /**
289 * Set default settings tabs
290 *
291 * @param array $tabs
292 *
293 * @return array
294 */
295 function set_default_settings( $tabs = array() ) {
296
297 $tabs['general'] = array(
298 'label' => __('General Settings', 'weforms'),
299 'icon' => WEFORMS_ASSET_URI . '/images/integrations/general-setting.svg',
300 );
301
302 $tabs['recaptcha'] = array(
303 'label' => __('reCaptcha', 'weforms'),
304 'icon' => WEFORMS_ASSET_URI . '/images/integrations/reCaptcha.svg',
305 );
306
307 return $tabs;
308 }
309
310 /**
311 * General tab content
312 *
313 * @param array $tab
314 *
315 * @return void
316 */
317 function settings_tab_general( $tab ) {
318 include dirname( __FILE__ ) . '/views/weforms-settings-general.php';
319 }
320
321 /**
322 * recaptcha tab content
323 *
324 * @param array $tab
325 *
326 * @return void
327 */
328 function settings_tab_recaptcha( $tab ) {
329 include dirname( __FILE__ ) . '/views/weforms-settings-recaptcha.php';
330 }
331 }
332