PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 3.5.8
AI Engine – The Chatbot, AI Framework & MCP for WordPress v3.5.8
3.5.8 3.5.7 3.5.6 3.5.5 3.5.4 3.5.3 3.5.2 3.5.1 3.5.0 3.4.9 3.4.8 3.4.7 0.2.1 1.6.91 0.2.2 1.6.92 0.2.3 1.6.93 0.2.4 1.6.94 0.2.5 1.6.95 0.2.6 1.6.96 0.2.7 1.6.97 0.2.8 1.6.98 0.2.9 1.6.99 0.3.0 1.7.0 0.3.1 1.7.1 0.3.2 1.7.2 0.3.3 1.7.3 0.3.4 1.7.4 0.3.5 1.7.5 0.3.6 1.7.6 0.4.0 1.7.7 0.4.1 1.7.8 0.4.2 1.7.9 0.4.3 1.8.0 0.4.4 1.8.1 0.4.5 1.8.2 0.4.6 1.8.3 0.4.7 1.8.4 0.4.8 1.8.5 0.4.9 1.8.6 0.5.0 1.8.7 0.5.1 1.8.8 0.5.2 1.8.9 0.5.3 1.9.0 0.5.4 1.9.1 0.5.5 1.9.2 0.5.6 1.9.3 0.5.7 1.9.4 0.5.8 1.9.5 0.5.9 1.9.6 0.6.0 1.9.7 0.6.1 1.9.8 0.6.2 1.9.81 0.6.3 1.9.82 0.6.4 1.9.83 0.6.5 1.9.84 0.6.6 1.9.85 0.6.7 1.9.86 0.6.8 1.9.87 0.6.9 1.9.88 0.7.0 1.9.89 0.7.1 1.9.90 0.7.2 1.9.91 0.7.3 1.9.92 0.7.4 1.9.93 0.7.5 1.9.94 0.7.6 1.9.95 0.7.7 1.9.96 0.7.8 1.9.97 0.7.9 1.9.98 0.8.0 1.9.99 0.8.1 2.0.0 0.8.2 2.0.1 0.8.3 2.0.2 0.8.4 2.0.3 0.8.5 2.0.4 0.8.6 2.0.5 0.8.7 2.0.6 0.8.8 2.0.7 0.8.9 2.0.8 0.9.0 2.0.9 0.9.2 2.1.0 0.9.3 2.1.1 0.9.4 2.1.2 0.9.5 2.1.3 0.9.6 2.1.4 0.9.7 2.1.5 0.9.8 2.1.6 0.9.81 2.1.7 0.9.82 2.1.8 0.9.83 2.1.9 0.9.84 2.2.0 0.9.85 2.2.1 0.9.86 2.2.2 0.9.87 2.2.3 0.9.88 2.2.4 0.9.89 2.2.5 0.9.9 2.2.51 0.9.91 2.2.52 0.9.92 2.2.53 0.9.93 2.2.54 0.9.94 2.2.56 0.9.95 2.2.57 0.9.96 2.2.6 0.9.97 2.2.60 0.9.98 2.2.61 0.9.99 2.2.62 1.0.0 2.2.63 1.0.01 2.2.70 1.0.1 2.2.80 1.0.2 2.2.81 1.0.3 2.2.90 1.0.4 2.2.91 1.0.5 2.2.92 1.0.6 2.2.93 1.0.7 2.2.94 1.0.8 2.2.95 1.0.9 2.3.0 1.1.0 2.3.1 1.1.1 2.3.2 1.1.2 2.3.3 1.1.3 2.3.4 1.1.4 2.3.5 1.1.5 2.3.6 1.1.6 2.3.7 1.1.7 2.3.8 1.1.8 2.3.9 1.1.9 2.4.0 1.2.0 2.4.1 1.2.1 2.4.2 1.2.2 2.4.3 1.2.21 2.4.4 1.2.3 2.4.5 1.2.30 2.4.6 1.3.0 2.4.7 1.3.1 2.4.8 1.3.2 2.4.9 1.3.3 2.5.0 1.3.31 2.5.1 1.3.32 2.5.2 1.3.33 2.5.3 1.3.34 2.5.4 1.3.35 2.5.5 1.3.36 2.5.6 1.3.37 2.5.7 1.3.38 2.5.8 1.3.39 2.5.9 1.3.40 2.6.0 1.3.41 2.6.1 1.3.42 2.6.2 1.3.43 2.6.3 1.3.44 2.6.5 1.3.45 2.6.6 1.3.46 2.6.7 1.3.47 2.6.8 1.3.48 2.6.9 1.3.49 2.7.0 1.3.50 2.7.1 1.3.51 2.7.2 1.3.52 2.7.3 1.3.53 2.7.4 1.3.54 2.7.5 1.3.56 2.7.6 1.3.57 2.7.7 1.3.58 2.7.8 1.3.59 2.7.9 1.3.60 2.8.0 1.3.61 2.8.1 1.3.62 2.8.2 1.3.63 2.8.3 1.3.64 2.8.4 1.3.65 2.8.5 1.3.66 2.8.6 1.3.67 2.8.7 1.3.68 2.8.8 1.3.69 2.8.9 1.3.70 2.9.0 1.3.71 2.9.1 1.3.72 2.9.2 1.3.73 2.9.3 1.3.74 2.9.4 1.3.75 2.9.5 1.3.76 2.9.6 1.3.77 2.9.7 1.3.78 2.9.8 1.3.79 2.9.9 1.3.80 3.0.0 1.3.81 3.0.1 1.3.82 3.0.2 1.3.83 3.0.3 1.3.84 3.0.4 1.3.85 3.0.5 1.3.86 3.0.6 1.3.87 3.0.7 1.3.88 3.0.8 1.3.89 3.0.9 1.3.90 3.1.0 1.3.91 3.1.1 1.3.92 3.1.2 1.3.93 3.1.3 1.3.94 3.1.4 1.3.95 3.1.5 1.3.96 3.1.6 1.3.97 3.1.7 1.3.98 3.1.8 1.3.99 3.1.9 1.4.0 3.2.0 1.4.1 3.2.1 1.4.2 3.2.2 1.4.3 3.2.3 1.4.4 3.2.4 1.4.5 3.2.5 1.4.6 3.2.6 1.4.7 3.2.7 1.4.8 3.2.8 1.4.9 3.2.9 1.5.0 3.3.0 1.5.1 3.3.1 1.5.2 3.3.2 1.5.3 3.3.3 1.5.4 3.3.4 1.5.5 3.3.5 1.5.6 3.3.6 1.5.7 3.3.7 1.5.8 3.3.8 1.5.9 3.3.9 1.6.0 3.4.0 1.6.1 3.4.1 1.6.2 3.4.2 1.6.3 3.4.3 1.6.5 3.4.4 1.6.51 3.4.5 1.6.52 3.4.6 1.6.53 1.6.54 1.6.55 1.6.56 1.6.57 1.6.58 1.6.59 1.6.60 1.6.61 1.6.62 1.6.63 1.6.64 1.6.65 1.6.66 1.6.67 1.6.68 trunk 1.6.69 0.0.1 1.6.70 0.0.2 1.6.71 0.0.3 1.6.72 0.0.4 1.6.73 0.0.5 1.6.74 0.0.6 1.6.75 0.0.7 1.6.76 0.0.8 1.6.77 0.0.9 1.6.78 0.1.0 1.6.79 0.1.1 1.6.81 0.1.2 1.6.82 0.1.3 1.6.83 0.1.4 1.6.84 0.1.5 1.6.85 0.1.6 1.6.86 0.1.7 1.6.87 0.1.8 1.6.88 0.1.9 1.6.89 0.2.0 1.6.90
ai-engine / common / ratings.php
ai-engine / common Last commit date
admin.php 8 hours ago helpers.php 6 months ago issues.php 7 months ago news.php 8 hours ago ratings.php 8 hours ago releases.txt 2 years ago rest.php 1 week ago
ratings.php
187 lines
1 <?php
2
3 if ( !class_exists( 'MeowKit_MWAI_Ratings' ) ) {
4
5 class MeowKit_MWAI_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-*' ];
10
11 public function __construct( $prefix, $mainfile, $domain ) {
12 $this->mainfile = $mainfile;
13 $this->domain = $domain;
14 $this->prefix = $prefix;
15
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 }
27
28 // Add the hooks
29 register_activation_hook( $mainfile, [ $this, 'show_meowapps_create_rating_date' ] );
30 if ( is_admin() ) {
31 $rating_date = $this->create_rating_date();
32 if ( time() > $rating_date ) {
33 add_action( 'admin_notices', [ $this, 'admin_notices_rating' ] );
34 add_filter( 'safe_style_css', function ( $styles ) {
35 $styles[] = 'display';
36 return $styles;
37 } );
38 }
39 }
40 }
41
42 public function show_meowapps_create_rating_date() {
43 delete_option( 'meowapps_hide_meowapps' );
44 $this->create_rating_date();
45 }
46
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 }
57
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>
112
113 <div style="flex: auto;"></div>
114
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>
120
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 }
164
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 }
173
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 }
186 }
187