Contact Form by WPForms – Drag & Drop Form Builder for WordPress - Version 1.1.7

Version Description

  • Added: Smart Tag for Dropdown/Multiple choice raw values, allowing for conditional email addres notifications (https://wpforms.com/docs/how-to-create-conditional-form-notifications-in-wpforms)
  • Added: Three column CSS field classes (https://wpforms.com/docs/how-to-create-multi-column-form-layouts-in-wpforms/)
  • Changed: Checkbox/Multiple Choice fields allow certain HTML to display in choice labels
Download this release

Release Info

Developer jaredatch
Plugin Icon 128x128 Contact Form by WPForms – Drag & Drop Form Builder for WordPress
Version 1.1.7
Comparing to
See all releases

Code changes from version 1.1.6.1 to 1.1.7

assets/css/admin-entries.css CHANGED
@@ -2,7 +2,7 @@
2
  Entries Styles
3
  ========================================================================== */
4
 
5
- #wpforms-entries .wpforms-clear {
6
  content: " ";
7
  display: table;
8
  }
@@ -16,6 +16,86 @@
16
  /* List / Table view
17
  -------------------------------------------------------------- */
18
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  #wpforms-entries .wp-list-table .column-date {
20
  width: 150px;
21
  }
@@ -24,41 +104,250 @@
24
  width: 100px;
25
  }
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
 
28
  /* Entry Details
29
  -------------------------------------------------------------- */
30
 
31
- #wpforms-entries {
 
 
32
 
 
 
 
33
  }
34
 
35
- #wpforms-entries .postbox {
36
- width: 100%;
 
 
 
 
37
  }
38
 
39
- #wpforms-entries .postbox h3 {
40
- border-bottom: 1px solid #eee;
41
- padding: 8px 12px;
42
- line-height: 1.4;
43
- font-size: 18px;
 
 
 
 
 
 
 
 
 
 
 
 
44
  margin: 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  }
46
 
47
- #wpforms-entries .postbox .inner {
 
 
 
 
 
 
 
 
 
48
  padding: 12px;
49
- line-height: 1.4;
50
- font-size: 14px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  }
52
 
53
- #wpforms-entries .postbox .entry-field {
54
- padding: 10px 0;
55
- border-bottom: 1px solid #eee;
56
  }
57
 
58
- #wpforms-entries .postbox .entry-field strong {
59
- display: block;
60
- margin: 0 0 4px 0;
61
  }
62
 
63
- /* Tabs
64
- --------------------------------------------- */
 
2
  Entries Styles
3
  ========================================================================== */
4
 
5
+ #wpforms-entries .wpforms-clear:before {
6
  content: " ";
7
  display: table;
8
  }
16
  /* List / Table view
17
  -------------------------------------------------------------- */
18
 
19
+ /* Form title and actions */
20
+ #wpforms-entries .form-details {
21
+ border-bottom: 1px solid #ddd;
22
+ padding-bottom: 15px;
23
+ margin: 0 0 10px;
24
+ }
25
+
26
+ #wpforms-entries .form-details-actions {
27
+ font-weight: 400;
28
+ font-size: 13px;
29
+ }
30
+
31
+ #wpforms-entries .form-details-action-links {
32
+ float: left;
33
+ }
34
+
35
+ #wpforms-entries .form-details-action-links a {
36
+ text-decoration: none;
37
+ display: inline-block;
38
+ margin: 0 12px 0 0;
39
+ }
40
+
41
+ #wpforms-entries .form-details-action-links a:last-of-type {
42
+ margin: 0;
43
+ }
44
+
45
+ #wpforms-entries .form-details-action-links .dashicons {
46
+ width: 16px;
47
+ height: 16px;
48
+ font-size: 16px;
49
+ }
50
+
51
+ #wpforms-entries .form-details-action-switch {
52
+ float: right;
53
+ vertical-align: top;
54
+ margin-top: -6px;
55
+ width: 225px;
56
+ }
57
+
58
+ #wpforms-entries .wp-list-table .column-indicators {
59
+ width: 35px;
60
+ text-align: center;
61
+ }
62
+
63
+ #wpforms-entries .wp-list-table .column-indicators a:focus {
64
+ -webkit-box-shadow: none;
65
+ box-shadow: none;
66
+ }
67
+
68
+ #wpforms-entries .wp-list-table .column-indicators .dashicons {
69
+ width: 14px;
70
+ height: 14px;
71
+ font-size: 14px;
72
+ margin-top: 3px;
73
+ }
74
+
75
+ /* Star indicator*/
76
+ #wpforms-entries .wp-list-table .indicator-star .dashicons {
77
+ margin-right: 6px;
78
+ }
79
+
80
+ #wpforms-entries .wp-list-table .indicator-star {
81
+ color: #e4e4e4;
82
+ }
83
+
84
+ #wpforms-entries .wp-list-table .indicator-star:hover,
85
+ #wpforms-entries .wp-list-table .indicator-star.unstar {
86
+ color: #0073aa;
87
+ }
88
+
89
+ /* Read indicator */
90
+ #wpforms-entries .wp-list-table .indicator-read {
91
+ color: #9ede84;
92
+ }
93
+
94
+ #wpforms-entries .wp-list-table .indicator-read:hover,
95
+ #wpforms-entries .wp-list-table .indicator-read.unread {
96
+ color: #e4e4e4;
97
+ }
98
+
99
  #wpforms-entries .wp-list-table .column-date {
100
  width: 150px;
101
  }
104
  width: 100px;
105
  }
106
 
107
+ #wpforms-entries .wp-list-table .sep {
108
+ color: #ddd;
109
+ }
110
+
111
+ #wpforms-entries .wp-list-table .delete {
112
+ /*color: #ddd;
113
+ color: #a00;*/
114
+ }
115
+
116
+ #wpforms-entries .wp-list-table .delete:hover {
117
+ color: red;
118
+ }
119
+
120
+ @media only screen and (max-width: 900px) {
121
+
122
+ #wpforms-entries .form-details-action-links {
123
+ float: none;
124
+ }
125
+
126
+ #wpforms-entries .form-details-action-switch {
127
+ float: none;
128
+ margin-top: 15px;
129
+ display: block;
130
+ }
131
+ }
132
+
133
+ @media only screen and (max-width: 790px) {
134
+ /* @todo */
135
+ }
136
 
137
  /* Entry Details
138
  -------------------------------------------------------------- */
139
 
140
+ #wpforms-entries .postbox .hndle {
141
+ cursor: default !important;
142
+ }
143
 
144
+ /* Navigation in page title area */
145
+ .wpforms-entry-back {
146
+ margin-right: 30px;
147
  }
148
 
149
+ .wpforms-entry-navigation {
150
+ font-size: 13px;
151
+ line-height: 29px;
152
+ display: inline-block;
153
+ position: relative;
154
+ top: -3px;
155
  }
156
 
157
+ .wpforms-entry-navigation-buttons .add-new-h2 {
158
+ top: auto !important;
159
+ margin: 0 !important;
160
+ padding: 4px 0px !important;
161
+ text-align: center;
162
+ background: #e4e4e4;
163
+ }
164
+
165
+ .wpforms-entry-navigation-buttons .add-new-h2.inactive {
166
+ opacity: 0.5;
167
+ pointer-events: none;
168
+ cursor: default;
169
+ color: #999;
170
+ }
171
+
172
+ .wpforms-entry-navigation-buttons .wpforms-entry-current {
173
+ top: auto;
174
  margin: 0;
175
+ text-align: center;
176
+ padding: 4px 10px;
177
+ position: relative;
178
+ text-decoration: none;
179
+ border: 1px solid #ccc;
180
+ -webkit-border-radius: 2px;
181
+ border-radius: 2px;
182
+ background: #fff;
183
+ font-size: 13px;
184
+ line-height: 29px;
185
+ text-transform: center;
186
+ }
187
+
188
+ .wpforms-entry-navigation-buttons .dashicons {
189
+ font-size: 16px;
190
+ height: auto;
191
+ width: 28px;
192
+ line-height: 29px;
193
+ }
194
+
195
+ /* Entry Fields metabox */
196
+ #wpforms-entry-fields h2.hndle {
197
+ font-size: 18px;
198
  }
199
 
200
+ #wpforms-entry-fields h2.hndle .dashicons {
201
+ font-size: 16px;
202
+ height: 16px;
203
+ width: 16px;
204
+ margin: 4px 4px 0 0;
205
+ /*color: #ffcc00;*/
206
+ color: #0073aa;
207
+ }
208
+
209
+ #wpforms-entry-fields .no-fields {
210
  padding: 12px;
211
+ margin: 0;
212
+ }
213
+
214
+ #wpforms-entry-fields .inside,
215
+ #wpforms-entry-fields .inside p {
216
+ padding: 0;
217
+ margin: 0;
218
+ }
219
+
220
+ #wpforms-entry-fields .inside .wpforms-entry-field-name {
221
+ font-weight: 600;
222
+ background: #ebf3fb;
223
+ padding: 8px 12px;
224
+ }
225
+
226
+ #wpforms-entry-fields .inside .wpforms-entry-field-value {
227
+ background: #fff;
228
+ padding: 8px 12px;
229
+ }
230
+
231
+ #wpforms-entry-fields .inside .empty .wpforms-entry-field-value {
232
+ font-style: italic;
233
+ color: #999;
234
+ }
235
+
236
+ #wpforms-entry-fields .wpforms-empty-field-toggle {
237
+ float: right;
238
+ text-decoration: none;
239
+ padding: 5px 0 0;
240
+ }
241
+
242
+ /* Entry Notes metabox */
243
+
244
+ #wpforms-entry-notes .inside {
245
+ margin: 0;
246
+ padding: 0;
247
+ }
248
+
249
+ #wpforms-entry-notes .wpforms-entry-notes-new {
250
+ padding: 10px;
251
+ }
252
+
253
+ #wpforms-entry-notes form {
254
+ display: none;
255
+ }
256
+
257
+ #wpforms-entry-notes .btns {
258
+ overflow: auto;
259
+ padding: 8px 0;
260
+ }
261
+
262
+ #wpforms-entry-notes .no-notes {
263
+ margin: 0;
264
+ padding: 4px 10px 8px;
265
+ }
266
+
267
+ #wpforms-entry-notes .wpforms-entry-notes-single {
268
+ padding: 10px;
269
+ border-top: 1px solid #e3e1e3;
270
+ }
271
+
272
+ #wpforms-entry-notes .wpforms-entry-notes-single p:last-of-type {
273
+ margin-bottom: 0;
274
+ }
275
+
276
+ #wpforms-entry-notes .wpforms-entry-notes-single.even {
277
+ background-color: #f9f9f9;
278
+ }
279
+
280
+ #wpforms-entry-notes .wpforms-entry-notes-byline {
281
+ color: #888;
282
+ margin-bottom: 10px;
283
+ }
284
+
285
+ #wpforms-entry-notes .wpforms-entry-notes-byline .sep {
286
+ color: #ddd;
287
+ }
288
+
289
+ #wpforms-entry-notes .wpforms-entry-notes-byline .note-user {
290
+ text-decoration: none;
291
+ font-weight: 600;
292
+ }
293
+
294
+ #wpforms-entry-notes .wpforms-entry-notes-byline .note-delete {
295
+ color: #a00;
296
+ text-decoration: none;
297
+ }
298
+
299
+ #wpforms-entry-notes .wpforms-entry-notes-byline .note-delete:hover {
300
+ color: red;
301
+ text-decoration: none;
302
+ }
303
+
304
+ /* Entry Details / Entry Action metaboxes */
305
+ #wpforms-entry-details .inside,
306
+ #wpforms-entry-actions .inside {
307
+ margin: 0;
308
+ padding: 0;
309
+ }
310
+
311
+ #wpforms-entries .wpforms-entry-details-meta,
312
+ #wpforms-entries .wpforms-entry-actions-meta {
313
+ padding: 6px 0 0;
314
+ }
315
+
316
+ #wpforms-entries .wpforms-entry-details-meta p,
317
+ #wpforms-entries .wpforms-entry-actions-meta p {
318
+ padding: 6px 10px 8px;
319
+ margin: 0;
320
+ }
321
+
322
+ #wpforms-entries .wpforms-entry-details-meta strong,
323
+ #wpforms-entries .wpforms-entry-actions-meta strong {
324
+ font-weight: 600;
325
+ }
326
+
327
+ #wpforms-entries .wpforms-entry-details-meta .dashicons,
328
+ #wpforms-entries .wpforms-entry-actions-meta .dashicons {
329
+ padding: 0 2px 0 0;
330
+ color: #82878A;
331
+ top: -1px;
332
+ left: -1px;
333
+ position: relative;
334
+ text-decoration: none;
335
+ }
336
+
337
+ #wpforms-entry-details .submitdelete {
338
+ color: #a00;
339
+ text-decoration: none;
340
+ padding: 1px 2px;
341
  }
342
 
343
+ #wpforms-entry-details .submitdelete:hover {
344
+ color: red;
 
345
  }
346
 
347
+ #wpforms-entries .wpforms-entry-actions-meta a {
348
+ text-decoration: none;
 
349
  }
350
 
351
+ #wpforms-entries .wpforms-entry-actions-meta a:hover {
352
+ text-decoration: underline;
353
+ }
assets/css/wpforms-base.css CHANGED
@@ -125,24 +125,48 @@
125
  /* Columns
126
  ----------------------------------------------------------------------------- */
127
 
128
- .wpforms-container .wpforms-one-half {
 
129
  float: left;
130
- width: 49%;
131
- margin-right: 2%;
132
  }
133
 
134
- .wpforms-container .wpforms-field.wpforms-first-half {
135
- float: left;
 
136
  width: 47%;
 
 
 
 
 
 
137
  clear: both;
138
  }
139
 
140
- .wpforms-container .wpforms-field.wpforms-second-half {
 
 
 
 
 
 
 
 
 
141
  float: right;
142
- width: 47%;
143
  clear: none;
144
  }
145
 
 
 
 
 
 
 
 
146
  .wpforms-container .wpforms-two-fifths {
147
  float: left;
148
  width: 39%;
125
  /* Columns
126
  ----------------------------------------------------------------------------- */
127
 
128
+ /* User column classes */
129
+ .wpforms-container .wpforms-first-half {
130
  float: left;
131
+ width: 47%;
132
+ clear: both;
133
  }
134
 
135
+ .wpforms-container .wpforms-second-half,
136
+ .wpforms-container .wpforms-last-half {
137
+ float: right;
138
  width: 47%;
139
+ clear: none;
140
+ }
141
+
142
+ .wpforms-container .wpforms-first-third {
143
+ float: left;
144
+ width: 29.333333%;
145
  clear: both;
146
  }
147
 
148
+ .wpforms-container .wpforms-middle-third,
149
+ .wpforms-container .wpforms-second-third {
150
+ float: left;
151
+ width: 29.333333%;
152
+ margin-left: 6%;
153
+ clear: none;
154
+ }
155
+
156
+ .wpforms-container .wpforms-last-third,
157
+ .wpforms-container .wpforms-third-third {
158
  float: right;
159
+ width: 29.333333%;
160
  clear: none;
161
  }
162
 
163
+ /* Private */
164
+ .wpforms-container .wpforms-one-half {
165
+ float: left;
166
+ width: 49%;
167
+ margin-right: 2%;
168
+ }
169
+
170
  .wpforms-container .wpforms-two-fifths {
171
  float: left;
172
  width: 39%;
assets/css/wpforms-full.css CHANGED
@@ -203,24 +203,48 @@ div.wpforms-container-full .wpforms-form .wpforms-field-row:after {
203
  /* Columns
204
  ----------------------------------------------------------------------------- */
205
 
206
- div.wpforms-container-full .wpforms-form .wpforms-one-half {
207
- float: left;
208
- width: 49%;
209
- margin-right: 2%;
210
- }
211
-
212
  div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-first-half {
213
  float: left;
214
  width: 47%;
215
  clear: both;
216
  }
217
 
218
- div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-second-half {
 
219
  float: right;
220
  width: 47%;
221
  clear: none;
222
  }
223
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
224
  div.wpforms-container-full .wpforms-form .wpforms-two-fifths {
225
  float: left;
226
  width: 39%;
@@ -473,7 +497,6 @@ div.wpforms-container-full .wpforms-form .wpforms-field-hidden {
473
  }
474
 
475
  /* ReCAPTCHA */
476
-
477
  div.wpforms-container-full .wpforms-form .wpforms-recaptcha-container iframe {
478
  width: inherit;
479
  }
203
  /* Columns
204
  ----------------------------------------------------------------------------- */
205
 
206
+ /* User column classes */
 
 
 
 
 
207
  div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-first-half {
208
  float: left;
209
  width: 47%;
210
  clear: both;
211
  }
212
 
213
+ div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-second-half,
214
+ div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-last-half {
215
  float: right;
216
  width: 47%;
217
  clear: none;
218
  }
219
 
220
+ div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-first-third {
221
+ float: left;
222
+ width: 29.333333%;
223
+ clear: both;
224
+ }
225
+
226
+ div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-middle-third,
227
+ div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-second-third {
228
+ float: left;
229
+ width: 29.333333%;
230
+ margin-left: 6%;
231
+ clear: none;
232
+ }
233
+
234
+ div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-last-third,
235
+ div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-third-third {
236
+ float: right;
237
+ width: 29.333333%;
238
+ clear: none;
239
+ }
240
+
241
+ /* Private */
242
+ div.wpforms-container-full .wpforms-form .wpforms-one-half {
243
+ float: left;
244
+ width: 49%;
245
+ margin-right: 2%;
246
+ }
247
+
248
  div.wpforms-container-full .wpforms-form .wpforms-two-fifths {
249
  float: left;
250
  width: 39%;
497
  }
498
 
499
  /* ReCAPTCHA */
 
500
  div.wpforms-container-full .wpforms-form .wpforms-recaptcha-container iframe {
501
  width: inherit;
502
  }
assets/css/wpforms-preview.css ADDED
@@ -0,0 +1,158 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ==========================================================================
2
+ WPForms Preview
3
+ ========================================================================== */
4
+
5
+ /*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */
6
+ progress,sub,sup{vertical-align:baseline}button,hr,input{overflow:visible}[type=checkbox],[type=radio],legend{box-sizing:border-box;padding:0}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:700}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{color:inherit;display:table;max-width:100%;white-space:normal}textarea{overflow:auto}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}
7
+
8
+ html,
9
+ input[type="search"]{
10
+ -webkit-box-sizing: border-box;
11
+ -moz-box-sizing: border-box;
12
+ box-sizing: border-box;
13
+ }
14
+
15
+ *,
16
+ *:before,
17
+ *:after {
18
+ box-sizing: inherit;
19
+ }
20
+
21
+ body {
22
+ background-color: #f1f1f1;
23
+ color: #333;
24
+ font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
25
+ font-size: 14px;
26
+ font-weight: 400;
27
+ line-height: 1.625;
28
+ }
29
+
30
+ .wpforms-preview {
31
+ border-top: 1px solid #eee;
32
+ background-color: #fff;
33
+ box-shadow: 0 1px 2px #ccc;
34
+ margin: 30px auto 20px auto;
35
+ overflow: auto;
36
+ padding: 30px;
37
+ max-width: 780px;
38
+ }
39
+
40
+ .error {
41
+ color: #a94442;
42
+ background-color: #f2dede;
43
+ padding: 15px;
44
+ border: 1px solid #ebcccc;
45
+ }
46
+
47
+ .site {
48
+ text-align: center;
49
+ font-size: 12px;
50
+ }
51
+
52
+ .site a {
53
+ text-decoration: none;
54
+ }
55
+
56
+ h1,
57
+ h2,
58
+ h3,
59
+ h4,
60
+ h5,
61
+ h6 {
62
+ color: #333;
63
+ font-weight: 700;
64
+ line-height: 1.2;
65
+ margin: 0;
66
+ margin-bottom: 16px;
67
+ padding: 0;
68
+ }
69
+
70
+ a {
71
+ color: #0073aa;
72
+ }
73
+
74
+ a:hover, a:active, a:focus {
75
+ color: #0096dd;
76
+ }
77
+
78
+ /* Print Preview
79
+ --------------------------------------------- */
80
+
81
+ #print h1 {
82
+ font-size: 24px;
83
+ font-weight: 600;
84
+ margin: 0 0 26px 0;
85
+ }
86
+
87
+ #print h1 span {
88
+ font-weight: 400;
89
+ }
90
+
91
+ #print .buttons {
92
+ float: right;
93
+ }
94
+
95
+ #print .buttons .button {
96
+ font-weight: normal;
97
+ width: 70px;
98
+ text-align: center;
99
+ font-size: 14px;
100
+ margin-left: 10px;
101
+ }
102
+
103
+ #print .fields {
104
+ border: 1px solid #eee;
105
+ }
106
+
107
+ #print .wpforms-entry-field-name {
108
+ font-weight: 600;
109
+ background: #ebf3fb;
110
+ padding: 8px 12px;
111
+ margin: 0;
112
+ }
113
+
114
+ #print .wpforms-entry-field-value {
115
+ background: #fff;
116
+ padding: 8px 12px;
117
+ margin: 0;
118
+ }
119
+
120
+ @media print {
121
+
122
+ .wpforms-preview {
123
+ border: none;
124
+ box-shadow: none;
125
+ padding: 30px 0 15px;
126
+ margin: 0;
127
+ width: 100%;
128
+ max-width: 100%;
129
+ }
130
+
131
+ #print h1 {
132
+ text-align: center;
133
+ }
134
+
135
+ #print .buttons {
136
+ display: none;
137
+ }
138
+
139
+ #print .fields {
140
+ border: 1px solid #ccc;
141
+ }
142
+
143
+ #print .wpforms-entry-field {
144
+ border-top: 1px solid #ccc;
145
+ }
146
+
147
+ #print .wpforms-entry-field:first-of-type {
148
+ border: none;
149
+ }
150
+
151
+ #print .wpforms-entry-field-name {
152
+ padding: 8px 12px 0 8px;
153
+ }
154
+
155
+ #print .wpforms-entry-field-value {
156
+ padding-top: 6px;
157
+ }
158
+ }
assets/js/admin-entries-list.js DELETED
@@ -1,13 +0,0 @@
1
- ;(function($){
2
- $(function(){
3
-
4
- // Confirm entry deletion
5
- $(document).on('click', '#wpforms-entries .wp-list-table .delete', function(e) {
6
- if ( confirm( wpforms_entries.delete_confirm ) ) {
7
- return true;
8
- }
9
- return false;
10
- });
11
-
12
- });
13
- }(jQuery));
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/js/wpforms-preview.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ;(function($){
2
+ $(function(){
3
+
4
+ // Print page
5
+ $(document).on('click', '.print', function(e) {
6
+ e.preventDefault();
7
+ window.print();
8
+ });
9
+
10
+ // Close page
11
+ $(document).on('click', '.close-window', function(e) {
12
+ e.preventDefault();
13
+ window.close();
14
+ });
15
+
16
+ });
17
+ }(jQuery));
includes/admin/ajax-actions.php CHANGED
@@ -211,4 +211,66 @@ function wpforms_install_addon() {
211
 
212
  wp_send_json_error( __( 'Could not install addon. Please download from wpforms.com and install manually.', 'wpforms' ) );
213
  }
214
- add_action( 'wp_ajax_wpforms_install_addon', 'wpforms_install_addon' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
211
 
212
  wp_send_json_error( __( 'Could not install addon. Please download from wpforms.com and install manually.', 'wpforms' ) );
213
  }
214
+ add_action( 'wp_ajax_wpforms_install_addon', 'wpforms_install_addon' );
215
+
216
+ /**
217
+ * Toggle entry stars from Entries table.
218
+ *
219
+ * @since 1.1.6
220
+ */
221
+ function wpforms_entry_list_star() {
222
+
223
+ // Run a security check
224
+ check_ajax_referer( 'wpforms-entries-list', 'nonce' );
225
+
226
+ // Check for permissions
227
+ if ( !current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
228
+ wp_send_json_error();
229
+ }
230
+
231
+ if ( empty( $_POST['entry_id'] ) || empty( $_POST['task'] ) ) {
232
+ wp_send_json_error();
233
+ }
234
+
235
+ $task = $_POST['task'];
236
+ $entry_id = absint( $_POST['entry_id'] );
237
+
238
+ if ( 'star' == $task ) {
239
+ wpforms()->entry->update( $entry_id, array( 'starred' => '1' ) );
240
+ } elseif ( 'unstar' == $task ) {
241
+ wpforms()->entry->update( $entry_id, array( 'starred' => '0' ) );
242
+ }
243
+ wp_send_json_success();
244
+ }
245
+ add_action( 'wp_ajax_wpforms_entry_list_star', 'wpforms_entry_list_star' );
246
+
247
+ /**
248
+ * Toggle entry read state from Entries table.
249
+ *
250
+ * @since 1.1.6
251
+ */
252
+ function wpforms_entry_list_read() {
253
+
254
+ // Run a security check
255
+ check_ajax_referer( 'wpforms-entries-list', 'nonce' );
256
+
257
+ // Check for permissions
258
+ if ( !current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
259
+ wp_send_json_error();
260
+ }
261
+
262
+ if ( empty( $_POST['entry_id'] ) || empty( $_POST['task'] ) ) {
263
+ wp_send_json_error();
264
+ }
265
+
266
+ $task = $_POST['task'];
267
+ $entry_id = absint( $_POST['entry_id'] );
268
+
269
+ if ( 'read' == $task ) {
270
+ wpforms()->entry->update( $entry_id, array( 'viewed' => '1' ) );
271
+ } elseif ( 'unread' == $task ) {
272
+ wpforms()->entry->update( $entry_id, array( 'viewed' => '0' ) );
273
+ }
274
+ wp_send_json_success();
275
+ }
276
+ add_action( 'wp_ajax_wpforms_entry_list_read', 'wpforms_entry_list_read' );
includes/admin/builder/class-builder.php CHANGED
@@ -66,6 +66,9 @@ class WPForms_Builder {
66
  // Only load if we are actually on the builder
67
  if ( $page == 'wpforms-builder' ) {
68
 
 
 
 
69
  // Load form if found
70
  $form_id = isset( $_GET['form_id'] ) ? absint( $_GET['form_id'] ) : false;
71
 
@@ -97,7 +100,7 @@ class WPForms_Builder {
97
  }
98
 
99
  /**
100
- * Define TinyMCE buttons to use with oru fancy editor instances.
101
  *
102
  * @since 1.0.3
103
  * @param array $buttons
66
  // Only load if we are actually on the builder
67
  if ( $page == 'wpforms-builder' ) {
68
 
69
+ // Builder specific functions
70
+ require_once WPFORMS_PLUGIN_DIR . 'includes/admin/builder/functions.php';
71
+
72
  // Load form if found
73
  $form_id = isset( $_GET['form_id'] ) ? absint( $_GET['form_id'] ) : false;
74
 
100
  }
101
 
102
  /**
103
+ * Define TinyMCE buttons to use with our fancy editor instances.
104
  *
105
  * @since 1.0.3
106
  * @param array $buttons
includes/admin/class-settings.php CHANGED
@@ -180,7 +180,7 @@ class WPForms_Settings {
180
 
181
  printf( '<div class="updated below-h2"><p>%s</p></div>', __( 'General settings updated.', 'wpforms' ) );
182
 
183
- }
184
  }
185
  }
186
  ?>
180
 
181
  printf( '<div class="updated below-h2"><p>%s</p></div>', __( 'General settings updated.', 'wpforms' ) );
182
 
183
+ }
184
  }
185
  }
186
  ?>
includes/admin/class-upgrades.php CHANGED
@@ -11,7 +11,7 @@
11
  class WPForms_Upgrades {
12
 
13
  /**
14
- * Upgrade property, if upgrade is detected.
15
  *
16
  * @since 1.0.0
17
  * @var boolean
@@ -38,31 +38,14 @@ class WPForms_Upgrades {
38
  // Retreive last known version
39
  $version = get_option( 'wpforms_version' );
40
 
41
- /*
42
- Example for future upgrades
43
- if ( version_compare( $version, '1.1.0', '<' ) ) {
44
- $this->v110_upgrade();
45
- }
46
- */
47
-
48
  // If upgrade has occured, update version options in database
49
- if ( $this->upgrade ) {
50
  update_option( 'wpforms_version_upgraded_from', $version );
51
  update_option( 'wpforms_version', WPFORMS_VERSION );
52
  }
53
  }
54
-
55
- /**
56
- * Currently a placeholder function to serve as an example.
57
- *
58
- * @since 1.0.0
59
- */
60
- private function v110_upgrade() {
61
-
62
- // Do upgrade stuff
63
-
64
- $this->upgraded = true;
65
- }
66
-
67
  }
68
  new WPForms_Upgrades;
11
  class WPForms_Upgrades {
12
 
13
  /**
14
+ * Have we upgraded?
15
  *
16
  * @since 1.0.0
17
  * @var boolean
38
  // Retreive last known version
39
  $version = get_option( 'wpforms_version' );
40
 
41
+ if ( ! $version )
42
+ return;
43
+
 
 
 
 
44
  // If upgrade has occured, update version options in database
45
+ if ( $this->upgraded ) {
46
  update_option( 'wpforms_version_upgraded_from', $version );
47
  update_option( 'wpforms_version', WPFORMS_VERSION );
48
  }
49
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  }
51
  new WPForms_Upgrades;
includes/admin/class-welcome.php CHANGED
@@ -186,16 +186,12 @@ class WPForms_Welcome {
186
  }
187
 
188
  // Check if this is an update or first install
189
- $upgrade = get_option( 'wpforms_version_upgraded' );
190
 
191
  if ( ! $upgrade ) {
192
  // Initial install
193
  wp_safe_redirect( admin_url( 'index.php?page=wpforms-getting-started' ) );
194
  exit;
195
- } else {
196
- // Update
197
- wp_safe_redirect( admin_url( 'index.php?page=wpforms-whats-new' ) );
198
- exit;
199
  }
200
  }
201
 
186
  }
187
 
188
  // Check if this is an update or first install
189
+ $upgrade = get_option( 'wpforms_version_upgraded_from' );
190
 
191
  if ( ! $upgrade ) {
192
  // Initial install
193
  wp_safe_redirect( admin_url( 'index.php?page=wpforms-getting-started' ) );
194
  exit;
 
 
 
 
195
  }
196
  }
197
 
includes/admin/entries/class-entries-table.php DELETED
@@ -1,351 +0,0 @@
1
- <?php
2
- /**
3
- * Generates the table on the entries overview page.
4
- *
5
- * @package WPForms
6
- * @author WPForms
7
- * @since 1.0.0
8
- * @license GPL-2.0+
9
- * @copyright Copyright (c) 2016, WPForms LLC
10
- */
11
- class WPForms_Entries_Table extends WP_List_Table {
12
-
13
- /**
14
- * Number of entries to show per page.
15
- *
16
- * @since 1.0.0
17
- */
18
- public $per_page;
19
-
20
- /**
21
- * Form object.
22
- *
23
- * @since 1.0.0
24
- */
25
- public $form;
26
-
27
- /**
28
- * Form data as an array
29
- *
30
- * @since 1.0.0
31
- */
32
- public $form_data;
33
-
34
- /**
35
- * Form id.
36
- *
37
- * @since 1.0.0
38
- */
39
- public $form_id;
40
-
41
- /**
42
- * Number of different entry types
43
- *
44
- * @since 1.0.0
45
- */
46
- public $counts;
47
-
48
- /**
49
- * Primary class constructor.
50
- *
51
- * @since 1.0.0
52
- */
53
- public function __construct() {
54
-
55
- // Bring globals into scope for parent.
56
- global $status, $page;
57
-
58
- // Utilize the parent constructor to build the main class properties.
59
- parent::__construct(
60
- array(
61
- 'singular' => 'entry',
62
- 'plural' => 'entries',
63
- 'ajax' => false,
64
- )
65
- );
66
-
67
- // Retrieve current form ID
68
- $this->form_id = isset( $_GET['form_id'] ) ? absint( $_GET['form_id'] ) : '';
69
-
70
- // If there is no form ID, default to first form
71
- if ( empty( $this->form_id ) ) {
72
- $forms = wpforms()->form->get( '', array( 'orderby' => 'ID', 'order' => 'ASC' ) );
73
- $this->form_id = $forms[0]->ID;
74
- }
75
-
76
- // Retrieve current form
77
- $this->form = wpforms()->form->get( $this->form_id );
78
-
79
- // Set form data
80
- $this->form_data = wpforms_decode( $this->form->post_content );
81
-
82
- // Retrieve various entry types
83
- $this->get_counts();
84
-
85
- // Default number of forms to show per page
86
- $this->per_page = apply_filters( 'wpforms_entries_per_page', 30 );
87
- }
88
-
89
- /**
90
- * Get the entry counts for varios types of entries.
91
- *
92
- * @since 1.0.0
93
- */
94
- public function get_counts() {
95
-
96
- $this->counts = array();
97
- $this->counts['total'] = wpforms()->entry->get_entries( array( 'form_id' => $this->form_id ), true );
98
- }
99
-
100
- /**
101
- * Retrieve the table columns
102
- *
103
- * @since 1.0.0
104
- * @return array $columns Array of all the list table columns
105
- */
106
- public function get_columns() {
107
-
108
- $columns = array();
109
- $columns['cb'] = '<input type="checkbox" />';
110
- $columns = $this->get_columns_form_fields( $columns );
111
- $columns['date'] = __( 'Date', 'wpforms' );
112
- $columns['actions'] = __( 'Actions', 'wpforms' );
113
-
114
- return apply_filters( 'wpforms_entries_table_columns', $columns );
115
- }
116
-
117
- /**
118
- * Logic to determine which fields are displayed in the table columns.
119
- *
120
- * @since 1.0.0
121
- * @param array $columns
122
- * @return array
123
- */
124
- public function get_columns_form_fields( $columns = array() ) {
125
-
126
- $field_columns = wpforms()->form->get_meta( $this->form_id, 'field_columns' );
127
-
128
- if ( ! $field_columns && !empty( $this->form_data['fields'] ) ) {
129
- $x = 0;
130
- foreach ( $this->form_data['fields'] as $id => $field ) {
131
- $disallow = apply_filters( 'wpforms_entries_table_fields_disallow', array( 'divider', 'html' ) );
132
- if ( !in_array( $field['type'], $disallow ) && $x < 3 ) {
133
- $name = !empty( $field['label'] ) ? wp_strip_all_tags( $field['label'] ) : __( 'Field', 'wpforms' );
134
- $columns['wpforms_field_' . $id] = $name;
135
- $x++;
136
- }
137
- }
138
- }
139
-
140
- return $columns;
141
- }
142
-
143
- /**
144
- * Render the checkbox column.
145
- *
146
- * @since 1.0.0
147
- * @param array
148
- * @return string
149
- */
150
- public function column_cb( $entry ) {
151
-
152
- return '<input type="checkbox" name="entry_id[]" value="' . absint( $entry->entry_id ) . '" />';
153
- }
154
-
155
- /**
156
- * Show specific form fields.
157
- *
158
- * @since 1.0.0
159
- * @param object $entry
160
- * @param string $column_name
161
- * @return string
162
- */
163
- public function column_form_field( $entry, $column_name ) {
164
-
165
- $field_id = str_replace( 'wpforms_field_', '', $column_name );
166
- $entry_fields = wpforms_decode( $entry->fields );
167
-
168
- if ( !empty( $entry_fields[$field_id] ) && !empty( $entry_fields[$field_id]['value'] ) ) {
169
-
170
- $value = $entry_fields[$field_id]['value'];
171
-
172
- if ( $entry_fields[$field_id]['type'] == 'textarea' ) {
173
- $value = ( strlen( $value ) > 75 ) ? substr( $value , 0, 75 ). '&hellip;' : $value;
174
- }
175
-
176
- return nl2br( wp_strip_all_tags( $value ) );
177
- } else {
178
- return '-';
179
- }
180
- }
181
-
182
- /**
183
- * Renders the columns.
184
- *
185
- * @since 1.0.0
186
- * @param object $entry
187
- * @param string $column_name
188
- * @return string
189
- */
190
- public function column_default( $entry, $column_name ) {
191
-
192
- switch( $column_name ) {
193
-
194
- case 'id':
195
- $value = absint( $entry->entry_id );
196
- break;
197
-
198
- case 'date':
199
- $value = date_i18n( get_option( 'date_format' ), strtotime( $entry->date ) );
200
- break;
201
-
202
- default:
203
- if ( false !== strpos( $column_name, 'wpforms_field_' ) ) {
204
- $value = $this->column_form_field( $entry, $column_name );
205
- } else {
206
- $value = '';
207
- }
208
- }
209
-
210
- return apply_filters( 'wpforms_entry_table_column_value', $value, $entry, $column_name );
211
- }
212
-
213
- /**
214
- * Render the actions column.
215
- *
216
- * @since 1.0.0
217
- * @param array $entry
218
- * @return string
219
- */
220
- public function column_actions( $entry ) {
221
-
222
- $actions = array();
223
-
224
- // View
225
- $actions[] = sprintf( '<a href="%s" title="%s" class="view">%s</a>',
226
- add_query_arg( array( 'view' => 'details', 'entry_id' => $entry->entry_id ), admin_url( 'admin.php?page=wpforms-entries' ) ),
227
- __( 'View Form Entry', 'wpforms' ),
228
- __( 'View', 'wpforms' )
229
- );
230
-
231
- // Delete
232
- $actions[] = sprintf( '<a href="%s" title="%s" class="delete">%s</a>',
233
- wp_nonce_url( add_query_arg( array( 'view' => 'list', 'action' => 'delete', 'form_id' => $this->form_id, 'entry_id' => $entry->entry_id ) ), 'wpforms_delete_entry_nonce' ),
234
- __( 'Delete Form Entry', 'wpforms' ),
235
- __( 'Delete', 'wpforms' )
236
- );
237
-
238
- return implode( ' | ', apply_filters( 'wpforms_entry_table_actions', $actions, $entry ) );
239
- }
240
-
241
- /**
242
- * Define bulk actions available for our table listing
243
- *
244
- * @since 1.0.0
245
- * @return array
246
- */
247
- public function get_bulk_actions() {
248
- // @todo
249
- $actions = array(
250
- //'viewed' => __( 'Mark as Viewed', 'wpforms' ),
251
- //'star' => __( 'Star', 'wpforms' ),
252
- 'delete' => __( 'Delete', 'wpforms' ),
253
-
254
- );
255
- return $actions;
256
- }
257
-
258
- /**
259
- * Process the bulk actions
260
- *
261
- * @since 1.0.0
262
- */
263
- public function process_bulk_actions() {
264
-
265
- $ids = isset( $_GET['entry_id'] ) ? $_GET['entry_id'] : array();
266
-
267
- if ( ! is_array( $ids ) ) {
268
- $ids = array( $ids );
269
- }
270
-
271
- $ids = array_map( 'absint', $ids );
272
- $action = ! empty( $_REQUEST['action'] ) ? $_REQUEST['action'] : false;
273
-
274
- if ( empty( $ids ) || empty( $action ) ) {
275
- return;
276
- }
277
-
278
- // Delete one or multiple entries - both delete links and bulk actions
279
- if ( 'delete' === $this->current_action() ) {
280
- if ( wp_verify_nonce( $_GET['_wpnonce'], 'bulk-entries' ) || wp_verify_nonce( $_GET['_wpnonce'], 'wpforms_delete_entry_nonce') ) {
281
- foreach ( $ids as $id ) {
282
- wpforms()->entry->delete( $id );
283
- }
284
- printf( '<div class="updated"><p>%s</p></div>', _n( 'Entry successfully deleted.', 'Entries successfully deleted', count( $ids ), 'wpforms' ) );
285
- } else {
286
- printf( '<div class="error"><p>%s</p></div>', __( 'Security check failed', 'wpforms' ) );
287
- }
288
- }
289
- }
290
-
291
- /**
292
- * Message to be displayed when there are no entries.
293
- *
294
- * @since 1.0.0
295
- */
296
- public function no_items() {
297
-
298
- _e( 'Whoops, it appears you do not have any form entries yet.', 'wpforms' );
299
- }
300
-
301
- /**
302
- * Fetch and setup the final data for the table
303
- *
304
- * @since 1.0.0
305
- */
306
- public function prepare_items() {
307
-
308
- // Process bulk actions if found
309
- $this->process_bulk_actions();
310
-
311
- // Setup the columns
312
- $columns = $this->get_columns();
313
-
314
- // Hidden columns (none)
315
- $hidden = array();
316
-
317
- // Define which columns can be sorted
318
- $sortable = array(
319
- 'id' => array( 'title', false ),
320
- 'date' => array( 'date', false )
321
- );
322
-
323
- // Set column headers
324
- $this->_column_headers = array( $columns, $hidden, $sortable );
325
-
326
- // Get entries
327
- $page = $this->get_pagenum();
328
- $order = isset( $_GET['order'] ) ? $_GET['order'] : 'DESC';
329
- $orderby = isset( $_GET['orderby'] ) ? $_GET['orderby'] : 'entry_id';
330
- $per_page = $this->get_items_per_page( 'wpforms_entries_per_page', $this->per_page );
331
- $data = wpforms()->entry->get_entries( array(
332
- 'form_id' => $this->form_id,
333
- 'number' => $per_page,
334
- 'offset' => $per_page * ( $page - 1 ),
335
- 'order' => $order,
336
- 'orderby' => $orderby,
337
- ) );
338
-
339
- // Giddy up
340
- $this->items = $data;
341
-
342
- // Finalize pagination
343
- $this->set_pagination_args(
344
- array(
345
- 'total_items' => $this->counts['total'],
346
- 'per_page' => $per_page,
347
- 'total_pages' => ceil( $this->counts['total'] / $per_page ),
348
- )
349
- );
350
- }
351
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/entries/class-entries.php DELETED
@@ -1,409 +0,0 @@
1
- <?php
2
- /**
3
- * Primary entries page inside the admin.
4
- *
5
- * @package WPForms
6
- * @author WPForms
7
- * @since 1.0.0
8
- * @license GPL-2.0+
9
- * @copyright Copyright (c) 2016, WPForms LLC
10
- */
11
- class WPForms_Entries {
12
-
13
- /**
14
- * Current view
15
- *
16
- * @since 1.0.0
17
- */
18
- public $view;
19
-
20
- /**
21
- * Primary class constructor.
22
- *
23
- * @since 1.0.0
24
- */
25
- public function __construct() {
26
-
27
- // Maybe load entries page
28
- add_action( 'admin_init', array( $this, 'init' ) );
29
-
30
- // Setup screen options
31
- add_action( 'load-wpforms_page_wpforms-entries', array( $this, 'screen_options' ) );
32
- add_filter( 'set-screen-option', array( $this, 'screen_options_set' ), 10, 3 );
33
- }
34
-
35
- /**
36
- * Determing if the user is viewing the entries page, if so, party on.
37
- *
38
- * @since 1.0.0
39
- */
40
- public function init() {
41
-
42
- // Check what page we are on
43
- $page = isset( $_GET['page'] ) ? $_GET['page'] : '';
44
-
45
- // Only load if we are actually on the overview page
46
- if ( $page == 'wpforms-entries' ) {
47
-
48
- // Determine what manage page view to load, defaults to new form
49
- $this->view = isset( $_GET['view'] ) ? $_GET['view'] : 'list';
50
-
51
- // List view -----------------------------------------------------//
52
- if ( 'list' == $this->view ) {
53
-
54
- if ( ! class_exists( 'WP_List_Table' ) ) {
55
- require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
56
- }
57
-
58
- // Load the class that builds the entries table
59
- require_once WPFORMS_PLUGIN_DIR . 'includes/admin/entries/class-entries-table.php';
60
- }
61
-
62
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueues' ) );
63
- add_action( 'wpforms_admin_page', array( $this, 'output' ) );
64
-
65
- // Provide hook for add-ons
66
- do_action( 'wpforms_entries_init', $this->view );
67
- }
68
- }
69
-
70
- /**
71
- * Add per-page screen option to the Entries table.
72
- *
73
- * @since 1.0.0
74
- */
75
- function screen_options() {
76
-
77
- $screen = get_current_screen();
78
-
79
- if ( $screen->id !== 'wpforms_page_wpforms-entries' ) {
80
- return;
81
- }
82
-
83
- add_screen_option(
84
- 'per_page',
85
- array(
86
- 'label' => __( 'Number of entries per page:', 'wpforms' ),
87
- 'option' => 'wpforms_entries_per_page',
88
- 'default' => apply_filters( 'wpforms_entries_per_page', 30 ),
89
- )
90
- );
91
- }
92
-
93
- /**
94
- * Entries table per-page screen option value
95
- *
96
- * @since 1.0.0
97
- * @param mixed $status
98
- * @param string $option
99
- * @param mixed $value
100
- * @return mixed
101
- */
102
- function screen_options_set( $status, $option, $value ) {
103
-
104
- if ( 'wpforms_entries_per_page' === $option ) {
105
- return $value;
106
- }
107
-
108
- return $status;
109
- }
110
-
111
- /**
112
- * Enqueue assets for the entries pages.
113
- *
114
- * @since 1.0.0
115
- */
116
- public function enqueues() {
117
-
118
- // Conditionall load CSS based on view
119
- if ( 'list' == $this->view ) {
120
-
121
- wp_enqueue_style(
122
- 'wpforms-entries',
123
- WPFORMS_PLUGIN_URL . 'assets/css/admin-entries.css',
124
- null,
125
- WPFORMS_VERSION
126
- );
127
-
128
- wp_enqueue_script(
129
- 'wpforms-entries-list',
130
- WPFORMS_PLUGIN_URL . 'assets/js/admin-entries-list.js',
131
- array( 'jquery' ),
132
- WPFORMS_VERSION,
133
- false
134
- );
135
-
136
- wp_localize_script(
137
- 'wpforms-entries-list',
138
- 'wpforms_entries',
139
- array(
140
- 'delete_confirm' => __( 'Are you sure you want to delete this entry?', 'wpforms' ),
141
- )
142
- );
143
-
144
- }
145
-
146
- if ( 'details' == $this->view ) {
147
-
148
- wp_enqueue_style(
149
- 'wpforms-entries',
150
- WPFORMS_PLUGIN_URL . 'assets/css/admin-entries.css',
151
- null,
152
- WPFORMS_VERSION
153
- );
154
- }
155
-
156
- // Hook for add-ons
157
- do_action( 'wpforms_entries_enqueue', $this->view );
158
- }
159
-
160
- /**
161
- * Build the output for the entries page.
162
- *
163
- * @since 1.0.0
164
- */
165
- public function output() {
166
-
167
- printf( '<div id="wpforms-entries" class="wrap %s">', sanitize_html_class( $this->view ) );
168
-
169
- // Determine what view to load
170
- switch ( $this->view ) {
171
-
172
- // Select form to view entries
173
- case 'select' :
174
- $this->output_select();
175
- break;
176
-
177
- // List entries in form
178
- case 'list' :
179
- $this->output_list();
180
- break;
181
-
182
- // View entry details
183
- case 'details' :
184
- $this->output_details();
185
- break;
186
- }
187
-
188
- echo '</div>';
189
- }
190
-
191
- /**
192
- * Select a form to view entries.
193
- *
194
- * @since 1.0.0
195
- */
196
- public function output_select() {
197
-
198
- $forms_args = apply_filters( 'wpforms_entry_select_args', array( 'orderby' => 'ID', 'order' => 'ASC' ) );
199
- $forms = wpforms()->form->get( '', $forms_args );
200
- ?>
201
-
202
- <h1 class="page-title"><?php _e( 'Entries', 'wpforms' ); ?></h1>
203
-
204
- <?php if ( empty( $forms ) ) : ?>
205
-
206
- <?php printf( __( 'Whoops, you haven\'t created a form yet. Want to <a href="%s">give it a go</a>?', 'wpforms' ), admin_url( 'admin.php?page=wpforms-builder' ) ); ?>
207
-
208
- <?php else : ?>
209
-
210
- <p><?php _e( 'Select a form to view entries', 'wpforms' ); ?></p>
211
-
212
- <form id="wpforms-entry-select" method="get" action="<?php echo admin_url( 'admin.php' ); ?>">
213
-
214
- <input type="hidden" name="page" value="wpforms-entries" />
215
-
216
- <input type="hidden" name="view" value="list" />
217
-
218
- <select name="form_id" style="width:300px;">
219
- <?php
220
- foreach( $forms as $key => $form) {
221
- printf( '<option value="%d">%s</option>', $form->ID, esc_html( $form->post_title ) );
222
- }
223
- ?>
224
- </select>
225
-
226
- <input type="submit" value="<?php _e( 'View Entries', 'wpforms' ); ?>" class="button button-primary">
227
-
228
- </form>
229
-
230
- <?php endif;
231
- }
232
-
233
- /**
234
- * List all entries in a specific form.
235
- *
236
- * @since 1.0.0
237
- */
238
- public function output_list() {
239
-
240
- $forms = wpforms()->form->get( '', array( 'orderby' => 'ID', 'order' => 'ASC' ) );
241
-
242
- printf( '<h1 class="page-title">%s</h1>', __( 'Entries' ) );
243
-
244
- // Double check that a form ID is present
245
- if ( empty( $_GET['form_id'] ) ) {
246
-
247
- // If not, default to first form
248
- $form_id = $forms[0]->ID;
249
-
250
- //printf( '<div class="error"><p>%s</p></div>', __( 'Please select a form to view entries.', 'wpforms' ) );
251
- //return;
252
- } else {
253
- $form_id = absint( $_GET['form_id'] );
254
- }
255
-
256
- // Retrieve the form
257
- $form = wpforms()->form->get( $form_id );
258
-
259
- // Double check that we found a real form
260
- if ( empty( $_GET['form_id'] ) && !$form ) {
261
- printf( '<div class="notice notice-info"><p>%s</p></div>', __( 'You need to create your first form before you can view the entries.', 'wpforms' ) );
262
- return;
263
- } else if ( ! $form ) {
264
- printf( '<div class="error"><p>%s</p></div>', __( 'Invalid form.', 'wpforms' ) );
265
- return;
266
- }
267
-
268
- $entries_table = new WPForms_Entries_Table;
269
- $entries_table->prepare_items();
270
- ?>
271
-
272
- <div class="form-details">
273
-
274
- <h3>
275
- <?php echo wp_strip_all_tags( $form->post_title ); ?>
276
- <a href="<?php echo add_query_arg( array( 'view' => 'fields', 'form_id' => $form_id ), admin_url( 'admin.php?page=wpforms-builder' ) ); ?>">(<?php _e( 'edit', 'wpforms' ); ?>)</a>
277
- </h3>
278
-
279
- <?php _e( 'Select a form to view entries', 'wpforms' ); ?></p>
280
-
281
- <form id="wpforms-entry-select" method="get" action="<?php echo admin_url( 'admin.php' ); ?>">
282
-
283
- <input type="hidden" name="page" value="wpforms-entries" />
284
-
285
- <input type="hidden" name="view" value="list" />
286
-
287
- <select name="form_id" style="width:300px;">
288
- <?php
289
- foreach( $forms as $key => $form) {
290
- printf( '<option value="%d" %s>%s</option>', $form->ID, selected( $form_id, $form->ID, false ), esc_html( $form->post_title ) );
291
- }
292
- ?>
293
- </select>
294
-
295
- <input type="submit" value="<?php _e( 'View Entries', 'wpforms' ); ?>" class="button button-primary">
296
-
297
- </form>
298
-
299
- </div>
300
-
301
- <form id="wpforms-entries-table" method="get" action="<?php echo admin_url( 'admin.php?page=wpforms-entries' ); ?>">
302
-
303
- <input type="hidden" name="page" value="wpforms-entries" />
304
-
305
- <input type="hidden" name="view" value="list" />
306
-
307
- <input type="hidden" name="form_id" value="<?php echo absint( $form_id ); ?>" />
308
-
309
- <?php $entries_table->views(); ?>
310
- <?php $entries_table->display(); ?>
311
-
312
- </form>
313
-
314
- <?php
315
- $form->post_content = wpforms_decode( $form->post_content );
316
- wpforms_debug_data( $form );
317
- }
318
-
319
- /**
320
- * Single entry details
321
- *
322
- * @since 1.0.0
323
- */
324
- public function output_details() {
325
-
326
- // Double check that a entry ID is present
327
- if ( empty( $_GET['entry_id'] ) ) {
328
- printf( '<div class="error"><p>%s</p></div>', __( 'Please select an entry to view.', 'wpforms' ) );
329
- return;
330
- } else {
331
- $entry_id = absint( $_GET['entry_id'] );
332
- }
333
-
334
- $entry = wpforms()->entry->get( $entry_id );
335
-
336
- // Double check that we found a real form
337
- if ( ! $entry ) {
338
- printf( '<div class="error"><p>%s</p></div>', __( 'Invalid entry.', 'wpforms' ) );
339
- return;
340
- }
341
-
342
- $form = wpforms()->form->get( $entry->form_id );
343
- $back = add_query_arg( array(
344
- 'page' => 'wpforms-entries',
345
- 'view' => 'list',
346
- 'form_id' => absint( $form->ID ),
347
- ), admin_url( 'admin.php') );
348
-
349
- echo '<h1 class="page-title">';
350
- _e( ' View Entry' );
351
- echo ' <a href="' . $back . '" class="add-new-h2">' . __( 'Back to Entries' ) . '</a>';
352
- echo '</h1>';
353
- ?>
354
-
355
- <div id="poststuff">
356
-
357
- <div id="post-body" class="metabox-holder columns-2">
358
-
359
- <!-- Primary left column -->
360
- <div id="post-body-content" style="position: relative;">
361
-
362
- <div class="wpforms-clear postbox">
363
-
364
- <h3 class="title"><?php echo esc_html( $form->post_title ); ?></h3>
365
-
366
- <div class="inner">
367
-
368
- <?php
369
- $entry_fields = wpforms_decode( $entry->fields );
370
- $fields = apply_filters( 'wpforms_entry_single_data', $entry_fields );
371
-
372
- if ( !empty( $fields ) ) {
373
-
374
- foreach ( $fields as $key => $field ) {
375
- echo '<div class="entry-field">';
376
- echo '<strong>' . wp_strip_all_tags( $field['name'] ) . '</strong>';
377
- if ( !empty( $field['value'] ) ) {
378
- echo nl2br( make_clickable( wp_strip_all_tags( $field['value'] ) ) );
379
- } else {
380
- echo '(' . __( 'empty', 'wpforms' ) . ')';
381
- }
382
- echo '</div>';
383
- }
384
-
385
- } else {
386
- _e( 'No fields to display', 'wpforms' );
387
- }
388
- ?>
389
-
390
- </div>
391
-
392
- </div>
393
-
394
- </div>
395
-
396
- <!-- Secondary right column -->
397
- <div id="postbox-container-1" class="postbox-container">
398
-
399
-
400
- </div>
401
-
402
- </div>
403
-
404
- </div>
405
- <?php
406
- wpforms_debug_data( $entry );
407
- }
408
- }
409
- new WPForms_Entries;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/overview/class-overview-table.php CHANGED
@@ -97,6 +97,11 @@ class WPForms_Overview_Table extends WP_List_Table {
97
  case 'created':
98
  $value = get_the_date( get_option( 'date_format' ), $form );
99
  break;
 
 
 
 
 
100
 
101
  case 'modified':
102
  $value = get_post_modified_time( get_option( 'date_format' ), false, $form );
97
  case 'created':
98
  $value = get_the_date( get_option( 'date_format' ), $form );
99
  break;
100
+
101
+ case 'entries':
102
+ $count = wpforms()->entry->get_entries( array( 'form_id' => $form->ID ), true );
103
+ $value = sprintf( '<a href="%s">%d</a>', add_query_arg( array( 'view' => 'list', 'form_id' => $form->ID ), admin_url( 'admin.php?page=wpforms-entries' ) ), $count );
104
+ break;
105
 
106
  case 'modified':
107
  $value = get_post_modified_time( get_option( 'date_format' ), false, $form );
includes/class-db.php ADDED
@@ -0,0 +1,350 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * DB class
4
+ *
5
+ * This handy class originated from Pippin's Easy Digital Downloads.
6
+ * https://github.com/easydigitaldownloads/easy-digital-downloads/blob/master/includes/class-edd-db.php
7
+ *
8
+ * @package WPForms
9
+ * @author WPForms
10
+ * @since 1.1.6
11
+ * @license GPL-2.0+
12
+ * @copyright Copyright (c) 2016, WPForms LLC
13
+ */
14
+ abstract class WPForms_DB {
15
+
16
+ /**
17
+ * Database table name.
18
+ *
19
+ * @since 1.1.6
20
+ * @var string
21
+ */
22
+ public $table_name;
23
+
24
+ /**
25
+ * Database version.
26
+ *
27
+ * @since 1.1.6
28
+ * @var string
29
+ */
30
+ public $version;
31
+
32
+ /**
33
+ * Primary key (unique field) for the database table.
34
+ *
35
+ * @since 1.1.6
36
+ * @var string
37
+ */
38
+ public $primary_key;
39
+
40
+ /**
41
+ * Primay class constructor.
42
+ *
43
+ * Sub-classes should define $table_name, $version, and $primary_key here.
44
+ *
45
+ * @since 1.1.6
46
+ */
47
+ public function __construct() {}
48
+
49
+ /**
50
+ * Retrieves the list of columns for the database table.
51
+ *
52
+ * Sub-classes should define an array of columns here.
53
+ *
54
+ * @since 1.1.6
55
+ * @return array List of columns.
56
+ */
57
+ public function get_columns() {
58
+
59
+ return array();
60
+ }
61
+
62
+ /**
63
+ * Retrieves column defaults.
64
+ *
65
+ * Sub-classes can define default for any/all of columns defined in the get_columns() method.
66
+ *
67
+ * @since 1.1.6
68
+ * @return array All defined column defaults.
69
+ */
70
+ public function get_column_defaults() {
71
+
72
+ return array();
73
+ }
74
+
75
+ /**
76
+ * Retrieves a row from the database based on a given row ID.
77
+ *
78
+ * @since 1.1.6
79
+ * @param int $row_id Row ID.
80
+ * @return array|null|object|void
81
+ */
82
+ public function get( $row_id ) {
83
+
84
+ global $wpdb;
85
+
86
+ return $wpdb->get_row(
87
+ $wpdb->prepare(
88
+ "SELECT * FROM $this->table_name WHERE $this->primary_key = %s LIMIT 1;",
89
+ $row_id
90
+ )
91
+ );
92
+ }
93
+
94
+ /**
95
+ * Retrieves a row based on column and row ID.
96
+ *
97
+ * @since 1.1.6
98
+ * @param string $column Column name
99
+ * @param int|string $row_id Row ID.
100
+ * @return object|null Database query result object or null on failure
101
+ */
102
+ public function get_by( $column, $row_id ) {
103
+
104
+ global $wpdb;
105
+
106
+ if ( ! array_key_exists( $column, $this->get_columns() ) || empty( $row_id ) ) {
107
+ return false;
108
+ }
109
+
110
+ return $wpdb->get_row(
111
+ $wpdb->prepare(
112
+ "SELECT * FROM $this->table_name WHERE $column = '%s' LIMIT 1;",
113
+ $row_id
114
+ )
115
+ );
116
+ }
117
+
118
+ /**
119
+ * Retrieves a value based on column name and row ID.
120
+ *
121
+ * @since 1.1.6
122
+ * @param string $column Column name
123
+ * @param int|string $row_id Row ID
124
+ * @return string|null Database query result (as string), or null on failure
125
+ */
126
+ public function get_column( $column, $row_id ) {
127
+
128
+ global $wpdb;
129
+
130
+ if ( ! array_key_exists( $column, $this->get_columns() ) || empty( $row_id ) ) {
131
+ return false;
132
+ }
133
+
134
+ return $wpdb->get_var(
135
+ $wpdb->prepare(
136
+ "SELECT $column FROM $this->table_name WHERE $this->primary_key = '%s' LIMIT 1;",
137
+ $row_id
138
+ )
139
+ );
140
+ }
141
+
142
+ /**
143
+ * Retrieves one column value based on another given column and matching value.
144
+ *
145
+ * @since 1.1.6
146
+ * @param string $column Column name
147
+ * @param string $column_where Column to match against in the WHERE clause.
148
+ * @param $column_value Value to match to the column in the WHERE clause.
149
+ * @return string|null Database query result (as string), or null on failure
150
+ */
151
+ public function get_column_by( $column, $column_where, $column_value ) {
152
+
153
+ global $wpdb;
154
+
155
+ if ( empty( $column ) || empty( $column_where ) || empty( $column_value ) || ! array_key_exists( $column, $this->get_columns() ) ) {
156
+ return false;
157
+ }
158
+
159
+ return $wpdb->get_var(
160
+ $wpdb->prepare(
161
+ "SELECT $column FROM $this->table_name WHERE $column_where = %s LIMIT 1;",
162
+ $column_value
163
+ )
164
+ );
165
+ }
166
+
167
+ /**
168
+ * Inserts a new record into the database.
169
+ *
170
+ * Please note: inserting a record flushes the cache.
171
+ *
172
+ * @since 1.1.6
173
+ * @param array $data Column data
174
+ * @param string $type Optional. Data type context
175
+ * @return int ID for the newly inserted record
176
+ */
177
+ public function add( $data, $type = '' ) {
178
+
179
+ global $wpdb;
180
+
181
+ // Set default values
182
+ $data = wp_parse_args( $data, $this->get_column_defaults() );
183
+
184
+ do_action( 'edd_pre_insert_' . $type, $data );
185
+
186
+ // Initialise column format array
187
+ $column_formats = $this->get_columns();
188
+
189
+ // Force fields to lower case
190
+ $data = array_change_key_case( $data );
191
+
192
+ // White list columns
193
+ $data = array_intersect_key( $data, $column_formats );
194
+
195
+ // Reorder $column_formats to match the order of columns given in $data
196
+ $data_keys = array_keys( $data );
197
+ $column_formats = array_merge( array_flip( $data_keys ), $column_formats );
198
+
199
+ $wpdb->insert( $this->table_name, $data, $column_formats );
200
+
201
+ wp_cache_flush();
202
+
203
+ do_action( 'wpforms_post_insert_' . $type, $wpdb->insert_id, $data );
204
+
205
+ return $wpdb->insert_id;
206
+ }
207
+
208
+ /**
209
+ * Inserts a new record into the database. This runs the add method.
210
+ *
211
+ * Please note: inserting a record flushes the cache.
212
+ *
213
+ * @since 1.1.6
214
+ * @param array $data Column data
215
+ * @return int ID for the newly inserted record
216
+ */
217
+ public function insert( $data ) {
218
+
219
+ return $this->add( $data );
220
+ }
221
+
222
+ /**
223
+ * Updates an existing record in the database.
224
+ *
225
+ * Please note: updating a record flushes the cache.
226
+ *
227
+ * @since 1.1.6
228
+ * @param string $row_id Row ID for the record being updated.
229
+ * @param array $data Optional. Array of columns and associated data to update. Default empty array.
230
+ * @param string $where Optional. Column to match against in the WHERE clause. If empty, $primary_key
231
+ * will be used. Default empty.
232
+ * @param string $type Optional. Data type context, e.g. 'affiliate', 'creative', etc. Default empty.
233
+ * @return bool False if the record could not be updated, true otherwise.
234
+ */
235
+ public function update( $row_id, $data = array(), $where = '', $type = '' ) {
236
+
237
+ global $wpdb;
238
+
239
+ // Row ID must be positive integer
240
+ $row_id = absint( $row_id );
241
+
242
+ if ( empty( $row_id ) ) {
243
+ return false;
244
+ }
245
+
246
+ if ( empty( $where ) ) {
247
+ $where = $this->primary_key;
248
+ }
249
+
250
+ // Initialise column format array
251
+ $column_formats = $this->get_columns();
252
+
253
+ // Force fields to lower case
254
+ $data = array_change_key_case( $data );
255
+
256
+ // White list columns
257
+ $data = array_intersect_key( $data, $column_formats );
258
+
259
+ // Reorder $column_formats to match the order of columns given in $data
260
+ $data_keys = array_keys( $data );
261
+ $column_formats = array_merge( array_flip( $data_keys ), $column_formats );
262
+
263
+ if ( false === $wpdb->update( $this->table_name, $data, array( $where => $row_id ), $column_formats ) ) {
264
+ return false;
265
+ }
266
+
267
+ wp_cache_flush();
268
+
269
+ do_action( 'wpforms_post_update_' . $type, $data );
270
+
271
+ return true;
272
+ }
273
+
274
+ /**
275
+ * Deletes a record from the database.
276
+ *
277
+ * Please note: successfully deleting a record flushes the cache.
278
+ *
279
+ * @since 1.1.6
280
+ * @param int|string $row_id Row ID.
281
+ * @return bool False if the record could not be deleted, true otherwise.
282
+ */
283
+ public function delete( $row_id = 0 ) {
284
+
285
+ global $wpdb;
286
+
287
+ // Row ID must be positive integer
288
+ $row_id = absint( $row_id );
289
+
290
+ if ( empty( $row_id ) ) {
291
+ return false;
292
+ }
293
+
294
+ if ( false === $wpdb->query( $wpdb->prepare( "DELETE FROM $this->table_name WHERE $this->primary_key = %d", $row_id ) ) ) {
295
+ return false;
296
+ }
297
+
298
+ wp_cache_flush();
299
+
300
+ do_action( 'wpforms_post_delete', $row_id );
301
+
302
+ return true;
303
+ }
304
+
305
+ /**
306
+ * Deletes a record from the database by column.
307
+ *
308
+ * Please note: successfully deleting a record flushes the cache.
309
+ *
310
+ * @since 1.1.6
311
+ * @param string $column
312
+ * @param int|string $row_id Row ID.
313
+ * @return bool False if the record could not be deleted, true otherwise.
314
+ */
315
+ public function delete_by( $column, $row_id ) {
316
+
317
+ global $wpdb;
318
+
319
+ if ( empty( $column ) || empty( $row_id ) || ! array_key_exists( $column, $this->get_columns() ) ) {
320
+ return false;
321
+ }
322
+
323
+ if ( false === $wpdb->query( $wpdb->prepare( "DELETE FROM $this->table_name WHERE $column = %s", $row_id ) ) ) {
324
+ return false;
325
+ }
326
+
327
+ wp_cache_flush();
328
+
329
+ do_action( 'wpforms_post_delete', $row_id );
330
+
331
+ return true;
332
+ }
333
+
334
+
335
+ /**
336
+ * Check if the given table exists.
337
+ *
338
+ * @since 1.1.6
339
+ * @param string $table The table name
340
+ * @return bool If the table name exists
341
+ */
342
+ public function table_exists( $table ) {
343
+
344
+ global $wpdb;
345
+
346
+ $table = sanitize_text_field( $table );
347
+
348
+ return $wpdb->get_var( $wpdb->prepare( "SHOW TABLES LIKE '%s'", $table ) ) === $table;
349
+ }
350
+ }
includes/class-logging.php CHANGED
@@ -75,6 +75,8 @@ class WPForms_Logging {
75
  $terms = array(
76
  'payment_error',
77
  'provider_error',
 
 
78
  );
79
 
80
  return apply_filters( 'wpforms_log_types', $terms );
75
  $terms = array(
76
  'payment_error',
77
  'provider_error',
78
+ 'spam',
79
+ 'entry',
80
  );
81
 
82
  return apply_filters( 'wpforms_log_types', $terms );
includes/class-preview.php ADDED
@@ -0,0 +1,165 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Preview class.
4
+ *
5
+ * @package WPForms
6
+ * @author WPForms
7
+ * @since 1.1.5
8
+ * @license GPL-2.0+
9
+ * @copyright Copyright (c) 2016, WPForms LLC
10
+ */
11
+ class WPForms_Preview {
12
+
13
+ /**
14
+ * Primary class constructor.
15
+ *
16
+ * @since 1.1.5
17
+ */
18
+ public function __construct() {
19
+
20
+ // Maybe load a preview page
21
+ add_action( 'init', array( $this, 'init' ) );
22
+ }
23
+
24
+ /**
25
+ * Determing if the user should see a preview page, if so, party on.
26
+ *
27
+ * @since 1.1.5
28
+ */
29
+ public function init() {
30
+
31
+ // Check for preview param with allowed values
32
+ if ( empty( $_GET['wpforms_preview'] ) || !in_array( $_GET['wpforms_preview'], array( 'print' ) ) ) {
33
+ return;
34
+ }
35
+
36
+ // Check for authenticated user with correct capabilities
37
+ if ( !is_user_logged_in() || !current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
38
+ return;
39
+ }
40
+
41
+ // Only load if we are actually on the settings page
42
+ if ( 'print' == $_GET['wpforms_preview'] && !empty( $_GET['entry_id'] ) ) {
43
+ $this->print_preview();
44
+ }
45
+ }
46
+
47
+ /**
48
+ * Preview page header.
49
+ *
50
+ * @since 1.1.5
51
+ */
52
+ public function preview_header( $type = '', $title = '' ) {
53
+ ?>
54
+ <!doctype html>
55
+ <html>
56
+ <head>
57
+ <meta charset="utf-8">
58
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
59
+ <title>WPForms <?php echo ucfirst( sanitize_text_field( $type ) ); ?> Preview - <?php echo ucfirst( sanitize_text_field( $title ) ); ?> </title>
60
+ <meta name="description" content="">
61
+ <meta name="viewport" content="width=device-width, initial-scale=1">
62
+ <meta name="robots" content="noindex,nofollow,noarchive">
63
+ <link rel="stylesheet" href="<?php echo includes_url('css/buttons.min.css'); ?>" type="text/css">
64
+ <link rel="stylesheet" href="<?php echo WPFORMS_PLUGIN_URL; ?>assets/css/wpforms-preview.css" type="text/css">
65
+ <script type="text/javascript" src="<?php echo includes_url('js/jquery/jquery.js'); ?>"></script>
66
+ <script type="text/javascript" src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/js/wpforms-preview.js"></script>
67
+ </head>
68
+ <body class="wp-core-ui">
69
+ <div class="wpforms-preview" id="<?php echo sanitize_html_class( $type ); ?>">
70
+ <?php
71
+ }
72
+
73
+ /**
74
+ * Preview page footer.
75
+ *
76
+ * @since 1.1.5
77
+ */
78
+ public function preview_footer() {
79
+
80
+ ?>
81
+ </div><!-- .wrap -->
82
+ <p class="site"><a href="<?php echo home_url(); ?>"><?php echo get_bloginfo( 'name'); ?></a></p>
83
+ </body><?php
84
+ }
85
+
86
+ /**
87
+ * Print Preview.
88
+ *
89
+ * @since 1.1.5
90
+ */
91
+ public function print_preview() {
92
+
93
+ // Load entry details
94
+ $entry = wpforms()->entry->get( absint( $_GET['entry_id'] ) );
95
+
96
+ // Double check that we found a real entry
97
+ if ( ! $entry || empty( $entry ) ) {
98
+ return;
99
+ }
100
+
101
+ // Get form details
102
+ $form_data = wpforms()->form->get( $entry->form_id, array( 'content_only' => true ) );
103
+
104
+ // Double check that we found a valid entry
105
+ if ( ! $form_data || empty( $form_data ) ) {
106
+ return;
107
+ }
108
+
109
+ $this->preview_header( 'print', $form_data['settings']['form_title'] );
110
+
111
+ // Page header
112
+ echo '<h1>';
113
+ echo sanitize_text_field( $form_data['settings']['form_title'] );
114
+ echo '<span> - ';
115
+ printf( __( 'Entry #%d', 'wpforms' ), absint( $entry->entry_id ) );
116
+ echo '</span>';
117
+
118
+ echo '<div class="buttons">';
119
+ echo '<a href="" class="button button-secondary close-window">Close</a>';
120
+ echo '<a href="" class="button button-primary print">Print</a>';
121
+ echo '</div>';
122
+ echo '</h1>';
123
+
124
+ $fields = apply_filters( 'wpforms_entry_single_data', wpforms_decode( $entry->fields ), $entry, $form_data );
125
+
126
+ if ( empty( $fields ) ) {
127
+
128
+ // Whoops, no fields! This shouldn't happen under normal use cases.
129
+ echo '<p class="no-fields">' . __( 'This entry does not have any fields', 'wpforms' ) . '</p>';
130
+
131
+ } else {
132
+
133
+ echo '<div class="fields">';
134
+
135
+ // Display the fields and their values
136
+ foreach ( $fields as $key => $field ) {
137
+
138
+ $field_value = apply_filters( 'wpforms_html_field_value', wp_strip_all_tags( $field['value'] ), $field, $form_data );
139
+ $field_class = sanitize_html_class( 'wpforms-field-' . $field['type'] );
140
+ $field_class .= empty( $field_value ) ? ' empty' : '';
141
+
142
+ echo '<div class="wpforms-entry-field ' . $field_class . '">';
143
+
144
+ // Field name
145
+ echo '<p class="wpforms-entry-field-name">';
146
+ echo !empty( $field['name'] ) ? wp_strip_all_tags( $field['name'] ) : sprintf( __( 'Field ID #%d', 'wpforms' ), absint( $field['id'] ) );
147
+ echo '</p>';
148
+
149
+ // Field value
150
+ echo '<p class="wpforms-entry-field-value">';
151
+ echo !empty( $field_value ) ? nl2br( make_clickable( $field_value ) ) : __( 'Empty', 'wpforms' );
152
+ echo '</p>';
153
+
154
+ echo '</div>';
155
+ }
156
+
157
+ echo '</div>';
158
+ }
159
+
160
+ $this->preview_footer();
161
+
162
+ exit();
163
+ }
164
+ }
165
+ new WPForms_Preview;
includes/class-process.php CHANGED
@@ -166,9 +166,23 @@ class WPForms_Process {
166
  // Success - send email notification
167
  $this->entry_email( $this->fields, $entry, $form_data, $entry_id );
168
 
 
 
 
 
 
 
 
169
  // Post-process hooks
170
  do_action( 'wpforms_process_complete', $this->fields, $entry, $form_data, $entry_id );
171
  do_action( "wpforms_process_complete_{$form_id}", $this->fields, $entry, $form_data, $entry_id );
 
 
 
 
 
 
 
172
  }
173
 
174
  $this->entry_confirmation_redirect( $form_data );
166
  // Success - send email notification
167
  $this->entry_email( $this->fields, $entry, $form_data, $entry_id );
168
 
169
+ // Logs entry depending on log levels set
170
+ $log = array(
171
+ 'fields' => $this->fields,
172
+ 'entry_id' => $entry_id,
173
+ );
174
+ wpforms_log( 'Form Entry', $log, 'entries', array( 'type' => 'entry', 'parent' => $entry_id ) );
175
+
176
  // Post-process hooks
177
  do_action( 'wpforms_process_complete', $this->fields, $entry, $form_data, $entry_id );
178
  do_action( "wpforms_process_complete_{$form_id}", $this->fields, $entry, $form_data, $entry_id );
179
+
180
+ } else {
181
+
182
+ $message = $honeypot . '<br><pre>' . print_r( $entry, true ) . '</pre>';
183
+
184
+ // Logs spam entry depending on log levels set
185
+ wpforms_log( 'Spam Entry', $message, 'spam', array( 'type' => 'spam' ) );
186
  }
187
 
188
  $this->entry_confirmation_redirect( $form_data );
includes/class-smart-tags.php CHANGED
@@ -210,6 +210,23 @@ class WPForms_Smart_Tags {
210
  }
211
  }
212
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
213
  return $content;
214
  }
215
  }
210
  }
211
  }
212
 
213
+ // Field value smart tags (settings, etc)
214
+ preg_match_all( "/\{field_value_id=\"(.+?)\"\}/", $content, $value_ids );
215
+ // We can only process field smart tags if we have $fields
216
+ if ( !empty( $value_ids[1] ) && !empty( $fields ) ) {
217
+
218
+ foreach( $value_ids[1] as $key => $field_id ) {
219
+
220
+ if ( !empty( $fields[$field_id]['value_raw'] ) ) {
221
+ $value = sanitize_text_field( $fields[$field_id]['value_raw'] );
222
+ } else {
223
+ $value = !empty( $fields[$field_id]['value'] ) ? sanitize_text_field( $fields[$field_id]['value'] ) : '';
224
+ }
225
+
226
+ $content = str_replace( '{field_value_id="' . $field_id . '"}', $value , $content );
227
+ }
228
+ }
229
+
230
  return $content;
231
  }
232
  }
includes/emails/class-emails.php CHANGED
@@ -378,7 +378,7 @@ class WPForms_WP_Emails {
378
  $field_item = str_replace( 'border-top:1px solid #dddddd;', '', $field_item );
379
  }
380
  $field_item = str_replace( '{field_name}', $field_name, $field_item );
381
- $field_value = apply_filters( 'wpforms_html_email_field_value', stripslashes( wp_specialchars_decode( $field['value'] ) ), $field, $this->form_data );
382
  $field_item = str_replace( '{field_value}', $field_value, $field_item );
383
 
384
  $message .= wpautop( $field_item );
378
  $field_item = str_replace( 'border-top:1px solid #dddddd;', '', $field_item );
379
  }
380
  $field_item = str_replace( '{field_name}', $field_name, $field_item );
381
+ $field_value = apply_filters( 'wpforms_html_field_value', stripslashes( wp_specialchars_decode( $field['value'] ) ), $field, $this->form_data );
382
  $field_item = str_replace( '{field_value}', $field_value, $field_item );
383
 
384
  $message .= wpautop( $field_item );
includes/emails/templates/footer-default.php CHANGED
@@ -31,7 +31,7 @@ if ( ! defined( 'ABSPATH' ) ) exit;
31
  <table align="left" border="0" cellpadding="0" cellspacing="0" width="100%" style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" class="mcnTextContentContainer">
32
  <tbody>
33
  <tr>
34
- <td valign="top" class="mcnTextContent" style="padding-top: 9px;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;word-break: break-word;color: #aaaaaa;font-family: Helvetica;font-size: 12px;line-height: 150%;text-align: center;">
35
 
36
  <!-- Footer content -->
37
  <?php
31
  <table align="left" border="0" cellpadding="0" cellspacing="0" width="100%" style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" class="mcnTextContentContainer">
32
  <tbody>
33
  <tr>
34
+ <td valign="top" class="mcnTextContent" style="padding-top: 9px;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;word-break: break-word;color: #aaa;font-family: Helvetica;font-size: 12px;line-height: 150%;text-align: center;">
35
 
36
  <!-- Footer content -->
37
  <?php
includes/fields/class-checkbox.php CHANGED
@@ -155,7 +155,7 @@ class WPForms_Field_Checkbox extends WPForms_Field {
155
  checked( '1', $selected, false ),
156
  $field_required
157
  );
158
- printf( '<label class="wpforms-field-label-inline" for="wpforms-field_%d_%d">%s</label>', $field['id'], $key, esc_html( $choice['label'] ) );
159
  echo '</li>';
160
  }
161
  echo '</ul>';
155
  checked( '1', $selected, false ),
156
  $field_required
157
  );
158
+ printf( '<label class="wpforms-field-label-inline" for="wpforms-field_%d_%d">%s</label>', $field['id'], $key, wp_kses_post( $choice['label'] ) );
159
  echo '</li>';
160
  }
161
  echo '</ul>';
includes/fields/class-radio.php CHANGED
@@ -155,7 +155,7 @@ class WPForms_Field_Radio extends WPForms_Field {
155
  checked( '1', $selected, false ),
156
  $field_required
157
  );
158
- printf( '<label class="wpforms-field-label-inline" for="wpforms-field_%d_%d">%s</label>', $field['id'], $key, esc_html( $choice['label'] ) );
159
  echo '</li>';
160
  }
161
  echo '</ul>';
155
  checked( '1', $selected, false ),
156
  $field_required
157
  );
158
+ printf( '<label class="wpforms-field-label-inline" for="wpforms-field_%d_%d">%s</label>', $field['id'], $key, wp_kses_post( $choice['label'] ) );
159
  echo '</li>';
160
  }
161
  echo '</ul>';
includes/functions.php CHANGED
@@ -66,6 +66,25 @@ function wpforms_current_url() {
66
  return esc_url_raw( $url );
67
  }
68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  /**
70
  * Get the value of a specific WPForms setting.
71
  *
@@ -622,7 +641,7 @@ function wpforms_countries() {
622
  */
623
  function wpforms_debug_data( $data, $echo = true ) {
624
 
625
- if ( ( defined( 'WPFORMS_DEBUG') && true === WPFORMS_DEBUG ) && is_super_admin() ) {
626
 
627
  $output = '<textarea style="background:#fff;margin: 20px 0;width:100%;height:500px;font-size:12px;font-family: Consolas,Monaco,monospace;direction: ltr;unicode-bidi: embed;line-height: 1.4;padding: 4px 6px 1px;" readonly>';
628
 
@@ -648,15 +667,44 @@ function wpforms_debug_data( $data, $echo = true ) {
648
  * Log helper.
649
  *
650
  * @since 1.0.0
651
- * @param mixed $data
 
 
 
652
  */
653
- function wpforms_log( $data ) {
654
-
655
- if ( defined( 'WPFORMS_DEBUG_LOG' ) && true == WPFORMS_DEBUG_LOG ) {
656
- if ( is_array( $data ) || is_object( $data ) ) {
657
- error_log( 'WPFORMS: ' . print_r( $data, true ) );
658
- } else {
659
- error_log( 'WPFORMS: ' . $data );
 
 
 
 
 
 
 
 
 
 
 
660
  }
661
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
662
  }
66
  return esc_url_raw( $url );
67
  }
68
 
69
+ /**
70
+ * Object to array.
71
+ *
72
+ * @since 1.1.7
73
+ * @param object $object
74
+ * @return array
75
+ */
76
+ function wpforms_object_to_array( $object ) {
77
+
78
+ if ( !is_object( $object ) && !is_array( $object ) ) {
79
+ return $object;
80
+ }
81
+
82
+ if ( is_object( $object ) ) {
83
+ $object = get_object_vars( $object );
84
+ }
85
+ return array_map( 'wpforms_object_to_array', $object );
86
+ }
87
+
88
  /**
89
  * Get the value of a specific WPForms setting.
90
  *
641
  */
642
  function wpforms_debug_data( $data, $echo = true ) {
643
 
644
+ if ( ( defined( 'WPFORMS_DEBUG' ) && true === WPFORMS_DEBUG ) && is_super_admin() ) {
645
 
646
  $output = '<textarea style="background:#fff;margin: 20px 0;width:100%;height:500px;font-size:12px;font-family: Consolas,Monaco,monospace;direction: ltr;unicode-bidi: embed;line-height: 1.4;padding: 4px 6px 1px;" readonly>';
647
 
667
  * Log helper.
668
  *
669
  * @since 1.0.0
670
+ * @param string $title
671
+ * @param string $message
672
+ * @param string|array $level
673
+ * @param array $args
674
  */
675
+ function wpforms_log( $title = '', $message = '', $level = 'errors', $args = array() ) {
676
+
677
+ // Require log title
678
+ if ( empty( $title ) )
679
+ return;
680
+
681
+ /**
682
+ * Compare error levels to determine if we should log.
683
+ * Current supported levels:
684
+ * - All - always log. always.
685
+ * - Errors
686
+ * - Spam
687
+ * - Entries
688
+ */
689
+ if ( $level != 'all' ) {
690
+ $logging_levels = get_option( 'wpforms_logging', array() );
691
+ if ( !in_array( $level, $logging_levels ) ) {
692
+ return;
693
  }
694
  }
695
+
696
+ // Other args
697
+ $defaults = array(
698
+ 'parent' => '0',
699
+ 'type' => '',
700
+ );
701
+ $args = wp_parse_args( $args, $defaults );
702
+
703
+ // Make arrays and objects look nice
704
+ if ( is_array( $message ) || is_object( $message ) ) {
705
+ $message = '<pre>' . print_r( $data, true ) . '</pre>';
706
+ }
707
+
708
+ // Create log entry
709
+ wpforms()->logs->add( $title, $message, $args['parent'], $args['type'] );
710
  }
languages/wpforms.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the WPForms package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: WPForms 1.1.4\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wpforms\n"
7
- "POT-Creation-Date: 2016-04-12 15:18:24+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -67,128 +67,129 @@ msgstr ""
67
  msgid "Addon installed."
68
  msgstr ""
69
 
70
- #: includes/admin/builder/class-builder.php:240
71
  #: includes/admin/class-editor.php:96
 
72
  msgid "Cancel"
73
  msgstr ""
74
 
75
- #: includes/admin/builder/class-builder.php:241
76
  msgid "OK"
77
  msgstr ""
78
 
79
- #: includes/admin/builder/class-builder.php:242
80
  #: includes/admin/class-editor.php:70
81
  msgid "Close"
82
  msgstr ""
83
 
84
- #: includes/admin/builder/class-builder.php:243
85
- #: includes/admin/entries/class-entries-table.php:133
86
  msgid "Field"
87
  msgstr ""
88
 
89
- #: includes/admin/builder/class-builder.php:244
90
  msgid "Available Fields"
91
  msgstr ""
92
 
93
- #: includes/admin/builder/class-builder.php:245
94
  msgid "No fields available"
95
  msgstr ""
96
 
97
- #: includes/admin/builder/class-builder.php:247
98
  msgid "No email fields"
99
  msgstr ""
100
 
101
- #: includes/admin/builder/class-builder.php:248
102
  #: includes/admin/class-settings.php:117
103
  msgid "Saving ..."
104
  msgstr ""
105
 
106
- #: includes/admin/builder/class-builder.php:249
107
  msgid "Saved!"
108
  msgstr ""
109
 
110
- #: includes/admin/builder/class-builder.php:250
111
  msgid "Save and Exit"
112
  msgstr ""
113
 
114
- #: includes/admin/builder/class-builder.php:251
115
- #: includes/admin/builder/class-builder.php:302
116
  msgid "Loading"
117
  msgstr ""
118
 
119
- #: includes/admin/builder/class-builder.php:257
120
  msgid "Use Template"
121
  msgstr ""
122
 
123
- #: includes/admin/builder/class-builder.php:258
124
  msgid ""
125
  "Changing templates on an existing form will DELETE existing form fields. Are "
126
  "you sure you want apply the new template?"
127
  msgstr ""
128
 
129
- #: includes/admin/builder/class-builder.php:259
130
  msgid ""
131
  "You are almost done. To embed this form on your site, please paste the "
132
  "following shortcode inside a post or page."
133
  msgstr ""
134
 
135
- #: includes/admin/builder/class-builder.php:260
136
  msgid "Or you can follow the instructions in this video."
137
  msgstr ""
138
 
139
- #: includes/admin/builder/class-builder.php:261
140
- #: includes/admin/builder/class-builder.php:347
141
  msgid "Exit"
142
  msgstr ""
143
 
144
- #: includes/admin/builder/class-builder.php:263
145
  msgid "If you exit without saving, your changes will be lost."
146
  msgstr ""
147
 
148
- #: includes/admin/builder/class-builder.php:264
149
  msgid "Are you sure you want to delete this field?"
150
  msgstr ""
151
 
152
- #: includes/admin/builder/class-builder.php:265
153
  msgid "Please enter a form title."
154
  msgstr ""
155
 
156
- #: includes/admin/builder/class-builder.php:266
157
  msgid "This item must contain at least one choice."
158
  msgstr ""
159
 
160
- #: includes/admin/builder/class-builder.php:268
161
  #: includes/admin/builder/functions.php:162 includes/fields/class-base.php:317
162
  msgid "Show Smart Tags"
163
  msgstr ""
164
 
165
- #: includes/admin/builder/class-builder.php:269
166
  msgid "Hide Smart Tags"
167
  msgstr ""
168
 
169
- #: includes/admin/builder/class-builder.php:270
170
  #: includes/class-provider.php:857
171
  msgid "-- Select field --"
172
  msgstr ""
173
 
174
- #: includes/admin/builder/class-builder.php:325
175
  msgid "Now editing"
176
  msgstr ""
177
 
178
- #: includes/admin/builder/class-builder.php:335
179
  msgid "Embed Form"
180
  msgstr ""
181
 
182
- #: includes/admin/builder/class-builder.php:337
183
  msgid "Embed"
184
  msgstr ""
185
 
186
- #: includes/admin/builder/class-builder.php:340
187
  msgid "Save Form"
188
  msgstr ""
189
 
190
- #: includes/admin/builder/class-builder.php:342
191
- #: includes/admin/class-settings.php:386
192
  msgid "Save"
193
  msgstr ""
194
 
@@ -339,7 +340,7 @@ msgid ""
339
  msgstr ""
340
 
341
  #: includes/admin/builder/panels/class-settings.php:21
342
- #: includes/admin/class-menu.php:81 includes/admin/class-settings.php:462
343
  msgid "Settings"
344
  msgstr ""
345
 
@@ -608,7 +609,7 @@ msgid "Show form description"
608
  msgstr ""
609
 
610
  #: includes/admin/class-editor.php:88
611
- #: includes/admin/entries/class-entries.php:206
612
  #: includes/admin/overview/class-overview-table.php:249
613
  msgid ""
614
  "Whoops, you haven't created a form yet. Want to <a href=\"%s\">give it a go</"
@@ -659,9 +660,9 @@ msgid ""
659
  "continue receiving automatic updates."
660
  msgstr ""
661
 
662
- #. #-#-#-#-# wpforms.pot (WPForms 1.1.4) #-#-#-#-#
663
  #. Plugin Name of the plugin/theme
664
- #. #-#-#-#-# wpforms.pot (WPForms 1.1.4) #-#-#-#-#
665
  #. Author of the plugin/theme
666
  #: includes/admin/class-menu.php:36 includes/admin/class-menu.php:37
667
  #: includes/admin/class-menu.php:48
@@ -686,8 +687,7 @@ msgid "Form Entries"
686
  msgstr ""
687
 
688
  #: includes/admin/class-menu.php:69
689
- #: includes/admin/entries/class-entries.php:202
690
- #: includes/admin/entries/class-entries.php:242
691
  #: includes/admin/overview/class-overview-table.php:57
692
  #: includes/admin/overview/class-overview-table.php:158
693
  msgid "Entries"
@@ -721,7 +721,7 @@ msgstr ""
721
  msgid "Integrations"
722
  msgstr ""
723
 
724
- #: includes/admin/class-settings.php:163 includes/admin/class-settings.php:344
725
  msgid "Settings check failed."
726
  msgstr ""
727
 
@@ -794,36 +794,40 @@ msgstr ""
794
  msgid "Upload Image"
795
  msgstr ""
796
 
797
- #: includes/admin/class-settings.php:280
798
  msgid ""
799
  "Upload or choose a logo to be displayed at the top of email notifications."
800
  msgstr ""
801
 
802
- #: includes/admin/class-settings.php:285
 
 
 
 
803
  msgid "Include Form Styling"
804
  msgstr ""
805
 
806
- #: includes/admin/class-settings.php:289
807
  msgid "Base and form theme styling"
808
  msgstr ""
809
 
810
- #: includes/admin/class-settings.php:290
811
  msgid "Base styling only"
812
  msgstr ""
813
 
814
- #: includes/admin/class-settings.php:291
815
  msgid "None"
816
  msgstr ""
817
 
818
- #: includes/admin/class-settings.php:293
819
  msgid "Determines which CSS files to load for the site."
820
  msgstr ""
821
 
822
- #: includes/admin/class-settings.php:299
823
  msgid "reCAPTCHA"
824
  msgstr ""
825
 
826
- #: includes/admin/class-settings.php:300
827
  msgid ""
828
  "reCAPTCHA is a free anti-spam service from Google. Its helps protect your "
829
  "website from spam and abuse while letting real people pass through with "
@@ -831,35 +835,35 @@ msgid ""
831
  "\"_blank\">Visit reCAPTCHA</a> to learn more or sign up for a free account."
832
  msgstr ""
833
 
834
- #: includes/admin/class-settings.php:305
835
  msgid "reCAPTCHA Site key"
836
  msgstr ""
837
 
838
- #: includes/admin/class-settings.php:313
839
  msgid "reCAPTCHA Secret key"
840
  msgstr ""
841
 
842
- #: includes/admin/class-settings.php:322
843
  msgid "Save General Settings"
844
  msgstr ""
845
 
846
- #: includes/admin/class-settings.php:355
847
  msgid "Settings updated."
848
  msgstr ""
849
 
850
- #: includes/admin/class-settings.php:369
851
  msgid "Currency"
852
  msgstr ""
853
 
854
- #: includes/admin/class-settings.php:373
855
  msgid "US Dollars (USD)"
856
  msgstr ""
857
 
858
- #: includes/admin/class-settings.php:375
859
  msgid "Determines which currency to use for payments."
860
  msgstr ""
861
 
862
- #: includes/admin/class-settings.php:406
863
  msgid ""
864
  "You do not have any marketing add-ons activated. You can head over to the <a "
865
  "href=\"%s\">Add-Ons page</a> to install and activate the add-on for your "
@@ -925,7 +929,8 @@ msgstr ""
925
  msgid "See all Features"
926
  msgstr ""
927
 
928
- #: includes/admin/entries/class-entries-table.php:111
 
929
  #: includes/class-smart-tags.php:38 includes/fields/class-date-time.php:48
930
  #: includes/fields/class-date-time.php:77
931
  #: includes/fields/class-date-time.php:155
@@ -933,97 +938,319 @@ msgstr ""
933
  msgid "Date"
934
  msgstr ""
935
 
936
- #: includes/admin/entries/class-entries-table.php:112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
937
  msgid "Actions"
938
  msgstr ""
939
 
940
- #: includes/admin/entries/class-entries-table.php:227
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
941
  msgid "View Form Entry"
942
  msgstr ""
943
 
944
- #: includes/admin/entries/class-entries-table.php:228
945
  msgid "View"
946
  msgstr ""
947
 
948
- #: includes/admin/entries/class-entries-table.php:234
949
  msgid "Delete Form Entry"
950
  msgstr ""
951
 
952
- #: includes/admin/entries/class-entries-table.php:235
953
- #: includes/admin/entries/class-entries-table.php:252
 
954
  #: includes/admin/overview/class-overview-table.php:172
955
  #: includes/admin/overview/class-overview-table.php:190
956
  msgid "Delete"
957
  msgstr ""
958
 
959
- #: includes/admin/entries/class-entries-table.php:284
960
- msgid "Entry successfully deleted."
961
- msgid_plural "Entries successfully deleted"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
962
  msgstr[0] ""
963
  msgstr[1] ""
964
 
965
- #: includes/admin/entries/class-entries-table.php:286
966
- #: includes/admin/overview/class-overview-table.php:224
967
- #: includes/admin/overview/class-overview-table.php:237
968
- msgid "Security check failed"
969
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
970
 
971
- #: includes/admin/entries/class-entries-table.php:298
972
  msgid "Whoops, it appears you do not have any form entries yet."
973
  msgstr ""
974
 
975
- #: includes/admin/entries/class-entries.php:86
976
  msgid "Number of entries per page:"
977
  msgstr ""
978
 
979
- #: includes/admin/entries/class-entries.php:140
 
980
  msgid "Are you sure you want to delete this entry?"
981
  msgstr ""
982
 
983
- #: includes/admin/entries/class-entries.php:210
984
- #: includes/admin/entries/class-entries.php:279
985
- msgid "Select a form to view entries"
986
  msgstr ""
987
 
988
- #: includes/admin/entries/class-entries.php:226
989
- #: includes/admin/entries/class-entries.php:295
990
- msgid "View Entries"
991
  msgstr ""
992
 
993
- #: includes/admin/entries/class-entries.php:261
994
- msgid "You need to create your first form before you can view the entries."
995
  msgstr ""
996
 
997
- #: includes/admin/entries/class-entries.php:264 includes/class-process.php:79
998
- msgid "Invalid form."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
999
  msgstr ""
1000
 
1001
- #: includes/admin/entries/class-entries.php:276
1002
- msgid "edit"
1003
  msgstr ""
1004
 
1005
- #: includes/admin/entries/class-entries.php:328
1006
- msgid "Please select an entry to view."
1007
  msgstr ""
1008
 
1009
- #: includes/admin/entries/class-entries.php:338
1010
- msgid "Invalid entry."
1011
  msgstr ""
1012
 
1013
- #: includes/admin/entries/class-entries.php:350
1014
- msgid " View Entry"
1015
  msgstr ""
1016
 
1017
- #: includes/admin/entries/class-entries.php:351
1018
- msgid "Back to Entries"
1019
  msgstr ""
1020
 
1021
- #: includes/admin/entries/class-entries.php:380
1022
- msgid "empty"
 
1023
  msgstr ""
1024
 
1025
- #: includes/admin/entries/class-entries.php:386
1026
- msgid "No fields to display"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1027
  msgstr ""
1028
 
1029
  #: includes/admin/overview/class-overview-table.php:54
@@ -1076,6 +1303,11 @@ msgid_plural "Forms successfully deleted"
1076
  msgstr[0] ""
1077
  msgstr[1] ""
1078
 
 
 
 
 
 
1079
  #: includes/admin/overview/class-overview-table.php:235
1080
  msgid "Form successfully duplicated."
1081
  msgid_plural "Forms successfully duplicated"
@@ -1102,19 +1334,31 @@ msgstr ""
1102
  msgid "WPForms Logs"
1103
  msgstr ""
1104
 
 
 
 
 
1105
  #: includes/class-process.php:73
1106
  msgid "Unable to process the form entry."
1107
  msgstr ""
1108
 
 
 
 
 
1109
  #: includes/class-process.php:113
1110
  msgid "Incorrect reCAPTCHA, please try again."
1111
  msgstr ""
1112
 
1113
- #: includes/class-process.php:120 includes/class-process.php:157
1114
  msgid "Form has not been submitted, please see the errors below."
1115
  msgstr ""
1116
 
1117
- #: includes/class-process.php:290
 
 
 
 
1118
  msgid "New %s Entry"
1119
  msgstr ""
1120
 
@@ -1690,11 +1934,11 @@ msgstr ""
1690
  msgid "HTML"
1691
  msgstr ""
1692
 
1693
- #: includes/fields/class-html.php:60
1694
  msgid "HTML / Code Block"
1695
  msgstr ""
1696
 
1697
- #: includes/fields/class-html.php:63
1698
  msgid "Contents of this field are not displayed in the admin area."
1699
  msgstr ""
1700
 
@@ -2098,13 +2342,13 @@ msgstr ""
2098
  msgid "Subject"
2099
  msgstr ""
2100
 
2101
- #: wpforms.php:302
2102
  msgid "Please deactivate WPForms Lite before activating WPForms"
2103
  msgstr ""
2104
 
2105
- #. #-#-#-#-# wpforms.pot (WPForms 1.1.4) #-#-#-#-#
2106
  #. Plugin URI of the plugin/theme
2107
- #. #-#-#-#-# wpforms.pot (WPForms 1.1.4) #-#-#-#-#
2108
  #. Author URI of the plugin/theme
2109
  msgid "https://wpforms.com"
2110
  msgstr ""
2
  # This file is distributed under the same license as the WPForms package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: WPForms 1.1.7\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wpforms\n"
7
+ "POT-Creation-Date: 2016-04-26 20:42:38+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
67
  msgid "Addon installed."
68
  msgstr ""
69
 
70
+ #: includes/admin/builder/class-builder.php:243
71
  #: includes/admin/class-editor.php:96
72
+ #: includes/admin/entries/class-entries.php:971
73
  msgid "Cancel"
74
  msgstr ""
75
 
76
+ #: includes/admin/builder/class-builder.php:244
77
  msgid "OK"
78
  msgstr ""
79
 
80
+ #: includes/admin/builder/class-builder.php:245
81
  #: includes/admin/class-editor.php:70
82
  msgid "Close"
83
  msgstr ""
84
 
85
+ #: includes/admin/builder/class-builder.php:246
86
+ #: includes/admin/entries/class-entries-table.php:141
87
  msgid "Field"
88
  msgstr ""
89
 
90
+ #: includes/admin/builder/class-builder.php:247
91
  msgid "Available Fields"
92
  msgstr ""
93
 
94
+ #: includes/admin/builder/class-builder.php:248
95
  msgid "No fields available"
96
  msgstr ""
97
 
98
+ #: includes/admin/builder/class-builder.php:250
99
  msgid "No email fields"
100
  msgstr ""
101
 
102
+ #: includes/admin/builder/class-builder.php:251
103
  #: includes/admin/class-settings.php:117
104
  msgid "Saving ..."
105
  msgstr ""
106
 
107
+ #: includes/admin/builder/class-builder.php:252
108
  msgid "Saved!"
109
  msgstr ""
110
 
111
+ #: includes/admin/builder/class-builder.php:253
112
  msgid "Save and Exit"
113
  msgstr ""
114
 
115
+ #: includes/admin/builder/class-builder.php:254
116
+ #: includes/admin/builder/class-builder.php:305
117
  msgid "Loading"
118
  msgstr ""
119
 
120
+ #: includes/admin/builder/class-builder.php:260
121
  msgid "Use Template"
122
  msgstr ""
123
 
124
+ #: includes/admin/builder/class-builder.php:261
125
  msgid ""
126
  "Changing templates on an existing form will DELETE existing form fields. Are "
127
  "you sure you want apply the new template?"
128
  msgstr ""
129
 
130
+ #: includes/admin/builder/class-builder.php:262
131
  msgid ""
132
  "You are almost done. To embed this form on your site, please paste the "
133
  "following shortcode inside a post or page."
134
  msgstr ""
135
 
136
+ #: includes/admin/builder/class-builder.php:263
137
  msgid "Or you can follow the instructions in this video."
138
  msgstr ""
139
 
140
+ #: includes/admin/builder/class-builder.php:264
141
+ #: includes/admin/builder/class-builder.php:350
142
  msgid "Exit"
143
  msgstr ""
144
 
145
+ #: includes/admin/builder/class-builder.php:266
146
  msgid "If you exit without saving, your changes will be lost."
147
  msgstr ""
148
 
149
+ #: includes/admin/builder/class-builder.php:267
150
  msgid "Are you sure you want to delete this field?"
151
  msgstr ""
152
 
153
+ #: includes/admin/builder/class-builder.php:268
154
  msgid "Please enter a form title."
155
  msgstr ""
156
 
157
+ #: includes/admin/builder/class-builder.php:269
158
  msgid "This item must contain at least one choice."
159
  msgstr ""
160
 
161
+ #: includes/admin/builder/class-builder.php:271
162
  #: includes/admin/builder/functions.php:162 includes/fields/class-base.php:317
163
  msgid "Show Smart Tags"
164
  msgstr ""
165
 
166
+ #: includes/admin/builder/class-builder.php:272
167
  msgid "Hide Smart Tags"
168
  msgstr ""
169
 
170
+ #: includes/admin/builder/class-builder.php:273
171
  #: includes/class-provider.php:857
172
  msgid "-- Select field --"
173
  msgstr ""
174
 
175
+ #: includes/admin/builder/class-builder.php:328
176
  msgid "Now editing"
177
  msgstr ""
178
 
179
+ #: includes/admin/builder/class-builder.php:338
180
  msgid "Embed Form"
181
  msgstr ""
182
 
183
+ #: includes/admin/builder/class-builder.php:340
184
  msgid "Embed"
185
  msgstr ""
186
 
187
+ #: includes/admin/builder/class-builder.php:343
188
  msgid "Save Form"
189
  msgstr ""
190
 
191
+ #: includes/admin/builder/class-builder.php:345
192
+ #: includes/admin/class-settings.php:389
193
  msgid "Save"
194
  msgstr ""
195
 
340
  msgstr ""
341
 
342
  #: includes/admin/builder/panels/class-settings.php:21
343
+ #: includes/admin/class-menu.php:81 includes/admin/class-settings.php:465
344
  msgid "Settings"
345
  msgstr ""
346
 
609
  msgstr ""
610
 
611
  #: includes/admin/class-editor.php:88
612
+ #: includes/admin/entries/class-entries.php:385
613
  #: includes/admin/overview/class-overview-table.php:249
614
  msgid ""
615
  "Whoops, you haven't created a form yet. Want to <a href=\"%s\">give it a go</"
660
  "continue receiving automatic updates."
661
  msgstr ""
662
 
663
+ #. #-#-#-#-# wpforms.pot (WPForms 1.1.7) #-#-#-#-#
664
  #. Plugin Name of the plugin/theme
665
+ #. #-#-#-#-# wpforms.pot (WPForms 1.1.7) #-#-#-#-#
666
  #. Author of the plugin/theme
667
  #: includes/admin/class-menu.php:36 includes/admin/class-menu.php:37
668
  #: includes/admin/class-menu.php:48
687
  msgstr ""
688
 
689
  #: includes/admin/class-menu.php:69
690
+ #: includes/admin/entries/class-entries.php:406
 
691
  #: includes/admin/overview/class-overview-table.php:57
692
  #: includes/admin/overview/class-overview-table.php:158
693
  msgid "Entries"
721
  msgid "Integrations"
722
  msgstr ""
723
 
724
+ #: includes/admin/class-settings.php:163 includes/admin/class-settings.php:347
725
  msgid "Settings check failed."
726
  msgstr ""
727
 
794
  msgid "Upload Image"
795
  msgstr ""
796
 
797
+ #: includes/admin/class-settings.php:281
798
  msgid ""
799
  "Upload or choose a logo to be displayed at the top of email notifications."
800
  msgstr ""
801
 
802
+ #: includes/admin/class-settings.php:282
803
+ msgid "Recommended size is 300x100 or smaller for best support on all devices."
804
+ msgstr ""
805
+
806
+ #: includes/admin/class-settings.php:288
807
  msgid "Include Form Styling"
808
  msgstr ""
809
 
810
+ #: includes/admin/class-settings.php:292
811
  msgid "Base and form theme styling"
812
  msgstr ""
813
 
814
+ #: includes/admin/class-settings.php:293
815
  msgid "Base styling only"
816
  msgstr ""
817
 
818
+ #: includes/admin/class-settings.php:294
819
  msgid "None"
820
  msgstr ""
821
 
822
+ #: includes/admin/class-settings.php:296
823
  msgid "Determines which CSS files to load for the site."
824
  msgstr ""
825
 
826
+ #: includes/admin/class-settings.php:302
827
  msgid "reCAPTCHA"
828
  msgstr ""
829
 
830
+ #: includes/admin/class-settings.php:303
831
  msgid ""
832
  "reCAPTCHA is a free anti-spam service from Google. Its helps protect your "
833
  "website from spam and abuse while letting real people pass through with "
835
  "\"_blank\">Visit reCAPTCHA</a> to learn more or sign up for a free account."
836
  msgstr ""
837
 
838
+ #: includes/admin/class-settings.php:308
839
  msgid "reCAPTCHA Site key"
840
  msgstr ""
841
 
842
+ #: includes/admin/class-settings.php:316
843
  msgid "reCAPTCHA Secret key"
844
  msgstr ""
845
 
846
+ #: includes/admin/class-settings.php:325
847
  msgid "Save General Settings"
848
  msgstr ""
849
 
850
+ #: includes/admin/class-settings.php:358
851
  msgid "Settings updated."
852
  msgstr ""
853
 
854
+ #: includes/admin/class-settings.php:372
855
  msgid "Currency"
856
  msgstr ""
857
 
858
+ #: includes/admin/class-settings.php:376
859
  msgid "US Dollars (USD)"
860
  msgstr ""
861
 
862
+ #: includes/admin/class-settings.php:378
863
  msgid "Determines which currency to use for payments."
864
  msgstr ""
865
 
866
+ #: includes/admin/class-settings.php:409
867
  msgid ""
868
  "You do not have any marketing add-ons activated. You can head over to the <a "
869
  "href=\"%s\">Add-Ons page</a> to install and activate the add-on for your "
929
  msgid "See all Features"
930
  msgstr ""
931
 
932
+ #: includes/admin/entries/class-entries-export.php:172
933
+ #: includes/admin/entries/class-entries-table.php:119
934
  #: includes/class-smart-tags.php:38 includes/fields/class-date-time.php:48
935
  #: includes/fields/class-date-time.php:77
936
  #: includes/fields/class-date-time.php:155
938
  msgid "Date"
939
  msgstr ""
940
 
941
+ #: includes/admin/entries/class-entries-export.php:173
942
+ msgid "ID"
943
+ msgstr ""
944
+
945
+ #: includes/admin/entries/class-entries-export.php:293
946
+ msgid "You do not have permission to export entries."
947
+ msgstr ""
948
+
949
+ #: includes/admin/entries/class-entries-export.php:293
950
+ msgid "Error"
951
+ msgstr ""
952
+
953
+ #: includes/admin/entries/class-entries-table.php:99
954
+ msgid "All"
955
+ msgstr ""
956
+
957
+ #: includes/admin/entries/class-entries-table.php:100
958
+ msgid "Unread"
959
+ msgstr ""
960
+
961
+ #: includes/admin/entries/class-entries-table.php:101
962
+ msgid "Starred"
963
+ msgstr ""
964
+
965
+ #: includes/admin/entries/class-entries-table.php:120
966
+ #: includes/admin/entries/class-entries.php:1213
967
  msgid "Actions"
968
  msgstr ""
969
 
970
+ #: includes/admin/entries/class-entries-table.php:240
971
+ #: includes/admin/entries/class-entries.php:239
972
+ msgid "Unstar entry"
973
+ msgstr ""
974
+
975
+ #: includes/admin/entries/class-entries-table.php:240
976
+ #: includes/admin/entries/class-entries.php:240
977
+ msgid "Star entry"
978
+ msgstr ""
979
+
980
+ #: includes/admin/entries/class-entries-table.php:245
981
+ #: includes/admin/entries/class-entries.php:242
982
+ msgid "Mark entry unread"
983
+ msgstr ""
984
+
985
+ #: includes/admin/entries/class-entries-table.php:245
986
+ #: includes/admin/entries/class-entries.php:241
987
+ msgid "Mark entry read"
988
+ msgstr ""
989
+
990
+ #: includes/admin/entries/class-entries-table.php:265
991
  msgid "View Form Entry"
992
  msgstr ""
993
 
994
+ #: includes/admin/entries/class-entries-table.php:266
995
  msgid "View"
996
  msgstr ""
997
 
998
+ #: includes/admin/entries/class-entries-table.php:272
999
  msgid "Delete Form Entry"
1000
  msgstr ""
1001
 
1002
+ #: includes/admin/entries/class-entries-table.php:273
1003
+ #: includes/admin/entries/class-entries-table.php:294
1004
+ #: includes/admin/entries/class-entries.php:1006
1005
  #: includes/admin/overview/class-overview-table.php:172
1006
  #: includes/admin/overview/class-overview-table.php:190
1007
  msgid "Delete"
1008
  msgstr ""
1009
 
1010
+ #: includes/admin/entries/class-entries-table.php:288
1011
+ msgid "Mark Read"
1012
+ msgstr ""
1013
+
1014
+ #: includes/admin/entries/class-entries-table.php:289
1015
+ #: includes/admin/entries/class-entries.php:1244
1016
+ msgid "Mark Unread"
1017
+ msgstr ""
1018
+
1019
+ #: includes/admin/entries/class-entries-table.php:290
1020
+ #: includes/admin/entries/class-entries.php:1196
1021
+ msgid "Star"
1022
+ msgstr ""
1023
+
1024
+ #: includes/admin/entries/class-entries-table.php:291
1025
+ #: includes/admin/entries/class-entries.php:1196
1026
+ msgid "Unstar"
1027
+ msgstr ""
1028
+
1029
+ #: includes/admin/entries/class-entries-table.php:293
1030
+ msgid "----------"
1031
+ msgstr ""
1032
+
1033
+ #: includes/admin/entries/class-entries-table.php:337
1034
+ msgid "Entry marked as read."
1035
+ msgid_plural "Entries marked as read."
1036
  msgstr[0] ""
1037
  msgstr[1] ""
1038
 
1039
+ #: includes/admin/entries/class-entries-table.php:346
1040
+ msgid "Entry marked as unread."
1041
+ msgid_plural "Entries marked as unread."
1042
+ msgstr[0] ""
1043
+ msgstr[1] ""
1044
+
1045
+ #: includes/admin/entries/class-entries-table.php:355
1046
+ msgid "Entry starred."
1047
+ msgid_plural "Entries starred."
1048
+ msgstr[0] ""
1049
+ msgstr[1] ""
1050
+
1051
+ #: includes/admin/entries/class-entries-table.php:364
1052
+ msgid "Entry unstarred."
1053
+ msgid_plural "Entries unstarred."
1054
+ msgstr[0] ""
1055
+ msgstr[1] ""
1056
+
1057
+ #: includes/admin/entries/class-entries-table.php:373
1058
+ msgid "Entry successfully deleted."
1059
+ msgid_plural "Entries successfully deleted."
1060
+ msgstr[0] ""
1061
+ msgstr[1] ""
1062
 
1063
+ #: includes/admin/entries/class-entries-table.php:387
1064
  msgid "Whoops, it appears you do not have any form entries yet."
1065
  msgstr ""
1066
 
1067
+ #: includes/admin/entries/class-entries.php:182
1068
  msgid "Number of entries per page:"
1069
  msgstr ""
1070
 
1071
+ #: includes/admin/entries/class-entries.php:238
1072
+ #: includes/admin/entries/class-entries.php:263
1073
  msgid "Are you sure you want to delete this entry?"
1074
  msgstr ""
1075
 
1076
+ #: includes/admin/entries/class-entries.php:264
1077
+ #: includes/admin/entries/class-entries.php:881
1078
+ msgid "Hide Empty Fields"
1079
  msgstr ""
1080
 
1081
+ #: includes/admin/entries/class-entries.php:265
1082
+ #: includes/admin/entries/class-entries.php:881
1083
+ msgid "Show Empty Fields"
1084
  msgstr ""
1085
 
1086
+ #: includes/admin/entries/class-entries.php:266
1087
+ msgid "Are you sure you want to delete this note?"
1088
  msgstr ""
1089
 
1090
+ #: includes/admin/entries/class-entries.php:363
1091
+ msgid "All entries marked as read."
1092
+ msgstr ""
1093
+
1094
+ #: includes/admin/entries/class-entries.php:502
1095
+ msgid "Edit This Form"
1096
+ msgstr ""
1097
+
1098
+ #: includes/admin/entries/class-entries.php:507
1099
+ msgid "Preview Form"
1100
+ msgstr ""
1101
+
1102
+ #: includes/admin/entries/class-entries.php:512
1103
+ msgid "Download Export (CSV)"
1104
+ msgstr ""
1105
+
1106
+ #: includes/admin/entries/class-entries.php:517
1107
+ msgid "Mark All Read"
1108
+ msgstr ""
1109
+
1110
+ #: includes/admin/entries/class-entries.php:523
1111
+ msgid "Select a different form"
1112
+ msgstr ""
1113
+
1114
+ #: includes/admin/entries/class-entries.php:601
1115
+ msgid "This entry has been starred."
1116
+ msgstr ""
1117
+
1118
+ #: includes/admin/entries/class-entries.php:613
1119
+ msgid "This entry has been unstarred."
1120
+ msgstr ""
1121
+
1122
+ #: includes/admin/entries/class-entries.php:638
1123
+ msgid "This entry has been marked unread."
1124
+ msgstr ""
1125
+
1126
+ #: includes/admin/entries/class-entries.php:662
1127
+ msgid "Note deleted."
1128
+ msgstr ""
1129
+
1130
+ #: includes/admin/entries/class-entries.php:693
1131
+ msgid "Note added."
1132
+ msgstr ""
1133
+
1134
+ #: includes/admin/entries/class-entries.php:711
1135
+ msgid "Invalid entry ID."
1136
+ msgstr ""
1137
+
1138
+ #: includes/admin/entries/class-entries.php:724
1139
+ msgid "Entry not found."
1140
+ msgstr ""
1141
+
1142
+ #: includes/admin/entries/class-entries.php:737
1143
+ msgid "Form not found."
1144
+ msgstr ""
1145
+
1146
+ #: includes/admin/entries/class-entries.php:795
1147
+ msgid "Notifications sent!"
1148
+ msgstr ""
1149
+
1150
+ #: includes/admin/entries/class-entries.php:822
1151
+ msgid "View Entry"
1152
+ msgstr ""
1153
+
1154
+ #: includes/admin/entries/class-entries.php:824
1155
+ msgid "Back to All Entries"
1156
+ msgstr ""
1157
+
1158
+ #: includes/admin/entries/class-entries.php:828
1159
+ msgid "Entry %s of %s"
1160
+ msgstr ""
1161
+
1162
+ #: includes/admin/entries/class-entries.php:831
1163
+ msgid "Previous form entry"
1164
+ msgstr ""
1165
+
1166
+ #: includes/admin/entries/class-entries.php:832
1167
+ msgid "Current form entry"
1168
  msgstr ""
1169
 
1170
+ #: includes/admin/entries/class-entries.php:833
1171
+ msgid "Next form entry"
1172
  msgstr ""
1173
 
1174
+ #: includes/admin/entries/class-entries.php:893 includes/class-preview.php:129
1175
+ msgid "This entry does not have any fields"
1176
  msgstr ""
1177
 
1178
+ #: includes/admin/entries/class-entries.php:909 includes/class-preview.php:146
1179
+ msgid "Field ID #%d"
1180
  msgstr ""
1181
 
1182
+ #: includes/admin/entries/class-entries.php:914 includes/class-preview.php:151
1183
+ msgid "Empty"
1184
  msgstr ""
1185
 
1186
+ #: includes/admin/entries/class-entries.php:949
1187
+ msgid "Notes"
1188
  msgstr ""
1189
 
1190
+ #: includes/admin/entries/class-entries.php:955
1191
+ #: includes/admin/entries/class-entries.php:970
1192
+ msgid "Add Note"
1193
  msgstr ""
1194
 
1195
+ #: includes/admin/entries/class-entries.php:979
1196
+ msgid "No notes."
1197
+ msgstr ""
1198
+
1199
+ #: includes/admin/entries/class-entries.php:988
1200
+ #: includes/admin/entries/class-entries.php:1080
1201
+ msgid "M j, Y @ g:ia"
1202
+ msgstr ""
1203
+
1204
+ #: includes/admin/entries/class-entries.php:1006
1205
+ msgid "Added by"
1206
+ msgstr ""
1207
+
1208
+ #: includes/admin/entries/class-entries.php:1006
1209
+ msgid "on"
1210
+ msgstr ""
1211
+
1212
+ #: includes/admin/entries/class-entries.php:1039
1213
+ msgid "Debug Information"
1214
+ msgstr ""
1215
+
1216
+ #: includes/admin/entries/class-entries.php:1065
1217
+ msgid "Entry Details"
1218
+ msgstr ""
1219
+
1220
+ #: includes/admin/entries/class-entries.php:1073
1221
+ msgid "Entry ID:"
1222
+ msgstr ""
1223
+
1224
+ #: includes/admin/entries/class-entries.php:1079
1225
+ msgid "Submitted on:"
1226
+ msgstr ""
1227
+
1228
+ #: includes/admin/entries/class-entries.php:1086
1229
+ msgid "Modified on:"
1230
+ msgstr ""
1231
+
1232
+ #: includes/admin/entries/class-entries.php:1087
1233
+ msgid "M j, Y @ H:i"
1234
+ msgstr ""
1235
+
1236
+ #: includes/admin/entries/class-entries.php:1095
1237
+ msgid "User:"
1238
+ msgstr ""
1239
+
1240
+ #: includes/admin/entries/class-entries.php:1107
1241
+ msgid "User IP:"
1242
+ msgstr ""
1243
+
1244
+ #: includes/admin/entries/class-entries.php:1222
1245
+ msgid "Print"
1246
+ msgstr ""
1247
+
1248
+ #: includes/admin/entries/class-entries.php:1229
1249
+ msgid "Export (CSV)"
1250
+ msgstr ""
1251
+
1252
+ #: includes/admin/entries/class-entries.php:1236
1253
+ msgid "Resend Notifications"
1254
  msgstr ""
1255
 
1256
  #: includes/admin/overview/class-overview-table.php:54
1303
  msgstr[0] ""
1304
  msgstr[1] ""
1305
 
1306
+ #: includes/admin/overview/class-overview-table.php:224
1307
+ #: includes/admin/overview/class-overview-table.php:237
1308
+ msgid "Security check failed"
1309
+ msgstr ""
1310
+
1311
  #: includes/admin/overview/class-overview-table.php:235
1312
  msgid "Form successfully duplicated."
1313
  msgid_plural "Forms successfully duplicated"
1334
  msgid "WPForms Logs"
1335
  msgstr ""
1336
 
1337
+ #: includes/class-preview.php:115
1338
+ msgid "Entry #%d"
1339
+ msgstr ""
1340
+
1341
  #: includes/class-process.php:73
1342
  msgid "Unable to process the form entry."
1343
  msgstr ""
1344
 
1345
+ #: includes/class-process.php:79
1346
+ msgid "Invalid form."
1347
+ msgstr ""
1348
+
1349
  #: includes/class-process.php:113
1350
  msgid "Incorrect reCAPTCHA, please try again."
1351
  msgstr ""
1352
 
1353
+ #: includes/class-process.php:120 includes/class-process.php:159
1354
  msgid "Form has not been submitted, please see the errors below."
1355
  msgstr ""
1356
 
1357
+ #: includes/class-process.php:127
1358
+ msgid "WPForms honeypot field triggered."
1359
+ msgstr ""
1360
+
1361
+ #: includes/class-process.php:306
1362
  msgid "New %s Entry"
1363
  msgstr ""
1364
 
1934
  msgid "HTML"
1935
  msgstr ""
1936
 
1937
+ #: includes/fields/class-html.php:66
1938
  msgid "HTML / Code Block"
1939
  msgstr ""
1940
 
1941
+ #: includes/fields/class-html.php:69
1942
  msgid "Contents of this field are not displayed in the admin area."
1943
  msgstr ""
1944
 
2342
  msgid "Subject"
2343
  msgstr ""
2344
 
2345
+ #: wpforms.php:313
2346
  msgid "Please deactivate WPForms Lite before activating WPForms"
2347
  msgstr ""
2348
 
2349
+ #. #-#-#-#-# wpforms.pot (WPForms 1.1.7) #-#-#-#-#
2350
  #. Plugin URI of the plugin/theme
2351
+ #. #-#-#-#-# wpforms.pot (WPForms 1.1.7) #-#-#-#-#
2352
  #. Author URI of the plugin/theme
2353
  msgid "https://wpforms.com"
2354
  msgstr ""
lite/lite.php CHANGED
@@ -327,6 +327,14 @@ function wpfl_addons_page() {
327
  </div>
328
  <div class="wpforms-addon-action"><a href="<?php echo $upgrade; ?>" target="_blank">Upgrade Now</a></div>
329
  </div>
 
 
 
 
 
 
 
 
330
  <div style="clear:both"></div>
331
  </div>
332
  <?php
327
  </div>
328
  <div class="wpforms-addon-action"><a href="<?php echo $upgrade; ?>" target="_blank">Upgrade Now</a></div>
329
  </div>
330
+ <div class="wpforms-addon-item wpforms-addon-status-upgrade wpforms-second">
331
+ <div class="wpforms-addon-image"><img src="https://wpforms.com/images/addon-icon-getresponse.png"></div>
332
+ <div class="wpforms-addon-text">
333
+ <h4>GetResponse Addon</h4>
334
+ <p class="desc">WPForms GetResponse addon allows you to create GetResponse newsletter signup forms in WordPress, so you can grow your email list. </p>
335
+ </div>
336
+ <div class="wpforms-addon-action"><a href="<?php echo $upgrade; ?>" target="_blank">Upgrade Now</a></div>
337
+ </div>
338
  <div style="clear:both"></div>
339
  </div>
340
  <?php
readme.txt CHANGED
@@ -1,6 +1,6 @@
1
  === Easy WordPress Contact Form Plugin - WPForms Lite ===
2
  Contributors: wpforms, jaredatch, smub
3
- Tags: contact form, contact form plugin, contact button, contact me, custom form, custom contact form, form builder, form manager, form, forms builder, forms creation, forms creator, captcha, recaptcha, Akismet, email form, web form, feedback form, payment form, survey form, donation form, email submit form, message form, mailchimp, mailchimp form, aweber, aweber form, paypal, paypal form, email subscription, contact form widget
4
  Requires at least: 4.4
5
  Tested up to: 4.5
6
  Stable tag: trunk
@@ -85,6 +85,7 @@ We also knew that our developer friends may want to extend it further. That's wh
85
  * <a href="https://wpforms.com/features/multi-page-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Multi-Page Forms</a> - Split long forms into multiple pages to improve user experience.
86
  * <a href="https://wpforms.com/addons/mailchimp-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">MailChimp Forms</a> - Create MailChimp newsletter signup forms in WordPress to grow your email list.
87
  * <a href="https://wpforms.com/addons/aweber-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">AWeber Forms</a> - Create AWeber newsletter signup forms in WordPress to grow your email list.
 
88
  * <a href="https://wpforms.com/addons/paypal-standard-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">PayPal Payment Forms</a> - Create PayPal forms to easily collect payments, donations, and online orders.
89
  * <a href="https://wpforms.com/addons/stripe-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Stripe Forms</a> - Easily collect payments, donations, and online orders with our Stripe addon.
90
  * <a href="https://wpforms.com/addons/conditional-logic-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Smart Conditional Logic</a> - Show or hide fields and form sections based on user behavior.
@@ -158,13 +159,15 @@ Syed Balkhi
158
 
159
  == Changelog ==
160
 
 
 
 
 
 
161
  = 1.1.6.1 =
162
  * Added: Support for WordPress Zero Spam plugin (https://wordpress.org/plugins/zero-spam/)
163
  * Fixed: Issue when stacking fields with 2 column classes
164
 
165
- = 1.1.6 =
166
- * Fixed: Conflict between confirmation action and filter
167
-
168
  = 1.1.5.3 =
169
  * Changed: Email Header Image setting description to include recommended sizing
170
 
@@ -181,7 +184,7 @@ Syed Balkhi
181
  * Fixed: HTML emails not displaying correctly in Thunderbird
182
 
183
  = 1.1.4.1 =
184
- * Fixed: Form builder textareas now displaying full width
185
 
186
  = 1.1.4 =
187
  * Added: Form general setting for "Submit Button CSS Class"
1
  === Easy WordPress Contact Form Plugin - WPForms Lite ===
2
  Contributors: wpforms, jaredatch, smub
3
+ Tags: contact form, contact form plugin, contact button, contact me, custom form, custom contact form, form builder, form manager, form, forms builder, forms creation, forms creator, captcha, recaptcha, Akismet, email form, web form, feedback form, payment form, survey form, donation form, email submit form, message form, mailchimp, mailchimp form, aweber, aweber form, paypal, paypal form, stripe, stripe form, getresponse, getresponse form, email subscription, contact form widget
4
  Requires at least: 4.4
5
  Tested up to: 4.5
6
  Stable tag: trunk
85
  * <a href="https://wpforms.com/features/multi-page-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Multi-Page Forms</a> - Split long forms into multiple pages to improve user experience.
86
  * <a href="https://wpforms.com/addons/mailchimp-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">MailChimp Forms</a> - Create MailChimp newsletter signup forms in WordPress to grow your email list.
87
  * <a href="https://wpforms.com/addons/aweber-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">AWeber Forms</a> - Create AWeber newsletter signup forms in WordPress to grow your email list.
88
+ * <a href="https://wpforms.com/addons/getresponse-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">GetResponse Forms</a> - Create GetResponse newsletter signup forms in WordPress to grow your email list.
89
  * <a href="https://wpforms.com/addons/paypal-standard-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">PayPal Payment Forms</a> - Create PayPal forms to easily collect payments, donations, and online orders.
90
  * <a href="https://wpforms.com/addons/stripe-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Stripe Forms</a> - Easily collect payments, donations, and online orders with our Stripe addon.
91
  * <a href="https://wpforms.com/addons/conditional-logic-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Smart Conditional Logic</a> - Show or hide fields and form sections based on user behavior.
159
 
160
  == Changelog ==
161
 
162
+ = 1.1.7 =
163
+ * Added: Smart Tag for Dropdown/Multiple choice raw values, allowing for conditional email addres notifications (https://wpforms.com/docs/how-to-create-conditional-form-notifications-in-wpforms)
164
+ * Added: Three column CSS field classes (https://wpforms.com/docs/how-to-create-multi-column-form-layouts-in-wpforms/)
165
+ * Changed: Checkbox/Multiple Choice fields allow certain HTML to display in choice labels
166
+
167
  = 1.1.6.1 =
168
  * Added: Support for WordPress Zero Spam plugin (https://wordpress.org/plugins/zero-spam/)
169
  * Fixed: Issue when stacking fields with 2 column classes
170
 
 
 
 
171
  = 1.1.5.3 =
172
  * Changed: Email Header Image setting description to include recommended sizing
173
 
184
  * Fixed: HTML emails not displaying correctly in Thunderbird
185
 
186
  = 1.1.4.1 =
187
+ * Fixed: Form builder textareas not displaying full width
188
 
189
  = 1.1.4 =
190
  * Added: Form general setting for "Submit Button CSS Class"
wpforms.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: Beginner friendly WordPress contact form plugin. Use our Drag & Drop form builder to create your WordPress forms.
6
  * Author: WPForms
7
  * Author URI: https://wpforms.com
8
- * Version: 1.1.6.1
9
  * Text Domain: wpforms
10
  * Domain Path: languages
11
  *
@@ -54,7 +54,7 @@ final class WPForms_Lite {
54
  * @since 1.0.0
55
  * @var sting
56
  */
57
- private $version = '1.1.6.1';
58
 
59
  /**
60
  * The form data handler instance.
@@ -129,6 +129,7 @@ final class WPForms_Lite {
129
  // Global includes
130
  require_once WPFORMS_PLUGIN_DIR . 'includes/functions.php';
131
  require_once WPFORMS_PLUGIN_DIR . 'includes/class-install.php';
 
132
  require_once WPFORMS_PLUGIN_DIR . 'includes/class-form.php';
133
  require_once WPFORMS_PLUGIN_DIR . 'includes/class-fields.php';
134
  require_once WPFORMS_PLUGIN_DIR . 'includes/class-frontend.php';
@@ -137,6 +138,7 @@ final class WPForms_Lite {
137
  require_once WPFORMS_PLUGIN_DIR . 'includes/class-smart-tags.php';
138
  require_once WPFORMS_PLUGIN_DIR . 'includes/class-logging.php';
139
  require_once WPFORMS_PLUGIN_DIR . 'includes/class-widget.php';
 
140
  require_once WPFORMS_PLUGIN_DIR . 'includes/emails/class-emails.php';
141
 
142
  // Admin/Dashboard only includes
@@ -145,11 +147,10 @@ final class WPForms_Lite {
145
  require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-settings.php';
146
  require_once WPFORMS_PLUGIN_DIR . 'includes/admin/overview/class-overview.php';
147
  require_once WPFORMS_PLUGIN_DIR . 'includes/admin/builder/class-builder.php';
148
- require_once WPFORMS_PLUGIN_DIR . 'includes/admin/builder/functions.php';
149
  require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-welcome.php';
150
  require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-editor.php';
151
  require_once WPFORMS_PLUGIN_DIR . 'includes/admin/ajax-actions.php';
152
- //require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-upgrades.php'; // @TODO
153
  require_once WPFORMS_PLUGIN_DIR . 'lite/lite.php';
154
  }
155
  }
@@ -224,6 +225,6 @@ final class WPForms_Lite {
224
  */
225
  function wpforms() {
226
 
227
- return WPForms_Lite::instance();
228
  }
229
  wpforms();
5
  * Description: Beginner friendly WordPress contact form plugin. Use our Drag & Drop form builder to create your WordPress forms.
6
  * Author: WPForms
7
  * Author URI: https://wpforms.com
8
+ * Version: 1.1.7
9
  * Text Domain: wpforms
10
  * Domain Path: languages
11
  *
54
  * @since 1.0.0
55
  * @var sting
56
  */
57
+ private $version = '1.1.7';
58
 
59
  /**
60
  * The form data handler instance.
129
  // Global includes
130
  require_once WPFORMS_PLUGIN_DIR . 'includes/functions.php';
131
  require_once WPFORMS_PLUGIN_DIR . 'includes/class-install.php';
132
+ require_once WPFORMS_PLUGIN_DIR . 'includes/class-db.php';
133
  require_once WPFORMS_PLUGIN_DIR . 'includes/class-form.php';
134
  require_once WPFORMS_PLUGIN_DIR . 'includes/class-fields.php';
135
  require_once WPFORMS_PLUGIN_DIR . 'includes/class-frontend.php';
138
  require_once WPFORMS_PLUGIN_DIR . 'includes/class-smart-tags.php';
139
  require_once WPFORMS_PLUGIN_DIR . 'includes/class-logging.php';
140
  require_once WPFORMS_PLUGIN_DIR . 'includes/class-widget.php';
141
+ require_once WPFORMS_PLUGIN_DIR . 'includes/class-preview.php';
142
  require_once WPFORMS_PLUGIN_DIR . 'includes/emails/class-emails.php';
143
 
144
  // Admin/Dashboard only includes
147
  require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-settings.php';
148
  require_once WPFORMS_PLUGIN_DIR . 'includes/admin/overview/class-overview.php';
149
  require_once WPFORMS_PLUGIN_DIR . 'includes/admin/builder/class-builder.php';
 
150
  require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-welcome.php';
151
  require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-editor.php';
152
  require_once WPFORMS_PLUGIN_DIR . 'includes/admin/ajax-actions.php';
153
+ require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-upgrades.php';
154
  require_once WPFORMS_PLUGIN_DIR . 'lite/lite.php';
155
  }
156
  }
225
  */
226
  function wpforms() {
227
 
228
+ return WPForms_Lite::instance();
229
  }
230
  wpforms();