Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
fusewp/core / src / Base.php
Size: Mime:
<?php

namespace FuseWP\Core;

use FuseWP\Core\Admin\AdminNotices;
use FuseWP\Core\Admin\BulkSyncHandler;
use FuseWP\Core\Admin\SettingsPage\LicenseUpgrader;
use FuseWP\Core\Admin\SettingsPage\ProUpgrade;
use FuseWP\Core\Admin\SettingsPage\SyncLogPage;
use FuseWP\Core\Admin\SettingsPage\SyncPage;
use FuseWP\Core\Integrations\Beehiiv;
use FuseWP\Core\Integrations\Birdsend;
use FuseWP\Core\Integrations\BentoNow;
use FuseWP\Core\Integrations\CampaignMonitor;
use FuseWP\Core\Integrations\ConstantContact;
use FuseWP\Core\Integrations\Drip;
use FuseWP\Core\Integrations\EmailOctopus;
use FuseWP\Core\Integrations\Engage;
use FuseWP\Core\Integrations\GetResponse;
use FuseWP\Core\Integrations\Groundhogg;
use FuseWP\Core\Integrations\Mailchimp;
use FuseWP\Core\Integrations\ActiveCampaign;
use FuseWP\Core\Integrations\Brevo;
use FuseWP\Core\Integrations\Aweber;
use FuseWP\Core\Integrations\Mailercloud\Mailercloud;
use FuseWP\Core\Integrations\MailerLite;
use FuseWP\Core\Integrations\Mailjet;
use FuseWP\Core\Integrations\Omnisend;
use FuseWP\Core\Integrations\OrttoCRM;
use FuseWP\Core\Integrations\Sender;
use FuseWP\Core\Integrations\SendPulse;
use FuseWP\Core\Integrations\Sendy;
use FuseWP\Core\Integrations\HubSpot;
use FuseWP\Core\Integrations\ConvertKit;
use FuseWP\Core\Integrations\Flodesk;
use FuseWP\Core\Integrations\Klaviyo;
use FuseWP\Core\Integrations\HighLevel;
use FuseWP\Core\Integrations\Salesforce;
use FuseWP\Core\Integrations\ZohoCRM;
use FuseWP\Core\Integrations\ZohoCampaigns;
use FuseWP\Core\Integrations\FluentCRM;
use FuseWP\Core\Integrations\MailPoet;
use FuseWP\Core\Integrations\Keap;
use FuseWP\Core\Integrations\Encharge;
use FuseWP\Core\Integrations\GoogleSheet;
use FuseWP\Core\Sync\Sources\ContactForms7;
use FuseWP\Core\Sync\Sources\FormidableForms;
use FuseWP\Core\Sync\Sources\EverestForms;
use FuseWP\Core\Sync\Sources\Forminator;
use FuseWP\Core\Sync\Sources\FluentForms;
use FuseWP\Core\Sync\Sources\GravityForms;
use FuseWP\Core\Sync\Sources\NinjaForms;
use FuseWP\Core\Sync\Sources\SureForms;
use FuseWP\Core\Sync\Sources\SyncQueueHandler;
use FuseWP\Core\Sync\Sources\WPForms;
use FuseWP\Core\Sync\Sources\WPUserRoles;
use FuseWP\Core\QueueManager\QueueManager;
use FuseWP\Core\Sync\Sources\WSForm;

if ( ! defined('ABSPATH')) {
    exit;
}

define('FUSEWP_OAUTH_URL', ! defined('W3GUY_LOCAL') ? 'https://auth.fusewp.com' : 'https://auth.fusewp.test');

define('FUSEWP_ROOT', wp_normalize_path(plugin_dir_path(FUSEWP_SYSTEM_FILE_PATH)));
/** internally uses wp_normalize_path */
define('FUSEWP_URL', plugin_dir_url(FUSEWP_SYSTEM_FILE_PATH));
define('FUSEWP_ASSETS_DIR', wp_normalize_path(dirname(__FILE__) . '/assets/'));

define('FUSEWP_ASSETS_URL', plugins_url('assets/', __FILE__));

define('FUSEWP_SRC', wp_normalize_path(dirname(__FILE__) . '/'));
define('FUSEWP_SETTINGS_PAGE_FOLDER', wp_normalize_path(dirname(__FILE__) . '/Admin/SettingsPage/'));

define('FUSEWP_SETTINGS_SETTINGS_SLUG', 'fusewp-settings');
define('FUSEWP_SYNC_SETTINGS_SLUG', 'fusewp-sync');

define('FUSEWP_SETTINGS_SETTINGS_PAGE', admin_url('admin.php?page=' . FUSEWP_SETTINGS_SETTINGS_SLUG));
define('FUSEWP_LICENSE_SETTINGS_PAGE', add_query_arg('view', 'license', FUSEWP_SETTINGS_SETTINGS_PAGE));

define('FUSEWP_SETTINGS_GENERAL_SETTINGS_PAGE', add_query_arg(['view' => 'general'], admin_url('admin.php?page=' . FUSEWP_SETTINGS_SETTINGS_SLUG)));
define('FUSEWP_SYNC_SETTINGS_PAGE', admin_url('admin.php?page=' . FUSEWP_SYNC_SETTINGS_SLUG));
define('FUSEWP_SYNC_LOGS_SETTINGS_PAGE', add_query_arg(['view' => 'sync-logs'], FUSEWP_SYNC_SETTINGS_PAGE));


define('FUSEWP_SETTINGS_DB_OPTION_NAME', 'fusewp_settings');

class Base
{
    public function __construct()
    {
        register_activation_hook(FUSEWP_SYSTEM_FILE_PATH, ['FuseWP\Core\RegisterActivation\Base', 'run_install']);

        if (version_compare(get_bloginfo('version'), '5.1', '<')) {
            add_action('wpmu_new_blog', ['FuseWP\Core\RegisterActivation\Base', 'multisite_new_blog_install']);
        } else {
            add_action('wp_initialize_site', function (\WP_Site $new_site) {
                RegisterActivation\Base::multisite_new_blog_install($new_site->blog_id);
            });
        }

        add_action('activate_blog', ['FuseWP\Core\RegisterActivation\Base', 'multisite_new_blog_install']);

        add_filter('wpmu_drop_tables', [$this, 'wpmu_drop_tables']);

        // handles edge case where register activation isn't triggered especially after upgrader
        add_action('admin_init', function () {
            if (get_option('fusewp_plugin_activated') != 'true') {
                RegisterActivation\Base::run_install();
            }

            if (get_option('fusewp_upgrader_success_flag') == 'true') {
                delete_option('fusewp_upgrader_success_flag');
                if (class_exists('\FuseWP\Libsodium\Licensing\Licensing')) {
                    \FuseWP\Libsodium\Licensing\Licensing::get_instance()->activate_license(get_option('fusewp_license_key', ''), true);
                }
            }
        });

        Cron::get_instance();

        QueueManager::get_instance()->init_cron();
        SyncQueueHandler::get_instance();

        AjaxHandler::get_instance();
        RegisterScripts::get_instance();
        BulkSyncHandler::get_instance();

        // Integrations
        Mailchimp\Mailchimp::get_instance();
        ConstantContact\ConstantContact::get_instance();
        CampaignMonitor\CampaignMonitor::get_instance();
        ActiveCampaign\ActiveCampaign::get_instance();
        Brevo\Brevo::get_instance();
        Aweber\Aweber::get_instance();
        HubSpot\HubSpot::get_instance();
        ZohoCRM\ZohoCRM::get_instance();
        ZohoCampaigns\ZohoCampaigns::get_instance();
        ConvertKit\ConvertKit::get_instance();
        Klaviyo\Klaviyo::get_instance();
        Sender\Sender::get_instance();
        Sendy\Sendy::get_instance();
        Keap\Keap::get_instance();
        MailerLite\MailerLite::get_instance();
        Flodesk\Flodesk::get_instance();
        HighLevel\HighLevel::get_instance();
        Drip\Drip::get_instance();
        EmailOctopus\EmailOctopus::get_instance();
        Omnisend\Omnisend::get_instance();
        GetResponse\GetResponse::get_instance();
        Mailjet\Mailjet::get_instance();
        FluentCRM\FluentCRM::get_instance();
        Encharge\Encharge::get_instance();
        Beehiiv\Beehiiv::get_instance();
        MailPoet\MailPoet::get_instance();
        Birdsend\Birdsend::get_instance();
        Engage\Engage::get_instance();
        SendPulse\SendPulse::get_instance();
        BentoNow\BentoNow::get_instance();
        Mailercloud::get_instance();

        add_action('groundhogg/loaded', function () {
            Groundhogg\Groundhogg::get_instance();
        });

        add_action('plugins_loaded', function () {
            // important to be inside here to avoid fatal error from fusewp_is_premium() check
            GoogleSheet\GoogleSheet::get_instance();
            Salesforce\Salesforce::get_instance();
            OrttoCRM\OrttoCRM::get_instance();
        }, 99);

        add_action('init', function () {
            // important for sync sources to he hee to avoid error "Function _load_textdomain_just_in_time was called incorrectly"
            // because of esc_html calls in constructor.
            WPUserRoles::get_instance();

        }, 99);

        add_action('gform_loaded', function () {
            GravityForms::get_instance();
        }, 5);

        add_action('wpcf7_init', function () {
            ContactForms7::get_instance();
        });

        add_action('wpforms_loaded', function () {
            WPForms::get_instance();
        });

        add_action('forminator_loaded', function () {
            Forminator::get_instance();
        });

        add_action('fluentform/loaded', function () {
            FluentForms::get_instance();
        });

        add_action('ninja_forms_loaded', function () {
            NinjaForms::get_instance();
        });

        add_action('plugins_loaded', function () {
            if (class_exists('FrmForm')) {
                FormidableForms::get_instance();
            }
        }, 20);

        add_action('srfm_core_loaded', function () {
            SureForms::get_instance();
        });

        add_action('everest_forms_init', function () {
            EverestForms::get_instance();
        });

        add_action('wsf_loaded', function () {
            WSForm::get_instance();
        });

        $this->admin_hooks();

        add_action('plugins_loaded', [$this, 'db_updates']);
    }

    public function db_updates()
    {
        if ( ! is_admin()) {
            return;
        }

        DBUpdates::get_instance()->maybe_update();
    }

    public function admin_hooks()
    {
        if ( ! is_admin()) return;

        Admin\SettingsPage\Settings::get_instance();
        SyncPage::get_instance();
        SyncLogPage::get_instance();
        AdminNotices::get_instance();
        ProUpgrade::get_instance();
        LicenseUpgrader::get_instance();

        do_action('fusewp_admin_hooks');
    }

    public function wpmu_drop_tables($tables)
    {
        global $wpdb;

        $db_prefix = $wpdb->prefix;

        $tables[] = $db_prefix . Core::sync_table_name;

        $tables = apply_filters('fusewp_drop_mu_database_tables', $tables, $db_prefix);

        return $tables;
    }

    /**
     * Singleton.
     *
     * @return Base
     */
    public static function get_instance()
    {
        static $instance = null;

        if (is_null($instance)) {
            $instance = new self();
        }

        return $instance;
    }
}