PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 2.8.2
AI Engine – The Chatbot, AI Framework & MCP for WordPress v2.8.2
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 2 years ago helpers.php 1 year ago issues.php 2 years ago news.php 3 years ago ratings.php 1 year ago releases.txt 2 years ago rest.php 2 years ago
ratings.php
185 lines
1 <?php
2
3 if ( !class_exists( 'MeowCommon_Ratings' ) ) {
4
5 class MeowCommon_Ratings {
6
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)
10 public $ignored_domains = [ 'mwai-*' ];
11
12 public function __construct( $prefix, $mainfile, $domain ) {
13 $this->mainfile = $mainfile;
14 $this->domain = $domain;
15 $this->prefix = $prefix;
16
17 if ( array_search( $this->domain, $this->ignored_domains ) !== false ) {
18 return;
19 }
20 foreach ( $this->ignored_domains as $ignored_domain ) {
21 if ( strpos( $ignored_domain, '*' ) !== false ) {
22 $ignored_domain = str_replace( '*', '', $ignored_domain );
23 if ( strpos( $this->domain, $ignored_domain ) !== false ) {
24 return;
25 }
26 }
27 }
28
29 // Add the hooks
30 register_activation_hook( $mainfile, array( $this, 'show_meowapps_create_rating_date' ) );
31 if ( is_admin() ) {
32 $rating_date = $this->create_rating_date();
33 if ( time() > $rating_date ) {
34 add_action( 'admin_notices', array( $this, 'admin_notices_rating' ) );
35 add_filter( 'safe_style_css', function( $styles ) {
36 $styles[] = 'display';
37 return $styles;
38 } );
39 }
40 }
41 }
42
43 function show_meowapps_create_rating_date() {
44 delete_option( 'meowapps_hide_meowapps' );
45 $this->create_rating_date();
46 }
47
48 function create_rating_date() {
49 $rating_date = get_option( $this->prefix . '_rating_date' );
50 if ( empty( $rating_date ) ) {
51 $two_weeks = strtotime( '+2 weeks' );
52 $three_weeks = strtotime( '+3 weeks' );
53 $rating_date = mt_rand( $two_weeks, $three_weeks );
54 update_option( $this->prefix . '_rating_date', $rating_date, false );
55 }
56 return $rating_date;
57 }
58
59 function admin_notices_rating() {
60 if ( isset( $_POST[$this->prefix . '_remind_me'] ) ) {
61 $two_weeks = strtotime( '+2 weeks' );
62 $six_weeks = strtotime( '+6 weeks' );
63 $future_date = mt_rand( $two_weeks, $six_weeks );
64 update_option( $this->prefix . '_rating_date', $future_date, false );
65 return;
66 }
67 else if ( isset( $_POST[$this->prefix . '_never_remind_me'] ) ) {
68 $twenty_years = strtotime( '+5 years' );
69 update_option( $this->prefix . '_rating_date', $twenty_years, false );
70 return;
71 }
72 else if ( isset( $_POST[$this->prefix . '_did_it'] ) ) {
73 $twenty_years = strtotime( '+100 years' );
74 update_option( $this->prefix . '_rating_date', $twenty_years, false );
75 return;
76 }
77 $rating_date = get_option( $this->prefix . '_rating_date' );
78 $html = wp_kses_post( '<div class="notice notice-success" data-rating-date="' .
79 date( 'Y-m-d', $rating_date ) . '">' );
80 $esc_nice_name = esc_attr( $this->nice_name_from_file( $this->mainfile ) );
81 if ( $esc_nice_name === 'Wp Retina 2x Pro' ) {
82 $esc_nice_name = "Perfect Images";
83 }
84 else if ( $esc_nice_name === 'Wp Retina 2x' ) {
85 $esc_nice_name = "Perfect Images";
86 }
87 else if ( $esc_nice_name === 'Ai Engine Pro' ) {
88 $esc_nice_name = "AI Engine";
89 }
90 $esc_short_url = esc_attr( $this->nice_short_url_from_file( $this->mainfile ) );
91 $escaped_prefix = $this->prefix;
92 $html .= '<p style="font-size: 100%;">';
93 // Translators: %1$s is a plugin nicename, %2$s is a short url (slug)
94 $url = 'https://wordpress.org/support/plugin/' . $esc_short_url . '/reviews/?rate=5#new-post';
95 $html .= sprintf(
96 __( '<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>
97 ', $this->domain ), $esc_nice_name
98 );
99 $html .= '<div style="padding: 5px 0 12px 0; display: flex; align-items: center;">';
100 $html .= '<a target="_blank" class="button button-primary" style="margin-right: 10px;" href="' . $url . '">
101 ✏️ Write Review
102 </a>
103 <form method="post" action="" style="margin-right: 10px;">
104 <input type="hidden" name="' . $escaped_prefix . '_did_it" value="true">
105 <input type="submit" name="submit" id="submit" class="button button-secondary" value="'
106 . __( '✌️ Done!', $this->domain ) . '">
107 </form>
108
109 <div style="flex: auto;"></div>
110
111 <form method="post" action="" style="margin-right: 10px;">
112 <input type="hidden" name="' . $escaped_prefix . '_remind_me" value="true">
113 <input type="submit" name="submit" id="submit" class="button button-secondary" value="'
114 . __( '⏰ Remind me later', $this->domain ) . '">
115 </form>
116
117 <form method="post" action="">
118 <input type="hidden" name="' . $escaped_prefix . '_never_remind_me" value="true">
119 <input type="submit" name="submit" id="submit" class="button-link" style="font-size: small;" value="'
120 . __( 'Hide', $this->domain ) . '">
121 </form>
122 </div>';
123 $html .= '</div>';
124 echo wp_kses( $html, array(
125 'div' => array(
126 'class' => array(),
127 'data-rating-date' => array(),
128 'style' => array(),
129 ),
130 'p' => array(
131 'style' => array(),
132 ),
133 'h2' => array(
134 'class' => array(),
135 'style' => array()
136 ),
137 'b' => array(),
138 'br' => array(),
139 'a' => array(
140 'href' => array(),
141 'target' => array(),
142 'class' => array(),
143 'style' => array(),
144 ),
145 'form' => array(
146 'method' => array(),
147 'action' => array(),
148 'class' => array(),
149 'style' => array(),
150 ),
151 'input' => array(
152 'type' => array(),
153 'name' => array(),
154 'value' => array(),
155 'id' => array(),
156 'class' => array(),
157 ),
158 ) );
159 }
160
161 function nice_short_url_from_file( $file ) {
162 $info = pathinfo( $file );
163 if ( !empty( $info ) ) {
164 $info['filename'] = str_replace( '-pro', '', $info['filename'] );
165 return $info['filename'];
166 }
167 return "";
168 }
169
170 function nice_name_from_file( $file ) {
171 $info = pathinfo( $file );
172 if ( !empty( $info ) ) {
173 if ( $info['filename'] == 'wplr-sync' ) {
174 return "Photo Engine";
175 }
176 $info['filename'] = str_replace( '-', ' ', $info['filename'] );
177 $file = ucwords( $info['filename'] );
178 }
179 return $file;
180 }
181 }
182 }
183
184 ?>
185