Repository URL to install this package:
<?php
/**
* @package Freemius
* @copyright Copyright (c) 2015, Freemius, Inc.
* @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
* @since 1.0.7
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* - Each instance of Freemius class represents a single plugin
* install by a single user (the installer of the plugin).
*
* - Each website can only have one install of the same plugin.
*
* - Install entity is only created after a user connects his account with Freemius.
*
* Class Freemius_Abstract
*/
abstract class Freemius_Abstract {
#----------------------------------------------------------------------------------
#region Identity
#----------------------------------------------------------------------------------
/**
* Check if user has connected his account (opted-in).
*
* Note:
* If the user opted-in and opted-out on a later stage,
* this will still return true. If you want to check if the
* user is currently opted-in, use:
* `$fs->is_registered() && $fs->is_tracking_allowed()`
*
* @since 1.0.1
*
* @param bool $ignore_anonymous_state Since 2.5.1
*
* @return bool
*/
abstract function is_registered( $ignore_anonymous_state = false );
/**
* Check if the user skipped connecting the account with Freemius.
*
* @since 1.0.7
*
* @return bool
*/
abstract function is_anonymous();
/**
* Check if the user currently in activation mode.
*
* @since 1.0.7
*
* @return bool
*/
abstract function is_activation_mode();
#endregion
#----------------------------------------------------------------------------------
#region Module Type
#----------------------------------------------------------------------------------
/**
* Checks if the plugin's type is "plugin". The other type is "theme".
*
* @author Leo Fajardo (@leorw)
* @since 1.2.2
*
* @return bool
*/
abstract function is_plugin();
/**
* Checks if the module type is "theme". The other type is "plugin".
*
* @author Leo Fajardo (@leorw)
* @since 1.2.2
*
* @return bool
*/
function is_theme() {
return ( ! $this->is_plugin() );
}
#endregion
#----------------------------------------------------------------------------------
#region Permissions
#----------------------------------------------------------------------------------
/**
* Check if plugin must be WordPress.org compliant.
*
* @since 1.0.7
*
* @return bool
*/
abstract function is_org_repo_compliant();
/**
* Check if plugin is allowed to install executable files.
*
* @author Vova Feldman (@svovaf)
* @since 1.0.5
*
* @return bool
*/
function is_allowed_to_install() {
return ( $this->is_premium() || ! $this->is_org_repo_compliant() );
}
#endregion
/**
* Check if user in trial or in free plan (not paying).
*
* @author Vova Feldman (@svovaf)
* @since 1.0.4
*
* @return bool
*/
function is_not_paying() {
return ( $this->is_trial() || $this->is_free_plan() );
}
/**
* Check if the user has an activated and valid paid license on current plugin's install.
*
* @since 1.0.9
*
* @return bool
*/
abstract function is_paying();
/**
* Check if the user is paying or in trial.
*
* @since 1.0.9
*
* @return bool
*/
function is_paying_or_trial() {
return ( $this->is_paying() || $this->is_trial() );
}
/**
* Check if user in a trial or have feature enabled license.
*
* @author Vova Feldman (@svovaf)
* @since 1.1.7
*
* @return bool
*/
abstract function can_use_premium_code();
#----------------------------------------------------------------------------------
#region Premium Only
#----------------------------------------------------------------------------------
/**
* All logic wrapped in methods with "__premium_only()" suffix will be only
* included in the premium code.
*
* Example:
* if ( freemius()->is__premium_only() ) {
* ...
* }
*/
/**
* Returns true when running premium plugin code.
*
* @since 1.0.9
*
* @return bool
*/
function is__premium_only() {
return $this->is_premium();
}
/**
* Check if the user has an activated and valid paid license on current plugin's install.
*
* @since 1.0.9
*
* @return bool
*
*/
function is_paying__premium_only() {
return ( $this->is__premium_only() && $this->is_paying() );
}
/**
* All code wrapped in this statement will be only included in the premium code.
*
* @since 1.0.9
*
* @param string $plan Plan name.
* @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
*
* @return bool
*/
function is_plan__premium_only( $plan, $exact = false ) {
return ( $this->is_premium() && $this->is_plan( $plan, $exact ) );
}
/**
* Check if plan matches active license' plan or active trial license' plan.
*
* All code wrapped in this statement will be only included in the premium code.
*
* @since 1.0.9
*
* @param string $plan Plan name.
* @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
*
* @return bool
*/
function is_plan_or_trial__premium_only( $plan, $exact = false ) {
return ( $this->is_premium() && $this->is_plan_or_trial( $plan, $exact ) );
}
/**
* Check if the user is paying or in trial.
*
* All code wrapped in this statement will be only included in the premium code.
*
* @since 1.0.9
*
* @return bool
*/
function is_paying_or_trial__premium_only() {
return $this->is_premium() && $this->is_paying_or_trial();
}
/**
* Check if the user has an activated and valid paid license on current plugin's install.
*
* @since 1.0.4
*
* @return bool
*
* @deprecated Method name is confusing since it's not clear from the name the code will be removed.
* @using Alias to is_paying__premium_only()
*/
function is_paying__fs__() {
return $this->is_paying__premium_only();
}
/**
* Check if user in a trial or have feature enabled license.
*
* All code wrapped in this statement will be only included in the premium code.
*
* @author Vova Feldman (@svovaf)
* @since 1.1.9
*
* @return bool
*/
function can_use_premium_code__premium_only() {
return $this->is_premium() && $this->can_use_premium_code();
}
#endregion
#----------------------------------------------------------------------------------
#region Trial
#----------------------------------------------------------------------------------
/**
* Check if the user in a trial.
*
* @since 1.0.3
*
* @return bool
*/
abstract function is_trial();
/**
* Check if trial already utilized.
*
* @since 1.0.9
*
* @return bool
*/
abstract function is_trial_utilized();
#endregion
#----------------------------------------------------------------------------------
#region Plans
#----------------------------------------------------------------------------------
/**
* Check if the user is on the free plan of the product.
*
* @since 1.0.4
*
* @return bool
*/
abstract function is_free_plan();
/**
* @since 1.0.2
*
* @param string $plan Plan name.
* @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
*
* @return bool
*/
abstract function is_plan( $plan, $exact = false );
/**
* Check if plan based on trial. If not in trial mode, should return false.
*
* @since 1.0.9
*
* @param string $plan Plan name.
* @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
*
* @return bool
*/
abstract function is_trial_plan( $plan, $exact = false );
/**
* Check if plan matches active license' plan or active trial license' plan.
*
* @since 1.0.9
*
* @param string $plan Plan name.
* @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
*
* @return bool
*/
function is_plan_or_trial( $plan, $exact = false ) {
return $this->is_plan( $plan, $exact ) ||
$this->is_trial_plan( $plan, $exact );
Loading ...