162 lines
3.0 KiB
PHP
162 lines
3.0 KiB
PHP
<?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.6
|
|
*/
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
class FS_Plan_Manager {
|
|
/**
|
|
* @var FS_Plan_Manager
|
|
*/
|
|
private static $_instance;
|
|
|
|
/**
|
|
* @return FS_Plan_Manager
|
|
*/
|
|
static function instance() {
|
|
if ( ! isset( self::$_instance ) ) {
|
|
self::$_instance = new FS_Plan_Manager();
|
|
}
|
|
|
|
return self::$_instance;
|
|
}
|
|
|
|
private function __construct() {
|
|
}
|
|
|
|
/**
|
|
* @param FS_Plugin_License[] $licenses
|
|
*
|
|
* @return bool
|
|
*/
|
|
function has_premium_license( $licenses ) {
|
|
if ( is_array( $licenses ) ) {
|
|
/**
|
|
* @var FS_Plugin_License[] $licenses
|
|
*/
|
|
foreach ( $licenses as $license ) {
|
|
if ( ! $license->is_utilized() && $license->is_features_enabled() ) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Check if plugin has any paid plans.
|
|
*
|
|
* @author Vova Feldman (@svovaf)
|
|
* @since 1.0.7
|
|
*
|
|
* @param FS_Plugin_Plan[] $plans
|
|
*
|
|
* @return bool
|
|
*/
|
|
function has_paid_plan( $plans ) {
|
|
if ( ! is_array( $plans ) || 0 === count( $plans ) ) {
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* @var FS_Plugin_Plan[] $plans
|
|
*/
|
|
for ( $i = 0, $len = count( $plans ); $i < $len; $i ++ ) {
|
|
if ( ! $plans[ $i ]->is_free() ) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Check if plugin has any free plan, or is it premium only.
|
|
*
|
|
* Note: If no plans configured, assume plugin is free.
|
|
*
|
|
* @author Vova Feldman (@svovaf)
|
|
* @since 1.0.7
|
|
*
|
|
* @param FS_Plugin_Plan[] $plans
|
|
*
|
|
* @return bool
|
|
*/
|
|
function has_free_plan( $plans ) {
|
|
if ( ! is_array( $plans ) || 0 === count( $plans ) ) {
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* @var FS_Plugin_Plan[] $plans
|
|
*/
|
|
for ( $i = 0, $len = count( $plans ); $i < $len; $i ++ ) {
|
|
if ( $plans[ $i ]->is_free() ) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Find all plans that have trial.
|
|
*
|
|
* @author Vova Feldman (@svovaf)
|
|
* @since 1.0.9
|
|
*
|
|
* @param FS_Plugin_Plan[] $plans
|
|
*
|
|
* @return FS_Plugin_Plan[]
|
|
*/
|
|
function get_trial_plans( $plans ) {
|
|
$trial_plans = array();
|
|
|
|
if ( is_array( $plans ) && 0 < count( $plans ) ) {
|
|
/**
|
|
* @var FS_Plugin_Plan[] $plans
|
|
*/
|
|
for ( $i = 0, $len = count( $plans ); $i < $len; $i ++ ) {
|
|
if ( $plans[ $i ]->has_trial() ) {
|
|
$trial_plans[] = $plans[ $i ];
|
|
}
|
|
}
|
|
}
|
|
|
|
return $trial_plans;
|
|
}
|
|
|
|
/**
|
|
* Check if plugin has any trial plan.
|
|
*
|
|
* @author Vova Feldman (@svovaf)
|
|
* @since 1.0.9
|
|
*
|
|
* @param FS_Plugin_Plan[] $plans
|
|
*
|
|
* @return bool
|
|
*/
|
|
function has_trial_plan( $plans ) {
|
|
if ( ! is_array( $plans ) || 0 === count( $plans ) ) {
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* @var FS_Plugin_Plan[] $plans
|
|
*/
|
|
for ( $i = 0, $len = count( $plans ); $i < $len; $i ++ ) {
|
|
if ( $plans[ $i ]->has_trial() ) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
} |