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.
164 lines
3.9 KiB
164 lines
3.9 KiB
9 months ago
|
<?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.3
|
||
|
*/
|
||
|
|
||
|
if ( ! defined( 'ABSPATH' ) ) {
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
class FS_Plugin extends FS_Scope_Entity {
|
||
|
/**
|
||
|
* @since 1.0.6
|
||
|
* @var null|number
|
||
|
*/
|
||
|
public $parent_plugin_id;
|
||
|
/**
|
||
|
* @var string
|
||
|
*/
|
||
|
public $title;
|
||
|
/**
|
||
|
* @var string
|
||
|
*/
|
||
|
public $slug;
|
||
|
/**
|
||
|
* @author Leo Fajardo (@leorw)
|
||
|
* @since 2.2.1
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public $premium_slug;
|
||
|
/**
|
||
|
* @since 1.2.2
|
||
|
*
|
||
|
* @var string 'plugin' or 'theme'
|
||
|
*/
|
||
|
public $type;
|
||
|
/**
|
||
|
* @author Leo Fajardo (@leorw)
|
||
|
*
|
||
|
* @since 1.2.3
|
||
|
*
|
||
|
* @var string|false false if the module doesn't have an affiliate program or one of the following: 'selected', 'customers', or 'all'.
|
||
|
*/
|
||
|
public $affiliate_moderation;
|
||
|
/**
|
||
|
* @var bool Set to true if the free version of the module is hosted on WordPress.org. Defaults to true.
|
||
|
*/
|
||
|
public $is_wp_org_compliant = true;
|
||
|
/**
|
||
|
* @author Leo Fajardo (@leorw)
|
||
|
* @since 2.2.5
|
||
|
*
|
||
|
* @var int
|
||
|
*/
|
||
|
public $premium_releases_count;
|
||
|
|
||
|
#region Install Specific Properties
|
||
|
|
||
|
/**
|
||
|
* @var string
|
||
|
*/
|
||
|
public $file;
|
||
|
/**
|
||
|
* @var string
|
||
|
*/
|
||
|
public $version;
|
||
|
/**
|
||
|
* @var bool
|
||
|
*/
|
||
|
public $auto_update;
|
||
|
/**
|
||
|
* @var FS_Plugin_Info
|
||
|
*/
|
||
|
public $info;
|
||
|
/**
|
||
|
* @since 1.0.9
|
||
|
*
|
||
|
* @var bool
|
||
|
*/
|
||
|
public $is_premium;
|
||
|
/**
|
||
|
* @author Leo Fajardo (@leorw)
|
||
|
* @since 2.2.1
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public $premium_suffix;
|
||
|
/**
|
||
|
* @since 1.0.9
|
||
|
*
|
||
|
* @var bool
|
||
|
*/
|
||
|
public $is_live;
|
||
|
/**
|
||
|
* @since 2.2.3
|
||
|
* @var null|number
|
||
|
*/
|
||
|
public $bundle_id;
|
||
|
/**
|
||
|
* @since 2.3.1
|
||
|
* @var null|string
|
||
|
*/
|
||
|
public $bundle_public_key;
|
||
|
/**
|
||
|
* @since 2.5.4
|
||
|
* @var null|array
|
||
|
*/
|
||
|
public $opt_in_moderation;
|
||
|
|
||
|
const AFFILIATE_MODERATION_CUSTOMERS = 'customers';
|
||
|
|
||
|
#endregion Install Specific Properties
|
||
|
|
||
|
/**
|
||
|
* @param stdClass|bool $plugin
|
||
|
*/
|
||
|
function __construct( $plugin = false ) {
|
||
|
parent::__construct( $plugin );
|
||
|
|
||
|
$this->is_premium = false;
|
||
|
$this->is_live = true;
|
||
|
|
||
|
if ( empty( $this->premium_slug ) && ! empty( $plugin->slug ) ) {
|
||
|
$this->premium_slug = "{$this->slug}-premium";
|
||
|
}
|
||
|
|
||
|
if ( empty( $this->premium_suffix ) ) {
|
||
|
$this->premium_suffix = '(Premium)';
|
||
|
}
|
||
|
|
||
|
if ( isset( $plugin->info ) && is_object( $plugin->info ) ) {
|
||
|
$this->info = new FS_Plugin_Info( $plugin->info );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Check if plugin is an add-on (has parent).
|
||
|
*
|
||
|
* @author Vova Feldman (@svovaf)
|
||
|
* @since 1.0.6
|
||
|
*
|
||
|
* @return bool
|
||
|
*/
|
||
|
function is_addon() {
|
||
|
return isset( $this->parent_plugin_id ) && is_numeric( $this->parent_plugin_id );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @author Leo Fajardo (@leorw)
|
||
|
* @since 1.2.3
|
||
|
*
|
||
|
* @return bool
|
||
|
*/
|
||
|
function has_affiliate_program() {
|
||
|
return ( ! empty( $this->affiliate_moderation ) );
|
||
|
}
|
||
|
|
||
|
static function get_type() {
|
||
|
return 'plugin';
|
||
|
}
|
||
|
}
|