File: /home/alfouzantranspor/www/wp-content/plugins/stackable-ultimate-gutenberg-blocks/src/pro.php
<?php
/**
* This is in charge of enabling/disbling the show Go Premium notices in the editor.
*
* There are 2 Go Premium notices: 1 small notices, the rest of the notices.
* These are controlled by:
* 1. The const STACKABLE_SHOW_PRO_NOTICES
* - If true, then all notices will show up. If false, hide everything.
* 2. The option 'stackable_show_pro_notice'
* - If true, then all notices will show up. If false, hide everything.
* - Similar to how the const STACKABLE_SHOW_PRO_NOTICES works.
* 3. `sugb_fs()->can_use_premium_code()`
* - If true, user is in Premium code, hide everything.
*/
// Exit if accessed directly.
if ( !defined( 'ABSPATH' ) ) {
exit;
}
if ( !function_exists( 'stackable_show_pro_notices_option' ) ) {
/**
* Gets whether the Go Premium notices are set to show or hide from the options.
* If the option is not yet set (e.g. new install), this is considered "show".
*
* @return Array
*/
function stackable_show_pro_notices_option() {
$show_pro_notice = get_option( 'stackable_show_pro_notices' );
if ( $show_pro_notice === false ) {
return true;
}
return $show_pro_notice === '1';
}
}
if ( !function_exists( 'stackable_register_show_pro_notice_option' ) ) {
/**
* Ajax handler for saving the setting for the Go Premium show/hide notices.
*/
function stackable_register_show_pro_notice_option() {
register_setting( 'stackable_show_pro_notices', 'stackable_show_pro_notices', array(
'type' => 'string',
'description' => __( 'Hide "Go Premium" notices', STACKABLE_I18N ),
'sanitize_callback' => 'sanitize_text_field',
'show_in_rest' => true,
'default' => '1',
) );
}
add_action( 'admin_init', 'stackable_register_show_pro_notice_option' );
add_action( 'rest_api_init', 'stackable_register_show_pro_notice_option' );
}
if ( !function_exists( 'stackable_should_show_pro_notices' ) ) {
/**
* Should we show all premium notices?
*
* @return Boolean
*/
function stackable_should_show_pro_notices() {
return STACKABLE_SHOW_PRO_NOTICES && stackable_show_pro_notices_option() && (STACKABLE_BUILD === 'free' || !sugb_fs()->can_use_premium_code());
}
}
if ( !class_exists( 'Stackable_Go_Premium_Notification' ) ) {
class Stackable_Go_Premium_Notification {
/**
* The amount of time from plugin activation to wait in seconds to display the Go Premium notices.
*
* @var int
*/
const SHOW_NOTICE_TIME = 604800;
// 7 * 24 * 60 * 60
/**
* The amount of time for old plugin users to see the premium notice.
*
* @var int
*/
const OLD_TIMER_NOTICE_TIME = 604800;
// 7 * 24 * 60 * 60
function __construct() {
if ( is_admin() ) {
add_action( 'admin_menu', array($this, 'check_pro_notice_date'), 9 );
add_action( 'admin_menu', array($this, 'go_premium_notice_old_raters'), 9 );
}
}
/**
* Checks whether the activation date surpasses our limit and then displays a rating notification.
*
* @since 1.13.0
*/
public function check_pro_notice_date() {
if ( get_option( 'stackable_pro_notice_start_date' ) === false ) {
update_option( 'stackable_pro_notice_start_date', time(), 'no' );
}
$activation_time = get_option( 'stackable_pro_notice_start_date' );
$elapsed_time = time() - absint( $activation_time );
if ( self::SHOW_NOTICE_TIME < $elapsed_time ) {
$this->show_notification();
}
}
/**
* Show Premium notice to old timers
*/
public function go_premium_notice_old_raters() {
if ( get_option( 'stackable_activation_date' ) === false ) {
return;
}
$activation_time = get_option( 'stackable_activation_date' );
$elapsed_time = time() - absint( $activation_time );
// This time should be more than the rating notice so as not to be annoying.
if ( $elapsed_time > self::OLD_TIMER_NOTICE_TIME ) {
$this->show_notification();
}
}
/**
* Show Premium notification.
*/
public function show_notification() {
stackable_add_welcome_notification( 'premium', sprintf(
__( 'We hope you\'re enjoying Stackable. If you want more, you may want to check out %sStackable Premium%s. Ready to upgrade and do more? %sGo premium now%s', STACKABLE_I18N ),
'<a href="https://wpstackable.com/premium/?utm_source=wp-settings-notification&utm_campaign=gopremium&utm_medium=wp-dashboard" target="_blank">',
'</a>',
'<a href="https://wpstackable.com/premium/?utm_source=wp-settings-notification&utm_campaign=gopremium&utm_medium=wp-dashboard">',
'</a>'
) );
}
}
if ( STACKABLE_SHOW_PRO_NOTICES || STACKABLE_BUILD === 'free' ) {
new Stackable_Go_Premium_Notification();
} else {
}
}