PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 1.07.11
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v1.07.11
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
formidable / classes / models / FrmField.php

FrmField.php in Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More 1.07.11, at classes/models/FrmField.php

258 lines 10.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if(!defined('ABSPATH')) die(__('You are not allowed to call this page directly.', 'formidable'));
3
4 if(class_exists('FrmField'))
5 return;
6
7 class FrmField{
8
9 function create( $values, $return=true ){
10 global $wpdb;
11
12 $new_values = array();
13 $key = isset($values['field_key']) ? $values['field_key'] : $values['name'];
14 $new_values['field_key'] = FrmAppHelper::get_unique_key($key, $wpdb->prefix .'frm_fields', 'field_key');
15
16 foreach ( array('name', 'description', 'type', 'default_value') as $col ) {
17 $new_values[$col] = $values[$col];
18 }
19
20 $new_values['options'] = $values['options'];
21
22 $new_values['field_order'] = isset($values['field_order']) ? (int)$values['field_order'] : NULL;
23 $new_values['required'] = isset($values['required']) ? (int)$values['required'] : 0;
24 $new_values['form_id'] = isset($values['form_id']) ? (int)$values['form_id'] : NULL;
25 $new_values['field_options'] = $values['field_options'];
26 $new_values['created_at'] = current_time('mysql', 1);
27 if(isset($values['id'])){
28 global $frm_duplicate_ids;
29 $frm_duplicate_ids[$values['field_key']] = $new_values['field_key'];
30 $new_values = apply_filters('frm_duplicated_field', $new_values);
31 }
32
33 foreach($new_values as $k => $v){
34 if(is_array($v))
35 $new_values[$k] = serialize($v);
36 unset($k);
37 unset($v);
38 }
39
40 //if(isset($values['id']) and is_numeric($values['id']))
41 // $new_values['id'] = $values['id'];
42
43 $query_results = $wpdb->insert( $wpdb->prefix .'frm_fields', $new_values );
44 if($return){
45 if($query_results){
46 delete_transient('frm_all_form_fields_'. $new_values['form_id']);
47 $new_id = $wpdb->insert_id;
48 if(isset($values['id']))
49 $frm_duplicate_ids[$values['id']] = $new_id;
50 return $new_id;
51 }else{
52 return false;
53 }
54 }
55 }
56
57 function duplicate($old_form_id, $form_id, $copy_keys=false, $blog_id=false){
58 global $frm_duplicate_ids, $wpdb;
59 $fields = $this->getAll(array('fi.form_id' => $old_form_id), 'field_order', '', $blog_id);
60 foreach ((array)$fields as $field){
61 $values = array();
62 $new_key = ($copy_keys) ? $field->field_key : '';
63 if($copy_keys and substr($field->field_key, -1) == 2)
64 $new_key = rtrim($new_key, 2);
65 $values['field_key'] = FrmAppHelper::get_unique_key($new_key, $wpdb->prefix .'frm_fields', 'field_key');
66 $values['options'] = maybe_serialize($field->options);
67 $values['form_id'] = $form_id;
68 foreach (array('name', 'description', 'type', 'default_value', 'field_order', 'required', 'field_options') as $col)
69 $values[$col] = $field->{$col};
70 $values = apply_filters('frm_duplicated_field', $values);
71 $new_id = $this->create($values);
72 $frm_duplicate_ids[$field->id] = $new_id;
73 $frm_duplicate_ids[$field->field_key] = $new_id;
74 unset($field);
75 }
76 }
77
78 function update( $id, $values ){
79 global $wpdb;
80
81 if (isset($values['field_key']))
82 $values['field_key'] = FrmAppHelper::get_unique_key($values['field_key'], $wpdb->prefix .'frm_fields', 'field_key', $id);
83
84 if ( isset($values['required']) ) {
85 $values['required'] = (int) $values['required'];
86 }
87
88 if (isset($values['default_value']) and is_array($values['default_value']))
89 $values['default_value'] = serialize($values['default_value']);
90
91 if (isset($values['field_options']) and is_array($values['field_options']))
92 $values['field_options'] = serialize($values['field_options']);
93
94 if (isset($values['options']) and is_array($values['options']))
95 $values['options'] = serialize($values['options']);
96
97 $query_results = $wpdb->update( $wpdb->prefix .'frm_fields', $values, array( 'id' => $id ) );
98
99 if(isset($values['form_id'])){
100 $form_id = $values['form_id'];
101 }else{
102 $field = $this->getOne($id);
103 if($field)
104 $form_id = $field->form_id;
105 unset($field);
106 }
107 unset($values);
108
109 if($query_results){
110 wp_cache_delete( $id, 'frm_field' );
111 delete_transient('frm_all_form_fields_'. $form_id);
112 }
113
114 return $query_results;
115 }
116
117 function destroy( $id ){
118 global $wpdb;
119
120 do_action('frm_before_destroy_field', $id);
121 do_action('frm_before_destroy_field_'. $id);
122
123 wp_cache_delete( $id, 'frm_field' );
124 $field = $this->getOne($id);
125 if ( !$field ) {
126 return false;
127 }
128
129 delete_transient('frm_all_form_fields_'. $field->form_id);
130
131 $wpdb->query("DELETE FROM {$wpdb->prefix}frm_item_metas WHERE field_id='$id'");
132 return $wpdb->query("DELETE FROM {$wpdb->prefix}frm_fields WHERE id='$id'");
133 }
134
135 function getOne( $id ){
136 global $wpdb;
137 $results = wp_cache_get( $id, 'frm_field' );
138 if(!$results){
139
140 $where = (is_numeric($id)) ? 'id=%d' : 'field_key=%s';
141 $results = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}frm_fields WHERE $where", $id));
142
143 if($results){
144 wp_cache_set( $results->id, $results, 'frm_field' );
145 wp_cache_set( $results->field_key, $results, 'frm_field' );
146 }
147 }
148
149 if($results){
150 $results->field_options = maybe_unserialize($results->field_options);
151 if(isset($results->field_options['format']) and !empty($results->field_options['format']))
152 $results->field_options['format'] = addslashes($results->field_options['format']);
153 $results->options = maybe_unserialize($results->options);
154 $results->default_value = maybe_unserialize($results->default_value);
155 }
156
157 return stripslashes_deep($results);
158 }
159
160 function getAll($where=array(), $order_by = '', $limit = '', $blog_id=false){
161 global $wpdb;
162
163 if ($blog_id and is_multisite()){
164 global $wpmuBaseTablePrefix;
165 if($wpmuBaseTablePrefix)
166 $prefix = "{$wpmuBaseTablePrefix}{$blog_id}_";
167 else
168 $prefix = $wpdb->get_blog_prefix( $blog_id );
169
170 $table_name = "{$prefix}frm_fields";
171 $form_table_name = "{$prefix}frm_forms";
172 }else{
173 $table_name = $wpdb->prefix .'frm_fields';
174 $form_table_name = $wpdb->prefix .'frm_forms';
175 }
176
177 if(!empty($order_by) and !preg_match("/ORDER BY/", $order_by))
178 $order_by = " ORDER BY {$order_by}";
179
180 if(is_numeric($limit))
181 $limit = " LIMIT {$limit}";
182
183 $query = "SELECT fi.*, fr.name as form_name FROM {$table_name} fi LEFT OUTER JOIN {$form_table_name} fr ON fi.form_id=fr.id";
184 $old_where = $where;
185 if(is_array($where)){
186 global $frmdb;
187 extract($frmdb->get_where_clause_and_values( $where ));
188
189 $query .= "{$where}{$order_by}{$limit}";
190 $query = $wpdb->prepare($query, $values);
191 }else{
192 $query .= FrmAppHelper::prepend_and_or_where(' WHERE ', $where) . $order_by . $limit;
193 }
194
195 if ($limit == ' LIMIT 1' or $limit == 1){
196 $results = $wpdb->get_row($query);
197 }else{
198 $ak = is_array($old_where) ? array_keys($old_where) : $old_where;
199 if($order_by == ' ORDER BY field_order' and empty($limit) and empty($blog_id) and is_array($old_where) and count($old_where) == 1 and reset($ak) == 'fi.form_id'){
200 $save_cache = true;
201 $results = get_transient('frm_all_form_fields_'. reset($old_where));
202 if($results and (is_array($results) or is_object($results)))
203 $cached = true;
204 }
205 unset($ak);
206 if(!isset($cached))
207 $results = $wpdb->get_results($query);
208 }
209
210 if($results and !isset($cached)){
211 if(is_array($results)){
212 foreach($results as $r_key => $result){
213 wp_cache_set($result->id, $result, 'frm_field');
214 wp_cache_set($result->field_key, $result, 'frm_field');
215 $results[$r_key]->field_options = maybe_unserialize($result->field_options);
216 if(isset($results[$r_key]->field_options['format']) and !empty($results[$r_key]->field_options['format']))
217 $results[$r_key]->field_options['format'] = addslashes($results[$r_key]->field_options['format']);
218 $results[$r_key]->options = maybe_unserialize($result->options);
219 $results[$r_key]->default_value = maybe_unserialize($result->default_value);
220 $form_id = $result->form_id;
221
222 unset($r_key, $result);
223 }
224 if(isset($save_cache))
225 set_transient('frm_all_form_fields_'. $form_id, $results, 60*60*6);
226 unset($form_id);
227 }else{
228 wp_cache_set($results->id, $results, 'frm_field');
229 wp_cache_set($results->field_key, $results, 'frm_field');
230 $results->field_options = maybe_unserialize($results->field_options);
231 if(isset($results->field_options['format']) and !empty($results->field_options['format']))
232 $results->field_options['format'] = addslashes($results->field_options['format']);
233 $results->options = maybe_unserialize($results->options);
234 $results->default_value = maybe_unserialize($results->default_value);
235 }
236 }
237
238 return stripslashes_deep($results);
239 }
240
241 function getIds($where = '', $order_by = '', $limit = ''){
242 global $wpdb;
243
244 if ( !empty($order_by) && !preg_match("/ORDER BY/", $order_by) ){
245 $order_by = ' ORDER BY '. $order_by;
246 }
247
248 $query = "SELECT fi.id FROM {$wpdb->prefix}frm_fields fi " .
249 "LEFT OUTER JOIN {$wpdb->prefix}frm_forms fr ON fi.form_id=fr.id" .
250 FrmAppHelper::prepend_and_or_where(' WHERE ', $where) . $order_by . $limit;
251 if ($limit == ' LIMIT 1' or $limit == 1)
252 $results = $wpdb->get_var($query);
253 else
254 $results = $wpdb->get_col($query);
255 return $results;
256 }
257 }
258