File "Freemius.php"
Full Path: /home/attunedd/public_html/wp-content/plugins/wpide/App/Classes/Freemius.php
File size: 8.62 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace WPIDE\App\Classes;
use Freemius_Api ;
use WPIDE\App\App ;
use const WPIDE\Constants\ASSETS_DIR ;
use const WPIDE\Constants\ASSETS_URL ;
use const WPIDE\Constants\AUTHOR ;
use const WPIDE\Constants\DIR ;
use const WPIDE\Constants\FS_ID ;
use const WPIDE\Constants\FS_KEY ;
use const WPIDE\Constants\GTM_ID ;
use const WPIDE\Constants\NAME ;
use const WPIDE\Constants\SLUG ;
use const WPIDE\Constants\VERSION ;
class Freemius
{
public static $fs ;
public static $api ;
public static $loaded = false ;
/**
* @throws \Freemius_Exception
*/
public static function init()
{
if ( !isset( self::$fs ) ) {
if ( !defined( 'WP_FS__PRODUCT_' . FS_ID . '_MULTISITE' ) ) {
define( 'WP_FS__PRODUCT_' . FS_ID . '_MULTISITE', true );
}
// Init Freemius SDK.
require_once DIR . 'freemius/start.php';
self::$fs = fs_dynamic_init( array(
'id' => FS_ID,
'slug' => SLUG,
'premium_slug' => SLUG . '-pro',
'type' => 'plugin',
'public_key' => FS_KEY,
'is_premium' => false,
'premium_suffix' => 'Pro',
'has_addons' => false,
'has_paid_plans' => true,
'trial' => array(
'days' => 14,
'is_require_payment' => true,
),
'menu' => array(
'slug' => SLUG,
'support' => false,
'affiliation' => false,
'network' => true,
),
'is_live' => true,
) );
$GLOBALS['wpide_fs'] = self::$fs;
self::$fs->add_action( 'connect/before', [ __CLASS__, 'beforeConnectBox' ] );
self::$fs->add_action( 'connect/after', [ __CLASS__, 'afterConnectBox' ] );
self::$fs->add_filter( 'checkout/purchaseCompleted', [ __CLASS__, 'afterPurchaseJs' ] );
self::$fs->add_filter( 'templates/checkout.php', [ __CLASS__, 'checkoutGtmScript' ] );
self::$fs->add_filter( 'freemius_pricing_js_path', [ __CLASS__, 'pricingJsPath' ] );
self::$fs->add_filter( 'plugin_icon', [ __CLASS__, 'pluginIcon' ] );
self::$fs->add_filter( 'hide_account_tabs', '__return_true' );
self::$fs->add_filter( 'hide_freemius_powered_by', '__return_true' );
self::$fs->add_filter( 'hide_billing_and_payments_info', '__return_true' );
self::$fs->override_i18n( array(
'contact-us' => __( 'Support', 'wpide' ),
) );
add_action( 'admin_enqueue_scripts', [ __CLASS__, 'admin_enqueue_scripts' ] );
self::$loaded = true;
// Signal that SDK was initiated.
do_action( 'wpide_fs_loaded' );
}
}
public static function admin_enqueue_scripts()
{
if ( App::instance()->isFreemiusScreen() ) {
self::freemius_custom_styles();
}
}
public static function freemius_custom_styles()
{
wp_enqueue_style(
SLUG . '-fs-connect',
ASSETS_URL . 'css/freemius/freemius.css',
[],
VERSION
);
}
public static function beforeConnectBox()
{
wp_enqueue_style(
SLUG . '-fs-connect',
ASSETS_URL . 'css/freemius/freemius.css',
[],
VERSION
);
echo '<div id="fs-connect-wrap">' ;
}
public static function afterConnectBox()
{
echo '</div>' ;
}
public static function afterPurchaseJs() : string
{
return 'function ( data ) {
/**
* Since the user just entered their personal & billing information, agreed to the TOS & privacy,
* know they are running within a secure iframe from an external domain, they implicitly permit tracking
* this purchase. So initializing GTM here (after the purchase), is legitimate.
*/
var is_subscription = typeof(data.purchase.initial_amount) !== "undefined";
var is_trial = typeof(data.purchase.trial_ends) !== "undefined" && data.purchase.trial_ends !== null;
var total = is_subscription ? data.purchase.initial_amount : data.purchase.gross;
total = is_trial ? 0 : total;
var coupon = data && data.coupon ? data.coupon.code : "";
var currency = data && data.currency ? data.currency.toUpperCase() : "USD";
var item = {
item_name: "' . NAME . '",
item_id: ' . FS_ID . ',
item_brand: "' . AUTHOR . '",
affiliation: "' . AUTHOR . '",
price: data.total,
discount: 0,
currency: currency,
coupon: coupon,
index: 1,
quantity: 1
};
// Purchase Event
dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.
dataLayer.push({
event: "purchase",
ecommerce: {
transaction_id: data.purchase.id,
affiliation: item.affiliation,
tax: 0,
shipping: 0,
items: [item],
currency: item.currency,
coupon: item.coupon,
value: total
}
});
}';
}
public static function checkoutGtmScript( $html ) : string
{
return "\n <script>window.dataLayer = window.dataLayer || [];</script>\n <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n })(window,document,'script','dataLayer', '" . GTM_ID . "');</script>\n " . $html;
}
public static function pricingJsPath() : string
{
return ASSETS_DIR . 'pricing/freemius-pricing.js';
}
public static function pluginIcon() : string
{
return ASSETS_DIR . 'img/icon.png';
}
/**
* Add license dialog boxes
*
* @since 1.0.0
*/
public static function addLicenseActivationDialogBox()
{
if ( !did_action( SLUG . '_license_activation_dialog_added' ) && !App::instance()->isFreemiusScreen( 'account' ) ) {
self::sdk()->_add_license_activation_dialog_box();
fs_enqueue_local_style( 'fs_dialog_boxes', '/admin/dialog-boxes.css' );
do_action( SLUG . '_license_activation_dialog_added' );
}
}
public static function showSubmenus() : bool
{
$is_activation_mode = self::sdk()->is_activation_mode();
if ( $is_activation_mode ) {
$show_submenus = false;
} else {
if ( fs_is_network_admin() ) {
/**
* Add submenu items or action links to network level when plugin was network activated and the super
* admin did NOT delegate the connection of all sites to site admins.
*/
$show_submenus = App::instance()->isNetworkActive() && (WP_FS__SHOW_NETWORK_EVEN_WHEN_DELEGATED || !self::sdk()->is_network_delegated_connection());
} else {
$show_submenus = !App::instance()->isNetworkActive() || self::sdk()->is_delegated_connection();
}
}
return $show_submenus;
}
public static function showUpgradeLink() : bool
{
$show_submenus = self::showSubmenus();
$is_activation_mode = self::sdk()->is_activation_mode();
$add_upgrade_link = ($show_submenus || $is_activation_mode && self::sdk()->is_only_premium()) && !self::sdk()->is_whitelabeled();
return $add_upgrade_link && self::sdk()->is_pricing_page_visible() && self::sdk()->is_submenu_item_visible( 'pricing' );
}
public static function showTrialLink() : bool
{
return self::sdk()->apply_filters( 'show_trial', true ) && self::sdk()->has_trial_plan() && !self::sdk()->is_trial_utilized();
}
public static function sdk() : \Freemius
{
return self::$fs;
}
public static function loaded() : bool
{
return self::$loaded;
}
}