=' ) && version_compare( $wp_version, VEFDK_MIN_WP_VERSION, '>=' ); } if ( ! vefdk_environment_ok() ) { add_action( 'admin_notices', static function () { echo '

'; printf( /* translators: 1: minimum PHP version, 2: minimum WordPress version */ esc_html__( 'VEFdocsKit requires PHP %1$s+ and WordPress %2$s+. The plugin is disabled until these requirements are met.', 'vefdocskit' ), esc_html( VEFDK_MIN_PHP_VERSION ), esc_html( VEFDK_MIN_WP_VERSION ) ); echo '

'; } ); return; } $vefdk_core = array( 'class-vefdk-color.php', 'class-vefdk-text.php', 'class-vefdk-font-metrics.php', 'pdf/class-vefdk-pdf-exception.php', 'pdf/class-vefdk-pdf-syntax.php', 'pdf/class-vefdk-pdf-document.php', 'pdf/class-vefdk-pdf-image.php', 'pdf/class-vefdk-pdf-pages.php', 'pdf/class-vefdk-pdf-stamper.php', 'stamp/class-vefdk-stamp-definition.php', 'stamp/class-vefdk-stamp-renderer.php', 'stamp/class-vefdk-placement.php', 'class-vefdk-settings.php', 'class-vefdk-db.php', 'class-vefdk-storage.php', 'class-vefdk-capabilities.php', 'class-vefdk-accounts.php', 'class-vefdk-journal.php', 'class-vefdk-job.php', 'class-vefdk-tools.php', 'class-vefdk-samples.php', 'class-vefdk-download.php', 'class-vefdk-rest.php', 'class-vefdk-rate-limiter.php', 'class-vefdk-prefs.php', 'class-vefdk-free-license.php', 'class-vefdk-menu-family.php', 'class-vefdk-views.php', 'class-vefdk-privacy.php', 'interface-vefdk-editor.php', ); foreach ( $vefdk_core as $vefdk_file ) { require_once VEFDK_PLUGIN_DIR . 'includes/core/' . $vefdk_file; } require_once VEFDK_PLUGIN_DIR . 'includes/class-vefdk-installer.php'; require_once VEFDK_PLUGIN_DIR . 'includes/class-vefdk-front.php'; require_once VEFDK_PLUGIN_DIR . 'includes/editors/class-vefdk-editors.php'; require_once VEFDK_PLUGIN_DIR . 'includes/class-vefdk-admin-ui.php'; require_once VEFDK_PLUGIN_DIR . 'includes/class-vefdk-data-tools.php'; require_once VEFDK_PLUGIN_DIR . 'includes/class-vefdk-admin.php'; require_once VEFDK_PLUGIN_DIR . 'includes/class-vefdk-help.php'; require_once VEFDK_PLUGIN_DIR . 'includes/class-vefdk-about.php'; require_once VEFDK_PLUGIN_DIR . 'includes/class-vefdk-diagnostic.php'; require_once VEFDK_PLUGIN_DIR . 'includes/class-vefdk-support.php'; require_once VEFDK_PLUGIN_DIR . 'includes/class-vefdk-free-license-admin.php'; if ( is_admin() ) { VEFDK_Menu_Family::init(); } /** * Starts the modules once WordPress has loaded every plugin. * * @return void */ function vefdk_bootstrap() { VEFDK_DB::maybe_upgrade(); VEFDK_Capabilities::hooks(); VEFDK_Free_License::hooks(); VEFDK_Accounts::hooks(); VEFDK_Download::hooks(); VEFDK_REST::hooks(); VEFDK_Front::hooks(); VEFDK_Editors::hooks(); VEFDK_Privacy::hooks(); add_action( VEFDK_Installer::PURGE_HOOK, array( 'VEFDK_Journal', 'purge_expired' ) ); if ( is_admin() ) { VEFDK_Admin::instance(); VEFDK_Data_Tools::hooks(); VEFDK_Support::instance(); VEFDK_Free_License_Admin::hooks(); } /** * The core of VEFdocsKit is loaded. Other plugins check for it after this hook, never before. */ do_action( 'vefdk_loaded' ); } add_action( 'plugins_loaded', 'vefdk_bootstrap' ); register_activation_hook( VEFDK_PLUGIN_FILE, array( 'VEFDK_Installer', 'activate' ) ); register_deactivation_hook( VEFDK_PLUGIN_FILE, array( 'VEFDK_Installer', 'deactivate' ) );