_name = TINVWL_PREFIX; $this->_version = TINVWL_FVERSION; $this->set_locale(); $this->define_hooks(); $this->object_admin = new TInvWL_Admin_TInvWL( $this->_name, $this->_version ); // Allow to disable wishlist for frontend conditionally. Must be hooked on 'plugins_loaded' action. if ( apply_filters( 'tinvwl_load_frontend', true ) ) { $this->object_public = TInvWL_Public_TInvWL::instance( $this->_name, $this->_version ); } } /** * Run the plugin. */ public function run(): void { if ( is_null( get_option( $this->_name . '_db_ver', null ) ) ) { TInvWL_Activator::activate(); } TInvWL_View::_init( $this->_name, $this->_version ); TInvWL_Form::_init( $this->_name ); if ( is_admin() ) { new TInvWL_WizardSetup( $this->_name, $this->_version ); new TInvWL_Export( $this->_name, $this->_version ); TInvWL_Admin_Notices::instance(); $this->object_admin->load_function(); } else { // Allow to disable wishlist for frontend conditionally. Must be hooked on 'plugins_loaded' action. if ( apply_filters( 'tinvwl_load_frontend', true ) && $this->object_public ) { $this->object_public->load_function(); } } $this->deprecated_hook_handlers['actions'] = new TInvWL_Deprecated_Actions(); $this->deprecated_hook_handlers['filters'] = new TInvWL_Deprecated_Filters(); TInvWL_API::init(); } /** * Set the locale for the plugin. */ private function set_locale(): void { if ( function_exists( 'determine_locale' ) ) { $locale = determine_locale(); } else { $locale = is_admin() && function_exists( 'get_user_locale' ) ? get_user_locale() : get_locale(); } $locale = apply_filters( 'plugin_locale', $locale, TINVWL_DOMAIN ); $mofile = sprintf( '%1$s-%2$s.mo', TINVWL_DOMAIN, $locale ); $mofiles = array( WP_LANG_DIR . DIRECTORY_SEPARATOR . basename( TINVWL_PATH ) . DIRECTORY_SEPARATOR . $mofile, WP_LANG_DIR . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . $mofile, TINVWL_PATH . 'languages' . DIRECTORY_SEPARATOR . $mofile, ); foreach ( $mofiles as $mofile ) { if ( file_exists( $mofile ) && load_textdomain( TINVWL_DOMAIN, $mofile ) ) { return; } } load_plugin_textdomain( TINVWL_DOMAIN, false, basename( TINVWL_PATH ) . DIRECTORY_SEPARATOR . 'languages' ); } /** * Define hooks for the plugin. */ public function define_hooks(): void { add_filter( 'plugin_action_links_' . plugin_basename( TINVWL_PATH . 'ti-woocommerce-wishlist.php' ), [ $this, 'action_links' ] ); add_action( 'after_setup_theme', 'tinvwl_set_utm', 100 ); if ( apply_filters( 'tinvwl_allow_data_cookies', true ) ) { add_action( 'wp_logout', [ $this, 'reset_cookie' ] ); add_action( 'wp_login', [ $this, 'reset_cookie' ] ); } } /** * Reset cookies sharekey on logout. * * @return void */ public function reset_cookie(): void { wc_setcookie( 'tinv_wishlistkey', 0, time() - HOUR_IN_SECONDS ); unset( $_COOKIE['tinv_wishlistkey'] ); wc_setcookie( 'tinvwl_wishlists_data_counter', 0, time() - HOUR_IN_SECONDS ); unset( $_COOKIE['tinvwl_wishlists_data_counter'] ); wc_setcookie( 'tinvwl_update_data', 1, time() + HOUR_IN_SECONDS ); } /** * Define the action links for the plugin. * * @param array $links Existing action links. * * @return array Modified action links. */ public function action_links( array $links ): array { $plugin_links = [ '' . __( 'Settings', 'ti-woocommerce-wishlist' ) . '', '' . __( 'Premium Version', 'ti-woocommerce-wishlist' ) . '' ]; return array_merge( $links, $plugin_links ); } }