PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 6.13
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v6.13
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
← All changes | classes/models/FrmReviews.php +22 -31 6.316.13 View file →
@@ -4,21 +4,12 @@
4 4 }
5 5
6 6 class FrmReviews {
7 7
8 - /**
9 - * @var string
10 - */
11 8 private $option_name = 'frm_reviewed';
12 9
13 - /**
14 - * @var array
15 - */
16 10 private $review_status = array();
17 11
18 - /**
19 - * @var string
20 - */
21 12 private $inbox_key = 'review';
22 13
23 14 /**
24 15 * Add admin notices as needed for reviews
@@ -27,8 +18,9 @@
27 18 *
28 19 * @return void
29 20 */
30 21 public function review_request() {
22 +
31 23 // Only show the review request to high-level users on Formidable pages
32 24 if ( ! current_user_can( 'frm_change_settings' ) || ! FrmAppHelper::is_formidable_admin() ) {
33 25 return;
34 26 }
@@ -37,9 +29,8 @@
37 29 $this->set_review_status();
38 30
39 31 // Check if it has been dismissed or if we can ask later
40 32 $dismissed = $this->review_status['dismissed'];
41 -
42 33 if ( $dismissed === 'later' && $this->review_status['asked'] < 3 ) {
43 34 $dismissed = false;
44 35 }
45 36
@@ -44,9 +35,9 @@
44 35 }
45 36
46 37 $week_ago = $this->review_status['time'] + WEEK_IN_SECONDS <= time();
47 38
48 - if ( ! $dismissed && $week_ago ) {
39 + if ( empty( $dismissed ) && $week_ago ) {
49 40 $this->review();
50 41 }
51 42 }
52 43
@@ -65,9 +56,9 @@
65 56 'dismissed' => false,
66 57 'asked' => 0,
67 58 );
68 59
69 - if ( ! $review ) {
60 + if ( empty( $review ) ) {
70 61 // Set the review request to show in a week
71 62 update_user_meta( $user_id, $this->option_name, $default );
72 63 }
73 64
@@ -83,9 +74,10 @@
83 74 *
84 75 * @return void
85 76 */
86 77 private function review() {
87 - // Show the review request 3 times, depending on the number of entries
78 +
79 + // show the review request 3 times, depending on the number of entries
88 80 $show_intervals = array( 50, 200, 500 );
89 81 $asked = $this->review_status['asked'];
90 82
91 83 if ( ! isset( $show_intervals[ $asked ] ) ) {
@@ -97,9 +89,9 @@
97 89 $user = wp_get_current_user();
98 90
99 91 // Only show review request if the site has collected enough entries
100 92 if ( $entries < $count ) {
101 - // Check the entry count again in a week
93 + // check the entry count again in a week
102 94 $this->review_status['time'] = time();
103 95 update_user_meta( $user->ID, $this->option_name, $this->review_status );
104 96
105 97 return;
@@ -104,18 +96,24 @@
104 96
105 97 return;
106 98 }
107 99
108 - $entries = $entries <= 100 ? floor( $entries / 10 ) * 10 : floor( $entries / 50 ) * 50;
109 - $name = $user->first_name;
110 -
111 - if ( $name ) {
100 + if ( $entries <= 100 ) {
101 + // round to the nearest 10
102 + $entries = floor( $entries / 10 ) * 10;
103 + } else {
104 + // round to the nearest 50
105 + $entries = floor( $entries / 50 ) * 50;
106 + }
107 + $name = $user->first_name;
108 + if ( ! empty( $name ) ) {
112 109 $name = ' ' . $name;
113 110 }
114 111
115 112 $title = sprintf(
116 - /* translators: %1$d: number of entries */
117 - esc_html__( 'You have collected %1$d form submissions.', 'formidable' ),
113 + /* translators: %s: User name, %2$d: number of entries */
114 + esc_html__( 'Congratulations%1$s! You have collected %2$d form submissions.', 'formidable' ),
115 + esc_html( $name ),
118 116 absint( $entries )
119 117 );
120 118
121 119 $this->add_to_inbox( $title, $name, $asked );
@@ -143,9 +141,8 @@
143 141 // Remove previous requests.
144 142 if ( $asked > 0 ) {
145 143 $message->remove( $this->inbox_key );
146 144 }
147 -
148 145 if ( $asked > 1 ) {
149 146 $message->remove( $this->inbox_key . '1' );
150 147 }
151 148
@@ -156,13 +153,13 @@
156 153
157 154 $message->add_message(
158 155 array(
159 156 'key' => $key,
160 - 'message' => __( 'If you are enjoying Formidable, could you do me a BIG favor and give us a review to help me grow my little business and boost our motivation?', 'formidable' ) . '<br/>' . // phpcs:ignore SlevomatCodingStandard.Files.LineLength.LineTooLong
157 + 'message' => __( 'If you are enjoying Formidable, could you do me a BIG favor and give us a review to help me grow my little business and boost our motivation?', 'formidable' ) . '<br/>' .
161 158 '- Steph Wells<br/>' .
162 159 '<span>' . esc_html__( 'Co-Founder and CTO of Formidable Forms', 'formidable' ) . '<span>',
163 160 'subject' => str_replace( $name, '', $title ),
164 - 'cta' => '<a href="https://wordpress.org/support/plugin/formidable/reviews/?filter=5#new-post" class="frm-dismiss-review-notice frm-review-out button frm-button-secondary" data-link="yes" target="_blank" rel="noopener noreferrer">' . // phpcs:ignore SlevomatCodingStandard.Files.LineLength.LineTooLong
161 + 'cta' => '<a href="https://wordpress.org/support/plugin/formidable/reviews/?filter=5#new-post" class="frm-dismiss-review-notice frm-review-out button frm-button-secondary" data-link="yes" target="_blank" rel="noopener noreferrer">' .
165 162 esc_html__( 'Ok, you deserve it', 'formidable' ) . '</a>',
166 163 'type' => 'feedback',
167 164 )
168 165 );
@@ -172,11 +169,8 @@
172 169 * If there are already later requests, don't add it to the inbox again.
173 170 *
174 171 * @since 4.05.02
175 172 *
176 - * @param array $requests Array of requests.
177 - * @param int $asked Number of times the review has been asked.
178 - *
179 173 * @return bool
180 174 */
181 175 private function has_later_request( $requests, $asked ) {
182 176 return isset( $requests[ $this->inbox_key . ( $asked + 1 ) ] ) || isset( $requests[ $this->inbox_key . ( $asked + 2 ) ] );
@@ -201,9 +195,8 @@
201 195 * @return void
202 196 */
203 197 private function set_inbox_dismissed() {
204 198 $message = new FrmInbox();
205 -
206 199 foreach ( $this->inbox_keys() as $key ) {
207 200 $message->dismiss( $key );
208 201 }
209 202 }
@@ -214,9 +207,8 @@
214 207 * @return void
215 208 */
216 209 private function set_inbox_read() {
217 210 $message = new FrmInbox();
218 -
219 211 foreach ( $this->inbox_keys() as $key ) {
220 212 $message->mark_read( $key );
221 213 }
222 214 }
@@ -233,15 +225,14 @@
233 225 check_ajax_referer( 'frm_ajax', 'nonce' );
234 226
235 227 $user_id = get_current_user_id();
236 228 $review = get_user_meta( $user_id, $this->option_name, true );
237 -
238 - if ( ! $review ) {
229 + if ( empty( $review ) ) {
239 230 $review = array();
240 231 }
241 232
242 233 if ( isset( $review['dismissed'] ) && $review['dismissed'] === 'done' ) {
243 - // If feedback was submitted, don't update it again when the review is dismissed
234 + // if feedback was submitted, don't update it again when the review is dismissed
244 235 $this->set_inbox_dismissed();
245 236 wp_die();
246 237 }
247 238