Version Description
- 2020-10-27
- removed auto activation for PRO version
Download this release
Release Info
Developer | WebFactory |
Plugin | Minimal Coming Soon & Maintenance Mode |
Version | 2.20 |
Comparing to | |
See all releases |
Code changes from version 2.19 to 2.20
- framework/admin/license.php +1 -2
- framework/admin/views/settings-pro.php +10 -6
- framework/wf-licensing.php +40 -126
- minimal-coming-soon-maintenance-mode.php +3 -3
- readme.txt +6 -2
- wp301/wp301.php +2 -2
framework/admin/license.php
CHANGED
@@ -17,7 +17,7 @@ $csmm_lc = new WF_Licensing_CSMM(array(
|
|
17 |
'version' => csmm_get_plugin_version(),
|
18 |
'plugin_file' => CSMM_FILE,
|
19 |
'skip_hooks' => false,
|
20 |
-
'disable_remote' =>
|
21 |
'debug' => false,
|
22 |
'js_folder' => plugin_dir_url(CSMM_FILE) . 'framework/admin/js/'
|
23 |
));
|
@@ -36,7 +36,6 @@ add_action('wf_licensing_' . $csmm_lc->prefix . 'validate_ajax', function ($lice
|
|
36 |
if ($result == true) {
|
37 |
if (empty($license['error'])) {
|
38 |
set_transient('signals_csmm_err_' . get_current_user_id(), '<div class="csmm-alert csmm-alert-success"><strong>License key saved and activated!</strong><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 60);
|
39 |
-
delete_transient('_site_transient_update_plugins');
|
40 |
} else {
|
41 |
set_transient('signals_csmm_err_' . get_current_user_id(), '<div class="csmm-alert csmm-alert-danger"><strong>License not active.</strong> ' . $license['error'] . '<button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 60);
|
42 |
}
|
17 |
'version' => csmm_get_plugin_version(),
|
18 |
'plugin_file' => CSMM_FILE,
|
19 |
'skip_hooks' => false,
|
20 |
+
'disable_remote' => true,
|
21 |
'debug' => false,
|
22 |
'js_folder' => plugin_dir_url(CSMM_FILE) . 'framework/admin/js/'
|
23 |
));
|
36 |
if ($result == true) {
|
37 |
if (empty($license['error'])) {
|
38 |
set_transient('signals_csmm_err_' . get_current_user_id(), '<div class="csmm-alert csmm-alert-success"><strong>License key saved and activated!</strong><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 60);
|
|
|
39 |
} else {
|
40 |
set_transient('signals_csmm_err_' . get_current_user_id(), '<div class="csmm-alert csmm-alert-danger"><strong>License not active.</strong> ' . $license['error'] . '<button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 60);
|
41 |
}
|
framework/admin/views/settings-pro.php
CHANGED
@@ -247,11 +247,15 @@ if (!defined('WPINC')) {
|
|
247 |
<label>Type: </label>' . $license_formatted['name_long'];
|
248 |
echo '<br><label>Valid: </label>' . $license_formatted['valid_until'];
|
249 |
|
250 |
-
$plugin = plugin_basename(CSMM_FILE);
|
251 |
-
$update_url = wp_nonce_url(admin_url('update.php?action=upgrade-plugin&plugin=' . urlencode($plugin)), 'upgrade-plugin_' . $plugin);
|
252 |
echo '<p class="center">Thank you for purchasing Coming Soon & Maintenance Mode PRO! <b>Your license has been verified and activated.</b> ';
|
253 |
-
echo '
|
254 |
-
echo '<
|
|
|
|
|
|
|
|
|
|
|
|
|
255 |
} else { // not active
|
256 |
echo '<strong style="color: #ea1919;">Inactive</strong>';
|
257 |
if (!empty($csmm_lc->get_license('error'))) {
|
@@ -269,11 +273,11 @@ if (!defined('WPINC')) {
|
|
269 |
echo ' <a href="#" data-text-wait="Activating. Please wait." class="signals-btn signals-btn-secondary" id="csmm_keyless_activation">Keyless Activation</a>';
|
270 |
}
|
271 |
echo '</p>';
|
272 |
-
echo '<p class="mb0"><i>By attempting to activate a license you agree to share the following data with <a target="_blank" href="https://www.webfactoryltd.com/">WebFactory Ltd</a>: license key, site URL, site title, site WP version, and Coming Soon & Maintenance Mode (free) version.</i>';
|
273 |
echo '</p>';
|
274 |
?>
|
275 |
</div>
|
276 |
|
277 |
</div>
|
278 |
</div>
|
279 |
-
</div><!-- #pro -->
|
247 |
<label>Type: </label>' . $license_formatted['name_long'];
|
248 |
echo '<br><label>Valid: </label>' . $license_formatted['valid_until'];
|
249 |
|
|
|
|
|
250 |
echo '<p class="center">Thank you for purchasing Coming Soon & Maintenance Mode PRO! <b>Your license has been verified and activated.</b> ';
|
251 |
+
echo '<br>To start using the PRO version, please follow these steps:</p>';
|
252 |
+
echo '<ol>';
|
253 |
+
echo '<li><a href="https://dashboard.comingsoonwp.com/pro-download/" target="_blank">Download</a> the latest version of the PRO plugin or grab it from the purchase confirmation email we sent you.</li>';
|
254 |
+
echo '<li>Go to <a href="' . admin_url('plugin-install.php') . '">Plugins - Add New - Upload Plugin</a> and upload the ZIP you just downloaded.</li>';
|
255 |
+
echo '<li>If asked to replace (overwrite) the free version - confirm it.</li>';
|
256 |
+
echo '<li>Activate the plugin.</li>';
|
257 |
+
echo '<li>That\'s it, no more steps.</li>';
|
258 |
+
echo '</ol><br>';
|
259 |
} else { // not active
|
260 |
echo '<strong style="color: #ea1919;">Inactive</strong>';
|
261 |
if (!empty($csmm_lc->get_license('error'))) {
|
273 |
echo ' <a href="#" data-text-wait="Activating. Please wait." class="signals-btn signals-btn-secondary" id="csmm_keyless_activation">Keyless Activation</a>';
|
274 |
}
|
275 |
echo '</p>';
|
276 |
+
echo '<p class="mb0"><small><i>By attempting to activate a license you agree to share the following data with <a target="_blank" href="https://www.webfactoryltd.com/">WebFactory Ltd</a>: license key, site URL, site title, site WP version, and Coming Soon & Maintenance Mode (free) version.</i></small>';
|
277 |
echo '</p>';
|
278 |
?>
|
279 |
</div>
|
280 |
|
281 |
</div>
|
282 |
</div>
|
283 |
+
</div><!-- #pro -->
|
framework/wf-licensing.php
CHANGED
@@ -12,7 +12,7 @@ if (false === class_exists('WF_Licensing_CSMM')) {
|
|
12 |
protected $api_ver = 'v1/';
|
13 |
protected $valid_forever = '2035-01-01';
|
14 |
protected $unlimited_installs = 99999;
|
15 |
-
public $disable_remote =
|
16 |
public $debug = false;
|
17 |
|
18 |
|
@@ -44,9 +44,6 @@ if (false === class_exists('WF_Licensing_CSMM')) {
|
|
44 |
register_activation_hook($this->plugin_file, array($this, 'activate_plugin'));
|
45 |
register_deactivation_hook($this->plugin_file, array($this, 'deactivate_plugin'));
|
46 |
|
47 |
-
add_filter('pre_set_site_transient_update_plugins', array($this, 'update_filter'));
|
48 |
-
add_filter('plugins_api', array($this, 'update_details'), 100, 3);
|
49 |
-
|
50 |
add_action('init', array($this, 'init'));
|
51 |
|
52 |
add_action('wp_ajax_wf_licensing_' . $this->prefix . '_validate', array($this, 'validate_ajax'));
|
@@ -56,11 +53,11 @@ if (false === class_exists('WF_Licensing_CSMM')) {
|
|
56 |
}
|
57 |
|
58 |
$this->log('__construct', $params, get_object_vars($this));
|
59 |
-
|
60 |
add_action('wf_licensing_' . trim($this->prefix, '_') . '_remote_action_refresh', array($this, 'remote_action_refresh'));
|
61 |
add_action('wf_licensing_' . trim($this->prefix, '_') . '_remote_action_deactivate_license', array($this, 'remote_action_deactivate_license'));
|
62 |
add_action('wf_licensing_' . trim($this->prefix, '_') . '_remote_action_validate_license', array($this, 'remote_action_validate_license'));
|
63 |
-
|
64 |
add_action('plugins_loaded', array($this, 'monitor_remote_actions'));
|
65 |
} // __construct
|
66 |
|
@@ -94,86 +91,86 @@ if (false === class_exists('WF_Licensing_CSMM')) {
|
|
94 |
wp_localize_script('wf_licensing', 'wf_licensing_' . $this->prefix, $vars);
|
95 |
}
|
96 |
} // init
|
97 |
-
|
98 |
-
|
99 |
function monitor_remote_actions()
|
100 |
{
|
101 |
if ($this->disable_remote || is_admin()) {
|
102 |
return;
|
103 |
}
|
104 |
-
|
105 |
if (!empty($_REQUEST[$this->prefix . '_access_key']) && !empty($_REQUEST[$this->prefix . '_action']) && isset($_REQUEST[$this->prefix . '_action_params'])) {
|
106 |
$access_key = substr(trim($_REQUEST[$this->prefix . '_access_key']), 0, 32);
|
107 |
$action = substr(trim($_REQUEST[$this->prefix . '_action']), 0, 32);
|
108 |
$action_params = $_REQUEST[$this->prefix . '_action_params'];
|
109 |
$rand = substr($_REQUEST[$this->prefix . '_rand'], 0, 5);
|
110 |
$rand = preg_replace("/[^0-9]/", '', $rand);
|
111 |
-
|
112 |
nocache_headers();
|
113 |
header('X-WF-Licensing-' . $this->prefix . ': ' . $this->version);
|
114 |
-
|
115 |
if (strlen($rand) != 5) {
|
116 |
wp_send_json_error('Invalid random value.');
|
117 |
}
|
118 |
-
|
119 |
if (false == $this->is_active(false, false, true)) {
|
120 |
wp_send_json_error('License is not active.');
|
121 |
}
|
122 |
-
|
123 |
if (false == $this->is_remote_action($action)) {
|
124 |
wp_send_json_error('Unknown remote action.');
|
125 |
}
|
126 |
-
|
127 |
$access_key = preg_replace("/[^0-9a-zA-Z]/", '', $access_key);
|
128 |
if (strlen($access_key) != 32) {
|
129 |
wp_send_json_error('Invalid access key format.');
|
130 |
}
|
131 |
-
|
132 |
$license = $this->get_license();
|
133 |
if ($access_key != $license['access_key']) {
|
134 |
wp_send_json_error('Invalid access key.');
|
135 |
}
|
136 |
-
|
137 |
$post_data = @json_decode(file_get_contents('php://input'), true);
|
138 |
do_action('wf_licensing_' . trim($this->prefix, '_') . '_remote_action_' . $action, $action_params, $this, $post_data);
|
139 |
-
|
140 |
wp_send_json_error('Remote action did not execute.');
|
141 |
die();
|
142 |
}
|
143 |
} // monitor_remote_actions
|
144 |
-
|
145 |
-
|
146 |
function remote_action_refresh($action_params)
|
147 |
{
|
148 |
$data = $this->prepare_server_query_data('remote_refresh');
|
149 |
-
|
150 |
wp_send_json_success($data);
|
151 |
} // remote_action_refresh
|
152 |
-
|
153 |
-
|
154 |
function remote_action_validate_license($action_params)
|
155 |
{
|
156 |
$validate = $this->validate();
|
157 |
$license = $this->get_license();
|
158 |
-
|
159 |
wp_send_json_success(array('validate' => $validate, 'license' => $license));
|
160 |
} // remote_action_validate_license
|
161 |
-
|
162 |
-
|
163 |
function remote_action_deactivate_license($action_params)
|
164 |
{
|
165 |
$license = $this->get_license();
|
166 |
$this->update_license(false);
|
167 |
-
|
168 |
if ($action_params['keep_license_key']) {
|
169 |
$tmp = array('error' => 'License is no longer valid for this site.', 'license_key' => $license['license_key']);
|
170 |
$this->update_license($tmp);
|
171 |
}
|
172 |
-
|
173 |
wp_send_json_success();
|
174 |
} // remote_action_deactivate_license
|
175 |
-
|
176 |
-
|
177 |
private function is_remote_action($action)
|
178 |
{
|
179 |
$actions = array('refresh', 'validate_license', 'deactivate_license');
|
@@ -237,7 +234,7 @@ if (false === class_exists('WF_Licensing_CSMM')) {
|
|
237 |
|
238 |
$options = get_option('wf_licensing_' . $this->prefix, array());
|
239 |
$options = array_merge($default, $options);
|
240 |
-
|
241 |
if (empty($options['access_key'])) {
|
242 |
$options['access_key'] = $this->generate_access_key();
|
243 |
$this->update_license($options);
|
@@ -249,14 +246,14 @@ if (false === class_exists('WF_Licensing_CSMM')) {
|
|
249 |
return $options;
|
250 |
}
|
251 |
} // get_license
|
252 |
-
|
253 |
-
|
254 |
function generate_access_key()
|
255 |
{
|
256 |
$keyspace = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
257 |
$pieces = array();
|
258 |
$max = strlen($keyspace) - 1;
|
259 |
-
|
260 |
for ($i = 0; $i < 32; ++$i) {
|
261 |
$pieces[] = $keyspace[random_int(0, $max)];
|
262 |
}
|
@@ -288,7 +285,7 @@ if (false === class_exists('WF_Licensing_CSMM')) {
|
|
288 |
if ($license['meta']) {
|
289 |
$tmp = '';
|
290 |
foreach ($license['meta'] as $meta => $meta_value) {
|
291 |
-
|
292 |
if ($meta[0] == '_' || filter_var($meta_value, FILTER_VALIDATE_BOOLEAN) != true) {
|
293 |
continue;
|
294 |
}
|
@@ -391,7 +388,7 @@ if (false === class_exists('WF_Licensing_CSMM')) {
|
|
391 |
}
|
392 |
|
393 |
$license = $this->get_license();
|
394 |
-
|
395 |
if (
|
396 |
!empty($license['license_key']) && !empty($license['name']) &&
|
397 |
!empty($license['valid_until']) && $license['valid_until'] >= date('Y-m-d')
|
@@ -612,7 +609,7 @@ if (false === class_exists('WF_Licensing_CSMM')) {
|
|
612 |
function prepare_server_query_data($action)
|
613 |
{
|
614 |
$license = $this->get_license();
|
615 |
-
|
616 |
$query_data = array(
|
617 |
'action' => $action,
|
618 |
'license_key' => $license['license_key'],
|
@@ -624,11 +621,11 @@ if (false === class_exists('WF_Licensing_CSMM')) {
|
|
624 |
'access_key' => $license['access_key'],
|
625 |
'meta' => apply_filters('wf_licensing_' . trim($this->prefix, '_') . '_query_server_meta', array(), $action)
|
626 |
);
|
627 |
-
|
628 |
if (substr($action, 0, 7) == 'remote_') {
|
629 |
unset($query_data['action'], $query_data['license_key']);
|
630 |
}
|
631 |
-
|
632 |
return $query_data;
|
633 |
} // prepare_server_query_data
|
634 |
|
@@ -653,18 +650,18 @@ if (false === class_exists('WF_Licensing_CSMM')) {
|
|
653 |
array_walk_recursive($request_data, function (&$val, $ind) {
|
654 |
$val = rawurlencode($val);
|
655 |
});
|
656 |
-
|
657 |
$this->log('query licensing server', $request_data);
|
658 |
|
659 |
$url = rtrim(add_query_arg($request_data, trailingslashit($this->licensing_servers[0] . $this->api_ver)), '&');
|
660 |
-
|
661 |
$response = wp_remote_get($url, $request_params);
|
662 |
-
|
663 |
$body = wp_remote_retrieve_body($response);
|
664 |
$result = @json_decode($body, true);
|
665 |
-
|
666 |
$this->log('licensing server response', $response);
|
667 |
-
|
668 |
if (is_wp_error($response) || empty($body) || !is_array($result) || !isset($result['success'])) {
|
669 |
if (is_wp_error($response)) {
|
670 |
return $response;
|
@@ -675,88 +672,5 @@ if (false === class_exists('WF_Licensing_CSMM')) {
|
|
675 |
return $result;
|
676 |
}
|
677 |
} // query_licensing_server
|
678 |
-
|
679 |
-
|
680 |
-
/**
|
681 |
-
* Plugin info lightbox
|
682 |
-
*
|
683 |
-
* @param object $return
|
684 |
-
* @param string $action
|
685 |
-
* @param object $args
|
686 |
-
*
|
687 |
-
* @return object
|
688 |
-
*/
|
689 |
-
function update_details($return, $action, $args)
|
690 |
-
{
|
691 |
-
if (!$this->is_active()) {
|
692 |
-
return $return;
|
693 |
-
}
|
694 |
-
|
695 |
-
static $response = false;
|
696 |
-
|
697 |
-
if ($action != 'plugin_information' || empty($args->slug) || $args->slug != $this->slug) {
|
698 |
-
return $return;
|
699 |
-
}
|
700 |
-
|
701 |
-
if (empty($response) || is_wp_error($response)) {
|
702 |
-
$response = $this->query_licensing_server('plugin_information', array('request_details' => serialize($args)));
|
703 |
-
}
|
704 |
-
|
705 |
-
if (is_wp_error($response)) {
|
706 |
-
$res = new WP_Error('plugins_api_failed', 'xAn unexpected HTTP error occurred during the API request.', $response->get_error_message());
|
707 |
-
} elseif ($response['success'] != true) {
|
708 |
-
$res = new WP_Error('plugins_api_failed', 'Invalid response data received during the API request.', $response['data']);
|
709 |
-
} else {
|
710 |
-
$res = (object) $response['data'];
|
711 |
-
$res->sections = (array) $res->sections;
|
712 |
-
$res->banners = (array) $res->banners;
|
713 |
-
$res->icons = (array) $res->icons;
|
714 |
-
}
|
715 |
-
|
716 |
-
return $res;
|
717 |
-
} // update_details
|
718 |
-
|
719 |
-
|
720 |
-
/**
|
721 |
-
* Get info on new plugin version if one exists
|
722 |
-
*
|
723 |
-
* @param object current plugin info
|
724 |
-
*
|
725 |
-
* @return object update info
|
726 |
-
*/
|
727 |
-
function update_filter($current)
|
728 |
-
{
|
729 |
-
|
730 |
-
if (!$this->is_active()) {
|
731 |
-
return $current;
|
732 |
-
}
|
733 |
-
|
734 |
-
static $response = false;
|
735 |
-
|
736 |
-
$response = get_transient('wf_plugin_update_' . $this->prefix);
|
737 |
-
|
738 |
-
if (empty($response)) {
|
739 |
-
$response = $this->query_licensing_server('update_info');
|
740 |
-
set_transient('wf_plugin_update_' . $this->prefix, $response, 120);
|
741 |
-
}
|
742 |
-
|
743 |
-
if (!is_wp_error($response) && $response['success'] == true) {
|
744 |
-
$data = (object)$response['data'];
|
745 |
-
|
746 |
-
if (empty($current)) {
|
747 |
-
$current = new stdClass();
|
748 |
-
}
|
749 |
-
if (empty($current->response)) {
|
750 |
-
$current->response = array();
|
751 |
-
}
|
752 |
-
if (!empty($data) && is_object($data) && version_compare($data->new_version, $this->version) === 1) {
|
753 |
-
$data->icons = (array) $data->icons;
|
754 |
-
$data->banners = (array) $data->banners;
|
755 |
-
$current->response[$this->basename] = $data;
|
756 |
-
}
|
757 |
-
}
|
758 |
-
|
759 |
-
return $current;
|
760 |
-
} // update_filter
|
761 |
} // WF_Licensing_CSMM
|
762 |
} // if WF_Licensing_CSMM
|
12 |
protected $api_ver = 'v1/';
|
13 |
protected $valid_forever = '2035-01-01';
|
14 |
protected $unlimited_installs = 99999;
|
15 |
+
public $disable_remote = true;
|
16 |
public $debug = false;
|
17 |
|
18 |
|
44 |
register_activation_hook($this->plugin_file, array($this, 'activate_plugin'));
|
45 |
register_deactivation_hook($this->plugin_file, array($this, 'deactivate_plugin'));
|
46 |
|
|
|
|
|
|
|
47 |
add_action('init', array($this, 'init'));
|
48 |
|
49 |
add_action('wp_ajax_wf_licensing_' . $this->prefix . '_validate', array($this, 'validate_ajax'));
|
53 |
}
|
54 |
|
55 |
$this->log('__construct', $params, get_object_vars($this));
|
56 |
+
|
57 |
add_action('wf_licensing_' . trim($this->prefix, '_') . '_remote_action_refresh', array($this, 'remote_action_refresh'));
|
58 |
add_action('wf_licensing_' . trim($this->prefix, '_') . '_remote_action_deactivate_license', array($this, 'remote_action_deactivate_license'));
|
59 |
add_action('wf_licensing_' . trim($this->prefix, '_') . '_remote_action_validate_license', array($this, 'remote_action_validate_license'));
|
60 |
+
|
61 |
add_action('plugins_loaded', array($this, 'monitor_remote_actions'));
|
62 |
} // __construct
|
63 |
|
91 |
wp_localize_script('wf_licensing', 'wf_licensing_' . $this->prefix, $vars);
|
92 |
}
|
93 |
} // init
|
94 |
+
|
95 |
+
|
96 |
function monitor_remote_actions()
|
97 |
{
|
98 |
if ($this->disable_remote || is_admin()) {
|
99 |
return;
|
100 |
}
|
101 |
+
|
102 |
if (!empty($_REQUEST[$this->prefix . '_access_key']) && !empty($_REQUEST[$this->prefix . '_action']) && isset($_REQUEST[$this->prefix . '_action_params'])) {
|
103 |
$access_key = substr(trim($_REQUEST[$this->prefix . '_access_key']), 0, 32);
|
104 |
$action = substr(trim($_REQUEST[$this->prefix . '_action']), 0, 32);
|
105 |
$action_params = $_REQUEST[$this->prefix . '_action_params'];
|
106 |
$rand = substr($_REQUEST[$this->prefix . '_rand'], 0, 5);
|
107 |
$rand = preg_replace("/[^0-9]/", '', $rand);
|
108 |
+
|
109 |
nocache_headers();
|
110 |
header('X-WF-Licensing-' . $this->prefix . ': ' . $this->version);
|
111 |
+
|
112 |
if (strlen($rand) != 5) {
|
113 |
wp_send_json_error('Invalid random value.');
|
114 |
}
|
115 |
+
|
116 |
if (false == $this->is_active(false, false, true)) {
|
117 |
wp_send_json_error('License is not active.');
|
118 |
}
|
119 |
+
|
120 |
if (false == $this->is_remote_action($action)) {
|
121 |
wp_send_json_error('Unknown remote action.');
|
122 |
}
|
123 |
+
|
124 |
$access_key = preg_replace("/[^0-9a-zA-Z]/", '', $access_key);
|
125 |
if (strlen($access_key) != 32) {
|
126 |
wp_send_json_error('Invalid access key format.');
|
127 |
}
|
128 |
+
|
129 |
$license = $this->get_license();
|
130 |
if ($access_key != $license['access_key']) {
|
131 |
wp_send_json_error('Invalid access key.');
|
132 |
}
|
133 |
+
|
134 |
$post_data = @json_decode(file_get_contents('php://input'), true);
|
135 |
do_action('wf_licensing_' . trim($this->prefix, '_') . '_remote_action_' . $action, $action_params, $this, $post_data);
|
136 |
+
|
137 |
wp_send_json_error('Remote action did not execute.');
|
138 |
die();
|
139 |
}
|
140 |
} // monitor_remote_actions
|
141 |
+
|
142 |
+
|
143 |
function remote_action_refresh($action_params)
|
144 |
{
|
145 |
$data = $this->prepare_server_query_data('remote_refresh');
|
146 |
+
|
147 |
wp_send_json_success($data);
|
148 |
} // remote_action_refresh
|
149 |
+
|
150 |
+
|
151 |
function remote_action_validate_license($action_params)
|
152 |
{
|
153 |
$validate = $this->validate();
|
154 |
$license = $this->get_license();
|
155 |
+
|
156 |
wp_send_json_success(array('validate' => $validate, 'license' => $license));
|
157 |
} // remote_action_validate_license
|
158 |
+
|
159 |
+
|
160 |
function remote_action_deactivate_license($action_params)
|
161 |
{
|
162 |
$license = $this->get_license();
|
163 |
$this->update_license(false);
|
164 |
+
|
165 |
if ($action_params['keep_license_key']) {
|
166 |
$tmp = array('error' => 'License is no longer valid for this site.', 'license_key' => $license['license_key']);
|
167 |
$this->update_license($tmp);
|
168 |
}
|
169 |
+
|
170 |
wp_send_json_success();
|
171 |
} // remote_action_deactivate_license
|
172 |
+
|
173 |
+
|
174 |
private function is_remote_action($action)
|
175 |
{
|
176 |
$actions = array('refresh', 'validate_license', 'deactivate_license');
|
234 |
|
235 |
$options = get_option('wf_licensing_' . $this->prefix, array());
|
236 |
$options = array_merge($default, $options);
|
237 |
+
|
238 |
if (empty($options['access_key'])) {
|
239 |
$options['access_key'] = $this->generate_access_key();
|
240 |
$this->update_license($options);
|
246 |
return $options;
|
247 |
}
|
248 |
} // get_license
|
249 |
+
|
250 |
+
|
251 |
function generate_access_key()
|
252 |
{
|
253 |
$keyspace = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
254 |
$pieces = array();
|
255 |
$max = strlen($keyspace) - 1;
|
256 |
+
|
257 |
for ($i = 0; $i < 32; ++$i) {
|
258 |
$pieces[] = $keyspace[random_int(0, $max)];
|
259 |
}
|
285 |
if ($license['meta']) {
|
286 |
$tmp = '';
|
287 |
foreach ($license['meta'] as $meta => $meta_value) {
|
288 |
+
|
289 |
if ($meta[0] == '_' || filter_var($meta_value, FILTER_VALIDATE_BOOLEAN) != true) {
|
290 |
continue;
|
291 |
}
|
388 |
}
|
389 |
|
390 |
$license = $this->get_license();
|
391 |
+
|
392 |
if (
|
393 |
!empty($license['license_key']) && !empty($license['name']) &&
|
394 |
!empty($license['valid_until']) && $license['valid_until'] >= date('Y-m-d')
|
609 |
function prepare_server_query_data($action)
|
610 |
{
|
611 |
$license = $this->get_license();
|
612 |
+
|
613 |
$query_data = array(
|
614 |
'action' => $action,
|
615 |
'license_key' => $license['license_key'],
|
621 |
'access_key' => $license['access_key'],
|
622 |
'meta' => apply_filters('wf_licensing_' . trim($this->prefix, '_') . '_query_server_meta', array(), $action)
|
623 |
);
|
624 |
+
|
625 |
if (substr($action, 0, 7) == 'remote_') {
|
626 |
unset($query_data['action'], $query_data['license_key']);
|
627 |
}
|
628 |
+
|
629 |
return $query_data;
|
630 |
} // prepare_server_query_data
|
631 |
|
650 |
array_walk_recursive($request_data, function (&$val, $ind) {
|
651 |
$val = rawurlencode($val);
|
652 |
});
|
653 |
+
|
654 |
$this->log('query licensing server', $request_data);
|
655 |
|
656 |
$url = rtrim(add_query_arg($request_data, trailingslashit($this->licensing_servers[0] . $this->api_ver)), '&');
|
657 |
+
|
658 |
$response = wp_remote_get($url, $request_params);
|
659 |
+
|
660 |
$body = wp_remote_retrieve_body($response);
|
661 |
$result = @json_decode($body, true);
|
662 |
+
|
663 |
$this->log('licensing server response', $response);
|
664 |
+
|
665 |
if (is_wp_error($response) || empty($body) || !is_array($result) || !isset($result['success'])) {
|
666 |
if (is_wp_error($response)) {
|
667 |
return $response;
|
672 |
return $result;
|
673 |
}
|
674 |
} // query_licensing_server
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
675 |
} // WF_Licensing_CSMM
|
676 |
} // if WF_Licensing_CSMM
|
minimal-coming-soon-maintenance-mode.php
CHANGED
@@ -3,10 +3,10 @@
|
|
3 |
* Plugin Name: Minimal Coming Soon & Maintenance Mode
|
4 |
* Plugin URI: https://comingsoonwp.com/
|
5 |
* Description: Simply awesome coming soon & maintenance mode plugin. Super-simple to use. MailChimp support built-in.
|
6 |
-
* Version: 2.
|
7 |
* Requires at least: 4.0
|
8 |
* Requires PHP: 5.2
|
9 |
-
* Tested up to: 5.
|
10 |
* Author: WebFactory Ltd
|
11 |
* Author URI: https://www.webfactoryltd.com/
|
12 |
* License: GPLv3
|
@@ -14,7 +14,7 @@
|
|
14 |
*
|
15 |
*
|
16 |
* Minimal Coming Soon & Maintenance Mode Plugin
|
17 |
-
* Copyright (C) 2016 - 2020,
|
18 |
*
|
19 |
* This program is free software: you can redistribute it and/or modify
|
20 |
* it under the terms of the GNU General Public License as published by
|
3 |
* Plugin Name: Minimal Coming Soon & Maintenance Mode
|
4 |
* Plugin URI: https://comingsoonwp.com/
|
5 |
* Description: Simply awesome coming soon & maintenance mode plugin. Super-simple to use. MailChimp support built-in.
|
6 |
+
* Version: 2.20
|
7 |
* Requires at least: 4.0
|
8 |
* Requires PHP: 5.2
|
9 |
+
* Tested up to: 5.6
|
10 |
* Author: WebFactory Ltd
|
11 |
* Author URI: https://www.webfactoryltd.com/
|
12 |
* License: GPLv3
|
14 |
*
|
15 |
*
|
16 |
* Minimal Coming Soon & Maintenance Mode Plugin
|
17 |
+
* Copyright (C) 2016 - 2020, WebFactory Ltd - support@webfactoryltd.com
|
18 |
*
|
19 |
* This program is free software: you can redistribute it and/or modify
|
20 |
* it under the terms of the GNU General Public License as published by
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: WebFactory
|
|
3 |
Tags: coming soon, coming soon page, maintenance mode, maintenance mode page, coming soon mode, under construction, maintenance mode page, landing page, offline page, subscribe form, maintenance, mailchimp, gdpr, coming soon builder, coming soon status
|
4 |
Requires at least: 4.0
|
5 |
Requires PHP: 5.2
|
6 |
-
Tested up to: 5.
|
7 |
-
Stable tag: 2.
|
8 |
License: GPLv3
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -82,6 +82,10 @@ Yes and no. When activated it enables itself across the entire WP-MU network.
|
|
82 |
|
83 |
== Changelog ==
|
84 |
|
|
|
|
|
|
|
|
|
85 |
= 2.19 =
|
86 |
* 2020-10-11
|
87 |
* removed MailOptin integration
|
3 |
Tags: coming soon, coming soon page, maintenance mode, maintenance mode page, coming soon mode, under construction, maintenance mode page, landing page, offline page, subscribe form, maintenance, mailchimp, gdpr, coming soon builder, coming soon status
|
4 |
Requires at least: 4.0
|
5 |
Requires PHP: 5.2
|
6 |
+
Tested up to: 5.6
|
7 |
+
Stable tag: 2.20
|
8 |
License: GPLv3
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
82 |
|
83 |
== Changelog ==
|
84 |
|
85 |
+
= 2.20 =
|
86 |
+
* 2020-10-27
|
87 |
+
* removed auto activation for PRO version
|
88 |
+
|
89 |
= 2.19 =
|
90 |
* 2020-10-11
|
91 |
* removed MailOptin integration
|
wp301/wp301.php
CHANGED
@@ -148,7 +148,7 @@ if (false == class_exists('wf_wp301')) {
|
|
148 |
$out .= '#wp301promo_dismiss:hover { text-decoration: underline; }';
|
149 |
$out .= '#wp301promo_widget, #wp301promo_widget p { font-size: 14px; }';
|
150 |
$out .= '#wp301promo_widget .title301 { font-weight: 600; margin: 10px 0 -10px 0; }';
|
151 |
-
$out .= '#wp301promo_widget img { max-width:
|
152 |
$out .= '#wp301promo_widget .center { text-align: center; }';
|
153 |
$out .= '#wp301promo_email { margin-bottom: 0 !important; }';
|
154 |
$out .= '#wp301promo_widget { background-color: #fafafa; }';
|
@@ -266,7 +266,7 @@ if (false == class_exists('wf_wp301')) {
|
|
266 |
$out .= '<li>Create advanced redirect rules & control affiliate links</li>';
|
267 |
$out .= '<li>Detailed log of all redirects & 404s</li>';
|
268 |
$out .= '<li>Manage all sites\' licenses from a central Dashboard</li>';
|
269 |
-
$out .= '<li>Lifetime license for 10 sites. <a href="https://wp301redirects.com/free-license/?ref=free-' . $this->plugin_slug . '-
|
270 |
$out .= '</ul>';
|
271 |
|
272 |
$out .= '
|
148 |
$out .= '#wp301promo_dismiss:hover { text-decoration: underline; }';
|
149 |
$out .= '#wp301promo_widget, #wp301promo_widget p { font-size: 14px; }';
|
150 |
$out .= '#wp301promo_widget .title301 { font-weight: 600; margin: 10px 0 -10px 0; }';
|
151 |
+
$out .= '#wp301promo_widget img { max-width: 45%; max-height: 80px; }';
|
152 |
$out .= '#wp301promo_widget .center { text-align: center; }';
|
153 |
$out .= '#wp301promo_email { margin-bottom: 0 !important; }';
|
154 |
$out .= '#wp301promo_widget { background-color: #fafafa; }';
|
266 |
$out .= '<li>Create advanced redirect rules & control affiliate links</li>';
|
267 |
$out .= '<li>Detailed log of all redirects & 404s</li>';
|
268 |
$out .= '<li>Manage all sites\' licenses from a central Dashboard</li>';
|
269 |
+
$out .= '<li>Lifetime license for 10 sites. <a href="https://wp301redirects.com/free-license/?ref=free-' . $this->plugin_slug . '-popup" target="_blank">See all features</a></li>';
|
270 |
$out .= '</ul>';
|
271 |
|
272 |
$out .= '
|