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

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