| 1 |
<?php |
| 2 |
|
| 3 |
|
| 4 |
class Meow_MWAI_Admin extends MeowCommon_Admin { |
| 5 |
|
| 6 |
public $core; |
| 7 |
|
| 8 |
public $contentGeneratorEnabled; |
| 9 |
public $imagesGeneratorEnabled; |
| 10 |
public $playgroundEnabled; |
| 11 |
public $suggestionsEnabled; |
| 12 |
|
| 13 |
public function __construct( $core ) { |
| 14 |
$this->core = $core; |
| 15 |
parent::__construct( MWAI_PREFIX, MWAI_ENTRY, MWAI_DOMAIN, class_exists( 'MeowPro_MWAI_Core' ) ); |
| 16 |
if ( is_admin() ) { |
| 17 |
|
| 18 |
$this->contentGeneratorEnabled = $this->core->get_option( 'module_generator_content' ); |
| 19 |
$this->imagesGeneratorEnabled = $this->core->get_option( 'module_generator_images' ); |
| 20 |
$this->playgroundEnabled = $this->core->get_option( 'module_playground' ); |
| 21 |
if ( $this->core->can_access_settings() ) { |
| 22 |
add_action( 'admin_menu', array( $this, 'app_menu' ) ); |
| 23 |
} |
| 24 |
|
| 25 |
if ( $this->core->can_access_features() ) { |
| 26 |
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) ); |
| 27 |
add_action( 'admin_menu', array( $this, 'admin_menu' ) ); |
| 28 |
|
| 29 |
// Only if the Suggestions are enabled. |
| 30 |
$this->suggestionsEnabled = $this->core->get_option( 'module_suggestions' ); |
| 31 |
if ( $this->suggestionsEnabled ) { |
| 32 |
add_filter( 'post_row_actions', [ $this, 'post_row_actions' ], 10, 2 ); |
| 33 |
} |
| 34 |
|
| 35 |
add_action( 'admin_footer', [ $this, 'admin_footer' ] ); |
| 36 |
} |
| 37 |
} |
| 38 |
} |
| 39 |
|
| 40 |
function admin_menu() { |
| 41 |
|
| 42 |
// Generate New (under Posts) |
| 43 |
if ( $this->contentGeneratorEnabled) { |
| 44 |
add_submenu_page( 'edit.php', 'Generate New', 'Generate New', 'read', 'mwai_content_generator', |
| 45 |
array( $this, 'ai_content_generator' ), 2 ); |
| 46 |
} |
| 47 |
|
| 48 |
// In Tools |
| 49 |
if ( $this->playgroundEnabled ) { |
| 50 |
add_management_page( 'Playground', __( 'Playground', 'ai-engine' ), 'read', |
| 51 |
'mwai_dashboard', array( $this, 'ai_playground' ) ); |
| 52 |
} |
| 53 |
if ( $this->contentGeneratorEnabled ) { |
| 54 |
add_management_page( 'Generate Content', 'Generate Content', 'read', 'mwai_content_generator', |
| 55 |
array( $this, 'ai_content_generator' ) ); |
| 56 |
} |
| 57 |
if ( $this->imagesGeneratorEnabled ) { |
| 58 |
add_management_page( 'Generate Images', 'Generate Images', 'read', 'mwai_images_generator', |
| 59 |
array( $this, 'ai_image_generator' ) ); |
| 60 |
} |
| 61 |
|
| 62 |
// In the Admin Bar: |
| 63 |
add_action( 'admin_bar_menu', array( $this, 'admin_bar_menu' ), 100 ); |
| 64 |
} |
| 65 |
|
| 66 |
function admin_bar_menu( $wp_admin_bar ) { |
| 67 |
|
| 68 |
$admin_bar = $this->core->get_option( 'admin_bar' ); |
| 69 |
$settings = isset( $admin_bar['settings'] ) && $admin_bar['settings']; |
| 70 |
$playground = isset( $admin_bar['playground'] ) && $admin_bar['playground']; |
| 71 |
$content_generator = isset( $admin_bar['content_generator'] ) && $admin_bar['content_generator']; |
| 72 |
$images_generator = isset( $admin_bar['images_generator'] ) && $admin_bar['images_generator']; |
| 73 |
|
| 74 |
if ( $settings ) { |
| 75 |
$wp_admin_bar->add_node( array( |
| 76 |
'id' => 'mwai-settings', |
| 77 |
'title' => '<span class="ab-icon dashicons-before dashicons-admin-settings" style="top: 2px;"></span>' . __( 'AI Engine', 'ai-engine' ), |
| 78 |
'href' => admin_url( 'admin.php?page=mwai_settings' ), |
| 79 |
'meta' => array( 'class' => 'mwai-settings' ), |
| 80 |
) ); |
| 81 |
} |
| 82 |
|
| 83 |
if ( $content_generator ) { |
| 84 |
$wp_admin_bar->add_node( array( |
| 85 |
'id' => 'mwai-content-generator', |
| 86 |
'title' => MWAI_IMG_WAND_HTML . __( 'Content', 'ai-engine' ), |
| 87 |
'href' => admin_url( 'tools.php?page=mwai_content_generator' ), |
| 88 |
'meta' => array( 'class' => 'mwai-content-generator' ), |
| 89 |
) ); |
| 90 |
} |
| 91 |
if ( $images_generator ) { |
| 92 |
$wp_admin_bar->add_node( array( |
| 93 |
'id' => 'mwai-image-generator', |
| 94 |
'title' => MWAI_IMG_WAND_HTML . __( 'Images', 'ai-engine' ), |
| 95 |
'href' => admin_url( 'tools.php?page=mwai_images_generator' ), |
| 96 |
'meta' => array( 'class' => 'mwai-images-generator' ), |
| 97 |
) ); |
| 98 |
} |
| 99 |
|
| 100 |
// The Global Magic Wand |
| 101 |
// if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { |
| 102 |
// $wp_admin_bar->add_node( array( |
| 103 |
// 'id' => 'mwai-debug', |
| 104 |
// 'title' => MWAI_IMG_WAND_HTML . __( 'Magic Wand', 'ai-engine' ), |
| 105 |
// //'href' => admin_url( 'tools.php?page=mwai_debug' ), |
| 106 |
// 'meta' => array( 'class' => 'mwai-debug' ), |
| 107 |
// ) ); |
| 108 |
// } |
| 109 |
|
| 110 |
if ( $playground ) { |
| 111 |
$wp_admin_bar->add_node( array( |
| 112 |
'id' => 'mwai-playground', |
| 113 |
'title' => MWAI_IMG_WAND_HTML . __( 'Playground', 'ai-engine' ), |
| 114 |
'href' => admin_url( 'tools.php?page=mwai_dashboard' ), |
| 115 |
'meta' => array( 'class' => 'mwai-playground' ), |
| 116 |
) ); |
| 117 |
} |
| 118 |
} |
| 119 |
|
| 120 |
public function ai_playground() { |
| 121 |
echo '<div id="mwai-playground"></div>'; |
| 122 |
} |
| 123 |
|
| 124 |
public function ai_content_generator() { |
| 125 |
echo '<div id="mwai-content-generator"></div>'; |
| 126 |
} |
| 127 |
|
| 128 |
public function ai_image_generator() { |
| 129 |
echo '<div id="mwai-image-generator"></div>'; |
| 130 |
} |
| 131 |
|
| 132 |
function post_row_actions( $actions, $post ) { |
| 133 |
//if ( $post->post_type === 'post' ) { |
| 134 |
$actions['ai_titles'] = '<a class="mwai-link-title" href="#" data-id="' . |
| 135 |
$post->ID . '" data-title="' . $post->post_title . '"> |
| 136 |
' . MWAI_IMG_WAND_HTML_XS . ' Title</a>'; |
| 137 |
$actions['ai_excerpts'] = '<a class="mwai-link-excerpt" href="#" data-id="' . |
| 138 |
$post->ID . '" data-title="' . $post->post_title . '"> |
| 139 |
' . MWAI_IMG_WAND_HTML_XS . ' Excerpt</a>'; |
| 140 |
//} |
| 141 |
return $actions; |
| 142 |
} |
| 143 |
|
| 144 |
function admin_footer() { |
| 145 |
echo '<div id="mwai-admin-postsList"></div>'; |
| 146 |
} |
| 147 |
|
| 148 |
function admin_enqueue_scripts() { |
| 149 |
$physical_file = MWAI_PATH . '/app/index.js'; |
| 150 |
$cache_buster = file_exists( $physical_file ) ? filemtime( $physical_file ) : MWAI_VERSION; |
| 151 |
wp_register_script( 'mwai-vendor', MWAI_URL . 'app/vendor.js', null, $cache_buster ); |
| 152 |
wp_register_script( 'mwai', MWAI_URL . 'app/index.js', [ 'mwai-vendor', |
| 153 |
'wp-element', 'wp-components', 'wp-edit-post', 'wp-plugins', 'wp-i18n' |
| 154 |
], $cache_buster ); |
| 155 |
wp_enqueue_script( 'mwai' ); |
| 156 |
|
| 157 |
// The MD5 of the translation file built by WP uses app/i18n.js instead of app/index.js |
| 158 |
add_filter( 'load_script_translation_file', function( $file, $handle, $domain ) { |
| 159 |
if ( $domain !== 'ai-engine' ) { return $file; } |
| 160 |
$file = str_replace( md5( 'app/index.js' ), md5( 'app/i18n.js' ), $file ); |
| 161 |
return $file; |
| 162 |
}, 10, 3 ); |
| 163 |
|
| 164 |
// This is useless for AI Engine, but it avoids issues when themes and plugin calls |
| 165 |
// wp_enqueue_media too late (usually, they call it in the footer). Until someone |
| 166 |
// figures out what the issue is, let's load it here. |
| 167 |
wp_enqueue_media(); |
| 168 |
|
| 169 |
wp_set_script_translations( 'mwai', 'ai-engine' ); |
| 170 |
wp_localize_script( 'mwai', 'mwai', [ |
| 171 |
'api_url' => rest_url( 'mwai/v1' ), |
| 172 |
'rest_url' => rest_url(), |
| 173 |
'plugin_url' => MWAI_URL, |
| 174 |
'user_data' => $this->core->getUserData(), |
| 175 |
'prefix' => MWAI_PREFIX, |
| 176 |
'domain' => MWAI_DOMAIN, |
| 177 |
'is_pro' => class_exists( 'MeowPro_MWAI_Core' ), |
| 178 |
'is_registered' => !!$this->is_registered(), |
| 179 |
'rest_nonce' => wp_create_nonce( 'wp_rest' ), |
| 180 |
'session' => $this->core->get_session_id(), |
| 181 |
'options' => $this->core->get_all_options(), |
| 182 |
'pricing' => MWAI_OPENAI_MODELS, |
| 183 |
'chatbots' => $this->core->getChatbots(), |
| 184 |
'themes' => $this->core->getThemes(), |
| 185 |
] ); |
| 186 |
} |
| 187 |
|
| 188 |
function is_registered() { |
| 189 |
return apply_filters( MWAI_PREFIX . '_meowapps_is_registered', false, MWAI_PREFIX ); |
| 190 |
} |
| 191 |
|
| 192 |
function app_menu() { |
| 193 |
add_submenu_page( 'meowapps-main-menu', 'AI Engine', 'AI Engine', 'manage_options', |
| 194 |
'mwai_settings', array( $this, 'admin_settings' ) ); |
| 195 |
} |
| 196 |
|
| 197 |
function admin_settings() { |
| 198 |
echo '<div id="mwai-admin-settings"></div>'; |
| 199 |
} |
| 200 |
} |
| 201 |
|
| 202 |
?> |