PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 3.0.2
AI Engine – The Chatbot, AI Framework & MCP for WordPress v3.0.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 / classes / admin.php
ai-engine / classes Last commit date
data 1 year ago engines 10 months ago exceptions 1 year ago modules 10 months ago query 10 months ago rest 10 months ago services 10 months ago admin.php 10 months ago api.php 10 months ago core.php 10 months ago discussion.php 1 year ago event.php 1 year ago init.php 11 months ago logging.php 1 year ago reply.php 10 months ago rest.php 10 months ago
admin.php
272 lines
1 <?php
2
3 class Meow_MWAI_Admin extends MeowCommon_Admin {
4 public $core;
5 public $contentGeneratorEnabled;
6 public $imagesGeneratorEnabled;
7 public $playgroundEnabled;
8 public $suggestionsEnabled;
9
10 public function __construct( $core ) {
11 $this->core = $core;
12 parent::__construct( MWAI_PREFIX, MWAI_ENTRY, MWAI_DOMAIN, class_exists( 'MeowPro_MWAI_Core' ) );
13 if ( is_admin() ) {
14 $this->contentGeneratorEnabled = $this->core->get_option( 'module_generator_content' );
15 $this->imagesGeneratorEnabled = $this->core->get_option( 'module_generator_images' );
16 $this->playgroundEnabled = $this->core->get_option( 'module_playground' );
17 $can_access_settings = $this->core->can_access_settings();
18 $can_access_features = $this->core->can_access_features();
19
20 if ( $can_access_settings || $can_access_features ) {
21 add_action( 'admin_enqueue_scripts', [ $this, 'admin_enqueue_scripts' ] );
22 }
23
24 if ( $can_access_settings ) {
25 add_action( 'admin_menu', [ $this, 'app_menu' ] );
26 }
27
28 if ( $can_access_features ) {
29 add_action( 'admin_menu', [ $this, 'admin_menu' ] );
30
31 // Only if the Suggestions are enabled.
32 $this->suggestionsEnabled = $this->core->get_option( 'module_suggestions' );
33 if ( $this->suggestionsEnabled ) {
34 add_filter( 'post_row_actions', [ $this, 'post_row_actions' ], 10, 2 );
35 add_filter( 'page_row_actions', [ $this, 'post_row_actions' ], 10, 2 );
36 }
37
38 if ( $this->imagesGeneratorEnabled ) {
39 add_filter( 'media_row_actions', [ $this, 'media_row_actions' ], 10, 2 );
40 }
41
42 add_action( 'admin_footer', [ $this, 'admin_footer' ] );
43 }
44 }
45 }
46
47 public function admin_menu() {
48
49 // Generate New (under Posts)
50 if ( $this->contentGeneratorEnabled ) {
51 add_submenu_page(
52 'edit.php',
53 'Generate New',
54 'Generate New',
55 'read',
56 'mwai_content_generator',
57 [ $this, 'ai_content_generator' ],
58 2
59 );
60 }
61
62 // In Tools
63 if ( $this->playgroundEnabled ) {
64 add_management_page(
65 'Playground',
66 __( 'Playground', 'ai-engine' ),
67 'read',
68 'mwai_dashboard',
69 [ $this, 'ai_playground' ]
70 );
71 }
72 if ( $this->contentGeneratorEnabled ) {
73 add_management_page(
74 'Generate Content',
75 'Generate Content',
76 'read',
77 'mwai_content_generator',
78 [ $this, 'ai_content_generator' ]
79 );
80 }
81 if ( $this->imagesGeneratorEnabled ) {
82 add_management_page(
83 'Generate Images',
84 'Generate Images',
85 'read',
86 'mwai_images_generator',
87 [ $this, 'ai_image_generator' ]
88 );
89 }
90
91 // In the Admin Bar:
92 add_action( 'admin_bar_menu', [ $this, 'admin_bar_menu' ], 100 );
93 }
94
95 public function admin_bar_menu( $wp_admin_bar ) {
96
97 $admin_bar = $this->core->get_option( 'admin_bar' );
98 $settings = isset( $admin_bar['settings'] ) && $admin_bar['settings'];
99 $playground = isset( $admin_bar['playground'] ) && $admin_bar['playground'];
100 $content_generator = isset( $admin_bar['content_generator'] ) && $admin_bar['content_generator'];
101 $images_generator = isset( $admin_bar['images_generator'] ) && $admin_bar['images_generator'];
102
103 if ( $settings ) {
104 $wp_admin_bar->add_node( [
105 'id' => 'mwai-settings',
106 'title' => '<span class="ab-icon dashicons-before dashicons-admin-settings" style="top: 2px;"></span>' . __( 'AI Engine', 'ai-engine' ),
107 'href' => admin_url( 'admin.php?page=mwai_settings' ),
108 'meta' => [ 'class' => 'mwai-settings' ],
109 ] );
110 }
111
112 if ( $content_generator ) {
113 $wp_admin_bar->add_node( [
114 'id' => 'mwai-content-generator',
115 'title' => MWAI_IMG_WAND_HTML . __( 'Content', 'ai-engine' ),
116 'href' => admin_url( 'tools.php?page=mwai_content_generator' ),
117 'meta' => [ 'class' => 'mwai-content-generator' ],
118 ] );
119 }
120 if ( $images_generator ) {
121 $wp_admin_bar->add_node( [
122 'id' => 'mwai-image-generator',
123 'title' => MWAI_IMG_WAND_HTML . __( 'Images', 'ai-engine' ),
124 'href' => admin_url( 'tools.php?page=mwai_images_generator' ),
125 'meta' => [ 'class' => 'mwai-images-generator' ],
126 ] );
127 }
128
129 // The Global Magic Wand
130 // if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
131 // $wp_admin_bar->add_node( array(
132 // 'id' => 'mwai-debug',
133 // 'title' => MWAI_IMG_WAND_HTML . __( 'Magic Wand', 'ai-engine' ),
134 // //'href' => admin_url( 'tools.php?page=mwai_debug' ),
135 // 'meta' => array( 'class' => 'mwai-debug' ),
136 // ) );
137 // }
138
139 if ( $playground ) {
140 $wp_admin_bar->add_node( [
141 'id' => 'mwai-playground',
142 'title' => MWAI_IMG_WAND_HTML . __( 'Playground', 'ai-engine' ),
143 'href' => admin_url( 'tools.php?page=mwai_dashboard' ),
144 'meta' => [ 'class' => 'mwai-playground' ],
145 ] );
146 }
147 }
148
149 public function ai_playground() {
150 echo '<div id="mwai-playground"></div>';
151 }
152
153 public function ai_content_generator() {
154 echo '<div id="mwai-content-generator"></div>';
155 }
156
157 public function ai_image_generator() {
158 echo '<div id="mwai-image-generator"></div>';
159 }
160
161 public function post_row_actions( $actions, $post ) {
162 $actions['ai_titles'] = '<a class="mwai-link-title" href="#" data-id="' .
163 $post->ID . '" data-title="' . $post->post_title . '">
164 ' . MWAI_IMG_WAND_HTML_XS . ' Title</a>';
165 $actions['ai_excerpts'] = '<a class="mwai-link-excerpt" href="#" data-id="' .
166 $post->ID . '" data-title="' . $post->post_title . '">
167 ' . MWAI_IMG_WAND_HTML_XS . ' Excerpt</a>';
168 return $actions;
169 }
170
171 public function media_row_actions( $actions, $post ) {
172 if ( strpos( $post->post_mime_type, 'image/' ) === 0 ) {
173 $url = admin_url( 'tools.php?page=mwai_images_generator&editId=' . $post->ID );
174 $actions['mwai_remix'] = '<a href="' . $url . '">' . MWAI_IMG_WAND_HTML_XS . ' ' . __( 'Edit', 'ai-engine' ) . '</a>';
175 }
176 return $actions;
177 }
178
179 public function admin_footer() {
180 echo '<div id="mwai-admin-postsList"></div>';
181 }
182
183 public function admin_enqueue_scripts() {
184 $physical_file = MWAI_PATH . '/app/index.js';
185 $cache_buster = file_exists( $physical_file ) ? filemtime( $physical_file ) : MWAI_VERSION;
186 wp_register_script( 'mwai-vendor', MWAI_URL . 'app/vendor.js', null, $cache_buster );
187 // Ensure core block editor and blocks are loaded before our app so Inserter has all core blocks
188 $deps = [ 'mwai-vendor', 'wp-element', 'wp-components', 'wp-edit-post', 'wp-plugins', 'wp-i18n' ];
189 // Load block editor deps if Forms Editor is enabled, or if we are on a block editor screen (Edit Post)
190 $load_forms_editor = $this->core->get_option( 'module_forms' ) && $this->core->get_option( 'forms_editor' );
191 $on_block_editor = function_exists( 'wp_should_load_block_editor_scripts_and_styles' ) && wp_should_load_block_editor_scripts_and_styles();
192 if ( $load_forms_editor || $on_block_editor ) {
193 $deps = array_merge( $deps, [ 'wp-blocks', 'wp-block-editor', 'wp-format-library', 'wp-block-library', 'wp-editor' ] );
194 }
195 wp_register_script( 'mwai', MWAI_URL . 'app/index.js', $deps, $cache_buster );
196 wp_enqueue_script( 'mwai' );
197
198 // Ensure core editor styles are available for embedded block editor UIs
199 // This helps Popovers, Inspector, and toolbars match Gutenberg styling
200 if ( function_exists( 'wp_enqueue_style' ) ) {
201 @wp_enqueue_style( 'wp-edit-post' );
202 @wp_enqueue_style( 'wp-components' );
203 @wp_enqueue_style( 'wp-block-editor' );
204 @wp_enqueue_style( 'wp-block-library' );
205 }
206 // Make sure core blocks and format tools are registered/available
207 if ( function_exists( 'wp_enqueue_script' ) ) {
208 if ( $load_forms_editor || $on_block_editor ) {
209 @wp_enqueue_script( 'wp-format-library' );
210 @wp_enqueue_script( 'wp-block-library' );
211 @wp_enqueue_script( 'wp-editor' );
212 }
213 }
214
215 // The MD5 of the translation file built by WP uses app/i18n.js instead of app/index.js
216 add_filter( 'load_script_translation_file', function ( $file, $handle, $domain ) {
217 if ( $domain !== 'ai-engine' ) {
218 return $file;
219 }
220 $file = str_replace( md5( 'app/index.js' ), md5( 'app/i18n.js' ), $file );
221 return $file;
222 }, 10, 3 );
223
224 // This is useless for AI Engine, but it avoids issues when themes and plugin calls
225 // wp_enqueue_media too late (usually, they call it in the footer). Until someone
226 // figures out what the issue is, let's load it here.
227 wp_enqueue_media();
228
229 wp_set_script_translations( 'mwai', 'ai-engine' );
230
231 // Prepare localization data
232 $localize_data = [
233 'api_url' => get_rest_url( null, 'mwai/v1' ),
234 'rest_url' => get_rest_url(),
235 'plugin_url' => MWAI_URL,
236 'user_data' => $this->core->get_user_data(),
237 'prefix' => MWAI_PREFIX,
238 'domain' => MWAI_DOMAIN,
239 'is_pro' => class_exists( 'MeowPro_MWAI_Core' ),
240 'is_registered' => !!$this->is_registered(),
241 'rest_nonce' => wp_create_nonce( 'wp_rest' ),
242 'session' => $this->core->get_session_id(),
243 'options' => $this->core->get_all_options(),
244 'chatbots' => $this->core->get_chatbots(),
245 'themes' => $this->core->get_themes(),
246 'stream' => $this->core->get_option( 'ai_streaming' ),
247 ];
248
249
250 wp_localize_script( 'mwai', 'mwai', $localize_data );
251 }
252
253 public function is_registered() {
254 return apply_filters( MWAI_PREFIX . '_meowapps_is_registered', false, MWAI_PREFIX );
255 }
256
257 public function app_menu() {
258 add_submenu_page(
259 'meowapps-main-menu',
260 'AI Engine',
261 'AI Engine',
262 'manage_options',
263 'mwai_settings',
264 [ $this, 'admin_settings' ]
265 );
266 }
267
268 public function admin_settings() {
269 echo '<div id="mwai-admin-settings"></div>';
270 }
271 }
272