' . __('Action Required: ', 'fluentform') . '' . __('Fluent Forms Pro is not compatible with this version of Fluent Forms. Please update Fluent Forms Pro to version ', 'fluentform') . '6.2.0' . __(' or later.', 'fluentform') . ' ' . __('Update Now', 'fluentform') . ''; $renderNotice = function () use ($message) { // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Admin notice with HTML links printf('
%1$s
', $message); }; add_action('fluentform/global_menu', $renderNotice); add_action('fluentform/after_form_menu', $renderNotice); }); } }); $app = new Application($file); register_activation_hook($file, function ($network_wide) use ($app) { ($app->make(ActivationHandler::class))->handle($network_wide); }); $initializeNewSite = function ($blogId) use ($app) { if (!is_plugin_active_for_network('fluentform/fluentform.php')) { return; } switch_to_blog($blogId); ($app->make(ActivationHandler::class))->handle(false); restore_current_blog(); }; if (function_exists('wp_initialize_site')) { add_action('wp_initialize_site', function ($newSite) use ($initializeNewSite) { $initializeNewSite($newSite->id); }, 20, 1); } else { add_action('wpmu_new_blog', function ($blogId) use ($initializeNewSite) { $initializeNewSite($blogId); }, 10, 1); } register_deactivation_hook($file, function () use ($app) { ($app->make(DeactivationHandler::class))->handle(); }); add_action('admin_init', function () { if (!wp_doing_ajax()) { LegacyManagerScopes::migrate(); } }); add_action('plugins_loaded', function () use ($app) { do_action_deprecated( 'fluentform_loaded', [ $app ], FLUENTFORM_FRAMEWORK_UPGRADE, 'fluentform/loaded', 'Use fluentform/loaded instead of fluentform_loaded.' ); do_action_deprecated( 'fluentform-loaded', [ $app ], FLUENTFORM_FRAMEWORK_UPGRADE, 'fluentform/loaded', 'Use fluentform/loaded instead of fluentform-loaded.' ); do_action('fluentform/loaded', $app); }); fluentformLoadFile('Services/FluentConversational/plugin.php'); fluentformLoadFile('Services/Libraries/action-scheduler/action-scheduler.php'); (new FluentConversational)->boot(); (new FormsMigrator())->boot(); /* Plugin Meta Links — registered on init to avoid early textdomain loading (WP 6.7+) */ add_action('init', function () { add_filter('plugin_row_meta', 'fluentform_plugin_row_meta', 10, 2); }); function fluentform_plugin_row_meta($links, $file) { if ('fluentform/fluentform.php' == $file) { $row_meta = [ 'docs' => '' . esc_html__('Docs', 'fluentform') . '', 'support' => '' . esc_html__('Support', 'fluentform') . '', 'developer_docs' => '' . esc_html__('Developer Docs', 'fluentform') . '', ]; if (!defined('FLUENTFORMPRO')) { $row_meta['pro'] = '' . esc_html__('Upgrade to Pro', 'fluentform') . ''; } return array_merge($links, $row_meta); } return (array)$links; } };