PluginProbe
Meow Gallery / 5.5.5
Meow Gallery v5.5.5
5.5.5 5.5.4 5.5.3 5.5.2 5.5.1 5.5.0 5.4.9 5.4.8 5.4.7 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 All 157 releases
← All changes | common/ratings.php +166 -146 4.2.95.5.5 View file →
@@ -1,166 +1,186 @@
1 1 <?php
2 2
3 -if ( !class_exists( 'MeowCommon_Ratings' ) ) {
3 +if ( !class_exists( 'MeowKit_MGL_Ratings' ) ) {
4 4
5 - class MeowCommon_Ratings {
5 + class MeowKit_MGL_Ratings {
6 + public $mainfile; // plugin main file (media-file-renamer.php)
7 + public $domain; // domain used for translation (media-file-renamer)
8 + public $prefix; // used for many things (filters, options, etc)
9 + public $ignored_domains = [ 'mwai-*' ];
6 10
7 - public $mainfile; // plugin main file (media-file-renamer.php)
8 - public $domain; // domain used for translation (media-file-renamer)
9 - public $prefix; // used for many things (filters, options, etc)
11 + public function __construct( $prefix, $mainfile, $domain ) {
12 + $this->mainfile = $mainfile;
13 + $this->domain = $domain;
14 + $this->prefix = $prefix;
10 15
11 - public function __construct( $prefix, $mainfile, $domain ) {
12 - $this->mainfile = $mainfile;
13 - $this->domain = $domain;
14 - $this->prefix = $prefix;
16 + if ( array_search( $this->domain, $this->ignored_domains ) !== false ) {
17 + return;
18 + }
19 + foreach ( $this->ignored_domains as $ignored_domain ) {
20 + if ( strpos( $ignored_domain, '*' ) !== false ) {
21 + $ignored_domain = str_replace( '*', '', $ignored_domain );
22 + if ( strpos( $this->domain, $ignored_domain ) !== false ) {
23 + return;
24 + }
25 + }
26 + }
15 27
16 - register_activation_hook( $mainfile, array( $this, 'show_meowapps_create_rating_date' ) );
17 -
28 + // Add the hooks
29 + register_activation_hook( $mainfile, [ $this, 'show_meowapps_create_rating_date' ] );
18 30 if ( is_admin() ) {
19 31 $rating_date = $this->create_rating_date();
20 32 if ( time() > $rating_date ) {
21 - add_action( 'admin_notices', array( $this, 'admin_notices_rating' ) );
22 - add_filter( 'safe_style_css', function( $styles ) {
23 - $styles[] = 'display';
24 - return $styles;
25 - } );
33 + add_action( 'admin_notices', [ $this, 'admin_notices_rating' ] );
34 + add_filter( 'safe_style_css', function ( $styles ) {
35 + $styles[] = 'display';
36 + return $styles;
37 + } );
26 38 }
27 39 }
28 - }
40 + }
29 41
30 - function show_meowapps_create_rating_date() {
31 - delete_option( 'meowapps_hide_meowapps' );
32 - $this->create_rating_date();
33 - }
42 + public function show_meowapps_create_rating_date() {
43 + delete_option( 'meowapps_hide_meowapps' );
44 + $this->create_rating_date();
45 + }
34 46
35 - function create_rating_date() {
36 - $rating_date = get_option( $this->prefix . '_rating_date' );
37 - if ( empty( $rating_date ) ) {
38 - $two_weeks = strtotime( '+2 weeks' );
39 - $three_weeks = strtotime( '+3 weeks' );
40 - $rating_date = mt_rand( $two_weeks, $three_weeks );
41 - update_option( $this->prefix . '_rating_date', $rating_date, false );
42 - }
43 - return $rating_date;
44 - }
47 + public function create_rating_date() {
48 + $rating_date = get_option( $this->prefix . '_rating_date' );
49 + if ( empty( $rating_date ) ) {
50 + $two_weeks = strtotime( '+2 weeks' );
51 + $three_weeks = strtotime( '+3 weeks' );
52 + $rating_date = mt_rand( $two_weeks, $three_weeks );
53 + update_option( $this->prefix . '_rating_date', $rating_date, false );
54 + }
55 + return $rating_date;
56 + }
45 57
46 - function admin_notices_rating() {
47 - if ( isset( $_POST[$this->prefix . '_remind_me'] ) ) {
48 - $two_weeks = strtotime( '+2 weeks' );
49 - $six_weeks = strtotime( '+6 weeks' );
50 - $future_date = mt_rand( $two_weeks, $six_weeks );
51 - update_option( $this->prefix . '_rating_date', $future_date, false );
52 - return;
53 - }
54 - else if ( isset( $_POST[$this->prefix . '_never_remind_me'] ) ) {
55 - $twenty_years = strtotime( '+5 years' );
56 - update_option( $this->prefix . '_rating_date', $twenty_years, false );
57 - return;
58 - }
59 - else if ( isset( $_POST[$this->prefix . '_did_it'] ) ) {
60 - $twenty_years = strtotime( '+100 years' );
61 - update_option( $this->prefix . '_rating_date', $twenty_years, false );
62 - return;
63 - }
64 - $rating_date = get_option( $this->prefix . '_rating_date' );
65 - $html = wp_kses_post( '<div class="notice notice-success" data-rating-date="' .
66 - date( 'Y-m-d', $rating_date ) . '">' );
67 - $esc_nice_name = esc_attr( $this->nice_name_from_file( $this->mainfile ) );
68 - if ( $esc_nice_name === 'Wp Retina 2x Pro' ) {
69 - $esc_nice_name = "Perfect Images Pro";
70 - }
71 - else if ( $esc_nice_name === 'Wp Retina 2x' ) {
72 - $esc_nice_name = "Perfect Images";
73 - }
74 - $esc_short_url = esc_attr( $this->nice_short_url_from_file( $this->mainfile ) );
75 - $escaped_prefix = $this->prefix;
76 - $html .= '<p style="font-size: 100%;">';
77 - // Translators: %1$s is a plugin nicename, %2$s is a short url (slug)
78 - $html .= sprintf(
79 - __( '<h2 class="title">You have been using <b>%1$s</b> for some time now. Thank you 💕</h2>Could you take one minute and write a <b>little review</b> for me? That would <b>really</b> bring me joy and motivation 🥰<br />In the review, don\'t hesitate to share your feature requests and remarks. I will try my best!
80 - ', $this->domain ), $esc_nice_name
81 - );
82 - $html .= '<div style="padding: 20px 0 12px 0; display: flex; align-items: center;">';
83 - $html .= '<a target="_blank" class="button button-primary" style="margin-right: 10px;"
84 - href="https://wordpress.org/support/plugin/' . $esc_short_url . '/reviews/?rate=5#new-post">
85 - ✍🏼 Yes, let\'s write it now!
86 - </a>
87 - <form method="post" action="" style="margin-right: 10px;">
88 - <input type="hidden" name="' . $escaped_prefix . '_did_it" value="true">
89 - <input type="submit" name="submit" id="submit" class="button button-primary" value="'
90 - . __( '🥰 I did it', $this->domain ) . '">
91 - </form>
58 + public function admin_notices_rating() {
59 + // Verify the nonce before acting on any of the review-notice buttons (CSRF protection).
60 + $nonce_ok = isset( $_POST[ $this->prefix . '_rating_nonce' ] )
61 + && wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST[ $this->prefix . '_rating_nonce' ] ) ), $this->prefix . '_rating' );
62 + if ( $nonce_ok && isset( $_POST[$this->prefix . '_remind_me'] ) ) {
63 + $two_weeks = strtotime( '+2 weeks' );
64 + $six_weeks = strtotime( '+6 weeks' );
65 + $future_date = mt_rand( $two_weeks, $six_weeks );
66 + update_option( $this->prefix . '_rating_date', $future_date, false );
67 + return;
68 + }
69 + else if ( $nonce_ok && isset( $_POST[$this->prefix . '_never_remind_me'] ) ) {
70 + $twenty_years = strtotime( '+5 years' );
71 + update_option( $this->prefix . '_rating_date', $twenty_years, false );
72 + return;
73 + }
74 + else if ( $nonce_ok && isset( $_POST[$this->prefix . '_did_it'] ) ) {
75 + $twenty_years = strtotime( '+100 years' );
76 + update_option( $this->prefix . '_rating_date', $twenty_years, false );
77 + return;
78 + }
79 + $rating_date = get_option( $this->prefix . '_rating_date' );
80 + $html = wp_kses_post( '<div class="notice notice-success" data-rating-date="' .
81 + date( 'Y-m-d', $rating_date ) . '">' );
82 + $esc_nice_name = esc_attr( $this->nice_name_from_file( $this->mainfile ) );
83 + if ( $esc_nice_name === 'Wp Retina 2x Pro' ) {
84 + $esc_nice_name = 'Perfect Images';
85 + }
86 + else if ( $esc_nice_name === 'Wp Retina 2x' ) {
87 + $esc_nice_name = 'Perfect Images';
88 + }
89 + else if ( $esc_nice_name === 'Ai Engine Pro' ) {
90 + $esc_nice_name = 'AI Engine';
91 + }
92 + $esc_short_url = esc_attr( $this->nice_short_url_from_file( $this->mainfile ) );
93 + $escaped_prefix = $this->prefix;
94 + $rating_nonce = esc_attr( wp_create_nonce( $this->prefix . '_rating' ) );
95 + $html .= '<p style="font-size: 100%;">';
96 + // Translators: %1$s is a plugin nicename, %2$s is a short url (slug)
97 + $url = 'https://wordpress.org/support/plugin/' . $esc_short_url . '/reviews/';
98 + $html .= sprintf(
99 + __( '<h2 style="margin: 0" class="title">You have been using <b>%1$s</b> for some time now. Thank you! 💕</h2><p>If you have a minute, can you write a <b><a target="_blank" href="' . $url . '">little review</a></b> for me? That would <b>really</b> bring me joy and motivation! 💫 <br />Don\'t hesitate to <b>share your feature requests</b> with the review, I always check them and try my best.</p>
100 + ', $this->domain ),
101 + $esc_nice_name
102 + );
103 + $html .= '<div style="padding: 5px 0 12px 0; display: flex; align-items: center;">';
104 + $html .= '<a target="_blank" class="button button-primary" style="margin-right: 10px;" href="' . $url . '">
105 + ✏️ Write Review
106 + </a>
107 + <form method="post" action="" style="margin-right: 10px;">
108 + <input type="hidden" name="' . $escaped_prefix . '_did_it" value="true"><input type="hidden" name="' . $escaped_prefix . '_rating_nonce" value="' . $rating_nonce . '">
109 + <input type="submit" name="submit" id="submit" class="button button-secondary" value="'
110 + . __( '✌️ Done!', $this->domain ) . '">
111 + </form>
92 112
93 - <div style="flex: auto;"></div>
113 + <div style="flex: auto;"></div>
94 114
95 - <form method="post" action="" style="margin-right: 10px;">
96 - <input type="hidden" name="' . $escaped_prefix . '_remind_me" value="true">
97 - <input type="submit" name="submit" id="submit" class="button button-primary" value="'
98 - . __( '⏰ Remind me later', $this->domain ) . '">
99 - </form>
115 + <form method="post" action="" style="margin-right: 10px;">
116 + <input type="hidden" name="' . $escaped_prefix . '_remind_me" value="true"><input type="hidden" name="' . $escaped_prefix . '_rating_nonce" value="' . $rating_nonce . '">
117 + <input type="submit" name="submit" id="submit" class="button button-secondary" value="'
118 + . __( '⏰ Remind me later', $this->domain ) . '">
119 + </form>
100 120
101 - <form method="post" action="">
102 - <input type="hidden" name="' . $escaped_prefix . '_never_remind_me" value="true">
103 - <input type="submit" name="submit" id="submit" class="button-link" style="font-size: small;" value="'
104 - . __( 'Hide this', $this->domain ) . '">
105 - </form>
106 - </div>';
107 - $html .= '</div>';
108 - echo wp_kses( $html, array(
109 - 'div' => array(
110 - 'class' => array(),
111 - 'data-rating-date' => array(),
112 - 'style' => array(),
113 - ),
114 - 'p' => array(
115 - 'style' => array(),
116 - ),
117 - 'h2' => array(
118 - 'class' => array(),
119 - ),
120 - 'b' => array(),
121 - 'a' => array(
122 - 'href' => array(),
123 - 'target' => array(),
124 - 'class' => array(),
125 - 'style' => array(),
126 - ),
127 - 'form' => array(
128 - 'method' => array(),
129 - 'action' => array(),
130 - 'class' => array(),
131 - 'style' => array(),
132 - ),
133 - 'input' => array(
134 - 'type' => array(),
135 - 'name' => array(),
136 - 'value' => array(),
137 - 'id' => array(),
138 - 'class' => array(),
139 - ),
140 - ) );
141 - }
121 + <form method="post" action="">
122 + <input type="hidden" name="' . $escaped_prefix . '_never_remind_me" value="true"><input type="hidden" name="' . $escaped_prefix . '_rating_nonce" value="' . $rating_nonce . '">
123 + <input type="submit" name="submit" id="submit" class="button-link" style="font-size: small;" value="'
124 + . __( 'Hide', $this->domain ) . '">
125 + </form>
126 + </div>';
127 + $html .= '</div>';
128 + echo wp_kses( $html, [
129 + 'div' => [
130 + 'class' => [],
131 + 'data-rating-date' => [],
132 + 'style' => [],
133 + ],
134 + 'p' => [
135 + 'style' => [],
136 + ],
137 + 'h2' => [
138 + 'class' => [],
139 + 'style' => []
140 + ],
141 + 'b' => [],
142 + 'br' => [],
143 + 'a' => [
144 + 'href' => [],
145 + 'target' => [],
146 + 'class' => [],
147 + 'style' => [],
148 + ],
149 + 'form' => [
150 + 'method' => [],
151 + 'action' => [],
152 + 'class' => [],
153 + 'style' => [],
154 + ],
155 + 'input' => [
156 + 'type' => [],
157 + 'name' => [],
158 + 'value' => [],
159 + 'id' => [],
160 + 'class' => [],
161 + ],
162 + ] );
163 + }
142 164
143 - function nice_short_url_from_file( $file ) {
144 - $info = pathinfo( $file );
145 - if ( !empty( $info ) ) {
146 - $info['filename'] = str_replace( '-pro', '', $info['filename'] );
147 - return $info['filename'];
148 - }
149 - return "";
150 - }
165 + public function nice_short_url_from_file( $file ) {
166 + $info = pathinfo( $file );
167 + if ( !empty( $info ) ) {
168 + $info['filename'] = str_replace( '-pro', '', $info['filename'] );
169 + return $info['filename'];
170 + }
171 + return '';
172 + }
151 173
152 - function nice_name_from_file( $file ) {
153 - $info = pathinfo( $file );
154 - if ( !empty( $info ) ) {
155 - if ( $info['filename'] == 'wplr-sync' ) {
156 - return "Photo Engine";
157 - }
158 - $info['filename'] = str_replace( '-', ' ', $info['filename'] );
159 - $file = ucwords( $info['filename'] );
160 - }
161 - return $file;
162 - }
163 - }
174 + public function nice_name_from_file( $file ) {
175 + $info = pathinfo( $file );
176 + if ( !empty( $info ) ) {
177 + if ( $info['filename'] == 'wplr-sync' ) {
178 + return 'Photo Engine';
179 + }
180 + $info['filename'] = str_replace( '-', ' ', $info['filename'] );
181 + $file = ucwords( $info['filename'] );
182 + }
183 + return $file;
184 + }
185 + }
164 186 }
165 -
166 -?>