Files
roi-theme/wp-content/plugins/sociallocker-next-premium/bizpanda/libs/onepress/licensing/licensing.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

900 lines
35 KiB
PHP
Executable File

<?php
/**
* The file contains a class and a set of helper methods to manage licensing.
*
* @author Paul Kashtanoff <paul@byonepress.com>
* @copyright (c) 2013, OnePress Ltd
*
* @package core
* @since 1.0.0
*/
// creating a license manager for each plugin created via the factory
add_action('onp_licensing_325_plugin_created', 'onp_licensing_325_plugin_created');
function onp_licensing_325_plugin_created( $plugin ) {
$manager = new OnpLicensing325_Manager( $plugin );
$plugin->license = $manager;
}
/**
* The License Manager class.
*
* @since 1.0.0
*/
class OnpLicensing325_Manager {
/**
* A plugin for which the manager was created.
*
* @since 1.0.0
* @var Factory325_Plugin
*/
public $plugin;
/**
* Current license data.
*
* @since 1.0.0
* @var mixed[]
*/
public $data;
/**
* Createas a new instance of the license manager for a given plugin.
*
* @since 1.0.0
*/
public function __construct( $plugin ) {
$this->plugin = $plugin;
// gets a current license data
$this->data = get_option('onp_license_' . $this->plugin->pluginName, array());
$this->default = get_option('onp_default_license_' . $this->plugin->pluginName, array());
// a bit fix if some incorrect data goes from a database
if ( !$this->checkLicenseDataCorrectness($this->data) ) {
delete_option('onp_license_' . $this->plugin->pluginName);
$this->data = array();
}
// sets default license if a license is empty
if ( empty( $this->data) ) $this->data = $this->default;
// sets a license type what is used by the plugin
$this->type = ( !array_key_exists('Category', $this->data) || $this->isExpired() )
? @$this->default['Category']
: $this->data['Category'];
$this->build = isset( $this->data['Build'] ) ? $this->data['Build'] : null;
$this->key = isset( $this->data['Key'] ) ? $this->data['Key'] : null;
$this->word = $this->build ? 'top' : 'bottom';
// checks data returned from the api server
add_action('onp_api_ping_' . $plugin->pluginName, array($this, 'apiPing'));
// dectivates key if we got a request from the api server
//add_action('onp_api_action_deactivate-key', array($this, 'apiActionDeactivateKey'));
if ( is_admin() ) {
add_action('admin_enqueue_scripts', array($this, 'addLicenseInfoIntoSouceCode'));
// adding links below the plugin title on the page plugins.php
add_filter('plugin_action_links_' . $plugin->relativePath, array( $this, 'addLicenseLinks' ) );
// adding messages to the plugin row on the page plugins.php
add_filter('factory_plugin_row_' . $plugin->pluginName, array($this, 'addMessagesToPluginRow'));
// adding notices to display
add_filter('factory_notices_' . $this->plugin->pluginName, array( $this, 'addNotices'), 10, 2);
add_action('admin_enqueue_scripts', array( $this, 'printStylesForNotices'));
// activation and deactivation hooks
add_action('factory_plugin_activation_' . $plugin->pluginName, array($this, 'activationHook'));
}
}
/**
* Checks if the activation.json file exists, read and processes it.
*
* @since 3.0.6
* @return void
*/
public function activationHook() {
$licenseData = get_option('onp_license_' . $this->plugin->pluginName, array());
if ( !empty($licenseData) ) return;
$filepath = $this->plugin->pluginRoot . '/activation.json';
if ( !file_exists( $filepath ) ) return;
$data = json_decode( file_get_contents($filepath), true );
// activate trial if it's needed
if ( isset( $data['activate-trial'] ) && $data['activate-trial'] === true ) {
$args = array(
'fy_page' => 'license-manager',
'fy_action' => 'activateTrial',
'fy_plugin' => $this->plugin->pluginName
);
$urlToRedirect = '?' . http_build_query( $args );
factory_325_set_lazy_redirect($urlToRedirect);
//@unlink( $filepath );
return;
}
// applying an embedded key
if ( isset( $data['embedded-key'] ) && !empty( $data['embedded-key'] ) ) {
$dataToSave = $data['embedded-key'];
$dataToSave['Embedded'] = true;
$this->setLicense( $dataToSave );
}
}
/**
* Sets the active license.
*
* @since 3.0.6
* @param type $data licenase data.
* @return void
*/
public function setLicense( $data ) {
update_option('onp_license_' . $this->plugin->pluginName, $this->normilizeLicenseData( $data ));
$this->data = get_option('onp_license_' . $this->plugin->pluginName, array());
$this->build = isset( $this->data['Build'] ) ? $this->data['Build'] : null;
$this->key = isset( $this->data['Key'] ) ? $this->data['Key'] : null;
}
/**
* Sets the default license.
*
* @since 3.0.6
* @param type $data license data.
* @return void
*/
public function setDefaultLicense( $data ) {
$defaultLicense = get_option('onp_default_license_' . $this->plugin->pluginName, null);
if ( empty($defaultLicense) ) {
update_option('onp_default_license_' . $this->plugin->pluginName, $this->normilizeLicenseData( $data ));
}
}
/**
* Deletes the active license data and applies the default license data.
*
* @return void
*/
public function resetLicense( $resetDefault = false ) {return true;
delete_option('onp_license_' . $this->plugin->pluginName);
if ( $resetDefault ) {
delete_option('onp_default_license_' . $this->plugin->pluginName);
$this->plugin->activationHook();
}
$this->data = get_option('onp_default_license_' . $this->plugin->pluginName, array());
}
/**
* Checks data license correctness.
*
* @since 1.0.0
* @param mixed[] e $data License data to check.
* @return boolean
*/
private function checkLicenseDataCorrectness( $data ) {
if ( !is_array( $data ) ) return false;
if ( !isset($data['Category'])) return false;
if ( !isset($data['Title'])) return false;
if ( !isset($data['Description'])) return false;
return true;
}
/**
* Removes impurities in license data.
*
* @since 3.0.6
* @param mixed $data
* @return mixed
*/
private function normilizeLicenseData( $data ) {
$keys = array('Key', 'KeySecret', 'Category', 'Build', 'Title', 'Description', 'Activated', 'Expired', 'Embedded', 'KeyBound');
$dataToReturn = array();
foreach($data as $itemKey => $itemValue) {
if ( !in_array( $itemKey, $keys )) continue;
$dataToReturn[$itemKey] = $itemValue;
}
if ( !isset( $dataToReturn['Expired'] )) $dataToReturn['Expired'] = 0;
return $dataToReturn;
}
/**
* Adds a license and build name as javascript variables into the source code of pages.
*
* Calls on the hook 'admin_enqueue_scripts'
*
* @since 1.0.0
* @return void
*/
public function addLicenseInfoIntoSouceCode() {
$licenseType = defined('LICENSE_TYPE') ? LICENSE_TYPE : $this->data['Category'];
$buildType = defined('BUILD_TYPE') ? BUILD_TYPE : $this->data['Build'];
?>
<script>
window['<?php echo $this->plugin->pluginName ?>-license'] = '<?php echo $licenseType ?>';
window['<?php echo $this->plugin->pluginName ?>-build'] = '<?php echo $buildType ?>';
</script>
<?php
}
/**
* Processes data returned by an api server.
*
* @since 1.0.0
* @return void
*/
public function apiPing( $data ) {
if ( isset( $data['DeleteLicense'] ) && !empty( $data['DeleteLicense'] ) ) $this->resetLicense();
if ( isset( $data['KeyNotBound'] ) && !empty( $data['KeyNotBound'] ) ) {
update_option('onp_bound_message_' . $this->plugin->pluginName, true );
} else {
update_option('onp_bound_message_' . $this->plugin->pluginName, false );
}
}
/**
* Dectivates key if we got a request from the api server.
*
* @since 1.0.0
* @return void
*/
public function apiActionDeactivateKey() {
$key = isset( $_GET['onp_key'] ) ? $_GET['onp_key'] : null;
if ( $key !== $this->key ) return;
$this->resetLicense();
}
// -------------------------------------------------------------------------------------
// Key managment
// -------------------------------------------------------------------------------------
/**
* Trying to apply a given license key.
*
* @since 1.0.0
* @param string $key License key to apply.
* @param string $server Licensing server to get license data.
* @return mixed
*/
public function activateKey( $key) {
if ( defined('ONP_DEBUG_NETWORK_DISABLED') && ONP_DEBUG_NETWORK_DISABLED )
return new WP_Error('HTTP:NetworkDisabled', 'The network is disabled.');
$data = $this->plugin->api->request(
'ActivateKey',
array(
'body' => array(
'key' => $key
)
),
array(
'verification' => true
)
);
if (is_wp_error($data) ) return $data;
if ( !$this->checkLicenseDataCorrectness($data) )
return new WP_Error('FORM:InvalidLicenseData', 'The server returned invalid license data. If you tried to submit or delete key manually please make sure that you copied and pasted the server response code entirely.');
delete_option('mix_word_' . $this->plugin->pluginName);
$this->setLicense( $data );
if ( $this->plugin->updates ) $this->plugin->updates->checkUpdates();
return true;
}
/**
* Activates a licensing key manually.
*/
public function activateKeyManualy( $response ) {
$response = base64_decode( $response );
$data = array();
parse_str($response, $data);
if ( !$this->checkLicenseDataCorrectness($data) )
return new WP_Error('FORM:InvalidLicenseData', 'The server returned invalid license data. If you tried to submit or delete key manually please make sure that you copied and pasted the server response code entirely.');
$data['Description'] = base64_decode( str_replace( ' ', '+', $data['Description'] ));
$this->setLicense( $data );
if ( $this->plugin->updates ) $this->plugin->updates->checkUpdates();
return true;
}
/**
* Make attampt to activate one of trial license via the Licensing server.
* @param string $server Licensing server to get license data.
*/
public function activateTrial() {
if ( defined('ONP_DEBUG_NETWORK_DISABLED') && ONP_DEBUG_NETWORK_DISABLED )
return new WP_Error('HTTP:NetworkDisabled', 'The network is disabled.');
$data = $this->plugin->api->request(
'ActivateTrial', array(),
array(
'verification' => true
)
);
if (is_wp_error($data) ) return $data;
if ( !$this->checkLicenseDataCorrectness($data) )
return new WP_Error('FORM:InvalidLicenseData', 'The server returned invalid license data. If you tried to submit or delete key manually please make sure that you copied and pasted the server response code entirely.');
update_option('onp_trial_activated_' . $this->plugin->pluginName, true);
$this->setLicense( $data );
if ( $this->plugin->updates ) $this->plugin->updates->checkUpdates();
return true;
}
/**
* Delete current active key for the site.
*/
public function deleteKey() {
if ( defined('ONP_DEBUG_NETWORK_DISABLED') && ONP_DEBUG_NETWORK_DISABLED )
return new WP_Error('HTTP:NetworkDisabled', 'The network is disabled.');
$data = $this->plugin->api->request(
'DeleteKey', array(),
array(
'verification' => true
)
);
if (is_wp_error($data) ) return $data;
$this->resetLicense();
if ( $this->plugin->updates ) $this->plugin->updates->checkUpdates();
return true;
}
public function deleteKeyManualy( $response ) {
$response = base64_decode( $response );
$data = array();
parse_str($response, $data);
if ( $data['SiteSecret'] == get_option('onp_site_secret', null) ) {
delete_option('onp_license_' . $this->plugin->pluginName);
$this->data = get_option('onp_default_license_' . $this->plugin->pluginName, array());
return true;
};
if ( $this->plugin->updates ) $this->plugin->updates->checkUpdates();
return false;
}
public function getLinkToActivateTrial() {
$query = array(
'plugin' => $this->plugin->pluginName,
'site' => site_url(),
'secret' => get_option('onp_site_secret', null),
'assembly' => $this->plugin->build,
'version' => $this->plugin->version,
'tracker' => $this->plugin->tracker
);
$secretToken = $this->plugin->api->openVerificationGate();
$query['secretToken'] = $secretToken;
$request = base64_encode( http_build_query($query) );
return add_query_arg( array( 'request' => $request ), $this->plugin->options['api'] . 'ActivateTrialManualy' );
}
public function getLinkToActivateKey( $key ) {
$query = array(
'key' => $key,
'plugin' => $this->plugin->pluginName,
'site' => site_url(),
'secret' => get_option('onp_site_secret', null),
'assembly' => $this->plugin->build,
'version' => $this->plugin->version,
'tracker' => $this->plugin->tracker
);
$secretToken = $this->plugin->api->openVerificationGate();
$query['secretToken'] = $secretToken;
$request = base64_encode( http_build_query($query) );
return add_query_arg( array('request' => $request), $this->plugin->options['api'] . 'ActivateKeyManualy');
}
public function getLinkToDeleteKey() {
$query = array(
'plugin' => $this->plugin->pluginName,
'site' => site_url(),
'secret' => get_option('onp_site_secret', null),
'assembly' => $this->plugin->build,
'version' => $this->plugin->version,
'tracker' => $this->plugin->tracker
);
$request = base64_encode( http_build_query($query) );
return add_query_arg( array('request' => $request), $this->plugin->options['api'] . 'DeleteKeyManualy');
}
/**
* Creates a customer account and links a licence key.
*
* @since 1.0.0
* @param type $email Email to create an account.
* @return true|WP_Error An error occurred during creating an account or true.
*/
public function createAccount( $email, $subscribe ) {
if ( defined('ONP_DEBUG_NETWORK_DISABLED') && ONP_DEBUG_NETWORK_DISABLED )
return new WP_Error('HTTP:NetworkDisabled', 'The network is disabled.');
$data = $this->plugin->api->request(
'CreateAccount',
array(
'body' => array(
'email' => $email,
'subscribe' => $subscribe ? 'true' : 'false'
)
),
array(
'verification' => true
)
);
update_option('onp_bound_message_' . $this->plugin->pluginName, false );
return $data;
}
/**
* Binds the current key to the specified email.
*
* @since 1.0.0
* @param type $email Email to link the current key.
* @return true|WP_Error An error occurred during creating an account or true.
*/
public function bindKey( $email ) {
if ( defined('ONP_DEBUG_NETWORK_DISABLED') && ONP_DEBUG_NETWORK_DISABLED )
return new WP_Error('HTTP:NetworkDisabled', 'The network is disabled.');
$data = $this->plugin->api->request(
'bindKey',
array(
'body' => array(
'email' => $email
)
),
array(
'verification' => true
)
);
update_option('onp_bound_message_' . $this->plugin->pluginName, false );
return $data;
}
/**
* Cancels the recently created account (which is not activated yet).
*
* @since 1.0.0
*/
public function cancelAccount( $cancelCode, $confirmationId ) {
if ( defined('ONP_DEBUG_NETWORK_DISABLED') && ONP_DEBUG_NETWORK_DISABLED )
return new WP_Error('HTTP:NetworkDisabled', 'The network is disabled.');
$data = $this->plugin->api->request(
'cancelAccount',
array(
'body' => array(
'cancelCode' => $cancelCode,
'confirmationId' => $confirmationId
)
),
array(
'verification' => false
)
);
return $data;
}
// ---------------------------------------------------------------------------------
// Helper methods to work with keys
// ---------------------------------------------------------------------------------
public function hasKey() {
return !empty( $this->data['Key'] );
}
public function needKey() {
return $this->plugin->build == 'premium' && !$this->hasKey();
}
public function hasUpgrade() {
return
in_array($this->data['Category'], array('free', 'trial')) ||
in_array($this->data['Build'], array('free'));
}
public function isExpired() {
if ( !isset( $this->data['Expired'] ) || empty($this->data['Expired']) ) return false;
$expired = (int)$this->data['Expired'];
if ( $expired == 0 ) return false;
return $this->data['Expired'] - time() <= 0;
}
public function isTrial() {
if ( !isset( $this->data['Category'] ) ) return false;
return $this->data['Category'] === 'trial';
}
public function isEmbedded() {
if ( !isset( $this->data['Embedded'] ) ) return false;
return $this->data['Embedded'];
}
public function needToProtect() {
return !$this->isTrial() && !$this->isEmbedded();
}
// -------------------------------------------------------------------------------------
// Links, messages, notices and so on ...
// -------------------------------------------------------------------------------------
/**
* Adds the License link below the plugin title.
*
* Calls on the hook 'plugin_action_links_[plugin_name]'
*
* @since 1.0.0
* @param mixed[] $links
* @return mixed[]
*/
function addLicenseLinks($links) {
$url = onp_licensing_325_get_manager_link( $this->plugin->pluginName );
array_unshift($links, '<a href="' . $url . '" style="font-weight: bold;">'.__('License', 'onp_licensing_325'),'</a>');
unset($links['edit']);
return $links;
}
/**
* Adds messages offering to uprade a plugin into the plugin row on the page plugins.php.
*
* Calls on the hook 'factory_plugin_row_[plugin_name]'
*
* @since 1.0.0
* @param string[] $messages
* @return string[]
*/
function addMessagesToPluginRow($messages) {
if ( $this->plugin->license && !$this->plugin->license->hasKey() ) {
if ( in_array( $this->plugin->license->default['Build'], array( 'premium', 'ultimate' ) ) ) {
$message = __('You use a premium version of the plugin. Please, verify your license key to unlock all its features. <a href="%1$s">Click here</a>.', 'onp_licensing_325');
$message = str_replace("%1\$s", onp_licensing_325_get_manager_link($this->plugin->pluginName), $message);
return array($message);
}
}
return $messages;
}
/**
* Adds notices to display.
*
* Calls on the hook 'factory_notices_[plugin_name]'
*
* @param mixed[] $notices
* @return mixed[]
*/
function addNotices( $notices ) {
// show messages only for administrators
if ( !factory_325_is_administrator() ) return $notices;
$closed = get_option('factory_notices_closed', array());
$time = 0;
if ( isset( $closed[$this->plugin->pluginName . '-key-not-bound'] ) ) {
$time = $closed[$this->plugin->pluginName . '-key-not-bound']['time'];
}
// shows the key binding message only if changing the assembly is not required
$forceBindingMessage = defined('ONP_DEBUG_SHOW_BINDING_MESSAGE') && ONP_DEBUG_SHOW_BINDING_MESSAGE;
if ( ( $time + 60*60*24 <= time() && ( !$this->plugin->updates || !$this->plugin->updates->needChangeAssembly() )) || $forceBindingMessage ) {
$keyBound = get_option('onp_bound_message_' . $this->plugin->pluginName, false);
if ( ( $keyBound && $this->plugin->license && $this->plugin->license->key && $this->needToProtect() ) || $forceBindingMessage ) {
$notices[] = array(
'id' => $this->plugin->pluginName . '-key-not-bound',
// content and color
'class' => 'call-to-action',
'icon' => 'fa fa-frown-o',
'header' => __('Your license key is not protected!', 'onp_licensing_325'),
'message' => sprintf(__('Bind your license key (for %s) to your email address in order to avoid theft (it will take just a couple of seconds).', 'onp_licensing_325'), $this->plugin->options['title']),
'plugin' => $this->plugin->pluginName,
// buttons and links
'buttons' => array(
array(
'class' => 'btn btn-primary',
'title' => '<i class="fa fa-key"></i> ' . sprintf( __('Protect my key: %s', 'onp_licensing_325' ), '<i>' . $this->plugin->license->key . '</i>' ),
'action' => '?' . http_build_query(array(
'fy_page' => 'license-manager',
'fy_action' => 'createAccount',
'fy_plugin' => $this->plugin->pluginName
))
),
array(
'title' => __('Hide this message', 'onp_licensing_325'),
'class' => 'btn btn-default',
'action' => 'x'
)
)
);
}
}
$forceTrialNotices = defined('ONP_DEBUG_TRIAL_EXPIRES') && ONP_DEBUG_TRIAL_EXPIRES !== false;
$exipred = floatval($this->data['Expired']);
if ( $exipred != 0 || $forceTrialNotices ) {
$remained = round( ( $this->data['Expired'] - time() ) / (60 * 60 * 24), 2 );
if ( $forceTrialNotices ) $remained = ONP_DEBUG_TRIAL_EXPIRES;
if ( $remained < 5 && $remained > 0 ) {
$time = 0;
if ( isset( $closed[$this->plugin->pluginName . '-key-estimate'] ) ) {
$time = $closed[$this->plugin->pluginName . '-key-estimate']['time'];
}
if ( $time + 60*60*24 <= time() || $forceTrialNotices ) {
if ( $this->type == 'trial' || $forceTrialNotices ) {
if ( $remained <= 1 ) {
$notices[] = array(
'id' => $this->plugin->pluginName . '-key-estimate',
// content and color
'class' => 'call-to-action',
'icon' => 'fa fa-clock-o',
'header' => sprintf(__('The trial key for the %s will expire during the day!', 'onp_licensing_325'), $this->plugin->pluginTitle),
'message' => __('Don\'t forget to purchase the premium key or delete the trial key to use the free version of the plugin.', 'onp_licensing_325'),
'plugin' => $this->plugin->pluginName,
// buttons and links
'buttons' => array(
array(
'title' => '<i class="fa fa-arrow-circle-o-up"></i> '.__('Buy a premium key now!', 'onp_licensing_325'),
'class' => 'btn btn-primary',
'action' => onp_licensing_325_get_purchase_url( $this->plugin, 'trial-remained-1' )
),
array(
'title' => __('Hide this message', 'onp_licensing_325'),
'class' => 'btn btn-default',
'action' => 'x'
),
)
);
} else {
$notices[] = array(
'id' => $this->plugin->pluginName . '-key-estimate',
// content and color
'class' => 'call-to-action',
'icon' => 'fa fa-clock-o',
'header' => sprintf(__('The trial key for the %s will expire in %s days.', 'onp_licensing_325'),$this->plugin->pluginTitle, $remained),
'message' => __('Please don\'t forget to purchase the premium key or delete the trial key to use the free version of the plugin.', 'onp_licensing_325'),
'plugin' => $this->plugin->pluginName,
// buttons and links
'buttons' => array(
array(
'title' => '<i class="fa fa-arrow-circle-o-up"></i> '.__('Buy a premium key now!', 'onp_licensing_325'),
'class' => 'btn btn-primary',
'action' => onp_licensing_325_get_purchase_url( $this->plugin, 'trial-remained-' . $remained )
),
array(
'title' => __('Hide this message', 'onp_licensing_325'),
'class' => 'btn btn-default',
'action' => 'x'
),
)
);
}
}
}
}
if ( $this->isExpired() || $forceTrialNotices ) {
$notices[] = array(
'id' => $this->plugin->pluginName . '-key-expired',
// content and color
'class' => 'call-to-action',
'icon' => 'fa fa-arrow-circle-o-up',
'header' => sprintf(__('The trial key for the %s has expired.', 'onp_licensing_325'),$this->plugin->pluginTitle),
'message' => __('Please purchase another key or delete the current key to use the free version of the plugin.', 'onp_licensing_325'),
'plugin' => $this->plugin->pluginName,
// buttons and links
'buttons' => array(
array(
'title' => '<i class="fa fa-arrow-circle-o-up"></i> '.__('Buy a premium key now!', 'onp_licensing_325'),
'class' => 'btn btn-primary',
'action' => onp_licensing_325_get_purchase_url( $this->plugin, 'trial-expired' )
),
array(
'title' => __('Visit the license manager', 'onp_licensing_325'),
'class' => 'btn btn-default',
'action' => onp_licensing_325_get_manager_link($this->plugin->pluginName, 'index')
),
)
);
}
}
if ( $this->plugin->license && !$this->plugin->license->hasKey() ) {
if ( in_array( $this->plugin->license->default['Build'], array( 'premium', 'ultimate' ) ) ) {
if ( !isset( $this->plugin->options['support'] ) ) {
$contactUrl = 'http://support.onepress-media.com/create-ticket/';
} else {
$contactUrl = $this->plugin->options['support'];
}
$notices[] = array(
'id' => $this->plugin->pluginName . '-activate-premium-key',
// content and color
'class' => 'factory-hero',
'header' => __('Thank you ', 'onp_licensing_325'),
'message' => sprintf( __(' for purchasing <a target="_blank" href="%s" class="highlighted">%s</a>.', 'onp_licensing_325' ), onp_licensing_325_get_purchase_url( $this->plugin ), $this->plugin->pluginTitle ).
sprintf( __('Please verify your license key you got to unlock all the plugin features. Click the button on the right. Feel free to <a target="_blank" href="%s">contact us</a> if you need help.', 'onp_licensing_325'), $contactUrl ),
'plugin' => $this->plugin->pluginName,
// buttons and links
'buttons' => array(
array(
'title' => __('verify my license key', 'onp_licensing_325'),
'action' => onp_licensing_325_get_manager_link($this->plugin->pluginName, 'index')
)
)
);
}
}
return $notices;
}
public function printStylesForNotices( $hook ) {
if ( $hook !== 'index.php' && $hook !== 'plugins.php' ) return;
?>
<style>
.alert-danger.onp-alert-trial {
background-color: #fafafa !important;
color: #111 !important;
border: 2px solid #0074a2 !important;
}
</style>
<?php
}
}
/**
* Renders link to the license manager.
*
* @since 1.0.0
* @param type $pluginName
* @param type $action
*/
function onp_licensing_325_manager_link( $pluginName, $action = null, $echo = true ) {
$args = array(
'fy_page' => 'license-manager',
'fy_action' => $action,
'fy_plugin' => $pluginName
);
if( $echo )
echo '?' . http_build_query( $args );
else
return '?' . http_build_query( $args );
}
/**
* Gets link to the license manager.
*
* @since 1.0.0
* @param type $pluginName
* @param type $action
*/
function onp_licensing_325_get_manager_link( $pluginName, $action = null ) {
$args = array(
'fy_page' => 'license-manager',
'fy_action' => $action,
'fy_plugin' => $pluginName
);
return '?' . http_build_query( $args );
}
/**
* Prints a purchasing link with a set of tracking query arguments.
*
* @since 3.0.7
* @param Factory325_Plugin $plugin
* @return void
*/
function onp_licensing_325_purchase_url( $plugin ) {
echo onp_licensing_325_get_purchase_url( $plugin );
}
/**
* Returns a purchasing link with a set of tracking query arguments.
*
* @since 3.0.7
* @param Factory325_Plugin $plugin
* @return string
*/
function onp_licensing_325_get_purchase_url( $plugin, $campaign = 'upgrade-to-premium', $content = null ) {
if ( empty( $plugin ) || empty( $plugin->options ) ) return null;
if ( !isset( $plugin->options['premium'] ) ) return null;
$url = $plugin->options['premium'];
$args = array(
'utm_source' => 'plugin-' . $plugin->options['name'],
'utm_medium' => ( $plugin->license && isset( $plugin->license->data['Category'] ) )
? ( $plugin->license->data['Category'] . '-version' )
: 'unknown-version',
'utm_campaign' => $campaign,
'tracker' => isset( $plugin->options['tracker'] ) ? $plugin->options['tracker'] : null
);
if ( $content ) $args['utm_content'] = $content;
return add_query_arg( $args, $url );
}