init(); } return self::$instance; } /** * Path to the plugin directory * * @var $plugin_path */ public $plugin_path; /** * URL to the plugin directory * * @var $plugin_url */ public $plugin_url; /** * Mind constructor. */ public function __construct() { /* We do nothing here! */ } /** * Init options */ public function init() { $this->plugin_path = plugin_dir_path( __FILE__ ); $this->plugin_url = plugin_dir_url( __FILE__ ); // include helper files. $this->include_dependencies(); // hooks. add_action( 'init', [ $this, 'init_hook' ] ); } /** * Include dependencies */ private function include_dependencies() { require_once $this->plugin_path . 'classes/class-prompts.php'; require_once $this->plugin_path . 'classes/class-ai-settings.php'; require_once $this->plugin_path . 'classes/class-ai-stream.php'; require_once $this->plugin_path . 'classes/class-ai-request.php'; require_once $this->plugin_path . 'classes/class-admin.php'; require_once $this->plugin_path . 'classes/class-assets.php'; require_once $this->plugin_path . 'classes/class-rest.php'; } /** * Init Hook */ public function init_hook() { // load textdomain. load_plugin_textdomain( 'mind', false, basename( dirname( __FILE__ ) ) . '/languages' ); } /** * Activation Hook */ public function activation_hook() { // Full settings reset — intentional breaking change on upgrade. update_option( MIND_SETTINGS_OPTION, array( 'ai_provider' => '', 'ai_model' => '', ) ); delete_option( 'mind_db_version' ); set_transient( '_mind_welcome_screen_activation_redirect', true, 30 ); } /** * Get settings that are still part of the public plugin contract. * * @param mixed $settings Raw settings option value. * * @return array */ public static function get_supported_settings( $settings ) { if ( ! is_array( $settings ) ) { return array(); } return array_intersect_key( $settings, array_flip( self::SUPPORTED_SETTINGS_KEYS ) ); } /** * Deactivation Hook */ public function deactivation_hook() { // Nothing here yet. } } /** * Function works with the Mind class instance * * @return object Mind */ function mind() { return Mind::instance(); } add_action( 'plugins_loaded', 'mind' ); register_activation_hook( __FILE__, [ mind(), 'activation_hook' ] ); register_deactivation_hook( __FILE__, [ mind(), 'deactivation_hook' ] );