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 / news.php
ai-engine / common Last commit date
admin.php 6 hours ago helpers.php 6 months ago issues.php 7 months ago news.php 6 hours ago ratings.php 6 hours ago releases.txt 2 years ago rest.php 1 week ago
news.php
149 lines
1 <?php
2
3 if ( !class_exists( 'MeowKit_MWAI_News' ) ) {
4
5 class MeowKit_MWAI_News {
6 private $domain = null;
7 private $topic = null;
8 private $fromDate = null;
9 private $toDate = null;
10
11 public function __construct( $domain ) {
12 $this->domain = $domain;
13 $this->topic = 'mwai-1.0';
14 $this->fromDate = new DateTime( '2023-02-01' );
15 $this->toDate = new DateTime( '2023-06-01' );
16
17 if ( is_admin() ) {
18 // Time constraint for the news.
19 $now = new DateTime();
20 if ( $now < $this->fromDate || $now > $this->toDate ) {
21 return;
22 }
23
24 // Use transient instead of session for better compatibility
25 $user_id = get_current_user_id();
26 $transient_key = 'meowapps_news_displayed_' . $user_id;
27 if ( get_transient( $transient_key ) ) {
28 return;
29 }
30 set_transient( $transient_key, true, 12 * HOUR_IN_SECONDS );
31
32 // Other constraint for the news.
33 $mwai_options = get_option( 'mwai_options' );
34 if ( !empty( $mwai_options ) ) {
35 return;
36 }
37
38 // Check the news date.
39 $news_date = $this->retrieve_news_date();
40
41 // THIS FROM PROD:
42 if ( !empty( $news_date ) && time() > $news_date ) {
43 add_action( 'admin_notices', [ $this, 'admin_notices_news' ] );
44 add_filter( 'safe_style_css', function ( $styles ) {
45 $styles[] = 'display';
46 return $styles;
47 } );
48 }
49 }
50 }
51
52 public function retrieve_news_date() {
53 $news = get_option( 'meowapps_news', [ 'topic' => $this->topic, 'date' => null ] );
54 // New Topic or Fresh Option => Plan the news.
55 if ( $news['topic'] !== $this->topic || $news['date'] === null ) {
56 $two_days = strtotime( '+3 days' );
57 $seven_days = strtotime( '+7 days' );
58 $news['topic'] = $this->topic;
59 $news['date'] = mt_rand( $two_days, $seven_days );
60 update_option( 'meowapps_news', $news, false );
61 }
62 return $news['date'];
63 }
64
65 public function admin_notices_news() {
66 // Verify the nonce before acting on the news-notice buttons (CSRF protection).
67 $nonce_ok = isset( $_POST['meowapps_news_nonce'] )
68 && wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['meowapps_news_nonce'] ) ), 'meowapps_news' );
69 if ( $nonce_ok && isset( $_POST['meowapps_remind_me'] ) ) {
70 $news = get_option( 'meowapps_news' );
71 $twelve_hours = strtotime( '+12 hours' );
72 $thirtysix_hours = strtotime( '+36 hours' );
73 $news['date'] = mt_rand( $twelve_hours, $thirtysix_hours );
74 update_option( 'meowapps_news', $news, false );
75 return;
76 }
77 else if ( $nonce_ok && isset( $_POST['meowapps_done_it'] ) ) {
78 $news = get_option( 'meowapps_news' );
79 $news['date'] = '';
80 update_option( 'meowapps_news', $news, false );
81 return;
82 }
83 $html = wp_kses_post( '<div class="notice notice-success" style="margin: 20px 0;">' );
84 $html .= '<p style="font-size: 100%;">';
85
86 // Title
87 $html .= sprintf( __( '<h2 style="margin: 0 0 10px 0" class="title">AI Engine by Meow Apps: The Power of AI into WordPress 💫</h2>', $this->domain ) );
88
89 // Content
90 $html .= sprintf( __( '<p style="font-size: 14px;">Since the end of 2022, I worked a lot to craft <b>the perfect AI plugin for WordPress</b>. Since March 2023, it\'s perfectly stable and packed with features. You\'ll get chatbots, AI forms, easy model training, content and images generation, a template system that will allow you to create your personal assistants for various tasks and much more! Here it is: <a href="%s" target="_blank">AI Engine</a>. Believe me, you will enjoy this. Have fun, and let me know how it goes! 🥳</p>', $this->domain ), 'https://wordpress.org/plugins/ai-engine/' );
91
92 $news_nonce = esc_attr( wp_create_nonce( 'meowapps_news' ) );
93
94 // Buttons
95 $html .= '<div style="padding: 10px 0 12px 0; display: flex; align-items: center;">';
96 $html .= '<a href="https://wordpress.org/plugins/ai-engine/" target="_blank" class="button button-primary" style="margin-right: 10px;">'
97 . __( '👉 AI Engine at WordPress.org', $this->domain ) . '</a>';
98 $html .= '<form method="post" action="" style="margin-right: 10px;">
99 <input type="hidden" name="meowapps_remind_me" value="true"><input type="hidden" name="meowapps_news_nonce" value="' . $news_nonce . '">
100 <input type="submit" name="submit" id="submit" class="button button-primary" value="'
101 . __( '⏰ Remind me later', $this->domain ) . '"></form>';
102 $html .= '<div style="flex: auto;"></div>';
103 $html .= '<form method="post" action="">
104 <input type="hidden" name="meowapps_done_it" value="true"><input type="hidden" name="meowapps_news_nonce" value="' . $news_nonce . '">
105 <input type="submit" name="submit" id="submit" class="button" value="'
106 . __( '❌ Delete', $this->domain ) . '">
107 </form>
108 </div>';
109 $html .= '</div>';
110
111 // Escape the output
112 echo wp_kses( $html, [
113 'div' => [
114 'class' => [],
115 'style' => [],
116 ],
117 'p' => [
118 'style' => [],
119 ],
120 'h2' => [
121 'class' => [],
122 'style' => []
123 ],
124 'b' => [],
125 'br' => [],
126 'a' => [
127 'href' => [],
128 'target' => [],
129 'class' => [],
130 'style' => [],
131 ],
132 'form' => [
133 'method' => [],
134 'action' => [],
135 'class' => [],
136 'style' => [],
137 ],
138 'input' => [
139 'type' => [],
140 'name' => [],
141 'value' => [],
142 'id' => [],
143 'class' => [],
144 ],
145 ] );
146 }
147 }
148 }
149