includes(); // Init admin pages. add_action( 'admin_menu', array( $this, 'add_dashboard_page' ) ); if ( current_user_can( 'manage_options' ) ) { add_action( 'admin_notices', array( $this, 'show_stripe_updated_notice' ) ); add_action( 'admin_notices', array( $this, 'show_rating_notice' ) ); add_action( 'admin_notices', array( $this, 'show_pro_available_notice' ) ); // Show Promote free plan notice only for Free version, for admins and if WPMU DEV Dashboard is not activated. if ( ! FORMINATOR_PRO && ! class_exists( 'WPMUDEV_Dashboard' ) // The notice was already dismissed. && ! self::was_notification_dismissed( 'forminator_promote_free_plan' ) // Remind me later was clicked. && ! self::maybe_remind_later() ) { add_action( 'admin_notices', array( $this, 'promote_free_plan' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'promote_free_plan_scripts' ) ); } add_action( 'admin_notices', array( $this, 'check_stripe_addon_version' ) ); add_action( 'admin_notices', array( $this, 'show_cf7_importer_notice' ) ); if ( ! forminator_addons_disabled() ) { add_action( 'admin_notices', array( $this, 'show_addons_update_notice' ) ); } add_action( 'admin_notices', array( $this, 'set_encryption_key_notice' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'deactivation_scripts' ) ); add_action( 'admin_footer-plugins.php', array( $this, 'load_deactivation_survey_modal' ) ); } // Add plugin action links. add_filter( 'plugin_action_links_' . FORMINATOR_PLUGIN_BASENAME, array( $this, 'add_plugin_action_links' ) ); if ( forminator_is_networkwide() ) { add_filter( 'network_admin_plugin_action_links_' . FORMINATOR_PLUGIN_BASENAME, array( $this, 'add_plugin_action_links', ) ); } // Add links next to plugin details. add_filter( 'plugin_row_meta', array( $this, 'plugin_row_meta' ), 10, 3 ); // Update permissions when user profile is updated. add_action( 'profile_update', array( $this, 'maybe_update_permissions' ), 10, 1 ); // Clear pages cache. add_action( 'save_post', array( $this, 'clear_pages_cache' ) ); add_action( 'delete_post', array( $this, 'clear_pages_cache' ) ); add_action( 'trash_post', array( $this, 'clear_pages_cache' ) ); add_action( 'untrash_post', array( $this, 'clear_pages_cache' ) ); // Init Admin AJAX class. new Forminator_Admin_AJAX(); /** * Triggered when Admin is loaded */ do_action( 'forminator_admin_loaded' ); } /** * Init deactivation scripts * * @return void */ public function deactivation_scripts() { $screen = get_current_screen(); if ( 'plugins' !== $screen->id && 'plugins-network' !== $screen->id ) { return; } // Load admin scripts. wp_register_script( 'forminator-admin', forminator_plugin_url() . 'requirejs/main.js', array( 'backbone', 'underscore', 'jquery', ), FORMINATOR_VERSION, true ); // Load jquery ui. forminator_admin_jquery_ui_init(); // Load shared-ui scripts. forminator_sui_scripts(); // Load admin styles. forminator_admin_enqueue_styles(); $forminator_data = new Forminator_Admin_Data(); $forminator_l10n = new Forminator_Admin_L10n(); $data = $forminator_data->get_options_data(); $l10n = $forminator_l10n->get_l10n_strings(); wp_localize_script( 'forminator-admin', 'forminatorData', $data ); wp_localize_script( 'forminator-admin', 'forminatorl10n', $l10n ); wp_enqueue_script( 'forminator-admin' ); } /** * Load Deactivation Survey Modal * * @return void */ public function load_deactivation_survey_modal() { $file_name = 'deactivation-survey-modal.php'; $file_path = forminator_plugin_dir() . 'admin/views/plugins/' . $file_name; require_once $file_path; } /** * Include required files * * @since 1.0 */ private function includes() { // Admin pages. include_once forminator_plugin_dir() . 'admin/pages/dashboard-page.php'; include_once forminator_plugin_dir() . 'admin/pages/entries-page.php'; include_once forminator_plugin_dir() . 'admin/pages/integrations-page.php'; include_once forminator_plugin_dir() . 'admin/pages/settings-page.php'; include_once forminator_plugin_dir() . 'admin/pages/addons-page.php'; include_once forminator_plugin_dir() . 'admin/pages/reports-page.php'; include_once forminator_plugin_dir() . 'admin/pages/templates-page.php'; // Admin AJAX. include_once forminator_plugin_dir() . 'admin/classes/class-admin-ajax.php'; // Admin Data. include_once forminator_plugin_dir() . 'admin/classes/class-admin-data.php'; // Admin l10n. include_once forminator_plugin_dir() . 'admin/classes/class-admin-l10n.php'; if ( forminator_is_import_plugin_enabled( 'cf7' ) ) { // CF7 Import. include_once forminator_plugin_dir() . 'admin/classes/thirdparty-importers/class-importer-cf7.php'; } if ( forminator_is_import_plugin_enabled( 'ninjaforms' ) ) { // Ninjaforms Import. include_once forminator_plugin_dir() . 'admin/classes/thirdparty-importers/class-importer-ninja.php'; } if ( forminator_is_import_plugin_enabled( 'gravityforms' ) ) { // Gravityforms CF7 Import. include_once forminator_plugin_dir() . 'admin/classes/thirdparty-importers/class-importer-gravity.php'; } // Admin Addons page. include_once forminator_plugin_dir() . 'admin/classes/class-addons-page.php'; // Admin report page. include_once forminator_plugin_dir() . 'admin/classes/class-reports-page.php'; } /** * Initialize Dashboard page * * @since 1.0 */ public function add_dashboard_page() { $title = esc_html__( 'Forminator', 'forminator' ); $this->pages['forminator'] = new Forminator_Dashboard_Page( 'forminator', 'dashboard', $title, $title, false, false ); $this->pages['forminator-dashboard'] = new Forminator_Dashboard_Page( 'forminator', 'dashboard', esc_html__( 'Forminator Dashboard', 'forminator' ), esc_html__( 'Dashboard', 'forminator' ), 'forminator' ); } /** * Add Integrations page * * @since 1.1 */ public function add_integrations_page() { add_action( 'admin_menu', array( $this, 'init_integrations_page' ) ); } /** * Initialize Integrations page * * @since 1.1 */ public function init_integrations_page() { $this->pages['forminator-integrations'] = new Forminator_Integrations_Page( 'forminator-integrations', 'integrations', esc_html__( 'Integrations', 'forminator' ), esc_html__( 'Integrations', 'forminator' ), 'forminator' ); // TODO: remove this after converted to JS. $addons = Forminator_Integration_Loader::get_instance()->get_addons()->to_array(); foreach ( $addons as $slug => $addon_array ) { $addon_class = forminator_get_addon( $slug ); if ( $addon_class && is_callable( array( $addon_class, 'admin_hook_html_version' ) ) ) { call_user_func( array( $addon_class, 'admin_hook_html_version' ) ); } } } /** * Add Settings page * * @since 1.0 */ public function add_settings_page() { add_action( 'admin_menu', array( $this, 'init_settings_page' ) ); } /** * Initialize Settings page * * @since 1.0 */ public function init_settings_page() { $this->pages['forminator-settings'] = new Forminator_Settings_Page( 'forminator-settings', 'settings', esc_html__( 'Global Settings', 'forminator' ), esc_html__( 'Settings', 'forminator' ), 'forminator' ); } /** * Add Templates page * * @since 1.0 */ public function add_templates_page() { add_action( 'admin_menu', array( $this, 'init_templates_page' ) ); } /** * Initialize templates page * * @since 1.0 */ public function init_templates_page() { $section_name = esc_html__( 'Templates', 'forminator' ); $this->pages['forminator-templates'] = new Forminator_Templates_Page( 'forminator-templates', 'templates', $section_name, $section_name, 'forminator' ); } /** * Add Entries page * * @since 1.0.5 */ public function add_entries_page() { add_action( 'admin_menu', array( $this, 'init_entries_page' ) ); } /** * Initialize Entries page * * @since 1.0.5 */ public function init_entries_page() { $this->pages['forminator-entries'] = new Forminator_Entries_Page( 'forminator-entries', 'common/entries', esc_html__( 'Forminator Submissions', 'forminator' ), esc_html__( 'Submissions', 'forminator' ), 'forminator' ); } /** * Add Forminator Pro page * * @since 1.0 */ public function add_upgrade_page() { add_action( 'admin_menu', array( $this, 'init_upgrade_page' ), 20 ); } /** * Initialize Settings page * * @since 1.0 */ public function init_upgrade_page() { add_submenu_page( 'forminator', esc_html__( 'Get Forminator Pro', 'forminator' ), esc_html__( 'Get Forminator Pro', 'forminator' ), forminator_get_permission( 'forminator-upgrade' ), 'https://wpmudev.com/project/forminator-pro/?utm_source=forminator&utm_medium=plugin&utm_campaign=forminator_submenu_upsell' ); } /** * Add Add-ons page * * @since 1.15 */ public function add_addons_page() { add_action( 'admin_menu', array( $this, 'init_addons_page' ) ); } /** * Initialize Add-ons page * * @since 1.15 */ public function init_addons_page() { $this->pages['forminator-addons'] = new Forminator_Addons_Page( 'forminator-addons', 'addons', esc_html__( 'Forminator Add-ons', 'forminator' ), esc_html__( 'Add-ons', 'forminator' ), 'forminator' ); } /** * Add Reports page * * @since 1.18.0 */ public function add_reports_page() { add_action( 'admin_menu', array( $this, 'init_reports_page' ) ); } /** * Initialize Reports page * * @since 1.18.0 */ public function init_reports_page() { $this->pages['forminator-reports'] = new Forminator_Reports_Page( 'forminator-reports', 'common/reports', esc_html__( 'Reports', 'forminator' ), esc_html__( 'Reports', 'forminator' ), 'forminator' ); } /** * Check if we have any old Stripe form * * @return bool * @since 1.9 */ public function has_old_stripe_forms() { $forms = Forminator_Form_Model::model()->get_models_by_field_and_version( 'stripe-1', '1.9-alpha.1' ); if ( count( $forms ) > 0 ) { return true; } return false; } /** * Displays an admin notice when the user is an active member and doesn't have Forminator Pro installed * Shown in forminator pages. Per user notification. */ public function show_pro_available_notice() { if ( ( isset( $_GET['page'] ) && 'forminator' !== substr( sanitize_text_field( wp_unslash( $_GET['page'] ) ), 0, 10 ) ) || FORMINATOR_PRO ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended return; } // The notice was already dismissed. if ( self::was_notification_dismissed( 'forminator_pro_is_available' ) ) { return; } // Show the notice only to users who can do something about this and who are members. if ( ! self::user_can_update_plugins() || ! forminator_can_install_pro() ) { return; } $url = add_query_arg( array( 'page' => 'wpmudev-plugins' ), network_admin_url( 'admin.php' ) ) . '#pid=2097296'; $link = '' . esc_html__( 'Upgrade', 'forminator' ) . ''; $username = forminator_get_current_username(); $name = ! empty( $username ) ? $username : esc_html__( 'Hey', 'forminator' ); $message = '
'; /* translators: user's name */ $message .= sprintf( esc_html__( '%s, it appears you have an active WPMU DEV membership but haven\'t upgraded Forminator to the pro version. You won\'t lose any settings upgrading, go for it!', 'forminator' ), $name ); $message .= '
'; $message .= '' . $link . '
'; echo ''; $message .= esc_html__( 'Pro Form Templates—Now Free for Everyone!', 'forminator' ); $message .= '
'; $message .= ''; $message .= esc_html__( 'Build forms faster with professionally designed templates—now free in the Forminator plugin.', 'forminator' ); $message .= '
'; $message .= ''; $message .= esc_html__( 'Connect your site to access them instantly and unlock WPMU DEV’s full suite of tools—trusted by 50K+ developers.', 'forminator' ); $message .= ' ' . esc_html__( 'All completely free.', 'forminator' ) . ''; $message .= '
'; $message .= '' . $button_1 . ' ' . $remind . '
'; echo ''; /* translators: 1. Forminator version. 2. Min Stripe addon version. */ $message .= sprintf( esc_html__( 'We\'ve noticed you have updated to Forminator Pro version %1$s. Please ensure you also update your Forminator Stripe Subscriptions Add-on to version %2$s or higher to ensure compatibility with the new submissions processes.', 'forminator' ), FORMINATOR_VERSION, $min_stripe_addon_version ); $message .= '
'; echo 'tag with link to stripe SCA Compliant, 2. closing tag. */ esc_html__( 'To make Forminator\'s Stripe field %1$sSCA Compliant%2$s, we have replaced the Stripe Checkout modal with Stripe Elements which adds an inline field to collect your customer\'s credit or debit card details. Your existing forms with Stripe field are automatically updated, but we recommend checking them to ensure everything works fine.', 'forminator' ), '', '' ); ?>
tag. 2. Closing ',
'',
'FORMINATOR_ENCRYPTION_KEY',
'wp-config.php'
);
?>
FORMINATOR_ENCRYPTION_KEY',
'wp-config.php'
);
?>
define( \'FORMINATOR_ENCRYPTION_KEY\', \'' . esc_html( Forminator_Encryption::generate_encryption_key() ) . '\' );' ); ?>