_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 );
}
}