You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
4.1 KiB

<?php
/**
* Freemius utilities
*
* @package MetaFieldBlock
* @author Phi Phan <mrphipv@gmail.com>
* @copyright Copyright (c) 2023, Phi Phan
*/
namespace MetaFieldBlock;
// Exit if accessed directly.
defined( 'ABSPATH' ) || exit;
if ( ! class_exists( FreemiusConfig::class ) ) :
/**
* The FreemiusConfig class.
*/
class FreemiusConfig extends CoreComponent {
/**
* The premium title
*
* @var string
*/
private $premium_title;
/**
* The constructor
*/
public function __construct( $the_plugin_instance ) {
parent::__construct( $the_plugin_instance );
// Set value for labels.
$this->premium_title = __( 'Upgrade', 'display-a-meta-field-as-block' );
}
/**
* Run main hooks
*
* @return void
*/
public function run() {
// Add header left links.
add_filter( 'meta_field_block_get_header_left_links', [ $this, 'header_links' ] );
// Add the settings page link to plugin list screen.
// add_action( 'plugin_action_links_' . plugin_basename( MFB_ROOT_FILE ), [ $this, 'plugin_settings_links' ] );
// Add data to the setting page.
add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_data_on_the_setting_page' ] );
}
/**
* Add freemius pages
*
* @param array $links
* @return array
*/
public function header_links( $links ) {
global $mfb_fs;
if ( $mfb_fs->is_activation_mode() || $mfb_fs->is_pending_activation() ) {
return $links;
}
$is_network_activate = is_multisite() && $mfb_fs->is_network_active();
$custom_links = [];
$custom_links[] = [
'url' => admin_url( '/options-general.php?page=mfb-settings&tab=getting-started' ),
'title' => __( 'Getting started', 'display-a-meta-field-as-block' ),
'target' => '_self',
'icon' => '<span class="dashicons dashicons-info"></span> ',
'id' => 'settings_page_mfb-settings',
];
if ( ! is_multisite() || is_main_site() ) {
if ( $mfb_fs->is_registered() ) {
$custom_links[] = [
'url' => $is_network_activate ? str_replace( 'options-general.php', 'admin.php', $mfb_fs->get_account_url() ) : $mfb_fs->get_account_url(),
'title' => __( 'Account', 'display-a-meta-field-as-block' ),
'target' => '_self',
'icon' => '<span class="dashicons dashicons-admin-users"></span> ',
'id' => $is_network_activate ? 'admin_page_mfb-settings-account-network' : 'settings_page_mfb-settings-account',
];
}
$custom_links[] = [
'url' => $is_network_activate ? str_replace( 'options-general.php', 'admin.php', $mfb_fs->contact_url() ) : $mfb_fs->contact_url(),
'title' => __( 'Contact', 'display-a-meta-field-as-block' ),
'target' => '_self',
'icon' => '<span class="dashicons dashicons-feedback"></span> ',
'id' => $is_network_activate ? 'admin_page_mfb-settings-contact-network' : 'settings_page_mfb-settings-contact',
];
if ( $mfb_fs->is_not_paying() ) {
$custom_links[] = [
'url' => $is_network_activate ? str_replace( 'options-general.php', 'admin.php', $mfb_fs->get_upgrade_url() ) : $mfb_fs->get_upgrade_url(),
'title' => $this->premium_title,
'target' => '_self',
'icon' => '<span class="dashicons dashicons-superhero-alt"></span> ',
'id' => $is_network_activate ? 'admin_page_mfb-settings-pricing-network' : 'settings_page_mfb-settings-pricing',
'style' => 'font-weight:bold;color:#d20962;',
];
}
}
return array_merge( $custom_links, $links );
}
/**
* Add the premium link to the plugin admin screen.
*
* @param array $links
* @return array
*/
public function plugin_settings_links( $links ) {
if ( mfb_fs()->is_not_paying() ) {
$links[] = sprintf( '<a href="%1$s" target="_self" style="font-weight:bold;color:#d20962;">%2$s</a>', mfb_fs()->get_upgrade_url(), $this->premium_title );
}
return $links;
}
/**
* Add data to the setting page.
*
* @return void
*/
public function enqueue_data_on_the_setting_page() {
wp_add_inline_script( 'mfb-settings', 'var MFB=' . wp_json_encode( [ 'isPremium' => apply_filters( 'meta_field_block_is_premium', ! mfb_fs()->is_not_paying() ) ] ) . ';', 'before' );
}
}
endif;