Maximum Allowed Domains ';
$product_config_html .= ' ';
diff --git a/admin/slm-add-licenses.php b/admin/slm-add-licenses.php
index 8c2cebe..f7345f7 100755
--- a/admin/slm-add-licenses.php
+++ b/admin/slm-add-licenses.php
@@ -1,749 +1,300 @@
';
- // echo 'Add/Edit Licenses ';
- echo '';
+ $id = !empty($_GET['edit_record']) ? intval($_GET['edit_record']) : 0; // Check for 'edit_record' parameter in the URL
+ $slm_options = get_option('slm_options');
- //If product is being edited, grab current product info
- if (isset($_GET['edit_record'])) {
- $errors = '';
- $id = $_GET['edit_record'];
- $lk_table = SLM_TBL_LICENSE_KEYS;
- $sql_prep = $wpdb->prepare("SELECT * FROM $lk_table WHERE id = %s", $id);
- $record = $wpdb->get_row($sql_prep, OBJECT);
- $license_key = $record->license_key;
- $max_domains = $record->max_allowed_domains;
- $max_devices = $record->max_allowed_devices;
- $license_status = $record->lic_status;
- $first_name = $record->first_name;
- $last_name = $record->last_name;
- $email = $record->email;
- $company_name = $record->company_name;
- $txn_id = $record->txn_id;
- $reset_count = $record->manual_reset_count;
- $purchase_id_ = $record->purchase_id_;
- $created_date = $record->date_created;
- $renewed_date = $record->date_renewed;
- $date_activated = $record->date_activated;
- $product_ref = $record->product_ref;
- $until = $record->until;
- $current_ver = $record->current_ver;
- $subscr_id = $record->subscr_id;
- $lic_type = $record->lic_type;
- $expiry_date = $record->date_expiry;
- $lic_item_ref = $record->item_reference;
- $slm_billing_length = $record->slm_billing_length;
- $slm_billing_interval = $record->slm_billing_interval;
- }
- if (isset($_POST['save_record'])) {
-
- //Check nonce
- if (!isset($_POST['slm_add_edit_nonce_val']) || !wp_verify_nonce($_POST['slm_add_edit_nonce_val'], 'slm_add_edit_nonce_action')) {
- //Nonce check failed.
- wp_die("Error! Nonce verification failed for license save action.");
+ // Check if the form is submitted
+ if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['slm_save_license'])) {
+ // Verify the nonce before processing the form
+ if (!isset($_POST['slm_nonce']) || !wp_verify_nonce($_POST['slm_nonce'], 'slm_save_license')) {
+ die(__('Security check failed', 'slmplus'));
}
- do_action('slm_add_edit_interface_save_submission');
+ // Sanitize and validate the input data
+ $data = [
+ 'license_key' => sanitize_text_field($_POST['license_key']),
+ 'max_allowed_domains' => intval($_POST['max_allowed_domains']),
+ 'max_allowed_devices' => intval($_POST['max_allowed_devices']),
+ 'lic_status' => sanitize_text_field($_POST['lic_status']),
+ 'first_name' => sanitize_text_field($_POST['first_name']),
+ 'last_name' => sanitize_text_field($_POST['last_name']),
+
+ // Validate email
+ 'email' => is_email($_POST['email']) ? sanitize_email($_POST['email']) : '',
+
+ 'company_name' => sanitize_text_field($_POST['company_name']),
+ 'txn_id' => sanitize_text_field($_POST['txn_id']),
+ 'manual_reset_count' => intval($_POST['manual_reset_count']),
+ 'purchase_id_' => sanitize_text_field($_POST['purchase_id_']),
+
+ // Date validation
+ 'date_created' => SLM_API_Utility::slm_validate_date($_POST['date_created']),
+ 'date_renewed' => SLM_API_Utility::slm_validate_date($_POST['date_renewed']),
+ 'date_activated' => SLM_API_Utility::slm_validate_date($_POST['date_activated']),
+
+ 'product_ref' => sanitize_text_field($_POST['product_ref']),
+ 'until' => sanitize_text_field($_POST['until']),
+ 'current_ver' => sanitize_text_field($_POST['current_ver']),
+ 'subscr_id' => sanitize_text_field($_POST['subscr_id']),
+ 'lic_type' => sanitize_text_field($_POST['lic_type']),
+
+ // Handle 'lifetime' license expiration properly
+ 'date_expiry' => ($_POST['lic_type'] == 'lifetime') ? '0000-00-00' : SLM_API_Utility::slm_validate_date($_POST['date_expiry']),
+
+ 'item_reference' => sanitize_text_field($_POST['item_reference']),
+ 'slm_billing_length' => sanitize_text_field($_POST['slm_billing_length']),
+ 'slm_billing_interval' => sanitize_text_field($_POST['slm_billing_interval']),
+ 'reminder_sent' => intval($_POST['reminder_sent']),
+
+ // Reminder date validation
+ 'reminder_sent_date' => SLM_API_Utility::slm_validate_date($_POST['reminder_sent_date'])
+ ];
- //TODO - do some validation
- $license_key = $_POST['license_key'];
- $max_domains = $_POST['max_allowed_domains'];
- $max_devices = $_POST['max_allowed_devices'];
- $license_status = $_POST['lic_status'];
- $first_name = $_POST['first_name'];
- $last_name = $_POST['last_name'];
- $email = $_POST['email'];
- $company_name = $_POST['company_name'];
- $txn_id = $_POST['txn_id'];
- $reset_count = $_POST['manual_reset_count'];
- $purchase_id_ = $_POST['purchase_id_'];
- $created_date = $_POST['date_created'];
- $renewed_date = $_POST['date_renewed'];
- $date_activated = $_POST['date_activated'];
- // $expiry_date = $_POST['date_expiry'];
- $product_ref = $_POST['product_ref'];
- $until = $_POST['until'];
- $current_ver = $_POST['current_ver'];
- $subscr_id = $_POST['subscr_id'];
- $lic_type = $_POST['lic_type'];
- if ("" == trim($_POST['item_reference'])) {
- $lic_item_ref = 'default';
+ // Check for required fields
+ if (empty($data['email']) || empty($data['date_created']) || ($data['lic_type'] != 'lifetime' && empty($data['date_expiry'])) || empty($data['lic_type'])) {
+ echo '
' . __('Required fields are missing.', 'slmplus') . '
';
} else {
- $lic_item_ref = trim($_POST['item_reference']);
- }
-
-
- $slm_billing_length = trim($_POST['slm_billing_length']);
- $slm_billing_interval = trim($_POST['slm_billing_interval']);
-
- $expiry_date = '';
- if ($_POST['lic_type'] == 'lifetime') {
- $expiry_date = '0000-00-00';
- } else {
- $expiry_date = $_POST['date_expiry'];
- }
-
- if (empty($created_date)) {
- $created_date = $current_date;
- }
- if (empty($renewed_date)) {
- $renewed_date = $current_date;
- }
- if (empty($expiry_date) && $lic_type !== 'lifetime') {
- $expiry_date = $current_date_plus_1year;
- }
-
- //Save the entry to the database
- $fields = array();
- $fields['license_key'] = $license_key;
- $fields['max_allowed_domains'] = $max_domains;
- $fields['max_allowed_devices'] = $max_devices;
- $fields['lic_status'] = $license_status;
- $fields['first_name'] = $first_name;
- $fields['last_name'] = $last_name;
- $fields['email'] = $email;
- $fields['company_name'] = $company_name;
- $fields['txn_id'] = $txn_id;
- $fields['manual_reset_count'] = $reset_count;
- $fields['purchase_id_'] = $purchase_id_;
- $fields['date_created'] = $created_date;
- $fields['date_renewed'] = $renewed_date;
- $fields['date_activated'] = $date_activated;
- $fields['date_expiry'] = $expiry_date;
- $fields['product_ref'] = $product_ref;
- $fields['until'] = $until;
- $fields['current_ver'] = $current_ver;
- $fields['subscr_id'] = $subscr_id;
- $fields['lic_type'] = $lic_type;
- $fields['item_reference'] = $lic_item_ref;
- $fields['slm_billing_length'] = $slm_billing_length;
- $fields['slm_billing_interval'] = $slm_billing_interval;
- $id = isset($_POST['edit_record']) ? $_POST['edit_record'] : '';
- $lk_table = SLM_TBL_LICENSE_KEYS;
-
- if (empty($id)) {
- //Insert into database
- $result = $wpdb->insert($lk_table, $fields);
- $id = $wpdb->insert_id;
- if ($result === false) {
- $errors .= __('Record could not be inserted into the database!', 'softwarelicensemanager');
- }
- } else {
- //Update record
- $where = array('id' => $id);
- $updated = $wpdb->update($lk_table, $fields, $where);
- if ($updated === false) {
- //TODO - log error
- $errors .= __('Update of the license key table failed!', 'softwarelicensemanager');
+ // Insert or update the data in the database
+ if ($id) {
+ $wpdb->update(SLM_TBL_LICENSE_KEYS, $data, ['id' => $id]);
+ echo '
' . __('License updated successfully.', 'slmplus') . '
';
+ } else {
+ $wpdb->insert(SLM_TBL_LICENSE_KEYS, $data);
+ echo '
' . __('License created successfully.', 'slmplus') . '
';
}
}
- $data = array('row_id' => $id, 'key' => $license_key);
- do_action('slm_add_edit_interface_save_record_processed', $data);
+ } else {
+ // If editing, load existing data
+ // Ensure the correct data types and default values for new records
+ if ($id) {
+ $license = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . SLM_TBL_LICENSE_KEYS . " WHERE id = %d", $id));
+ if ($license) {
+ $data = (array) $license;
+ }
+ } else {
+
+ // Prepare empty data for new record
+ $data = [
+ 'license_key' => '',
+ 'max_allowed_domains' => SLM_DEFAULT_MAX_DOMAINS,
+ 'max_allowed_devices' => SLM_DEFAULT_MAX_DEVICES,
+ 'lic_status' => 'pending', // Default value
+ 'first_name' => '',
+ 'last_name' => '',
+ 'email' => '',
+ 'company_name' => '',
+ 'txn_id' => '',
+ 'manual_reset_count' => '',
+ 'purchase_id_' => '',
+ 'date_created' => date_i18n($slm_wp_date_format, strtotime('now')), // Use WP date format
+ 'date_renewed' => '0000-00-00',
+ 'date_activated' => '0000-00-00',
+ 'product_ref' => '',
+ 'until' => '',
+ 'current_ver' => '',
+ 'subscr_id' => '',
+ 'lic_type' => 'subscription',
+ 'date_expiry' => date_i18n($slm_wp_date_format, strtotime('+1 year')), // Use WP date format
+ 'item_reference' => '',
+ 'slm_billing_length' => '',
+ 'slm_billing_interval' => 'days', // Default value
+ 'reminder_sent' => '0',
+ 'reminder_sent_date' => '0000-00-00'
+ ];
+
+
+ // Generate a license key if it's a new record
+ if (!isset($editing_record)) {
+ $editing_record = new stdClass();
+ }
+
+ $lic_key_prefix = isset($slm_options['lic_prefix']) ? $slm_options['lic_prefix'] : '';
+ $data['license_key'] = slm_get_license($lic_key_prefix);
+ }
}
+
?>
-
-
- ';
- }
- ?>
-
+
';
}
+
+/**
+ * Generates or retrieves a unique hash for the backup directory.
+ */
+function slm_get_unique_hash()
+{
+ $hash = slm_get_option('slm_backup_dir_hash');
+
+ if (!$hash) {
+ $hash = wp_generate_password(8, false, false); // Generate random 8-character hash
+ slm_update_option('slm_backup_dir_hash', $hash);
+ }
+
+ return $hash;
+}
+
+/**
+ * Saves a backup of the plugin's database tables in a secure folder.
+ */
+function slm_save_backup_to_uploads()
+{
+ global $wpdb;
+
+ // Get the upload directory
+ $upload_dir = wp_upload_dir();
+ $unique_hash = slm_get_unique_hash(); // Generate or retrieve the unique hash
+ $slm_backup_dir = $upload_dir['basedir'] . $unique_hash;
+
+ // Create the slm-plus folder with hash if it doesn't exist
+ if (!file_exists($slm_backup_dir)) {
+ wp_mkdir_p($slm_backup_dir);
+ }
+
+ // Set backup file name and path
+ $backup_file = $slm_backup_dir . '/slm_plugin_backup_' . date('Y-m-d_H-i-s') . '.sql';
+
+ // Get plugin tables
+ $backup_tables = [
+ SLM_TBL_LICENSE_KEYS,
+ SLM_TBL_LIC_DOMAIN,
+ SLM_TBL_LIC_DEVICES,
+ SLM_TBL_LIC_LOG,
+ SLM_TBL_EMAILS,
+ SLM_TBL_LICENSE_STATUS
+ ];
+
+ $sql = "";
+ foreach ($backup_tables as $table) {
+ // Get table structure
+ $create_table_query = $wpdb->get_results("SHOW CREATE TABLE $table", ARRAY_N);
+ $sql .= "\n\n" . $create_table_query[0][1] . ";\n\n";
+
+ // Get table data
+ $rows = $wpdb->get_results("SELECT * FROM $table", ARRAY_A);
+ foreach ($rows as $row) {
+ $values = array_map('esc_sql', array_values($row)); // Use esc_sql to escape the values
+ $values = "'" . implode("','", $values) . "'";
+ $sql .= "INSERT INTO $table VALUES ($values);\n";
+ }
+ }
+
+ // Save the SQL to a file in the slm-plus folder
+ if (file_put_contents($backup_file, $sql)) {
+ $backup_url = $upload_dir['baseurl'] . $unique_hash . '/' . basename($backup_file);
+
+ // Save backup info in plugin options
+ $backup_info = [
+ 'url' => $backup_url,
+ 'date' => date('Y-m-d H:i:s')
+ ];
+ slm_update_option('slm_last_backup_info', $backup_info);
+
+ echo '
';
+ } else {
+ echo '
' . __('Error: Failed to create the backup file.', 'slmplus') . '
';
+ }
+}
+
+
+/**
+ * Retrieves an option from the slm_plugin_options.
+ */
+function slm_get_option($key)
+{
+ $options = get_option('slm_plugin_options', []);
+ return $options[$key] ?? null;
+}
+
+/**
+ * Updates or adds an option to the slm_plugin_options.
+ */
+function slm_update_option($key, $value)
+{
+ $options = get_option('slm_plugin_options', []);
+ $options[$key] = $value;
+ update_option('slm_plugin_options', $options);
+}
diff --git a/admin/slm-dashboard-widgets.php b/admin/slm-dashboard-widgets.php
index 9b5c950..3739233 100644
--- a/admin/slm-dashboard-widgets.php
+++ b/admin/slm-dashboard-widgets.php
@@ -19,7 +19,7 @@ function slm_add_dashboard_widgets()
wp_add_dashboard_widget(
'slm_dashboard_widget', // Widget slug.
- 'Software license manager', // Title.
+ 'SLM Plus', // Title.
'slm_dashboard_widget_function' // Display function.
);
}
@@ -27,7 +27,7 @@ function slm_add_dashboard_widgets()
function add_toolbar_items($admin_bar){
$admin_bar->add_menu(array(
'id' => 'slm-menu',
- 'title' => '
' . __('SLM', 'softwarelicensemanager'),
+ 'title' => '
' . __('SLM', 'slmplus'),
'href' => admin_url('admin.php?page=slm_overview'),
'meta' => array(
'title' => __('SLM'),
diff --git a/admin/slm-integration-help-page.php b/admin/slm-integration-help-page.php
index c8647a7..2f74473 100755
--- a/admin/slm-integration-help-page.php
+++ b/admin/slm-integration-help-page.php
@@ -1,14 +1,14 @@
-
License Manager Integration Help v
+
v
+
-
API Settings
+
The License API Query POST URL For Your Installation ";
- echo '
';
- echo "
The License Activation or Deactivation API secret key ";
- echo '
';
- echo "
The License Creation API secret key ";
- echo '
';
- ?>
+ $slm_options = get_option('slm_plugin_options');
+ $slm_creation_secret_key = esc_attr($slm_options['lic_creation_secret']);
+ $slm_secret_verification_key = esc_attr($slm_options['lic_verification_secret']);
+ $slm_api_query_post_url = esc_url(SLM_SITE_HOME_URL);
+ echo "
" . esc_html__('The License API Query POST URL For Your Installation', 'slmplus') . " ";
+ echo '
';
+
+ echo "
" . esc_html__('The License Activation or Deactivation API Secret Key', 'slmplus') . " ";
+ echo '
';
+
+ echo "
" . esc_html__('The License Creation API Secret Key', 'slmplus') . " ";
+ echo '
';
+ ?>
-
Error codes and constants
+
-
+
- Constant
- Error code
+
+
+
+
+
-
-
- CREATE_FAILED
- 10
-
-
- CREATE_KEY_INVALID
- 100
-
-
- DOMAIN_ALREADY_INACTIVE
- 80
-
-
- DOMAIN_MISSING
- 70
-
-
- KEY_CANCELED
- 130
-
-
- KEY_CANCELED_FAILED
- 140
-
-
- KEY_DEACTIVATE_DOMAIN_SUCCESS
- 360
-
-
- KEY_DEACTIVATE_SUCCESS
- 340
-
-
- KEY_DELETE_FAILED
- 300
-
-
- KEY_DELETE_SUCCESS
- 320
-
-
- KEY_DELETED
- 130
-
-
- KEY_UPDATE_FAILED
- 220
-
-
- KEY_UPDATE_SUCCESS
- 240
-
-
- LICENSE_ACTIVATED
- 380
-
-
- LICENSE_BLOCKED
- 20
-
-
- LICENSE_CREATED
- 400
-
-
- LICENSE_EXIST
- 200
-
-
- LICENSE_EXPIRED
- 30
-
-
- LICENSE_IN_USE
- 40
-
-
- LICENSE_INVALID
- 60
-
-
- MISSING_KEY_DELETE_FAILED
- 280
-
-
- MISSING_KEY_UPDATE_FAILED
- 260
-
-
- REACHED_MAX_DEVICES
- 120
-
-
- REACHED_MAX_DOMAINS
- 50
-
-
- VERIFY_KEY_INVALID
- 90
-
-
+
+
+ CREATE_FAILED 10
+
+
+
+ CREATE_KEY_INVALID 100
+
+
+
+ DOMAIN_ALREADY_INACTIVE 80
+
+
+
+ DOMAIN_MISSING 70
+
+
+
+ KEY_CANCELED 130
+
+
+
+ KEY_CANCELED_FAILED 140
+
+
+
+ KEY_DEACTIVATE_DOMAIN_SUCCESS 360
+
+
+
+ KEY_DEACTIVATE_SUCCESS 340
+
+
+
+ KEY_DELETE_FAILED 300
+
+
+
+ KEY_DELETE_SUCCESS 320
+
+
+
+ KEY_DELETED 130
+
+
+
+ KEY_UPDATE_FAILED 220
+
+
+
+ KEY_UPDATE_SUCCESS 240
+
+
+
+ LICENSE_ACTIVATED 380
+
+
+
+ LICENSE_BLOCKED 20
+
+
+
+ LICENSE_CREATED 400
+
+
+
+ LICENSE_EXIST 200
+
+
+
+ LICENSE_EXPIRED 30
+
+
+
+ LICENSE_IN_USE 40
+
+
+
+ LICENSE_INVALID 60
+
+
+
+ MISSING_KEY_DELETE_FAILED 280
+
+
+
+ MISSING_KEY_UPDATE_FAILED 260
+
+
+
+ REACHED_MAX_DEVICES 120
+
+
+
+ REACHED_MAX_DOMAINS 50
+
+
+
+ VERIFY_KEY_INVALID 90
+
+
+
reset_log_file("log.txt");
$slm_debug_logger->reset_log_file("log-cron-job.txt");
- echo '
- ' . __('Debug log files have been reset!', 'softwarelicensemanager') . '
-
';
+
+ echo '' . __('Debug log files have been reset!', 'slmplus') . '
';
}
if (isset($_POST['slm_save_settings'])) {
-
- if (!is_numeric($_POST["default_max_domains"])) {
- //Set it to one by default if incorrect value is entered
- $_POST["default_max_domains"] = '2';
- }
- if (!is_numeric($_POST["default_max_devices"])) {
- //Set it to one by default if incorrect value is entered
- $_POST["default_max_devices"] = '2';
- }
+ // Sanitize and validate numeric values for default max domains and devices
+ $default_max_domains = max((int) $_POST['default_max_domains'], 2);
+ $default_max_devices = max((int) $_POST['default_max_devices'], 2);
$options = array(
- 'lic_creation_secret' => trim($_POST["lic_creation_secret"]),
- 'lic_prefix' => trim($_POST["lic_prefix"]),
- 'default_max_domains' => trim($_POST["default_max_domains"]),
- 'default_max_devices' => trim($_POST["default_max_devices"]),
- 'lic_verification_secret' => trim($_POST["lic_verification_secret"]),
- 'enable_auto_key_expiration' => isset($_POST['enable_auto_key_expiration']) ? '1' : '',
- 'enable_debug' => isset($_POST['enable_debug']) ? '1' : '',
- 'slm_woo' => isset($_POST['slm_woo']) ? '1' : '',
- 'slm_woo_downloads' => isset($_POST['slm_woo_downloads']) ? '1' : '',
- 'slm_woo_affect_downloads' => isset($_POST['slm_woo_affect_downloads']) ? '1' : '',
- 'slm_stats' => isset($_POST['slm_stats']) ? '1' : '',
- 'slm_adminbar' => isset($_POST['slm_adminbar']) ? '1' : '',
- 'slm_conflictmode' => isset($_POST['slm_conflictmode']) ? '1' : '',
- 'slm_front_conflictmode' => isset($_POST['slm_front_conflictmode']) ? '1' : '',
- 'slm_wpestores' => isset($_POST['slm_wpestores']) ? '1' : '',
- 'slm_dl_manager' => isset($_POST['slm_dl_manager']) ? '1' : '',
- 'slm_multiple_items' => isset($_POST['slm_multiple_items']) ? '1' : '',
- 'allow_user_activation_removal' => isset($_POST['allow_user_activation_removal']) ? '1' : '',
- 'expiration_reminder_text' => sanitize_text_field($_POST['expiration_reminder_text'])
+ 'lic_creation_secret' => trim($_POST['lic_creation_secret']),
+ 'lic_prefix' => trim($_POST['lic_prefix']),
+ 'default_max_domains' => $default_max_domains,
+ 'default_max_devices' => $default_max_devices,
+ 'lic_verification_secret' => trim($_POST['lic_verification_secret']),
+ 'enable_auto_key_expiration' => isset($_POST['enable_auto_key_expiration']),
+ 'enable_debug' => isset($_POST['enable_debug']),
+ 'slm_woo' => isset($_POST['slm_woo']),
+ 'slm_woo_downloads' => isset($_POST['slm_woo_downloads']),
+ 'slm_woo_affect_downloads' => isset($_POST['slm_woo_affect_downloads']),
+ 'slm_stats' => isset($_POST['slm_stats']),
+ 'slm_adminbar' => isset($_POST['slm_adminbar']),
+ 'slm_conflictmode' => isset($_POST['slm_conflictmode']),
+ 'slm_front_conflictmode' => isset($_POST['slm_front_conflictmode']),
+ 'slm_wpestores' => isset($_POST['slm_wpestores']),
+ 'slm_dl_manager' => isset($_POST['slm_dl_manager']),
+ 'slm_multiple_items' => isset($_POST['slm_multiple_items']),
+ 'allow_user_activation_removal' => isset($_POST['allow_user_activation_removal']),
+ 'expiration_reminder_text' => sanitize_text_field($_POST['expiration_reminder_text']),
);
+
update_option('slm_plugin_options', $options);
-
- echo ' ' . __('Options updated!', 'softwarelicensemanager') . '
';
+ echo ' ' . __('Options updated!', 'slmplus') . '
';
}
- $options = get_option('slm_plugin_options');
- $secret_key = $options['lic_creation_secret'];
-
- if (empty($secret_key)) {
- //$secret_key = md5(uniqid('', true));
- $secret_key = SLM_Utility::create_secret_keys();
- }
-
- $secret_verification_key = $options['lic_verification_secret'];
- if (empty($secret_verification_key)) {
- //$secret_verification_key = md5(uniqid('', true));
- $secret_verification_key = SLM_Utility::create_secret_keys();
- }
- $tab = ""; //Initialization value;
- if (isset($_REQUEST['tab'])) {
- $tab = $_REQUEST['tab'];
- } else {
- $tab = 'general_settings';
- }
+ $options = get_option('slm_plugin_options');
+ $secret_key = !empty($options['lic_creation_secret']) ? $options['lic_creation_secret'] : SLM_Utility::create_secret_keys();
+ $secret_verification_key = !empty($options['lic_verification_secret']) ? $options['lic_verification_secret'] : SLM_Utility::create_secret_keys();
+ $tab = isset($_REQUEST['tab']) ? $_REQUEST['tab'] : 'general_settings';
?>
-
+
+
+
' . esc_html(get_bloginfo('name')) . '
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
License key was activated successfully!
+
' . wp_kses_post($message) . '
+
Regards,
+
+
+
+
+
The content of this email is confidential and intended for the recipient specified in message only. It is strictly forbidden to share any part of this message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future.
+
Questions? We are always here to help. Contact ' . esc_html(get_bloginfo('admin_email')) . ' or simply reply to this email.
+
+
+
+
+
+
+
+
+
+
+
+