false, 'forms_loaded' => array(), 'created_entries' => array(), 'pro_is_authorized' => false, ); // For reverse compatibility. Load Pro if it's still nested. $frm_path = __DIR__; if ( file_exists( $frm_path . '/pro/formidable-pro.php' ) ) { include $frm_path . '/pro/formidable-pro.php'; } FrmHooksController::trigger_load_hook(); } // If __autoload is active, put it on the spl_autoload stack. if ( is_array( spl_autoload_functions() ) && in_array( '__autoload', spl_autoload_functions(), true ) ) { spl_autoload_register( '__autoload' ); } // Add the autoloader. spl_autoload_register( 'frm_forms_autoloader' ); /** * @param string $class_name Class name. * * @return void */ function frm_forms_autoloader( $class_name ) { // Only load Frm classes here. if ( ! preg_match( '/^Frm.+$/', $class_name ) || preg_match( '/^FrmPro.+$/', $class_name ) ) { return; } frm_class_autoloader( $class_name, __DIR__ ); } /** * Autoload the Formidable and Pro classes * * @since 3.0 * * @param string $class_name Class name. * @param string $filepath File path. * * @return void */ function frm_class_autoloader( $class_name, $filepath ) { $original_filepath = $filepath; $filepath .= '/classes/'; if ( preg_match( '/^.+Helper$/', $class_name ) ) { $filepath .= 'helpers/'; } elseif ( preg_match( '/^.+Controller$/', $class_name ) ) { $filepath .= 'controllers/'; } elseif ( preg_match( '/^.+Factory$/', $class_name ) ) { $filepath .= 'factories/'; } elseif ( preg_match( '/^.+StyleComponent$/', $class_name ) ) { $filepath .= 'views/styles/components/'; } else { $filepath .= 'models/'; if ( str_contains( $class_name, 'Field' ) && ! file_exists( $filepath . $class_name . '.php' ) ) { $filepath .= 'fields/'; } } if ( file_exists( $filepath . $class_name . '.php' ) ) { require $filepath . $class_name . '.php'; return; } if ( preg_match( '/^FrmStrpLite.+$/', $class_name ) || preg_match( '/^FrmTransLite.+$/', $class_name ) ) { // Autoload for /stripe/ folder. $filepath = $original_filepath . '/stripe/'; if ( preg_match( '/^.+Helper$/', $class_name ) ) { $filepath .= 'helpers/'; } elseif ( preg_match( '/^.+Controller$/', $class_name ) ) { $filepath .= 'controllers/'; } else { $filepath .= 'models/'; } $filepath .= $class_name . '.php'; if ( file_exists( $filepath ) ) { require $filepath; } return; } if ( ! preg_match( '/^FrmSquareLite.+$/', $class_name ) ) { return; } $filepath = $original_filepath . '/square/'; if ( preg_match( '/^.+Helper$/', $class_name ) ) { $filepath .= 'helpers/'; } elseif ( preg_match( '/^.+Controller$/', $class_name ) ) { $filepath .= 'controllers/'; } else { $filepath .= 'models/'; } $filepath .= $class_name . '.php'; if ( file_exists( $filepath ) ) { require $filepath; } } add_action( 'activate_' . FrmAppHelper::plugin_folder() . '/formidable.php', 'frm_maybe_install' ); /** * This function is triggered when Formidable is activated. * * @return void */ function frm_maybe_install() { if ( get_transient( FrmOnboardingWizardController::TRANSIENT_NAME ) !== 'no' ) { set_transient( FrmOnboardingWizardController::TRANSIENT_NAME, FrmOnboardingWizardController::TRANSIENT_VALUE, 60 ); } FrmAppController::handle_activation(); } register_deactivation_hook( __FILE__, function () { if ( ! class_exists( 'FrmCronController', false ) ) { require_once __DIR__ . '/classes/controllers/FrmCronController.php'; } FrmCronController::remove_crons(); } );