activate(); (new Deactivation())->register(); (new Uninstallation())->register(); } /** * Initialize the hooks * * @return void */ public function init_hooks() { add_action('init', array($this, 'registerBitformsPostType')); add_action("bitforms_exec_integrations", array(Integrations::class, 'integrationExecutionHelper'), 1, 5); // Localize our plugin add_action('init', array($this, 'localization_setup')); // initialize the classes add_action('init', array($this, 'init_classes')); add_action('init', array($this, 'entryMetaKeyUpdate')); add_filter('plugin_action_links_' . plugin_basename(BITFORMS_PLUGIN_MAIN_FILE), array($this, 'plugin_action_links')); add_action('rest_api_init', [$this, 'register_api']); } public function register_api() { $routes = new Routes(); $routes->register_routes(); } public function entryMetaKeyUpdate() { $installed = get_option('bitforms_installed'); $oldversion = null; if ($installed) { $oldversion = get_option('bitforms_version'); } if ($oldversion && version_compare($oldversion, BITFORMS_VERSION, '!=')) { update_option('bitforms_version', BITFORMS_VERSION); if (version_compare('1.0.4', $oldversion, '>=')) { // if version is lower or equal than 1.0.4 $formEntryMetaChange = new FormEntryMetaChange(); $formEntryMetaChange->changeMeta(); } } } /** * Updates bit form content tables on wp db * * @return void */ public function update_tables() { if (!current_user_can('manage_options')) { return; } global $bitforms_db_version; $installed_db_version = get_site_option("bitforms_db_version"); if ($installed_db_version != $bitforms_db_version) { DB::migrate(); } } /** * Register post type for bitforms * * @return void */ public function registerBitformsPostType() { $args = array( 'label' => __('Bitform Pages', 'bitform'), 'public' => true, 'show_ui' => true, 'show_in_menu' => false, 'capability_type' => 'page', 'hierarchical' => false, 'query_var' => false, 'supports' => array('title'), 'show_in_rest' => false ); register_post_type('bitforms', $args); } /** * Initialize plugin for localization * * @uses load_plugin_textdomain() */ public function localization_setup() { load_plugin_textdomain('bitform', false, dirname(BITFORMS_PLUGIN_BASENAME) . '/languages'); } /** * Instantiate the required classes * * @return void */ public function init_classes() { if (Request::Check('admin')) { (new Admin_Bar())->register(); } if (Request::Check('ajax')) { new AjaxService(); } if (Request::Check('frontend')) { $formHandler = new FormHandler(); $formHandler->frontend; } if (Request::isPluginPage()) { (new FileDownloadProvider())->register(); } if (current_user_can('edit_posts')) { (new GutenBlockProvider())->register(); } } /** * Plugin action links * * @param array $links * * @return array */ public function plugin_action_links($links) { $links[] = '' . __('Docs', 'bitform') . ''; return $links; } public function init_plugin() { $this->init_hooks(); $this->update_tables(); do_action('bitform_loaded'); } /** * Retrieves the main instance of the plugin. * * @since 1.0.0-alpha * * @return BITFORM Plugin main instance. */ public static function instance() { return static::$instance; } /** * Loads the plugin main instance and initializes it. * * @param string $main_file Absolute path to the plugin main file. * * @return bool True if the plugin main instance could be loaded, false otherwise. */ public static function load($main_file) { if (null !== static::$instance) { return false; } static::$instance = new static($main_file); static::$instance->register(); return true; } }