HEX
Server: Apache
System: Linux d5123.usc1.stableserver.net 5.14.0-570.17.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Sat May 24 12:53:17 EDT 2025 x86_64
User: d5123 (1001)
PHP: 8.4.21
Disabled: NONE
Upload Files
File: /home/d5123/myboofola_com/wp-content/plugins/cms2cms-connector/includes/cms2cms-functions.php
<?php

/**
 * Class CmsPluginFunctionsConnector
 */
class CmsPluginFunctionsConnector
{

    const CMS2CMS_OPTION_TABLE = 'cms2cms_connector_options';

    private $jsConfig = '{
        "host"        : "https://app.cms2cms.com",
        "youtube"     : "https://www.youtube.com/watch?feature=player_detailpage&v=DQK01NbrCdw#t=25s",
        "feedback"    : "https://cms2cms.polldaddy.com/s/survey",
        "support"     : "https://app.cms2cms.com?chat=fullscreen",
        "wizard"      : "https://app.cms2cms.com/wizard",
        "facebook"    : "//www.facebook.com/CMS2CMS/",
        "twitter"     : "//twitter.com/Cms2Cms",
        "wp_feedback" : "//wordpress.org/support/plugin/cms2cms-connector/reviews",
        "public_host" : "//www.cms2cms.com",
        "bridge"      : "https://app.cms2cms.com/bridge/download",
        "ticket"      : "//support.magneticone.com/hc/en-us/requests/new?department=cms2cms",
        "partner"     : "https://cms2cms.com/offer-for-partners-and-resellers",
        "logout"      : "https://app.cms2cms.com/auth/logout",
        "auth_check"  : "https://app.cms2cms.com/api/auth-check"
    }';

    private $config = array (
        'host'        => 'https://app.cms2cms.com',
        'youtube'     => 'https://www.youtube.com/watch?feature=player_detailpage&v=DQK01NbrCdw#t=25s',
        'feedback'    => 'https://cms2cms.polldaddy.com/s/survey',
        'support'     => '//support.magneticone.com/visitor/indexp.hp?/Default/LiveChat/Chat/Request/_sessionID=
                    /_promptType=cht/_proactive=0/_filterDepartmentID=55/_randomNumber=bnkpattsb316qulj4o15lvdbkq6qsw53',
        'wizard'      => 'https://app.cms2cms.com/wizard',
        'facebook'    => '//www.facebook.com/CMS2CMS/',
        'twitter'     => '//twitter.com/Cms2Cms',
        'wp_feedback' => '//wordpress.org/support/plugin/cms2cms-connector/reviews',
        'public_host' => '//www.cms2cms.com',
        'bridge'      => 'https://app.cms2cms.com/bridge/download',
        'ticket'      => '//support.magneticone.com/hc/en-us/requests/new?department=cms2cms',
        'partner'     => 'https://cms2cms.com/offer-for-partners-and-resellers',
        'logout'      => 'https://app.cms2cms.com/auth/logout',
        'auth_check'  => 'https://app.cms2cms.com/api/auth-check',
        'cms2cms'     => 'https://cms2cms.com/',  
        'contact'     => 'https://cms2cms.com/contacts/',
        'privacy_policy'    =>  'https://cms2cms.com/privacy-policy/',
        'terms_of_service'  =>  'https://cms2cms.com/terms-of-service/',
        'faqs'        =>  'https://cms2cms.com/faqs/',
        'what-is-migration' => 'https://cms2cms.com/migration-checklist/',
        'how-it-works'      => 'https://cms2cms.com/how-it-works/'
    );

    /**
     * User data
     * @return object
     */
    public function getUser()
    {
        $user_ID = get_current_user_id();
        $user_info = get_userdata($user_ID);

        return $user_info;
    }

    /**
     * User name
     * @return string
     */
    public function getUserName()
    {
        return $this->getUser()->display_name;
    }

    /**
     * User email
     * @return string
     */
    public function getUserEmail()
    {
        return $this->getUser()->user_email;
    }

    /**
     * @return string
     */
    public function getSiteUrl()
    {
        return get_site_url();
    }

    /**
     * @param $name
     * @return void
     */
    public function getOption($name)
    {
        global $wpdb;
        $table_name = $wpdb->prefix . self::CMS2CMS_OPTION_TABLE;
        $value = $wpdb->get_var( $wpdb->prepare(
            "
            SELECT option_value
            FROM $table_name
            WHERE option_name = %s
            LIMIT 1
	    ",
            $name
        ));

        return $value;
    }

    /**
     * @param $name
     * @param $value
     * @return void
     */
    public function setOption($name, $value)
    {
        global $wpdb;
        $table_name = $wpdb->prefix . self::CMS2CMS_OPTION_TABLE;
        $wpdb->insert( $table_name, array( 'option_name' => $name, 'option_value' => $value ) );
    }

    public function deleteOption($name)
    {
        global $wpdb;
        $table_name = $wpdb->prefix . self::CMS2CMS_OPTION_TABLE;
        $wpdb->query(
            $wpdb->prepare(
                "DELETE FROM $table_name WHERE option_name = %s",
                $name
            )
        );
    }

    /**
     * Get front Url
     * @return string
     */
    public function getFrontUrl()
    {
        return str_replace(array('http:', 'https:'), '', plugin_dir_url( __FILE__ ));
    }

    /**
     * @return array
     */
    public function getAuthData()
    {
        $cms2cms_connector_access_login = $this->getOption('cms2cms-connector-login');
        $cms2cms_connector_access_key = $this->getOption('cms2cms-connector-key');

        return array(
            'email' => $cms2cms_connector_access_login,
            'accessKey' => $cms2cms_connector_access_key
        );
    }

    /**
     * @return bool
     */
    public function isActivated()
    {
        $cms2cms_connector_access_key = $this->getOption('cms2cms-connector-key');

        return ($cms2cms_connector_access_key != false);
    }

    /**
     * @return void
     */
    public function install()
    {
        global $wpdb;
        $table_name = $wpdb->prefix . self::CMS2CMS_OPTION_TABLE;
        $sql = sprintf(
            "
                CREATE TABLE IF NOT EXISTS %s (
                    id mediumint(9) NOT NULL AUTO_INCREMENT,
                    option_name VARCHAR(64) DEFAULT '' NOT NULL,
                    option_value VARCHAR(64) DEFAULT '' NOT NULL,
                    UNIQUE KEY id (id)
                )
            ",
            $table_name
        );

        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
        dbDelta( $sql );
    }

    /**
     * Get Options
     * @return array
     */
    public function getOptions()
    {
        $key = $this->getOption('cms2cms-connector-key');
        $login = $this->getOption('cms2cms-connector-login');

        $response = 0;

        if ( $key && $login ) {
            $response = array(
                'email' => $login,
                'accessKey' => $key,
            );
        }

        return $response;
    }

    /**
     * Save options
     * @return array
     */
    public function saveOptions()
    {
        $key          = substr( $_POST['accessKey'], 0, 64 );
        $login        = sanitize_email( $_POST['login'] );
        $bridge_depth = str_replace(get_site_url(), '', $this->getFrontUrl());
        $bridge_depth = trim($bridge_depth, DIRECTORY_SEPARATOR);
        $bridge_depth = explode(DIRECTORY_SEPARATOR, $bridge_depth);
        $bridge_depth = count( $bridge_depth );
        $response     = array('errors' => _('Provided credentials are not correct: ' . $key . ' = ' . $login ));

        if ( $key && $login ) {
            $this->deleteOption('cms2cms-connector-key');
            $this->setOption('cms2cms-connector-key', $key);

            $this->deleteOption('cms2cms-connector-login');
            $this->setOption('cms2cms-connector-login', $login);

            $this->deleteOption('cms2cms-connector-depth');
            $this->setOption('cms2cms-connector-depth', $bridge_depth);

            $response = array(
                'success' => true
            );
        }

        return $response;
    }

    /**
     * Clear options
     */
    public function clearOptions()
    {
        $this->deleteOption('cms2cms-connector-login');
        $this->deleteOption('cms2cms-connector-key');
        $this->deleteOption('cms2cms-connector-depth');
        $this->deleteOption('cms2cms_notice_enabled');
    }

    /**
     * @param $message
     * @param $domain
     * @inheritdoc
     */
    public function _e($message, $domain)
    {
        return _e($message, $domain);
    }

    /**
     * @param $message
     * @param $domain
     * @return string|void
     */
    public function __($message, $domain)
    {
        return __($message, $domain);
    }

    /**
     * @param $name
     * @return string
     */
    public function getFormTempKey($name)
    {
        return wp_create_nonce($name);
    }

    /**
     * @param $value
     * @param $name
     * @return false|int
     */
    public function verifyFormTempKey($value, $name)
    {
        return wp_verify_nonce($value, $name);
    }

    /**
     * Get app url
     * @param bool $json Json return
     * @return string
     */
    public function getConfig($json = false)
    {
        return  $json ? $this->jsConfig : $this->config;
    }

    /**
     * Get app url
     * @return string
     */
    public function getAppUrl()
    {
        $config = $this->getConfig();
        return $config['host'];
    }

    /**
     * @return string|void
     */
    public function getPluginSourceName()
    {
        return $this->__('CMS2CMS Connector', 'cms2cms-connector');
    }

    /**
     * @return string
     */
    public function getPluginSourceType()
    {
        return 'CMS2CMS_connector';
    }

    /**
     * @return string|void
     */
    public function getPluginTargetName()
    {
        return $this->__('WordPress', 'cms2cms-connector');
    }

    /**
     * @return string
     */
    public function getPluginTargetType()
    {
        return 'WordPress';
    }

    /**
     * @return string
     */
    public function getPluginNameLong()
    {
        return sprintf(
            $this->__('CMS2CMS %s', 'cms2cms-connector'),
            $this->getPluginSourceName()
        );
    }

    /**
     * @return string
     */
    public function getPluginNameShort()
    {
        return sprintf(
            $this->__('%s', 'cms2cms-connector'),
            $this->getPluginSourceName()
        );
    }

    /**
     * @return string
     */
    public function getPluginReferrerId()
    {
        return sprintf(
            'Plugin | %s | %s to %s',
            $this->getPluginTargetType(),
            $this->getPluginSourceType(),
            $this->getPluginTargetType()
        );
    }

    /**
     * @return string
     */
    public function getRegisterUrl()
    {
        return $this->getAppUrl() . '/auth/sign-up';
    }

    /**
     * Get bridge Url
     * @return string
     */
    public function getBridgeUrl()
    {
        $config = $this->getConfig();

        return $config['bridge'];
    }

    /**
     * @return string
     */
    public function getBridgeFaqUrl()
    {
        return 'https://www.cms2cms.com/faqs/what-is-the-connection-bridge-and-how-to-install-it';
    }

    /**
     * @return string
     */
    public function getLoginUrl()
    {
        return $this->getAppUrl() . '/auth/sign-in';
    }

    /**
     * @return string
     */
    public function getForgotPasswordUrl()
    {
        return $this->getAppUrl() . '/auth#forgot-password';
    }

    /**
     * @return string
     */
    public function getLogOutUrl()
    {
        return $this->getAppUrl() . '/auth/logout';
    }

    public function logOut()
    {
        if (isset($_REQUEST['_wpnonce'])) {
            $nonce = $_REQUEST['_wpnonce'];
            if ($this->verifyFormTempKey($nonce, 'cms2cms_connector_logout')
                && $_POST['cms2cms_connector_logout'] == 1
            ) {
                $this->clearOptions();
            }
        }
    }

    /**
     * @return string
     */
    public function getWizardUrl()
    {
        return $this->getAppUrl() . '/wizard';
    }

    /**
     * @return string
     */
    public function getDashboardUrl()
    {
        return $this->getAppUrl() . '/dashboard';
    }

}