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

262 lines 9.6 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
20 /**
21 * Register form post types
22 *
23 * @return void
24 */
25 public function register_post_type() {
26 $capability = wpuf_admin_role();
27
28 register_post_type( 'wpuf_contact_form', array(
29 'label' => __( 'Contact Forms', 'weforms' ),
30 'public' => false,
31 'show_ui' => true,
32 'show_in_menu' => false,
33 'capability_type' => 'post',
34 'hierarchical' => false,
35 'query_var' => false,
36 'supports' => array('title'),
37 'capabilities' => array(
38 'publish_posts' => $capability,
39 'edit_posts' => $capability,
40 'edit_others_posts' => $capability,
41 'delete_posts' => $capability,
42 'delete_others_posts' => $capability,
43 'read_private_posts' => $capability,
44 'edit_post' => $capability,
45 'delete_post' => $capability,
46 'read_post' => $capability,
47 ),
48 'labels' => array(
49 'name' => __( 'Forms', 'weforms' ),
50 'singular_name' => __( 'Form', 'weforms' ),
51 'menu_name' => __( 'Contact Forms', 'weforms' ),
52 'add_new' => __( 'Add Form', 'weforms' ),
53 'add_new_item' => __( 'Add New Form', 'weforms' ),
54 'edit' => __( 'Edit', 'weforms' ),
55 'edit_item' => __( 'Edit Form', 'weforms' ),
56 'new_item' => __( 'New Form', 'weforms' ),
57 'view' => __( 'View Form', 'weforms' ),
58 'view_item' => __( 'View Form', 'weforms' ),
59 'search_items' => __( 'Search Form', 'weforms' ),
60 'not_found' => __( 'No Form Found', 'weforms' ),
61 'not_found_in_trash' => __( 'No Form Found in Trash', 'weforms' ),
62 'parent' => __( 'Parent Form', 'weforms' ),
63 ),
64 ) );
65 }
66
67 /**
68 * Register the admin menu
69 *
70 * @return void
71 */
72 public function register_admin_menu() {
73 global $submenu;
74
75 $capability = wpuf_admin_role();
76
77 $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 );
78
79 if ( current_user_can( $capability ) ) {
80 $submenu['weforms'][] = array( __( 'Contact Forms', 'weforms' ), $capability, 'admin.php?page=weforms#/' );
81 $submenu['weforms'][] = array( __( 'Tools', 'weforms' ), $capability, 'admin.php?page=weforms#/tools' );
82
83 if ( class_exists( 'WeForms_Pro' ) ) {
84 $submenu['weforms'][] = array( __( 'Modules', 'weforms' ), $capability, 'admin.php?page=weforms#/modules' );
85 } else {
86 $submenu['weforms'][] = array( __( 'Premium', 'weforms' ), $capability, 'admin.php?page=weforms#/premium' );
87 }
88
89 do_action( 'weforms-admin-menu', $hook, $capability );
90
91 $submenu['weforms'][] = array( __( 'Help', 'weforms' ), $capability, 'admin.php?page=weforms#/help' );
92 $submenu['weforms'][] = array( __( 'Settings', 'weforms' ), $capability, 'admin.php?page=weforms#/settings' );
93 }
94
95 add_action( 'load-'. $hook, array( $this, 'load_assets' ) );
96 }
97
98 /**
99 * Load the asset libraries
100 *
101 * @return void
102 */
103 public function load_assets() {
104 require_once dirname( __FILE__ ) . '/class-form-builder-assets.php';
105 new WeForms_Form_Builder_Assets();
106 }
107
108 /**
109 * The contact form page handler
110 *
111 * @return void
112 */
113 public function contact_form_page() {
114 require_once dirname( __FILE__ ) . '/views/vue-index.php';
115 }
116
117 /**
118 * Export forms to JSON
119 *
120 * @return void
121 */
122 public function export_forms() {
123
124 check_admin_referer( 'weforms-export-forms' );
125
126 if ( ! isset( $_REQUEST['weforms_export_forms'] ) ) {
127 return;
128 }
129
130 $export_type = isset( $_POST['export_type'] ) ? $_POST['export_type'] : 'all';
131 $selected = isset( $_POST['selected_forms'] ) ? array_map( 'absint', $_POST['selected_forms'] ) : array();
132
133 if ( ! class_exists( 'WPUF_Admin_Tools' ) ) {
134 require_once WPUF_ROOT . '/admin/class-tools.php';
135 }
136
137 switch ($export_type) {
138 case 'all':
139 WPUF_Admin_Tools::export_to_json( 'wpuf_contact_form' );
140 return;
141
142 case 'selected':
143 WPUF_Admin_Tools::export_to_json( 'wpuf_contact_form', $selected );
144 return;
145 }
146
147 exit;
148 }
149
150 /**
151 * Export form entries to CSV
152 *
153 * @return void
154 */
155 public function export_form_entries() {
156
157 $form_id = isset( $_REQUEST['selected_forms'] ) ? absint( $_REQUEST['selected_forms'] ) : 0;
158
159 if ( ! $form_id ) {
160 return;
161 }
162
163 $entry_array = [];
164 $columns = weforms_get_entry_columns( $form_id, false );
165 $total_entries = weforms_count_form_entries( $form_id );
166 $entries = weforms_get_form_entries( $form_id, array(
167 'number' => $total_entries,
168 'offset' => 0
169 ) );
170 $extra_columns = array(
171 'ip_address' => __( 'IP Address', 'weforms' ),
172 'created_at' => __( 'Date', 'weforms' )
173 );
174
175 $columns = array_merge( array( 'id' => 'Entry ID' ), $columns, $extra_columns );
176
177 foreach ($entries as $entry) {
178 $temp = array();
179
180 foreach ($columns as $column_id => $label) {
181 switch ( $column_id ) {
182 case 'id':
183 $temp[ $column_id ] = $entry->id;
184 break;
185
186 case 'ip_address':
187 $temp[ $column_id ] = $entry->ip_address;
188 break;
189
190 case 'created_at':
191 $temp[ $column_id ] = $entry->created_at;
192 break;
193
194 default:
195 $value = weforms_get_entry_meta( $entry->id, $column_id, true );
196 $temp[ $column_id ] = str_replace( WPUF_Render_Form::$separator, ' ', $value );
197 break;
198 }
199 }
200
201 $entry_array[] = $temp;
202 }
203
204 $handle = fopen("php://output", 'w');
205
206 // put the column headers
207 fputcsv( $handle, array_values( $columns ) );
208
209 // put the entry values
210 foreach ($entry_array as $row) {
211 fputcsv( $handle, $row );
212 }
213
214 fclose( $handle );
215
216 $blogname = strtolower( str_replace( " ", "-", get_option( 'blogname' ) ) );
217 $file_name = $blogname . "-bcf-entries-" . time() . '.csv';
218
219 // force download
220 header("Content-Type: application/force-download");
221 header("Content-Type: application/octet-stream");
222 header("Content-Type: application/download");
223
224 // disposition / encoding on response body
225 header("Content-Disposition: attachment;filename={$file_name}");
226 header("Content-Transfer-Encoding: binary");
227 exit;
228 }
229
230 /**
231 * Watch the wpuf general settings and sync with weforms settings
232 *
233 * @param array $value
234 *
235 * @return array
236 */
237 public function watch_wpuf_settings( $settings ) {
238 $merge_array = array();
239
240 if ( isset( $settings['gmap_api_key'] ) ) {
241 $merge_array['gmap_api'] = $settings['gmap_api_key'];
242 }
243
244 if ( isset( $settings['recaptcha_public'] ) ) {
245 $recaptcha = new StdClass;
246 $recaptcha->key = $settings['recaptcha_public'];
247 $recaptcha->secret = $settings['recaptcha_private'];
248
249 $merge_array['recaptcha'] = $recaptcha;
250 }
251
252 if ( $merge_array ) {
253 $weforms_settings = get_option( 'weforms_settings', array() );
254 $weforms_settings = array_merge( $weforms_settings, $merge_array );
255
256 update_option( 'weforms_settings', $weforms_settings );
257 }
258
259 return $settings;
260 }
261 }
262