'; echo esc_html( 'Another copy of the Agenized plugin is already loaded. Deactivate and delete the duplicate under Plugins, or remove the extra folder from wp-content/plugins/ so only agenized-for-woocommerce remains.' ); echo '

'; } ); return; } define('AGENIZED_CHAT_WIDGET_VERSION', '0.2.4'); define('AGENIZED_CHAT_WIDGET_PLUGIN_FILE', __FILE__); define('AGENIZED_CHAT_WIDGET_PLUGIN_DIR', plugin_dir_path(__FILE__)); define('AGENIZED_CHAT_WIDGET_PLUGIN_URL', plugin_dir_url(__FILE__)); require_once AGENIZED_CHAT_WIDGET_PLUGIN_DIR . 'includes/Defaults.php'; require_once AGENIZED_CHAT_WIDGET_PLUGIN_DIR . 'includes/Options.php'; require_once AGENIZED_CHAT_WIDGET_PLUGIN_DIR . 'includes/OAuth.php'; require_once AGENIZED_CHAT_WIDGET_PLUGIN_DIR . 'includes/AgenizedApi.php'; require_once AGENIZED_CHAT_WIDGET_PLUGIN_DIR . 'includes/AdminMenu.php'; require_once AGENIZED_CHAT_WIDGET_PLUGIN_DIR . 'includes/Upgrade.php'; require_once AGENIZED_CHAT_WIDGET_PLUGIN_DIR . 'includes/Embed.php'; require_once AGENIZED_CHAT_WIDGET_PLUGIN_DIR . 'includes/ContextEvents.php'; require_once AGENIZED_CHAT_WIDGET_PLUGIN_DIR . 'includes/OrderWebhook.php'; add_action('before_woocommerce_init', static function (): void { if (class_exists(\Automattic\WooCommerce\Utilities\FeaturesUtil::class)) { \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility('custom_order_tables', __FILE__, true); } }); /** * Bootstrap plugin. */ function agenized_chat_widget_init(): void { \AgenizedChatWidget\Upgrade::init(); \AgenizedChatWidget\AdminMenu::init(); \AgenizedChatWidget\Embed::init(); \AgenizedChatWidget\ContextEvents::init(); \AgenizedChatWidget\OrderWebhook::init(); } add_action('plugins_loaded', 'agenized_chat_widget_init'); /** * Add quick action links on Plugins page. * * @param string[] $links Existing action links. * @return string[] */ add_filter('plugin_action_links_' . plugin_basename(__FILE__), static function (array $links): array { $setup_link = sprintf( '%s', esc_url(admin_url('admin.php?page=agenized')), esc_html__('Setup', 'agenized-for-woocommerce') ); array_unshift($links, $setup_link); return $links; }); /** * Add row meta links under plugin description. * * @param string[] $links Existing row meta links. * @param string $file Plugin file path. * @return string[] */ add_filter('plugin_row_meta', static function (array $links, string $file): array { if ($file !== plugin_basename(__FILE__)) { return $links; } $signup_link = sprintf( '%s', esc_url(\AgenizedChatWidget\Defaults::signup_url()), esc_html__('Sign up', 'agenized-for-woocommerce') ); $links[] = $signup_link; return $links; }, 10, 2); /** * Dismiss setup reminder notice for current admin user. */ add_action('admin_init', static function (): void { if (!current_user_can('manage_options')) { return; } // phpcs:disable WordPress.Security.NonceVerification.Recommended if (!isset($_GET['agenized_dismiss_setup_notice'])) { return; } check_admin_referer('agenized_dismiss_setup_notice'); update_user_meta(get_current_user_id(), 'agenized_setup_notice_dismissed', '1'); $redirect_url = remove_query_arg(['agenized_dismiss_setup_notice', '_wpnonce']); wp_safe_redirect($redirect_url); exit; // phpcs:enable WordPress.Security.NonceVerification.Recommended }); /** * Global admin setup reminder. * Visible across admin pages until account is connected and widget is enabled. */ add_action('admin_notices', static function (): void { if (!current_user_can('manage_options')) { return; } $is_connected = \AgenizedChatWidget\OAuth::is_connected(); $widget_enabled = \AgenizedChatWidget\Options::get_bool(\AgenizedChatWidget\Options::OPT_ENABLE_WIDGET, true); $has_channel = \AgenizedChatWidget\Options::get_string(\AgenizedChatWidget\Options::OPT_CHANNEL_PUBLIC_KEY, '') !== ''; $is_setup_complete = $is_connected && $widget_enabled && $has_channel; $user_id = get_current_user_id(); if ($is_setup_complete) { delete_user_meta($user_id, 'agenized_setup_notice_dismissed'); return; } $is_dismissed = get_user_meta($user_id, 'agenized_setup_notice_dismissed', true) === '1'; if ($is_dismissed) { return; } $setup_url = admin_url('admin.php?page=agenized'); ?>