Contact Form by WD – responsive drag & drop contact form builder tool - Version 1.12.21

Version Description

Fixed: Vulnerabilities reported by Neven Biruski from DefenseCode (using the tool ThunderScan). Fixed: "The loopback request to your site failed" error.

Download this release

Release Info

Developer webdorado
Plugin Icon 128x128 Contact Form by WD – responsive drag & drop contact form builder tool
Version 1.12.21
Comparing to
See all releases

Code changes from version 1.12.20 to 1.12.21

admin/models/FMSelectDataFromDb.php CHANGED
@@ -32,10 +32,10 @@ class FMModelSelect_data_from_db_fmc {
32
  }
33
  else {
34
  if ( $con_type == 'remote' ) {
35
- $username = isset($_POST['username']) ? $_POST['username'] : '';
36
- $password = isset($_POST['password']) ? $_POST['password'] : '';
37
- $database = isset($_POST['database']) ? $_POST['database'] : '';
38
- $host = isset($_POST['host']) ? $_POST['host'] : '';
39
  $wpdb_temp = new wpdb($username, $password, $database, $host);
40
  $query = "SHOW TABLES";
41
  $tables = $wpdb_temp->get_col($query);
@@ -80,18 +80,18 @@ class FMModelSelect_data_from_db_fmc {
80
  */
81
  function get_table_struct() {
82
  global $wpdb;
83
- $name = isset($_POST['name']) ? $_POST['name'] : NULL;
84
  if ( !$name ) {
85
  return array();
86
  }
87
- $con_method = $_POST['con_method'];
88
- $con_type = $_POST['con_type'];
89
- $query = "SHOW COLUMNS FROM " . $name;
90
  if ( $con_type == 'remote' ) {
91
- $username = isset($_POST['username']) ? $_POST['username'] : '';
92
- $password = isset($_POST['password']) ? $_POST['password'] : '';
93
- $database = isset($_POST['database']) ? $_POST['database'] : '';
94
- $host = isset($_POST['host']) ? $_POST['host'] : '';
95
  $wpdb_temp = new wpdb($username, $password, $database, $host);
96
  $table_struct = $wpdb_temp->get_results($query);
97
  }
@@ -120,7 +120,7 @@ class FMModelSelect_data_from_db_fmc {
120
  if ( !$name ) {
121
  return array();
122
  }
123
- $query = "SHOW COLUMNS FROM " . $name;
124
  if ( $con_type == 'remote' ) {
125
  $wpdb_temp = new wpdb($username, $password, $database, $host);
126
  $table_struct = $wpdb_temp->get_results($query);
32
  }
33
  else {
34
  if ( $con_type == 'remote' ) {
35
+ $username = WDW_FMC_Library::get('username', '');
36
+ $password = WDW_FMC_Library::get('password', '');
37
+ $database = WDW_FMC_Library::get('database', '');
38
+ $host = WDW_FMC_Library::get('host', '');
39
  $wpdb_temp = new wpdb($username, $password, $database, $host);
40
  $query = "SHOW TABLES";
41
  $tables = $wpdb_temp->get_col($query);
80
  */
81
  function get_table_struct() {
82
  global $wpdb;
83
+ $name = WDW_FMC_Library::get('name', NULL);
84
  if ( !$name ) {
85
  return array();
86
  }
87
+ $con_method = WDW_FMC_Library::get('con_method', NULL);
88
+ $con_type = WDW_FMC_Library::get('con_type', NULL);
89
+ $query = 'SHOW COLUMNS FROM `' . $name . '`';
90
  if ( $con_type == 'remote' ) {
91
+ $username = WDW_FMC_Library::get('username', '');
92
+ $password = WDW_FMC_Library::get('password', '');
93
+ $database = WDW_FMC_Library::get('database', '');
94
+ $host = WDW_FMC_Library::get('host', '');
95
  $wpdb_temp = new wpdb($username, $password, $database, $host);
96
  $table_struct = $wpdb_temp->get_results($query);
97
  }
120
  if ( !$name ) {
121
  return array();
122
  }
123
+ $query = 'SHOW COLUMNS FROM `' . $name . '`';
124
  if ( $con_type == 'remote' ) {
125
  $wpdb_temp = new wpdb($username, $password, $database, $host);
126
  $table_struct = $wpdb_temp->get_results($query);
admin/models/FMSqlMapping.php CHANGED
@@ -39,17 +39,17 @@ class FMModelFormMakerSQLMapping_fmc {
39
  */
40
  function get_tables() {
41
  global $wpdb;
42
- $con_type = $_POST['con_type'];
43
  if ( $con_type == 'local' ) {
44
  $query = "SHOW TABLES";
45
  $tables = $wpdb->get_col($query);
46
  }
47
  else {
48
  if ( $con_type == 'remote' ) {
49
- $username = isset($_POST['username']) ? $_POST['username'] : '';
50
- $password = isset($_POST['password']) ? $_POST['password'] : '';
51
- $database = isset($_POST['database']) ? $_POST['database'] : '';
52
- $host = isset($_POST['host']) ? $_POST['host'] : '';
53
  $wpdb_temp = new wpdb($username, $password, $database, $host);
54
  $query = "SHOW TABLES";
55
  $tables = $wpdb_temp->get_col($query);
@@ -78,18 +78,18 @@ class FMModelFormMakerSQLMapping_fmc {
78
 
79
  function get_table_struct() {
80
  global $wpdb;
81
- $name = isset($_POST['name']) ? $_POST['name'] : NULL;
82
  if ( !$name ) {
83
  return array();
84
  }
85
- $con_method = $_POST['con_method'];
86
- $con_type = $_POST['con_type'];
87
- $query = "SHOW COLUMNS FROM " . $name;
88
  if ( $con_type == 'remote' ) {
89
- $username = isset($_POST['username']) ? $_POST['username'] : '';
90
- $password = isset($_POST['password']) ? $_POST['password'] : '';
91
- $database = isset($_POST['database']) ? $_POST['database'] : '';
92
- $host = isset($_POST['host']) ? $_POST['host'] : '';
93
  $wpdb_temp = new wpdb($username, $password, $database, $host);
94
  $table_struct = $wpdb_temp->get_results($query);
95
  }
@@ -105,7 +105,7 @@ class FMModelFormMakerSQLMapping_fmc {
105
  if ( !$name ) {
106
  return array();
107
  }
108
- $query = "SHOW COLUMNS FROM " . $name;
109
  if ( $con_type == 'remote' ) {
110
  $wpdb_temp = new wpdb($username, $password, $database, $host);
111
  $table_struct = $wpdb_temp->get_results($query);
39
  */
40
  function get_tables() {
41
  global $wpdb;
42
+ $con_type = WDW_FMC_Library::get('con_type', NULL);
43
  if ( $con_type == 'local' ) {
44
  $query = "SHOW TABLES";
45
  $tables = $wpdb->get_col($query);
46
  }
47
  else {
48
  if ( $con_type == 'remote' ) {
49
+ $username = WDW_FMC_Library::get('username', '');
50
+ $password = WDW_FMC_Library::get('password', '');
51
+ $database = WDW_FMC_Library::get('database', '');
52
+ $host = WDW_FMC_Library::get('host', '');
53
  $wpdb_temp = new wpdb($username, $password, $database, $host);
54
  $query = "SHOW TABLES";
55
  $tables = $wpdb_temp->get_col($query);
78
 
79
  function get_table_struct() {
80
  global $wpdb;
81
+ $name = WDW_FMC_Library::get('name', NULL);
82
  if ( !$name ) {
83
  return array();
84
  }
85
+ $con_method = WDW_FMC_Library::get('con_method', NULL);
86
+ $con_type = WDW_FMC_Library::get('con_type', NULL);
87
+ $query = 'SHOW COLUMNS FROM `' . $name . '`';
88
  if ( $con_type == 'remote' ) {
89
+ $username = WDW_FMC_Library::get('username', '');
90
+ $password = WDW_FMC_Library::get('password', '');
91
+ $database = WDW_FMC_Library::get('database', '');
92
+ $host = WDW_FMC_Library::get('host', '');
93
  $wpdb_temp = new wpdb($username, $password, $database, $host);
94
  $table_struct = $wpdb_temp->get_results($query);
95
  }
105
  if ( !$name ) {
106
  return array();
107
  }
108
+ $query = 'SHOW COLUMNS FROM `' . $name . '`';
109
  if ( $con_type == 'remote' ) {
110
  $wpdb_temp = new wpdb($username, $password, $database, $host);
111
  $table_struct = $wpdb_temp->get_results($query);
admin/views/FMCaptcha.php CHANGED
@@ -38,10 +38,7 @@ class FMViewFormmakerwdcaptcha_fmc {
38
 
39
  $l = rand($cap_length_min, $cap_length_max);
40
  $code = code_generic($l, $cap_digital, $cap_latin_char);
41
- if (session_id() == '' || (function_exists('session_status') && (session_status() == PHP_SESSION_NONE))) {
42
- @session_start();
43
- }
44
-
45
  $_SESSION[$i . '_wd_captcha_code'] = md5($code);
46
  $canvas = imagecreatetruecolor($cap_width, $cap_height);
47
  $c = imagecolorallocate($canvas, rand(150, 255), rand(150, 255), rand(150, 255));
38
 
39
  $l = rand($cap_length_min, $cap_length_max);
40
  $code = code_generic($l, $cap_digital, $cap_latin_char);
41
+ WDW_FMC_Library::start_session();
 
 
 
42
  $_SESSION[$i . '_wd_captcha_code'] = md5($code);
43
  $canvas = imagecreatetruecolor($cap_width, $cap_height);
44
  $c = imagecolorallocate($canvas, rand(150, 255), rand(150, 255), rand(150, 255));
admin/views/FMMathCaptcha.php CHANGED
@@ -20,9 +20,7 @@ class FMViewFormmakerwdmathcaptcha_fmc {
20
  $cap_height = 26;
21
  $cap_quality = 100;
22
  $code = $this->code_generic($operations_count, $operations);
23
- if ( session_id() == '' || (function_exists('session_status') && (session_status() == PHP_SESSION_NONE)) ) {
24
- @session_start();
25
- }
26
  $_SESSION[$i . '_wd_arithmetic_captcha_code'] = md5($code[1]);
27
  $canvas = imagecreatetruecolor($cap_width, $cap_height);
28
  $c = imagecolorallocate($canvas, rand(150, 255), rand(150, 255), rand(150, 255));
20
  $cap_height = 26;
21
  $cap_quality = 100;
22
  $code = $this->code_generic($operations_count, $operations);
23
+ WDW_FMC_Library::start_session();
 
 
24
  $_SESSION[$i . '_wd_arithmetic_captcha_code'] = md5($code[1]);
25
  $canvas = imagecreatetruecolor($cap_width, $cap_height);
26
  $c = imagecolorallocate($canvas, rand(150, 255), rand(150, 255), rand(150, 255));
admin/views/Licensing_fm.php CHANGED
@@ -55,7 +55,7 @@ class FMViewLicensing_fmc {
55
  </div>
56
  </div>
57
  <div style="float: left; clear: both;">
58
- <a href="https://web-dorado.com/files/fromFormMaker.php" class="button-primary" target="_blank">Purchase a
59
  License</a>
60
  <br/><br/>
61
  <p>After purchasing the commercial version follow these steps:</p>
55
  </div>
56
  </div>
57
  <div style="float: left; clear: both;">
58
+ <a href="https://web-dorado.com/files/fromContactForm.php" class="button-primary" target="_blank">Purchase a
59
  License</a>
60
  <br/><br/>
61
  <p>After purchasing the commercial version follow these steps:</p>
admin/views/Themes_fm.php CHANGED
@@ -189,8 +189,8 @@ class FMViewThemes_fmc extends FMAdminView_fmc {
189
  $tabs = $params['tabs'];
190
  $all_params = $params['all_params'];
191
 
192
- $active_tab = isset($_REQUEST["active_tab"]) && $_REQUEST["active_tab"] ? $_REQUEST["active_tab"] : ($row->version == 1 ? 'custom_css' : 'global');
193
- $pagination = isset($_REQUEST["pagination"]) ? $_REQUEST["pagination"] : 'none';
194
  ?>
195
  <div ng-app="ThemeParams" class="fm-table">
196
  <div ng-controller="FMTheme">
189
  $tabs = $params['tabs'];
190
  $all_params = $params['all_params'];
191
 
192
+ $active_tab = WDW_FMC_Library::get('active_tab', ($row->version == 1 ? 'custom_css' : 'global'));
193
+ $pagination = WDW_FMC_Library::get('pagination', 'none');
194
  ?>
195
  <div ng-app="ThemeParams" class="fm-table">
196
  <div ng-controller="FMTheme">
contact-form-maker.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Contact Form Maker
4
  * Plugin URI: https://web-dorado.com/products/form-maker-wordpress.html
5
  * Description: WordPress Contact Form Maker is a simple contact form builder, which allows the user with almost no knowledge of programming to create and edit different type of contact forms.
6
- * Version: 1.12.20
7
  * Author: WebDorado Form Builder Team
8
  * Author URI: https://web-dorado.com/wordpress-plugins-bundle.html
9
  * License: GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
@@ -81,9 +81,6 @@ final class WDCFM {
81
  require_once(wp_normalize_path($this->plugin_dir . '/admin/views/view.php'));
82
  }
83
  $this->add_actions();
84
- if (session_id() == '' || (function_exists('session_status') && (session_status() == PHP_SESSION_NONE))) {
85
- @session_start();
86
- }
87
  }
88
 
89
  /**
@@ -94,8 +91,8 @@ final class WDCFM {
94
  $this->plugin_url = plugins_url(plugin_basename(dirname(__FILE__)));
95
  $this->front_urls = $this->get_front_urls();
96
  $this->main_file = plugin_basename(__FILE__);
97
- $this->plugin_version = '1.12.20';
98
- $this->db_version = '2.12.20';
99
  $this->menu_slug = 'manage_fmc';
100
  $this->prefix = 'form_maker_fmc';
101
  $this->css_prefix = 'fm_';
@@ -503,7 +500,7 @@ final class WDCFM {
503
  "prefix" => "fm" ,
504
  "deactivate_class" => 'fm_deactivate_link',
505
  "email" => $admin_data->data->user_email,
506
- "plugin_wd_url" => "https://web-dorado.com/products/wordpress-form.html",
507
  ));
508
  wp_register_style('fm-license' . $this->menu_postfix, $this->plugin_url . '/css/license.css', array(), $this->plugin_version);
509
  }
@@ -1120,7 +1117,7 @@ final class WDCFM {
1120
  ),
1121
  ),
1122
  "video_youtube_id" => "tN3_c6MhqFk", // e.g. https://www.youtube.com/watch?v=acaexefeP7o youtube id is the acaexefeP7o
1123
- "plugin_wd_url" => "https://web-dorado.com/products/wordpress-form.html",
1124
  "plugin_wd_demo_link" => "http://wpdemo.web-dorado.com",
1125
  "plugin_wd_addons_link" => "https://web-dorado.com/products/wordpress-form/add-ons.html",
1126
  "after_subscribe" => admin_url('admin.php?page=overview_cfm'), // this can be plagin overview page or set up page
3
  * Plugin Name: Contact Form Maker
4
  * Plugin URI: https://web-dorado.com/products/form-maker-wordpress.html
5
  * Description: WordPress Contact Form Maker is a simple contact form builder, which allows the user with almost no knowledge of programming to create and edit different type of contact forms.
6
+ * Version: 1.12.21
7
  * Author: WebDorado Form Builder Team
8
  * Author URI: https://web-dorado.com/wordpress-plugins-bundle.html
9
  * License: GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
81
  require_once(wp_normalize_path($this->plugin_dir . '/admin/views/view.php'));
82
  }
83
  $this->add_actions();
 
 
 
84
  }
85
 
86
  /**
91
  $this->plugin_url = plugins_url(plugin_basename(dirname(__FILE__)));
92
  $this->front_urls = $this->get_front_urls();
93
  $this->main_file = plugin_basename(__FILE__);
94
+ $this->plugin_version = '1.12.21';
95
+ $this->db_version = '2.12.21';
96
  $this->menu_slug = 'manage_fmc';
97
  $this->prefix = 'form_maker_fmc';
98
  $this->css_prefix = 'fm_';
500
  "prefix" => "fm" ,
501
  "deactivate_class" => 'fm_deactivate_link',
502
  "email" => $admin_data->data->user_email,
503
+ "plugin_wd_url" => "https://web-dorado.com/files/fromContactForm.php",
504
  ));
505
  wp_register_style('fm-license' . $this->menu_postfix, $this->plugin_url . '/css/license.css', array(), $this->plugin_version);
506
  }
1117
  ),
1118
  ),
1119
  "video_youtube_id" => "tN3_c6MhqFk", // e.g. https://www.youtube.com/watch?v=acaexefeP7o youtube id is the acaexefeP7o
1120
+ "plugin_wd_url" => "https://web-dorado.com/files/fromContactForm.php",
1121
  "plugin_wd_demo_link" => "http://wpdemo.web-dorado.com",
1122
  "plugin_wd_addons_link" => "https://web-dorado.com/products/wordpress-form/add-ons.html",
1123
  "after_subscribe" => admin_url('admin.php?page=overview_cfm'), // this can be plagin overview page or set up page
framework/WDW_FM_Library.php CHANGED
@@ -3948,7 +3948,7 @@ class WDW_FMC_Library {
3948
  $group_id_s = array();
3949
  $form_id = (int) $_REQUEST['form_id'];
3950
  $limitstart = (int) $_REQUEST['limitstart'];
3951
- $search_labels = isset($_REQUEST['search_labels']) ? $_REQUEST['search_labels'] : '';
3952
  $verified_emails = isset($_REQUEST['verified_emails']) ? json_decode(stripslashes($_REQUEST['verified_emails']), TRUE) : array();
3953
  $paypal_info_fields = array(
3954
  'currency',
@@ -5040,6 +5040,15 @@ class WDW_FMC_Library {
5040
  public static function decodeQuotedPrintable( $string ) {
5041
  return quoted_printable_decode($string);
5042
  }
 
 
 
 
 
 
 
 
 
5043
  }
5044
 
5045
  /*
3948
  $group_id_s = array();
3949
  $form_id = (int) $_REQUEST['form_id'];
3950
  $limitstart = (int) $_REQUEST['limitstart'];
3951
+ $search_labels = WDW_FMC_Library::get('search_labels', '');
3952
  $verified_emails = isset($_REQUEST['verified_emails']) ? json_decode(stripslashes($_REQUEST['verified_emails']), TRUE) : array();
3953
  $paypal_info_fields = array(
3954
  'currency',
5040
  public static function decodeQuotedPrintable( $string ) {
5041
  return quoted_printable_decode($string);
5042
  }
5043
+
5044
+ /**
5045
+ * Session start if not started.
5046
+ */
5047
+ public static function start_session() {
5048
+ if (session_id() == '' || (function_exists('session_status') && (session_status() == PHP_SESSION_NONE))) {
5049
+ @session_start();
5050
+ }
5051
+ }
5052
  }
5053
 
5054
  /*
frontend/models/form_maker.php CHANGED
@@ -1096,6 +1096,7 @@ class FMModelForm_maker_fmc {
1096
  }
1097
  if ( isset($_POST["counter" . $id]) ) {
1098
  $counter = esc_html($_POST["counter" . $id]);
 
1099
  if ( (isset($_POST["save_or_submit" . $id]) && $_POST["save_or_submit" . $id] != 'save') ) {
1100
  if ( isset($_POST["captcha_input"]) ) {
1101
  $captcha_input = esc_html($_POST["captcha_input"]);
@@ -1379,7 +1380,7 @@ class FMModelForm_maker_fmc {
1379
  $label_id = array();
1380
  $label_label = array();
1381
  $label_type = array();
1382
- $disabled_fields = explode(',', (isset($_REQUEST["disabled_fields" . $id]) ? $_REQUEST["disabled_fields" . $id] : ""));
1383
  $disabled_fields = array_slice($disabled_fields, 0, count($disabled_fields) - 1);
1384
  $label_all = explode('#****#', $form->label_order_current);
1385
  $label_all = array_slice($label_all, 0, count($label_all) - 1);
@@ -2233,6 +2234,7 @@ class FMModelForm_maker_fmc {
2233
  }
2234
  }
2235
  if ( $form->mail_verify ) {
 
2236
  unset($_SESSION['hash']);
2237
  unset($_SESSION['gid']);
2238
  $ip = $_SERVER['REMOTE_ADDR'];
@@ -2266,6 +2268,7 @@ class FMModelForm_maker_fmc {
2266
  }
2267
  }
2268
  if ( $chgnac ) {
 
2269
  if ( $form->submit_text_type != 4 ) {
2270
  $_SESSION['massage_after_submit' . $id] = addslashes(addslashes(__('Nothing was submitted.', WDCFM()->prefix)));
2271
  }
@@ -2395,6 +2398,7 @@ class FMModelForm_maker_fmc {
2395
  * @return array
2396
  */
2397
  public function gen_mail( $counter, $all_files, $id, $str ) {
 
2398
  // checking save uploads option
2399
  $upload_dir = wp_upload_dir();
2400
  global $wpdb;
@@ -2501,7 +2505,7 @@ class FMModelForm_maker_fmc {
2501
  array_push($label_label, $label_order_each[0]);
2502
  array_push($label_type, $label_order_each[1]);
2503
  }
2504
- $disabled_fields = explode(',', isset($_REQUEST["disabled_fields" . $id]) ? $_REQUEST["disabled_fields" . $id] : "");
2505
  $disabled_fields = array_slice($disabled_fields, 0, count($disabled_fields) - 1);
2506
  $list = '<table border="1" cellpadding="3" cellspacing="0" style="width:600px;">';
2507
  $list_text_mode = '';
1096
  }
1097
  if ( isset($_POST["counter" . $id]) ) {
1098
  $counter = esc_html($_POST["counter" . $id]);
1099
+ WDW_FMC_Library::start_session();
1100
  if ( (isset($_POST["save_or_submit" . $id]) && $_POST["save_or_submit" . $id] != 'save') ) {
1101
  if ( isset($_POST["captcha_input"]) ) {
1102
  $captcha_input = esc_html($_POST["captcha_input"]);
1380
  $label_id = array();
1381
  $label_label = array();
1382
  $label_type = array();
1383
+ $disabled_fields = explode( ',', WDW_FMC_Library::get('disabled_fields', ''));
1384
  $disabled_fields = array_slice($disabled_fields, 0, count($disabled_fields) - 1);
1385
  $label_all = explode('#****#', $form->label_order_current);
1386
  $label_all = array_slice($label_all, 0, count($label_all) - 1);
2234
  }
2235
  }
2236
  if ( $form->mail_verify ) {
2237
+ WDW_FMC_Library::start_session();
2238
  unset($_SESSION['hash']);
2239
  unset($_SESSION['gid']);
2240
  $ip = $_SERVER['REMOTE_ADDR'];
2268
  }
2269
  }
2270
  if ( $chgnac ) {
2271
+ WDW_FMC_Library::start_session();
2272
  if ( $form->submit_text_type != 4 ) {
2273
  $_SESSION['massage_after_submit' . $id] = addslashes(addslashes(__('Nothing was submitted.', WDCFM()->prefix)));
2274
  }
2398
  * @return array
2399
  */
2400
  public function gen_mail( $counter, $all_files, $id, $str ) {
2401
+ WDW_FMC_Library::start_session();
2402
  // checking save uploads option
2403
  $upload_dir = wp_upload_dir();
2404
  global $wpdb;
2505
  array_push($label_label, $label_order_each[0]);
2506
  array_push($label_type, $label_order_each[1]);
2507
  }
2508
+ $disabled_fields = explode( ',', WDW_FMC_Library::get('disabled_fields', '') );
2509
  $disabled_fields = array_slice($disabled_fields, 0, count($disabled_fields) - 1);
2510
  $list = '<table border="1" cellpadding="3" cellspacing="0" style="width:600px;">';
2511
  $list_text_mode = '';
frontend/views/form_maker.php CHANGED
@@ -111,7 +111,7 @@ class FMViewForm_maker_fmc {
111
  if ( $row->payment_currency ) {
112
  $form_currency = $currency_sign[array_search($row->payment_currency, $currency_code)];
113
  }
114
-
115
  $form_maker_front_end = '';
116
  $form_maker_front_end .= '<div id="fm-pages' . $form_id . '" class="fm-pages wdform_page_navigation ' . $pagination_align . '" show_title="' . $row->show_title . '" show_numbers="' . $row->show_numbers . '" type="' . $row->pagination . '"></div>';
117
  $form_maker_front_end .= '<form name="form' . $form_id . '" action="' . $current_url . '" method="post" id="form' . $form_id . '" class="fm-form form' . $form_id . ' ' . $header_pos . '" enctype="multipart/form-data">';
@@ -1213,7 +1213,7 @@ class FMViewForm_maker_fmc {
1213
 
1214
  // Generate field.
1215
  $rep = $this->wdform_field($type, $param, $row, $html);
1216
-
1217
  if ( isset($_SESSION['message_captcha']) && $_SESSION['message_captcha'] != "" ) {
1218
  $rep .= '<div class="fm-not-filled message_captcha">' . $_SESSION['message_captcha'] . '</div>';
1219
  unset($_SESSION['message_captcha']);
@@ -1280,7 +1280,7 @@ class FMViewForm_maker_fmc {
1280
 
1281
  // Generate field.
1282
  $rep = $this->wdform_field($type, $param, $row, $html);
1283
-
1284
  if ( isset($_SESSION['message_captcha']) && $_SESSION['message_captcha'] != "" ) {
1285
  $rep .= '<div class="fm-not-filled message_captcha">' . $_SESSION['message_captcha'] . '</div>';
1286
  unset($_SESSION['message_captcha']);
@@ -1339,7 +1339,7 @@ class FMViewForm_maker_fmc {
1339
 
1340
  // Generate field.
1341
  $rep = $this->wdform_field($type, $param, $row, $html);
1342
-
1343
  if ( isset($_SESSION['message_captcha']) && $_SESSION['message_captcha'] != "" ) {
1344
  $rep .= '<div class="fm-not-filled message_captcha">' . $_SESSION['message_captcha'] . '</div>';
1345
  unset($_SESSION['message_captcha']);
@@ -1718,6 +1718,7 @@ class FMViewForm_maker_fmc {
1718
  $hide_duration = $form->topbar_hide_duration;
1719
  $hide_mobile = wp_is_mobile() && $form->hide_mobile ? FALSE : TRUE;
1720
  if ($display_on_this && $hide_mobile) {
 
1721
  if (isset($_SESSION['fm_hide_form_after_submit' . $id]) && $_SESSION['fm_hide_form_after_submit' . $id] == 1) {
1722
  if ($error == 'success') {
1723
  if ($message) {
@@ -1771,6 +1772,7 @@ class FMViewForm_maker_fmc {
1771
  $hide_mobile = wp_is_mobile() && $form->hide_mobile ? FALSE : TRUE;
1772
  $left_right_class = $form->scrollbox_position ? 'float-right' : 'float-left';
1773
  if ($display_on_this && $hide_mobile) {
 
1774
  if (isset($_SESSION['fm_hide_form_after_submit' . $id]) && $_SESSION['fm_hide_form_after_submit' . $id] == 1) {
1775
  if ($error == 'success') {
1776
  if ($message) {
@@ -1851,6 +1853,7 @@ class FMViewForm_maker_fmc {
1851
  $hide_mobile_class = wp_is_mobile() ? 'fm_mobile_full' : '';
1852
 
1853
  if ($display_on_this && $hide_mobile) {
 
1854
  if (isset($_SESSION['fm_hide_form_after_submit' . $id]) && $_SESSION['fm_hide_form_after_submit' . $id] == 1) {
1855
  if ($error == 'success') {
1856
  if ($message) {
111
  if ( $row->payment_currency ) {
112
  $form_currency = $currency_sign[array_search($row->payment_currency, $currency_code)];
113
  }
114
+ WDW_FMC_Library::start_session();
115
  $form_maker_front_end = '';
116
  $form_maker_front_end .= '<div id="fm-pages' . $form_id . '" class="fm-pages wdform_page_navigation ' . $pagination_align . '" show_title="' . $row->show_title . '" show_numbers="' . $row->show_numbers . '" type="' . $row->pagination . '"></div>';
117
  $form_maker_front_end .= '<form name="form' . $form_id . '" action="' . $current_url . '" method="post" id="form' . $form_id . '" class="fm-form form' . $form_id . ' ' . $header_pos . '" enctype="multipart/form-data">';
1213
 
1214
  // Generate field.
1215
  $rep = $this->wdform_field($type, $param, $row, $html);
1216
+ WDW_FMC_Library::start_session();
1217
  if ( isset($_SESSION['message_captcha']) && $_SESSION['message_captcha'] != "" ) {
1218
  $rep .= '<div class="fm-not-filled message_captcha">' . $_SESSION['message_captcha'] . '</div>';
1219
  unset($_SESSION['message_captcha']);
1280
 
1281
  // Generate field.
1282
  $rep = $this->wdform_field($type, $param, $row, $html);
1283
+ WDW_FMC_Library::start_session();
1284
  if ( isset($_SESSION['message_captcha']) && $_SESSION['message_captcha'] != "" ) {
1285
  $rep .= '<div class="fm-not-filled message_captcha">' . $_SESSION['message_captcha'] . '</div>';
1286
  unset($_SESSION['message_captcha']);
1339
 
1340
  // Generate field.
1341
  $rep = $this->wdform_field($type, $param, $row, $html);
1342
+ WDW_FMC_Library::start_session();
1343
  if ( isset($_SESSION['message_captcha']) && $_SESSION['message_captcha'] != "" ) {
1344
  $rep .= '<div class="fm-not-filled message_captcha">' . $_SESSION['message_captcha'] . '</div>';
1345
  unset($_SESSION['message_captcha']);
1718
  $hide_duration = $form->topbar_hide_duration;
1719
  $hide_mobile = wp_is_mobile() && $form->hide_mobile ? FALSE : TRUE;
1720
  if ($display_on_this && $hide_mobile) {
1721
+ WDW_FMC_Library::start_session();
1722
  if (isset($_SESSION['fm_hide_form_after_submit' . $id]) && $_SESSION['fm_hide_form_after_submit' . $id] == 1) {
1723
  if ($error == 'success') {
1724
  if ($message) {
1772
  $hide_mobile = wp_is_mobile() && $form->hide_mobile ? FALSE : TRUE;
1773
  $left_right_class = $form->scrollbox_position ? 'float-right' : 'float-left';
1774
  if ($display_on_this && $hide_mobile) {
1775
+ WDW_FMC_Library::start_session();
1776
  if (isset($_SESSION['fm_hide_form_after_submit' . $id]) && $_SESSION['fm_hide_form_after_submit' . $id] == 1) {
1777
  if ($error == 'success') {
1778
  if ($message) {
1853
  $hide_mobile_class = wp_is_mobile() ? 'fm_mobile_full' : '';
1854
 
1855
  if ($display_on_this && $hide_mobile) {
1856
+ WDW_FMC_Library::start_session();
1857
  if (isset($_SESSION['fm_hide_form_after_submit' . $id]) && $_SESSION['fm_hide_form_after_submit' . $id] == 1) {
1858
  if ($error == 'success') {
1859
  if ($message) {
js/add_field.js CHANGED
@@ -2245,7 +2245,7 @@ function fm_add_field_button(that, subtype) {
2245
  jQuery('#edit_main_table input').attr('disabled', 'disabled');
2246
  jQuery('#edit_main_table textarea').attr('disabled', 'disabled');
2247
  jQuery('#edit_main_table .fm-input-container span.dashicons').attr('onclick', '');
2248
- jQuery('#add-button-cont').removeClass('add-button-cont').html('<div class="error"><p>' + form_maker.disabled1 + '</p><p><a href="https://web-dorado.com/files/fromFormMaker.php" target="_blank">' + form_maker.disabled2 + '</a></p></div>');
2249
  }
2250
  else {
2251
  if (subtype == 'stripe' && (is_addon_stripe_active == 0 || is_stripe_enabled == 0)) {
2245
  jQuery('#edit_main_table input').attr('disabled', 'disabled');
2246
  jQuery('#edit_main_table textarea').attr('disabled', 'disabled');
2247
  jQuery('#edit_main_table .fm-input-container span.dashicons').attr('onclick', '');
2248
+ jQuery('#add-button-cont').removeClass('add-button-cont').html('<div class="error"><p>' + form_maker.disabled1 + '</p><p><a href="https://web-dorado.com/files/fromContactForm.php" target="_blank">' + form_maker.disabled2 + '</a></p></div>');
2249
  }
2250
  else {
2251
  if (subtype == 'stripe' && (is_addon_stripe_active == 0 || is_stripe_enabled == 0)) {
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: webdorado,10web
3
  Tags: contact, contact form, email, forms, contact forms, custom form, feedback, form builder, form manager, form maker, forms builder, form builder wordpress
4
  Requires at least: 3.4
5
  Tested up to: 4.9
6
- Stable tag: 1.12.20
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -32,13 +32,13 @@ This plugin will equally fit the needs of the novice and experienced developers
32
 
33
  * Intuitive tools
34
  * Custom HTML between the fields
 
 
 
35
  * Custom email messages for admin and users
36
  * Detailed parameters for each field type
37
  * Data validation before submission
38
  * Conditional logic
39
- * Drag and Drop feature to re-order fields
40
- * Pagination
41
- * Section breaks
42
 
43
  Please note, that if you're looking to add more complex, custom online forms with more field types, File upload field, Stripe and PayPal integrations, and many other premium features, you can use [Contact Form Maker premium plugin](https://web-dorado.com/products/wordpress-contact-form-maker-plugin.html), which is a more advanced tool.
44
 
@@ -73,6 +73,10 @@ After downloading the ZIP file,
73
 
74
  == Changelog ==
75
 
 
 
 
 
76
  = 1.12.20 =
77
  * Improved: Editing empty mini labels.
78
  * Fixed: Submissions CSV export.
@@ -339,7 +343,7 @@ This dynamic form builder lets you have a nice header section on your forms, whi
339
 
340
  You can also have an image on your form header and set it to appear with an animation effect. Press **Add Image** button to upload and select a picture from **WordPress Media Library.** Then choose the animation effect using Image Animation option.
341
 
342
- In case you dont want the **Header Image** of your forms to appear on smartphones and tablets, mark **Hide Image on Mobile** option as checked.
343
 
344
  Make sure to **Publish/Update** the form to save the change you made.
345
 
@@ -441,7 +445,7 @@ Also, you can easily integrate the forms builder plugin with Stripe using its [S
441
 
442
  **Export to CSV / Export to XML.** You are able to download all submissions of each form in **CSV** or **XML** format by clicking on these buttons.
443
 
444
- **Show Filters.** Contact Form Maker lets you filter form submissions by values provided by user, e.g. submitters email address, name and more. Press **Show Filters** button on form submissions, write the values you wish to search with, then press **Search.** Click **Reset** button to clear the filters.
445
 
446
  **Add/Remove Columns.** This button will help you customize the columns which display in submissions of the selected form. Click on the button and unmark the columns you wish to hide.
447
 
3
  Tags: contact, contact form, email, forms, contact forms, custom form, feedback, form builder, form manager, form maker, forms builder, form builder wordpress
4
  Requires at least: 3.4
5
  Tested up to: 4.9
6
+ Stable tag: 1.12.21
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
32
 
33
  * Intuitive tools
34
  * Custom HTML between the fields
35
+ * Drag and Drop feature to re-order fields
36
+ * Pagination
37
+ * Section breaks
38
  * Custom email messages for admin and users
39
  * Detailed parameters for each field type
40
  * Data validation before submission
41
  * Conditional logic
 
 
 
42
 
43
  Please note, that if you're looking to add more complex, custom online forms with more field types, File upload field, Stripe and PayPal integrations, and many other premium features, you can use [Contact Form Maker premium plugin](https://web-dorado.com/products/wordpress-contact-form-maker-plugin.html), which is a more advanced tool.
44
 
73
 
74
  == Changelog ==
75
 
76
+ = 1.12.21 =
77
+ Fixed: Vulnerabilities reported by Neven Biruski from DefenseCode (using the tool ThunderScan).
78
+ Fixed: "The loopback request to your site failed" error.
79
+
80
  = 1.12.20 =
81
  * Improved: Editing empty mini labels.
82
  * Fixed: Submissions CSV export.
343
 
344
  You can also have an image on your form header and set it to appear with an animation effect. Press **Add Image** button to upload and select a picture from **WordPress Media Library.** Then choose the animation effect using Image Animation option.
345
 
346
+ In case you don't want the **Header Image** of your forms to appear on smartphones and tablets, mark **Hide Image on Mobile** option as checked.
347
 
348
  Make sure to **Publish/Update** the form to save the change you made.
349
 
445
 
446
  **Export to CSV / Export to XML.** You are able to download all submissions of each form in **CSV** or **XML** format by clicking on these buttons.
447
 
448
+ **Show Filters.** Contact Form Maker lets you filter form submissions by values provided by user, e.g. submitter's email address, name and more. Press **Show Filters** button on form submissions, write the values you wish to search with, then press **Search.** Click **Reset** button to clear the filters.
449
 
450
  **Add/Remove Columns.** This button will help you customize the columns which display in submissions of the selected form. Click on the button and unmark the columns you wish to hide.
451
 
wd/README.md CHANGED
@@ -1,130 +1,130 @@
1
- Version: 1.0.13
2
-
3
-
4
-
5
- Usage:
6
-
7
- Copy and paste wd library into your plugin folder.
8
- In your plugin main file check if library main DoradoWeb class doesn't exist, include it
9
- if( !class_exists("DoradoWeb") ){
10
- require_once(PATH_TO_YOUR_PLUGIN_DIR . '/wd/start.php');
11
- }
12
-
13
- Then call dorado_web_init($options) function.
14
- $options = array (
15
- "prefix" => "your_plugin_prefix",
16
- "wd_plugin_id" => your_plugin_id,
17
- "plugin_title" => "your plugin titile",
18
- "plugin_wordpress_slug" => "your plugin wordpress slug",
19
- "plugin_dir" => 'path to your plugin dir',
20
- "plugin_main_file" => 'path to your plugin main file',
21
- "description" => 'your plugin description',
22
-
23
- "plugin_features" => array(
24
- 0 => array(
25
- "title" => "feature title 1",
26
- "description" => "feature 1 description",
27
- ),
28
- 1 => array(
29
- "title" => "feature title 2",
30
- "description" => "feature 2 description",
31
- ),
32
- ...
33
- ),
34
- "user_guide" => array(
35
- 0 => array(
36
- "main_title" => "user guide step 1",
37
- "url" => "link to step 1",
38
- "titles" => array(
39
- array(
40
- "title" => "step 1 sub title",
41
- "url" => "link to step 1 sub"
42
- )
43
- )
44
- ),
45
- ...
46
- ),
47
- "overview_welcome_image" => null,
48
- "video_youtube_id" => "your plugin youtube video id", // e.g. https://www.youtube.com/watch?v=acaexefeP7o youtube id is the acaexefeP7o
49
- "plugin_wd_url" => "https://web-dorado.com/products/your plugin",
50
- "plugin_wd_demo_link" => "http://wpdemo.web-dorado.com/your plugin",
51
- "plugin_wd_addons_link" => "https://web-dorado.com/products/your plugin addons",
52
- "after_subscribe" => "after subsribe page", // this can be plagin overview page or set up page admin.php?page=overview_YOUR_PREFIX
53
- "plugin_wizard_link" => "your plugin wizard page",
54
- "plugin_menu_title" => "Your plugin menu title",
55
- "plugin_menu_icon" => "path to menu icon",
56
- "deactivate" => true,
57
- "subscribe" => true,
58
- "custom_post" => false, // if true => edit.php?post_type=contact
59
- "menu_capability" => "manage_options",
60
- "menu_position" => null,
61
- );
62
-
63
- Fully documentation of dorado_web_init options:
64
-
65
- prefix - (type string) your plugin prefix
66
- wd_plugin_id - (type int) plugin id ( in web-dorado database, you use it for update functionality)
67
- plugin_wd_zip_name - (type string) plugin zip name (in web-dorado database, ask Armen or Sergey )
68
- plugin_title - type string) plugin title (
69
- plugin_wordpress_slug - (type string) plugin slug
70
- plugin_dir - (type string) full file path to your plugin directory
71
- plugin_main_file - (type string) path to your plugin main file (__FILE__)
72
- description - (type string) plugin short description
73
-
74
- plugin_features - (type array) plugin top 5 features from web-dorado.com
75
- e.g. (for google maps plugin)
76
- array(
77
- 0 => array(
78
- "title" => __("Easy set up", "gmwd"),
79
- "description" => __("After installation a set-up guide will help you configure general options and get started on the dashboard. The plugin also displays tooltips in the whole admin area and settings. Moreover, you get instant live previews of changes you make in the working area, so you don’t have to save and publish maps to see the results.", "gmwd"),
80
- ),
81
- 1 => array(
82
- "title" => __("Unlimited Everything", "gmwd"),
83
- "description" => __("Display unlimited maps on any page or post. Same is true for markers, rectangles, circles, polygons and polylines.", "gmwd"),
84
- ),
85
- ....
86
- )
87
-
88
- user_guide - (type array) plugin user guide links from web-dorado.com
89
- e.g. (for google maps plugin)
90
- array(
91
- 0 => array(
92
- "main_title" => __("Installation Wizard/ Options Menu", "gmwd"),
93
- "url" => "https://web-dorado.com/wordpress-google-maps/installation-wizard-options-menu.html",
94
- "titles" => array(
95
- array(
96
- "title" => __("Configuring Map API Key", "gmwd"),
97
- "url" => "https://web-dorado.com/wordpress-google-maps/installation-wizard-options-menu/configuring-api-key.html"
98
- )
99
- )
100
- ),
101
- 1 => array(
102
- "main_title" => __("Creating Map", "gmwd"),
103
- "url" => "https://web-dorado.com/wordpress-google-maps/creating-map.html",
104
- "titles" => array()
105
- ),
106
- )
107
-
108
- video_youtube_id - (type string) if your plugin has video, video's id, else null
109
- ( e.g. for https://www.youtube.com/watch?v=acaexefeP7o , youtube id is the 'acaexefeP7o' )
110
-
111
- plugin_wd_url - (type string) plugin page url
112
- (e.g. https://web-dorado.com/products/wordpress-google-maps-plugin.html)
113
-
114
- plugin_wd_demo_link - (type string) plugin demo url
115
- plugin_wd_addons_link - (type string) if plugin has addons , plugin addons link, else null
116
- plugin_wizard_link - (type string) if plugin has wizard, wizard page , else null
117
- ( e.g. admin_url( 'index.php?page=gmwd_setup' ) )
118
-
119
- plugin_menu_title - (type string) plugin wordpress backend menu title
120
- plugin_menu_icon - (type string) path to plugin wordpress backend menu icon
121
- ( e.g. GMWD_URL . '/images/icon-map-20.png' )
122
- deactivate - (type bool) if plugin free deactivate = true, else deactivate = false
123
- subscribe - (type bool) if plugin free subscribe = true, else subscribe = false
124
- custom_post - ( type string) if plugin has not custom posts it must be top level menu slug, else toplevel menu url , e.g. edit.php?post_type=contact
125
- menu_capability - (type string) top level menu capability e.g. manage_options
126
- menu_position - (type string) top level menu position , default is null
127
-
128
-
129
-
130
-
1
+ Version: 1.0.15
2
+
3
+
4
+
5
+ Usage:
6
+
7
+ Copy and paste wd library into your plugin folder.
8
+ In your plugin main file check if library main DoradoWeb class doesn't exist, include it
9
+ if( !class_exists("DoradoWeb") ){
10
+ require_once(PATH_TO_YOUR_PLUGIN_DIR . '/wd/start.php');
11
+ }
12
+
13
+ Then call dorado_web_init($options) function.
14
+ $options = array (
15
+ "prefix" => "your_plugin_prefix",
16
+ "wd_plugin_id" => your_plugin_id,
17
+ "plugin_title" => "your plugin titile",
18
+ "plugin_wordpress_slug" => "your plugin wordpress slug",
19
+ "plugin_dir" => 'path to your plugin dir',
20
+ "plugin_main_file" => 'path to your plugin main file',
21
+ "description" => 'your plugin description',
22
+
23
+ "plugin_features" => array(
24
+ 0 => array(
25
+ "title" => "feature title 1",
26
+ "description" => "feature 1 description",
27
+ ),
28
+ 1 => array(
29
+ "title" => "feature title 2",
30
+ "description" => "feature 2 description",
31
+ ),
32
+ ...
33
+ ),
34
+ "user_guide" => array(
35
+ 0 => array(
36
+ "main_title" => "user guide step 1",
37
+ "url" => "link to step 1",
38
+ "titles" => array(
39
+ array(
40
+ "title" => "step 1 sub title",
41
+ "url" => "link to step 1 sub"
42
+ )
43
+ )
44
+ ),
45
+ ...
46
+ ),
47
+ "overview_welcome_image" => null,
48
+ "video_youtube_id" => "your plugin youtube video id", // e.g. https://www.youtube.com/watch?v=acaexefeP7o youtube id is the acaexefeP7o
49
+ "plugin_wd_url" => "https://web-dorado.com/products/your plugin",
50
+ "plugin_wd_demo_link" => "http://wpdemo.web-dorado.com/your plugin",
51
+ "plugin_wd_addons_link" => "https://web-dorado.com/products/your plugin addons",
52
+ "after_subscribe" => "after subsribe page", // this can be plagin overview page or set up page admin.php?page=overview_YOUR_PREFIX
53
+ "plugin_wizard_link" => "your plugin wizard page",
54
+ "plugin_menu_title" => "Your plugin menu title",
55
+ "plugin_menu_icon" => "path to menu icon",
56
+ "deactivate" => true,
57
+ "subscribe" => true,
58
+ "custom_post" => false, // if true => edit.php?post_type=contact
59
+ "menu_capability" => "manage_options",
60
+ "menu_position" => null,
61
+ );
62
+
63
+ Fully documentation of dorado_web_init options:
64
+
65
+ prefix - (type string) your plugin prefix
66
+ wd_plugin_id - (type int) plugin id ( in web-dorado database, you use it for update functionality)
67
+ plugin_wd_zip_name - (type string) plugin zip name (in web-dorado database, ask Armen or Sergey )
68
+ plugin_title - type string) plugin title (
69
+ plugin_wordpress_slug - (type string) plugin slug
70
+ plugin_dir - (type string) full file path to your plugin directory
71
+ plugin_main_file - (type string) path to your plugin main file (__FILE__)
72
+ description - (type string) plugin short description
73
+
74
+ plugin_features - (type array) plugin top 5 features from web-dorado.com
75
+ e.g. (for google maps plugin)
76
+ array(
77
+ 0 => array(
78
+ "title" => __("Easy set up", "gmwd"),
79
+ "description" => __("After installation a set-up guide will help you configure general options and get started on the dashboard. The plugin also displays tooltips in the whole admin area and settings. Moreover, you get instant live previews of changes you make in the working area, so you don’t have to save and publish maps to see the results.", "gmwd"),
80
+ ),
81
+ 1 => array(
82
+ "title" => __("Unlimited Everything", "gmwd"),
83
+ "description" => __("Display unlimited maps on any page or post. Same is true for markers, rectangles, circles, polygons and polylines.", "gmwd"),
84
+ ),
85
+ ....
86
+ )
87
+
88
+ user_guide - (type array) plugin user guide links from web-dorado.com
89
+ e.g. (for google maps plugin)
90
+ array(
91
+ 0 => array(
92
+ "main_title" => __("Installation Wizard/ Options Menu", "gmwd"),
93
+ "url" => "https://web-dorado.com/wordpress-google-maps/installation-wizard-options-menu.html",
94
+ "titles" => array(
95
+ array(
96
+ "title" => __("Configuring Map API Key", "gmwd"),
97
+ "url" => "https://web-dorado.com/wordpress-google-maps/installation-wizard-options-menu/configuring-api-key.html"
98
+ )
99
+ )
100
+ ),
101
+ 1 => array(
102
+ "main_title" => __("Creating Map", "gmwd"),
103
+ "url" => "https://web-dorado.com/wordpress-google-maps/creating-map.html",
104
+ "titles" => array()
105
+ ),
106
+ )
107
+
108
+ video_youtube_id - (type string) if your plugin has video, video's id, else null
109
+ ( e.g. for https://www.youtube.com/watch?v=acaexefeP7o , youtube id is the 'acaexefeP7o' )
110
+
111
+ plugin_wd_url - (type string) plugin page url
112
+ (e.g. https://web-dorado.com/products/wordpress-google-maps-plugin.html)
113
+
114
+ plugin_wd_demo_link - (type string) plugin demo url
115
+ plugin_wd_addons_link - (type string) if plugin has addons , plugin addons link, else null
116
+ plugin_wizard_link - (type string) if plugin has wizard, wizard page , else null
117
+ ( e.g. admin_url( 'index.php?page=gmwd_setup' ) )
118
+
119
+ plugin_menu_title - (type string) plugin wordpress backend menu title
120
+ plugin_menu_icon - (type string) path to plugin wordpress backend menu icon
121
+ ( e.g. GMWD_URL . '/images/icon-map-20.png' )
122
+ deactivate - (type bool) if plugin free deactivate = true, else deactivate = false
123
+ subscribe - (type bool) if plugin free subscribe = true, else subscribe = false
124
+ custom_post - ( type string) if plugin has not custom posts it must be top level menu slug, else toplevel menu url , e.g. edit.php?post_type=contact
125
+ menu_capability - (type string) top level menu capability e.g. manage_options
126
+ menu_position - (type string) top level menu position , default is null
127
+
128
+
129
+
130
+
wd/assets/css/deactivate_popup.css CHANGED
@@ -1,90 +1,111 @@
1
- .wd-bwg-reasons:nth-child(3) {
2
- display: none;
3
- }
4
-
5
- .wd-opacity{
6
- position: fixed;
7
- top: 0px;
8
- bottom: 0px;
9
- left: 0px;
10
- right: 0px;
11
- z-index: 9999;
12
- background: #000;
13
- opacity: 0.5;
14
- display: none;
15
- }
16
-
17
- .wd-deactivate-popup{
18
- position: fixed;
19
- top: 0px;
20
- bottom: 0px;
21
- left: 0px;
22
- right: 0px;
23
- background: #fff;
24
- z-index: 999999;
25
- width: 600px;
26
- height: 281px;
27
- margin: auto;
28
- display: none;
29
- box-sizing: border-box;
30
- }
31
-
32
-
33
- .wd-deactivate-popup-header{
34
- border-bottom: 1px solid #ccc;
35
- padding: 18px 40px;
36
- font-size: 16px;
37
- background: rgba(221, 221, 221, 0.14);
38
- }
39
- .wd-deactivate-popup-body{
40
- padding: 20px 40px;
41
- border-bottom: 1px solid #ccc;
42
- }
43
- .wd-deactivate-popup-body input[type=text]{
44
- width: 220px;
45
- }
46
- .wd-deactivate-popup-body textarea{
47
- width: 100%;
48
- }
49
-
50
- .wd-btns{
51
- position: absolute;
52
- bottom: 19px;
53
- right: 19px
54
- }
55
-
56
- .additional_details_wrap{
57
- margin-top: 20px;
58
- }
59
-
60
- .wd-additional-active{
61
- background: rgba(204, 204, 204, 0.18);
62
- padding: 15px;
63
- margin: 14px 0px 5px;
64
- }
65
- .wd-popup-active1{
66
- height: 523px !important;
67
- }
68
-
69
- .wd-popup-active2{
70
- height: 426px !important
71
- }
72
- .wd-deactivate-popup-opacity{
73
- width: 100%;
74
- height: 100%;
75
- background: #D9D9D9;
76
- opacity: 0.3;
77
- z-index: 45;
78
- position: absolute;
79
- display: none;
80
- }
81
-
82
- .wd-deactivate-popup-opacity .wd-img-loader{
83
- position: absolute;
84
- top: 0;
85
- left: 0;
86
- right: 0;
87
- bottom: 0;
88
- margin: auto;
89
- z-index: 63;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  }
1
+ .wd-bwg-reasons:nth-child(3) {
2
+ display: none;
3
+ }
4
+
5
+ .wd-opacity{
6
+ position: fixed;
7
+ top: 0px;
8
+ bottom: 0px;
9
+ left: 0px;
10
+ right: 0px;
11
+ z-index: 9999;
12
+ background: #000;
13
+ opacity: 0.5;
14
+ display: none;
15
+ }
16
+
17
+ .wd-deactivate-popup{
18
+ position: fixed;
19
+ top: 0px;
20
+ bottom: 0px;
21
+ left: 0px;
22
+ right: 0px;
23
+ background: #fff;
24
+ z-index: 999999;
25
+ width: 600px;
26
+ height: 281px;
27
+ margin: auto;
28
+ display: none;
29
+ box-sizing: border-box;
30
+ }
31
+
32
+
33
+ .wd-deactivate-popup-header{
34
+ border-bottom: 1px solid #ccc;
35
+ padding: 18px 40px;
36
+ font-size: 16px;
37
+ background: rgba(221, 221, 221, 0.14);
38
+ }
39
+ .wd-deactivate-popup-body{
40
+ padding: 20px 40px;
41
+ border-bottom: 1px solid #ccc;
42
+ }
43
+ .wd-deactivate-popup-body input[type=text]{
44
+ width: 220px;
45
+ }
46
+ .wd-deactivate-popup-body textarea{
47
+ width: 100%;
48
+ }
49
+
50
+ .wd-btns{
51
+ position: absolute;
52
+ bottom: 19px;
53
+ right: 19px
54
+ }
55
+
56
+ .additional_details_wrap{
57
+ margin-top: 20px;
58
+ }
59
+
60
+ .wd-additional-active{
61
+ background: rgba(204, 204, 204, 0.18);
62
+ padding: 15px;
63
+ margin: 14px 0px 5px;
64
+ }
65
+ .wd-popup-active1{
66
+ height: 583px !important;
67
+ }
68
+
69
+ .wd-popup-active2{
70
+ height: 426px !important
71
+ }
72
+
73
+ .wd-popup-active3{
74
+ height: 479px !important
75
+ }
76
+
77
+ .wd-popup-active4{
78
+ height: 340px !important
79
+ }
80
+ .wd-deactivate-popup-opacity{
81
+ width: 100%;
82
+ height: 100%;
83
+ background: #D9D9D9;
84
+ opacity: 0.3;
85
+ z-index: 45;
86
+ position: absolute;
87
+ display: none;
88
+ }
89
+
90
+ .wd-deactivate-popup-opacity .wd-img-loader{
91
+ position: absolute;
92
+ top: 0;
93
+ left: 0;
94
+ right: 0;
95
+ bottom: 0;
96
+ margin: auto;
97
+ z-index: 63;
98
+ }
99
+
100
+ .wd-deactivate-popup-close-btn{
101
+ background-image: url(img/close.svg);
102
+ background-repeat: no-repeat;
103
+ background-size: 16px;
104
+ display: inline-block;
105
+ width: 16px;
106
+ height: 16px;
107
+ position: absolute;
108
+ top: 7px;
109
+ right: 8px;
110
+ cursor: pointer;
111
  }
wd/assets/css/img/close.svg ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="6917.521 490.293 11.414 11.414">
2
+ <defs>
3
+ <style>
4
+ .cls-1 {
5
+ fill: none;
6
+ stroke: #cbcbcb;
7
+ stroke-linecap: round;
8
+ stroke-linejoin: round;
9
+ }
10
+ </style>
11
+ </defs>
12
+ <g id="if_misc-_close__1276877_3_" data-name="if_misc-_close__1276877 (3)" transform="translate(6917.229 490)">
13
+ <line id="Line_262" data-name="Line 262" class="cls-1" y1="10" x2="10" transform="translate(1 1)"/>
14
+ <line id="Line_263" data-name="Line 263" class="cls-1" x2="10" y2="10" transform="translate(1 1)"/>
15
+ </g>
16
+ </svg>
wd/assets/css/notices.css CHANGED
@@ -1,88 +1,88 @@
1
- .wd-admin-notice {
2
- background: #fff;
3
- border: 4px;
4
- display: block;
5
- min-height: 68px;
6
- padding: 10px 40px 10px 125px;
7
- position: relative;
8
- }
9
- .wd-admin-notice a {
10
- color: #10738B;
11
- }
12
- .wd-notice-logo {
13
- clear: both;
14
- content: "";
15
- display: block;
16
- background-size: 108px auto;
17
- background-repeat: no-repeat;
18
- background-position: 0 45%;
19
- width: 125px;
20
- position: absolute;
21
- top: 0;
22
- bottom: 0;
23
- left: 5px;
24
- }
25
- .wd-admin-notice > .dashicons {
26
- color: #424242;
27
- position: absolute;
28
- right: 20px;
29
- top: 40%;
30
- }
31
- .wd-notice-title {
32
- font-size: 24px;
33
- margin: 0;
34
- }
35
- .wd-notice-body {
36
- font-weight: normal;
37
- margin: 5px 0;
38
- }
39
- .wd-notice-body:after {
40
- clear: both;
41
- content: "";
42
- display: block;
43
- }
44
- .wd-notice-body li {
45
- float: left;
46
- margin-right: 20px;
47
- }
48
- .wd-notice-body .dashicons {
49
- font-size: 17px;
50
- }
51
- .wd-blue {
52
- color: #10738B;
53
- }
54
-
55
- .admin-notice-promo {
56
- background: #fff;
57
- border-top: 4px;
58
- display: block;
59
- min-height: 68px;
60
- padding: 10px 40px 0px 10px;
61
- margin: 10px 0;
62
- position: relative;
63
- }
64
-
65
- .admin-notice-promo:after {
66
- content: '';
67
- display: table;
68
- clear: both;
69
- }
70
-
71
- .close-promo {
72
- position: absolute;
73
- top: 5px;
74
- right: 5px;
75
- }
76
-
77
- .promo {
78
- background-position: center;
79
- background-repeat: no-repeat;
80
- background-size: 972px 200px;
81
- height: 200px;
82
- max-width: 100%;
83
- }
84
-
85
- .promo a {
86
- display: block;
87
- height: 100%;
88
  }
1
+ .wd-admin-notice {
2
+ background: #fff;
3
+ border: 4px;
4
+ display: block;
5
+ min-height: 68px;
6
+ padding: 10px 40px 10px 125px;
7
+ position: relative;
8
+ }
9
+ .wd-admin-notice a {
10
+ color: #10738B;
11
+ }
12
+ .wd-notice-logo {
13
+ clear: both;
14
+ content: "";
15
+ display: block;
16
+ background-size: 108px auto;
17
+ background-repeat: no-repeat;
18
+ background-position: 0 45%;
19
+ width: 125px;
20
+ position: absolute;
21
+ top: 0;
22
+ bottom: 0;
23
+ left: 5px;
24
+ }
25
+ .wd-admin-notice > .dashicons {
26
+ color: #424242;
27
+ position: absolute;
28
+ right: 20px;
29
+ top: 40%;
30
+ }
31
+ .wd-notice-title {
32
+ font-size: 24px;
33
+ margin: 0;
34
+ }
35
+ .wd-notice-body {
36
+ font-weight: normal;
37
+ margin: 5px 0;
38
+ }
39
+ .wd-notice-body:after {
40
+ clear: both;
41
+ content: "";
42
+ display: block;
43
+ }
44
+ .wd-notice-body li {
45
+ float: left;
46
+ margin-right: 20px;
47
+ }
48
+ .wd-notice-body .dashicons {
49
+ font-size: 17px;
50
+ }
51
+ .wd-blue {
52
+ color: #10738B;
53
+ }
54
+
55
+ .admin-notice-promo {
56
+ background: #fff;
57
+ border-top: 4px;
58
+ display: block;
59
+ min-height: 68px;
60
+ padding: 10px 40px 0px 10px;
61
+ margin: 10px 0;
62
+ position: relative;
63
+ }
64
+
65
+ .admin-notice-promo:after {
66
+ content: '';
67
+ display: table;
68
+ clear: both;
69
+ }
70
+
71
+ .close-promo {
72
+ position: absolute;
73
+ top: 5px;
74
+ right: 5px;
75
+ }
76
+
77
+ .promo {
78
+ background-position: center;
79
+ background-repeat: no-repeat;
80
+ background-size: 972px 200px;
81
+ height: 200px;
82
+ max-width: 100%;
83
+ }
84
+
85
+ .promo a {
86
+ display: block;
87
+ height: 100%;
88
  }
wd/assets/css/overview.css CHANGED
@@ -1,462 +1,462 @@
1
- /* general */
2
- .wd-table{
3
- display: table;
4
- width: 100%;
5
- }
6
- .wd-cell{
7
- display: table-cell;
8
- }
9
- .wd-valign-top{
10
- vertical-align: top;
11
- }
12
- .wd-valign-middle{
13
- vertical-align: middle;
14
- }
15
- .wd-valign-bottom{
16
- vertical-align: bottom;
17
- }
18
- .wd-text-right{
19
- text-align: right;
20
- }
21
- .wd-text-center{
22
- text-align: center;
23
- }
24
- .hide{
25
- display: none;
26
- }
27
- a:focus{
28
- border: none !important;
29
- outline: none !important;
30
- box-shadow: none !important;
31
- }
32
-
33
- /*end general */
34
- .wd-video_container{
35
- text-align: center;
36
- }
37
- .overview_welcome{
38
- background: url(img/welcome_bg.png) no-repeat;
39
- margin: 21px 0px;
40
- background-size: 100% 100%;
41
- line-height: 28px;
42
- }
43
- .overview_welcome .wd-cell{
44
- padding: 15px;
45
- }
46
- .overview_welcome .wd-cell:first-child{
47
- position: relative;
48
- }
49
-
50
- .overview_welcome h2{
51
- text-transform: uppercase;
52
- font-size: 26px;
53
- margin-top: 0;
54
- margin-bottom: 15px;
55
- color: #424141;
56
- }
57
- .overview_welcome img{
58
- width: 120px;
59
- padding-right: 100px;
60
- padding-left: 25px;
61
- }
62
- .overview_wrap{
63
- width: 935px;
64
- background: #fff;
65
- }
66
- .overview_welcome .overview_welcome_text{
67
- font-size: 15px;
68
- color: #424141;
69
- }
70
- .overview_tabs:after, .deals_content:after, .deal_desc_footer:after{
71
- content: "";
72
- display: table;
73
- clear: both;
74
- }
75
- .overview_tabs li{
76
- float: left;
77
- width: 16.666%;
78
- }
79
-
80
- .overview_tabs li a{
81
- text-decoration: none !important;
82
- color: #000;
83
- background: #D6D6D6;
84
- background: -webkit-linear-gradient(#D6D6D6, #D7D7D7, #D6D6D6); /* For Safari 5.1 to 6.0 */
85
- background: -o-linear-gradient(#D6D6D6, #D7D7D7, #D6D6D6); /* For Opera 11.1 to 12.0 */
86
- background: -moz-linear-gradient(#D6D6D6, #D7D7D7, #D6D6D6); /* For Firefox 3.6 to 15 */
87
- background: linear-gradient(#D6D6D6, #D7D7D7, #D6D6D6); /* Standard syntax */
88
- text-transform: uppercase;
89
- display: block;
90
- padding: 7px 10px;
91
- text-align: center;
92
- font-weight: bold;
93
- border-top: 4px solid #F1F1F1;
94
- position: relative;
95
- top: -4px;
96
- }
97
- .overview_tabs li a:hover,.overview_tabs li a:active, .overview_tabs li a:focus, .overview_tab_active{
98
- background: #fff !important;
99
- border-top: 4px solid #2A495F !important;
100
-
101
- }
102
- #welcome, #user_guide, #support, .deals_content{
103
- padding: 15px 10px;
104
- background: #fff;
105
- }
106
- .plugin_feature_title{
107
- font-size: 19px;
108
- }
109
- .more_features_wrap{
110
- margin-top: 25px;
111
- text-align: right;
112
- }
113
- .more_features, .more_features:hover, .more_features:focus{
114
- color: #fff;
115
- background: #00384F;
116
- padding: 3px 15px;
117
- text-decoration: none;
118
- }
119
- .user_guide_item{
120
- margin-bottom: 19px;
121
- }
122
- .user_guide_title, .user_guide_title:hover, .user_guide_title:focus{
123
- font-size: 16px;
124
- color: #192D3B;
125
- font-weight: bold;
126
- margin-bottom: 5px;
127
- text-decoration: none;
128
- }
129
- .user_guide_titles, .user_guide_titles:hover, .user_guide_titles:focus{
130
- color: #192D3B;
131
- text-decoration: none;
132
- }
133
- .user_guide_demo, .user_guide_plugin, .user_guide_support_forum, .user_guide_addons, .user_guide_faq,
134
- .user_guide_demo:hover, .user_guide_plugin:hover, .user_guide_support_forum:hover, .user_guide_addons:hover, .user_guide_faq:hover{
135
- background-color: #F5F5F5;
136
- background-repeat: no-repeat;
137
- background-position: right -4px center;
138
- border-top-left-radius: 25px;
139
- border-bottom-left-radius: 25px;
140
- padding: 3px 23px 3px 16px;
141
- width: 144px;
142
- font-weight: bold;
143
- text-transform: uppercase;
144
- color: #192D3B;
145
- margin-bottom: 7px;
146
- display: block;
147
- text-decoration: none;
148
- }
149
- .user_guide_demo{
150
- background-image: url(img/ug-icon-1.png);
151
- }
152
- .user_guide_plugin{
153
- background-image: url(img/ug-icon-2.png);
154
- }
155
- .user_guide_support_forum{
156
- background-image: url(img/ug-icon-3.png);
157
- }
158
- .user_guide_addons{
159
- background-image: url(img/ug-icon-4.png);
160
- }
161
- .user_guide_faq{
162
- background-image: url(img/ug-icon-5.png);
163
- }
164
-
165
- #support .wd-support-main{
166
- width: 800px;
167
- margin: 0 auto;
168
- font-size: 16px;
169
- text-align: center;
170
- margin-bottom: 15px;
171
-
172
- }
173
- .wd-overview-site-deatils{
174
- width: 800px;
175
- background: #FBFBFB;
176
- padding: 10px;
177
- margin: 0 auto;
178
- }
179
- .wd-overview-site-deatils h2, .wd-overview-site-deatils p{
180
- text-align: center;
181
- }
182
- .wd-overview-site-deatils p{
183
- font-size: 16px;
184
- }
185
- .contact_us, .contact_us:hover, .contact_us:focus{
186
- display: block;
187
- background: #27475D;
188
- color: #fff;
189
- text-decoration: none;
190
- width: 173px;
191
- padding: 8px 0px;
192
- text-align: center;
193
- margin-bottom: 5px;
194
- font-size: 16px;
195
- margin-left: 8px;
196
- border: 1px solid #B7B7B7;
197
- text-transform: uppercase;
198
- }
199
-
200
- .support_email{
201
- color: #F47A31;
202
- }
203
- .wd-site-deatils{
204
- padding: 23px;
205
- background: #f1f1f1;
206
- box-sizing: border-box;
207
- }
208
- .wd-site-deatils textarea{
209
- width: 100%;
210
- }
211
- .contact_us{
212
- margin-left: auto !important;
213
- margin-right: auto;
214
- margin-top: 10px;
215
- }
216
- #wd-copy{
217
- display: block;
218
- background: #27475D;
219
- color: #fff;
220
- padding: 5px 8px;
221
- text-align: center;
222
- margin-bottom: 5px;
223
- font-size: 14px;
224
- border: 1px solid #B7B7B7;
225
- cursor: pointer;
226
- }
227
- #plugins{
228
- padding-bottom: 15px;
229
- background: #fff;
230
- }
231
-
232
- .deals_header_plugins{
233
- background: url(img/plugins_header_bg.png) #fff no-repeat;
234
- }
235
- .deals_header_themes{
236
- background: url(img/themes_headrer_bg.png) #fff no-repeat;
237
- }
238
- .deals_header{
239
- background-size: cover;
240
- height: 241px;
241
- }
242
- .deals_header .wd-table .wd-cell{
243
- position: relative;
244
- }
245
- .deals_header_plugins .wd-table .wd-cell{
246
- padding: 27px 10px 10px;
247
- }
248
- .deals_header_themes .wd-table .wd-cell{
249
- padding: 0px 10px 10px;
250
- }
251
- .deals_header_plugins .wd-table .wd-cell:first-child{
252
- padding-left: 23px;
253
- width: 30%;
254
- }
255
- .deals_header_themes .wd-table .wd-cell:first-child{
256
- padding-left: 23px;
257
- width: 36%;
258
- }
259
- .deals_header_themes .wd-table{
260
- height: 100%
261
- }
262
-
263
- .titles_wrap{
264
- display: inline-block;
265
- }
266
- .deals_main_title, .deals_secondary_title{
267
- color: #00425A;
268
- font-weight: bold;
269
- line-height: 55px;
270
- text-align: center;
271
- text-transform: uppercase;
272
- }
273
-
274
- .deals_main_title{
275
- font-size: 39px;
276
- }
277
- .deals_secondary_title{
278
- font-size: 30px;
279
- }
280
-
281
- .higlight{
282
- color: #E5682E;
283
- }
284
-
285
- .deals_save{
286
- position: absolute;
287
- right: 87px;
288
- -webkit-transform: rotate(-27deg);
289
- transform: rotate(-30deg);
290
- font-weight: bold;
291
- font-size: 39px;
292
- color: #E5682E;
293
- text-transform: uppercase;
294
- }
295
- .deals_header_plugins .deals_save{
296
- bottom: 37px;
297
- }
298
- .deals_header_themes .deals_save{
299
- bottom: 76px;
300
- }
301
- .deal_block{
302
- width: 31.2%;
303
- display: inline-block;
304
- vertical-align: top;
305
- margin: 5px;
306
- }
307
- .deal_title{
308
- text-align: center;
309
- text-transform: uppercase;
310
- font-size: 20px;
311
- background: #FAFAFA;
312
- padding: 10px 5px;
313
- line-height: 23px;
314
- }
315
- .deal_title a, .deal_title a:hover, .deal_title a:focus{
316
- text-decoration: none !important;
317
- color: #000 !important;
318
- }
319
- .deal_desc{
320
- background: #F5F5F5;
321
- padding: 10px 5px;
322
- }
323
- .deal_desc p{
324
- margin-bottom: 15px;
325
- }
326
-
327
- .deal_desc_footer .downloads{
328
- float: left;
329
- }
330
- .deal_desc_footer .download_btn{
331
- /*float: right;*/
332
- margin-top: 10px;
333
- text-align: center;
334
- }
335
- .deal_desc_footer .downloads .spans span:first-child{
336
- background: #26455A;
337
- color: #fff;
338
- text-transform: uppercase;
339
- padding: 5px;
340
- display: inline-block;
341
- }
342
- .deal_desc_footer .downloads .spans span:last-child{
343
- background: #fff;
344
- padding: 5px;
345
- border-top-right-radius: 25px;
346
- border-bottom-right-radius: 25px;
347
- margin-left: -3px;
348
- }
349
-
350
- .download_btn a, .download_btn a:hover, .download_btn a:focus{
351
- color: #fff !important;
352
- background: #E97025;
353
- text-decoration: none;
354
- padding: 4px 16px;
355
- display: inline-block;
356
- margin-top: 10px;
357
- border-radius: 13px;
358
- text-transform: uppercase;
359
- }
360
-
361
- .stars-container {
362
- position: relative;
363
- display: inline-block;
364
- color: transparent;
365
- font-size: 21px;
366
- }
367
-
368
- .stars-container:before {
369
- position: absolute;
370
- top: 0;
371
- left: 0;
372
- content: '★★★★★';
373
- color: #F4AB7F;
374
- }
375
-
376
- .stars-container:after {
377
- position: absolute;
378
- top: 0;
379
- left: 0;
380
- content: '★★★★★';
381
- color: #F4762A;
382
- overflow: hidden;
383
- }
384
-
385
- .get_all_deals{
386
- margin: 15px 0px;
387
- text-align: center;
388
- }
389
- .get_all_deals a, .get_all_deals a:hover, .get_all_deals a:active, .get_all_deals a:focus {
390
- color: #fff !important;
391
- background: #E97025;
392
- text-decoration: none;
393
- padding: 8px 21px;
394
- display: inline-block;
395
- margin-top: 10px;
396
- text-transform: uppercase;
397
- border: 2px solid #D2631E;
398
- font-size: 21px;
399
- }
400
-
401
- #themes{
402
- border-top: 35px solid #F1F1F1;
403
- padding-bottom: 15px;
404
- }
405
-
406
- .theme_block{
407
- width: 48%;
408
- margin: 5px;
409
- border: 1px solid #ECE9E9;
410
- float: left;
411
- }
412
- .theme_block a, .theme_block a:hover, .theme_block a:focus{
413
- display: block;
414
- text-decoration: none !important;
415
- background: #F7F7F7;
416
- color: #000 !important;
417
- padding: 5px;
418
- }
419
-
420
- /* noteices */
421
- .notice_wrap{
422
- padding: 15px;
423
- border: 1px solid #C4C4C4;
424
- width: 98%;
425
- margin: 10px auto;
426
- box-sizing: border-box;
427
-
428
- }
429
- .notice_wrap .notice_title, .notice_wrap .notice_title:hover, .notice_wrap .notice_title:focus{
430
- color: #E5682E !important;
431
- text-decoration: none;
432
- margin-bottom: 17px;
433
- font-size: 20px;
434
- display: block;
435
- }
436
-
437
- .notice_wrap .notice_txt{
438
- font-size: 15px;
439
- }
440
-
441
-
442
- .wd-tour{
443
- text-align: right;
444
- }
445
- .wd-tour-btn, .wd-tour-btn:hover, .wd-tour-btn:focus{
446
- background: #F47629;
447
- color: #fff;
448
- text-decoration: none;
449
- padding: 5px;
450
- display: inline-block;
451
- font-size: 16px;
452
- }
453
-
454
- .wd-start-using-button .button{
455
- margin-left: 7px;
456
- margin-top: 7px;
457
- }
458
-
459
- .wd-start-using-button{
460
- margin-right:10px;
461
- float: right;
462
  }
1
+ /* general */
2
+ .wd-table{
3
+ display: table;
4
+ width: 100%;
5
+ }
6
+ .wd-cell{
7
+ display: table-cell;
8
+ }
9
+ .wd-valign-top{
10
+ vertical-align: top;
11
+ }
12
+ .wd-valign-middle{
13
+ vertical-align: middle;
14
+ }
15
+ .wd-valign-bottom{
16
+ vertical-align: bottom;
17
+ }
18
+ .wd-text-right{
19
+ text-align: right;
20
+ }
21
+ .wd-text-center{
22
+ text-align: center;
23
+ }
24
+ .hide{
25
+ display: none;
26
+ }
27
+ a:focus{
28
+ border: none !important;
29
+ outline: none !important;
30
+ box-shadow: none !important;
31
+ }
32
+
33
+ /*end general */
34
+ .wd-video_container{
35
+ text-align: center;
36
+ }
37
+ .overview_welcome{
38
+ background: url(img/welcome_bg.png) no-repeat;
39
+ margin: 21px 0px;
40
+ background-size: 100% 100%;
41
+ line-height: 28px;
42
+ }
43
+ .overview_welcome .wd-cell{
44
+ padding: 15px;
45
+ }
46
+ .overview_welcome .wd-cell:first-child{
47
+ position: relative;
48
+ }
49
+
50
+ .overview_welcome h2{
51
+ text-transform: uppercase;
52
+ font-size: 26px;
53
+ margin-top: 0;
54
+ margin-bottom: 15px;
55
+ color: #424141;
56
+ }
57
+ .overview_welcome img{
58
+ width: 120px;
59
+ padding-right: 100px;
60
+ padding-left: 25px;
61
+ }
62
+ .overview_wrap{
63
+ width: 935px;
64
+ background: #fff;
65
+ }
66
+ .overview_welcome .overview_welcome_text{
67
+ font-size: 15px;
68
+ color: #424141;
69
+ }
70
+ .overview_tabs:after, .deals_content:after, .deal_desc_footer:after{
71
+ content: "";
72
+ display: table;
73
+ clear: both;
74
+ }
75
+ .overview_tabs li{
76
+ float: left;
77
+ width: 16.666%;
78
+ }
79
+
80
+ .overview_tabs li a{
81
+ text-decoration: none !important;
82
+ color: #000;
83
+ background: #D6D6D6;
84
+ background: -webkit-linear-gradient(#D6D6D6, #D7D7D7, #D6D6D6); /* For Safari 5.1 to 6.0 */
85
+ background: -o-linear-gradient(#D6D6D6, #D7D7D7, #D6D6D6); /* For Opera 11.1 to 12.0 */
86
+ background: -moz-linear-gradient(#D6D6D6, #D7D7D7, #D6D6D6); /* For Firefox 3.6 to 15 */
87
+ background: linear-gradient(#D6D6D6, #D7D7D7, #D6D6D6); /* Standard syntax */
88
+ text-transform: uppercase;
89
+ display: block;
90
+ padding: 7px 10px;
91
+ text-align: center;
92
+ font-weight: bold;
93
+ border-top: 4px solid #F1F1F1;
94
+ position: relative;
95
+ top: -4px;
96
+ }
97
+ .overview_tabs li a:hover,.overview_tabs li a:active, .overview_tabs li a:focus, .overview_tab_active{
98
+ background: #fff !important;
99
+ border-top: 4px solid #2A495F !important;
100
+
101
+ }
102
+ #welcome, #user_guide, #support, .deals_content{
103
+ padding: 15px 10px;
104
+ background: #fff;
105
+ }
106
+ .plugin_feature_title{
107
+ font-size: 19px;
108
+ }
109
+ .more_features_wrap{
110
+ margin-top: 25px;
111
+ text-align: right;
112
+ }
113
+ .more_features, .more_features:hover, .more_features:focus{
114
+ color: #fff;
115
+ background: #00384F;
116
+ padding: 3px 15px;
117
+ text-decoration: none;
118
+ }
119
+ .user_guide_item{
120
+ margin-bottom: 19px;
121
+ }
122
+ .user_guide_title, .user_guide_title:hover, .user_guide_title:focus{
123
+ font-size: 16px;
124
+ color: #192D3B;
125
+ font-weight: bold;
126
+ margin-bottom: 5px;
127
+ text-decoration: none;
128
+ }
129
+ .user_guide_titles, .user_guide_titles:hover, .user_guide_titles:focus{
130
+ color: #192D3B;
131
+ text-decoration: none;
132
+ }
133
+ .user_guide_demo, .user_guide_plugin, .user_guide_support_forum, .user_guide_addons, .user_guide_faq,
134
+ .user_guide_demo:hover, .user_guide_plugin:hover, .user_guide_support_forum:hover, .user_guide_addons:hover, .user_guide_faq:hover{
135
+ background-color: #F5F5F5;
136
+ background-repeat: no-repeat;
137
+ background-position: right -4px center;
138
+ border-top-left-radius: 25px;
139
+ border-bottom-left-radius: 25px;
140
+ padding: 3px 23px 3px 16px;
141
+ width: 144px;
142
+ font-weight: bold;
143
+ text-transform: uppercase;
144
+ color: #192D3B;
145
+ margin-bottom: 7px;
146
+ display: block;
147
+ text-decoration: none;
148
+ }
149
+ .user_guide_demo{
150
+ background-image: url(img/ug-icon-1.png);
151
+ }
152
+ .user_guide_plugin{
153
+ background-image: url(img/ug-icon-2.png);
154
+ }
155
+ .user_guide_support_forum{
156
+ background-image: url(img/ug-icon-3.png);
157
+ }
158
+ .user_guide_addons{
159
+ background-image: url(img/ug-icon-4.png);
160
+ }
161
+ .user_guide_faq{
162
+ background-image: url(img/ug-icon-5.png);
163
+ }
164
+
165
+ #support .wd-support-main{
166
+ width: 800px;
167
+ margin: 0 auto;
168
+ font-size: 16px;
169
+ text-align: center;
170
+ margin-bottom: 15px;
171
+
172
+ }
173
+ .wd-overview-site-deatils{
174
+ width: 800px;
175
+ background: #FBFBFB;
176
+ padding: 10px;
177
+ margin: 0 auto;
178
+ }
179
+ .wd-overview-site-deatils h2, .wd-overview-site-deatils p{
180
+ text-align: center;
181
+ }
182
+ .wd-overview-site-deatils p{
183
+ font-size: 16px;
184
+ }
185
+ .contact_us, .contact_us:hover, .contact_us:focus{
186
+ display: block;
187
+ background: #27475D;
188
+ color: #fff;
189
+ text-decoration: none;
190
+ width: 173px;
191
+ padding: 8px 0px;
192
+ text-align: center;
193
+ margin-bottom: 5px;
194
+ font-size: 16px;
195
+ margin-left: 8px;
196
+ border: 1px solid #B7B7B7;
197
+ text-transform: uppercase;
198
+ }
199
+
200
+ .support_email{
201
+ color: #F47A31;
202
+ }
203
+ .wd-site-deatils{
204
+ padding: 23px;
205
+ background: #f1f1f1;
206
+ box-sizing: border-box;
207
+ }
208
+ .wd-site-deatils textarea{
209
+ width: 100%;
210
+ }
211
+ .contact_us{
212
+ margin-left: auto !important;
213
+ margin-right: auto;
214
+ margin-top: 10px;
215
+ }
216
+ #wd-copy{
217
+ display: block;
218
+ background: #27475D;
219
+ color: #fff;
220
+ padding: 5px 8px;
221
+ text-align: center;
222
+ margin-bottom: 5px;
223
+ font-size: 14px;
224
+ border: 1px solid #B7B7B7;
225
+ cursor: pointer;
226
+ }
227
+ #plugins{
228
+ padding-bottom: 15px;
229
+ background: #fff;
230
+ }
231
+
232
+ .deals_header_plugins{
233
+ background: url(img/plugins_header_bg.png) #fff no-repeat;
234
+ }
235
+ .deals_header_themes{
236
+ background: url(img/themes_headrer_bg.png) #fff no-repeat;
237
+ }
238
+ .deals_header{
239
+ background-size: cover;
240
+ height: 241px;
241
+ }
242
+ .deals_header .wd-table .wd-cell{
243
+ position: relative;
244
+ }
245
+ .deals_header_plugins .wd-table .wd-cell{
246
+ padding: 27px 10px 10px;
247
+ }
248
+ .deals_header_themes .wd-table .wd-cell{
249
+ padding: 0px 10px 10px;
250
+ }
251
+ .deals_header_plugins .wd-table .wd-cell:first-child{
252
+ padding-left: 23px;
253
+ width: 30%;
254
+ }
255
+ .deals_header_themes .wd-table .wd-cell:first-child{
256
+ padding-left: 23px;
257
+ width: 36%;
258
+ }
259
+ .deals_header_themes .wd-table{
260
+ height: 100%
261
+ }
262
+
263
+ .titles_wrap{
264
+ display: inline-block;
265
+ }
266
+ .deals_main_title, .deals_secondary_title{
267
+ color: #00425A;
268
+ font-weight: bold;
269
+ line-height: 55px;
270
+ text-align: center;
271
+ text-transform: uppercase;
272
+ }
273
+
274
+ .deals_main_title{
275
+ font-size: 39px;
276
+ }
277
+ .deals_secondary_title{
278
+ font-size: 30px;
279
+ }
280
+
281
+ .higlight{
282
+ color: #E5682E;
283
+ }
284
+
285
+ .deals_save{
286
+ position: absolute;
287
+ right: 87px;
288
+ -webkit-transform: rotate(-27deg);
289
+ transform: rotate(-30deg);
290
+ font-weight: bold;
291
+ font-size: 39px;
292
+ color: #E5682E;
293
+ text-transform: uppercase;
294
+ }
295
+ .deals_header_plugins .deals_save{
296
+ bottom: 37px;
297
+ }
298
+ .deals_header_themes .deals_save{
299
+ bottom: 76px;
300
+ }
301
+ .deal_block{
302
+ width: 31.2%;
303
+ display: inline-block;
304
+ vertical-align: top;
305
+ margin: 5px;
306
+ }
307
+ .deal_title{
308
+ text-align: center;
309
+ text-transform: uppercase;
310
+ font-size: 20px;
311
+ background: #FAFAFA;
312
+ padding: 10px 5px;
313
+ line-height: 23px;
314
+ }
315
+ .deal_title a, .deal_title a:hover, .deal_title a:focus{
316
+ text-decoration: none !important;
317
+ color: #000 !important;
318
+ }
319
+ .deal_desc{
320
+ background: #F5F5F5;
321
+ padding: 10px 5px;
322
+ }
323
+ .deal_desc p{
324
+ margin-bottom: 15px;
325
+ }
326
+
327
+ .deal_desc_footer .downloads{
328
+ float: left;
329
+ }
330
+ .deal_desc_footer .download_btn{
331
+ /*float: right;*/
332
+ margin-top: 10px;
333
+ text-align: center;
334
+ }
335
+ .deal_desc_footer .downloads .spans span:first-child{
336
+ background: #26455A;
337
+ color: #fff;
338
+ text-transform: uppercase;
339
+ padding: 5px;
340
+ display: inline-block;
341
+ }
342
+ .deal_desc_footer .downloads .spans span:last-child{
343
+ background: #fff;
344
+ padding: 5px;
345
+ border-top-right-radius: 25px;
346
+ border-bottom-right-radius: 25px;
347
+ margin-left: -3px;
348
+ }
349
+
350
+ .download_btn a, .download_btn a:hover, .download_btn a:focus{
351
+ color: #fff !important;
352
+ background: #E97025;
353
+ text-decoration: none;
354
+ padding: 4px 16px;
355
+ display: inline-block;
356
+ margin-top: 10px;
357
+ border-radius: 13px;
358
+ text-transform: uppercase;
359
+ }
360
+
361
+ .stars-container {
362
+ position: relative;
363
+ display: inline-block;
364
+ color: transparent;
365
+ font-size: 21px;
366
+ }
367
+
368
+ .stars-container:before {
369
+ position: absolute;
370
+ top: 0;
371
+ left: 0;
372
+ content: '★★★★★';
373
+ color: #F4AB7F;
374
+ }
375
+
376
+ .stars-container:after {
377
+ position: absolute;
378
+ top: 0;
379
+ left: 0;
380
+ content: '★★★★★';
381
+ color: #F4762A;
382
+ overflow: hidden;
383
+ }
384
+
385
+ .get_all_deals{
386
+ margin: 15px 0px;
387
+ text-align: center;
388
+ }
389
+ .get_all_deals a, .get_all_deals a:hover, .get_all_deals a:active, .get_all_deals a:focus {
390
+ color: #fff !important;
391
+ background: #E97025;
392
+ text-decoration: none;
393
+ padding: 8px 21px;
394
+ display: inline-block;
395
+ margin-top: 10px;
396
+ text-transform: uppercase;
397
+ border: 2px solid #D2631E;
398
+ font-size: 21px;
399
+ }
400
+
401
+ #themes{
402
+ border-top: 35px solid #F1F1F1;
403
+ padding-bottom: 15px;
404
+ }
405
+
406
+ .theme_block{
407
+ width: 48%;
408
+ margin: 5px;
409
+ border: 1px solid #ECE9E9;
410
+ float: left;
411
+ }
412
+ .theme_block a, .theme_block a:hover, .theme_block a:focus{
413
+ display: block;
414
+ text-decoration: none !important;
415
+ background: #F7F7F7;
416
+ color: #000 !important;
417
+ padding: 5px;
418
+ }
419
+
420
+ /* noteices */
421
+ .notice_wrap{
422
+ padding: 15px;
423
+ border: 1px solid #C4C4C4;
424
+ width: 98%;
425
+ margin: 10px auto;
426
+ box-sizing: border-box;
427
+
428
+ }
429
+ .notice_wrap .notice_title, .notice_wrap .notice_title:hover, .notice_wrap .notice_title:focus{
430
+ color: #E5682E !important;
431
+ text-decoration: none;
432
+ margin-bottom: 17px;
433
+ font-size: 20px;
434
+ display: block;
435
+ }
436
+
437
+ .notice_wrap .notice_txt{
438
+ font-size: 15px;
439
+ }
440
+
441
+
442
+ .wd-tour{
443
+ text-align: right;
444
+ }
445
+ .wd-tour-btn, .wd-tour-btn:hover, .wd-tour-btn:focus{
446
+ background: #F47629;
447
+ color: #fff;
448
+ text-decoration: none;
449
+ padding: 5px;
450
+ display: inline-block;
451
+ font-size: 16px;
452
+ }
453
+
454
+ .wd-start-using-button .button{
455
+ margin-left: 7px;
456
+ margin-top: 7px;
457
+ }
458
+
459
+ .wd-start-using-button{
460
+ margin-right:10px;
461
+ float: right;
462
  }
wd/assets/css/subscribe.css CHANGED
@@ -1,114 +1,114 @@
1
- body {
2
- color: #444;
3
- font-family: "Open Sans",sans-serif;
4
- line-height: 1.4em;
5
- min-width: 600px;
6
- }
7
-
8
- .wd-subscribe{
9
- background: #fff;
10
- border: 2px solid #E2E5EC;
11
- width: 55%;
12
- margin-top: 40px;
13
- }
14
- .wd-subscribe-content{
15
- padding: 30px 92px;
16
- }
17
- .imgs{
18
- text-align: center;
19
- }
20
- .imgs img{
21
- vertical-align: middle;
22
- width: 125px;
23
- }
24
- .imgs span {
25
- color: #21759B;
26
- font-weight: bold;
27
- font-size: 52px;
28
- padding: 0px 28px;
29
- }
30
- .texts{
31
- margin-top: 10px;
32
- margin-bottom: 25px;
33
- }
34
-
35
- .btns .allow_and_continue, .btns .allow_and_continue:hover, .btns .allow_and_continue:focus{
36
- display: inline-block;
37
- background: url(img/allow&continue.png) no-repeat;
38
- width: 279px;
39
- height: 61px;
40
- border: none;
41
-
42
- }
43
- .btns .skip, .btns .skip:hover, .btns .skip:focus{
44
- margin-left: 66px;
45
- display: inline-block;
46
- background: url(img/skip.png) no-repeat;
47
- width: 76px;
48
- height: 59px;
49
- }
50
- .permissions{
51
- color: #525252 !important;
52
- }
53
- .list{
54
- margin-top: 15px;
55
- display:none;
56
- }
57
- .list_item{
58
- display: table;
59
- margin-bottom: 15px;
60
- }
61
- .list_item:after{
62
- content: "";
63
- clear: both;
64
- display: table;
65
- }
66
- .list_img_wrap{
67
- float: left;
68
- }
69
- .list_img_wrap img{
70
- width: 27px;
71
- }
72
- .list_text_wrap{
73
- margin-left: 33px;
74
- float: right;
75
- }
76
- .list_title, .list_text{
77
- color: #525252;
78
- font-size: 13px;
79
- }
80
- .wd_loader{
81
- vertical-align: top;
82
- width: 30px;
83
- margin-top: 11px;
84
- visibility: hidden;
85
- }
86
- .wd-subscribe-footer{
87
- text-align: center;
88
- padding: 4px 0px;
89
- border-top: 1px solid rgba(204, 204, 204, 0.52);
90
- }
91
- .wd-footer-menu {
92
- display: inline-block;
93
- list-style-type: none;
94
- padding: 0;
95
- margin: 0;
96
- }
97
- .wd-footer-menu li{
98
- float: left;
99
- }
100
- .wd-footer-menu li, .wd-footer-menu li a{
101
- color: rgba(62, 60, 60, 0.57) !important;
102
- text-decoration: none;
103
- font-size: 12px;
104
- padding: 2px;
105
- font-weight: bold;
106
- display: inline-block;
107
- vertical-align: middle;
108
- }
109
-
110
-
111
- .wd-footer-menu li a:hover{
112
- color: rgba(62, 60, 60, 0.57) !important;
113
- text-decoration: underline;
114
  }
1
+ body {
2
+ color: #444;
3
+ font-family: "Open Sans",sans-serif;
4
+ line-height: 1.4em;
5
+ min-width: 600px;
6
+ }
7
+
8
+ .wd-subscribe{
9
+ background: #fff;
10
+ border: 2px solid #E2E5EC;
11
+ width: 55%;
12
+ margin-top: 40px;
13
+ }
14
+ .wd-subscribe-content{
15
+ padding: 30px 92px;
16
+ }
17
+ .imgs{
18
+ text-align: center;
19
+ }
20
+ .imgs img{
21
+ vertical-align: middle;
22
+ width: 125px;
23
+ }
24
+ .imgs span {
25
+ color: #21759B;
26
+ font-weight: bold;
27
+ font-size: 52px;
28
+ padding: 0px 28px;
29
+ }
30
+ .texts{
31
+ margin-top: 10px;
32
+ margin-bottom: 25px;
33
+ }
34
+
35
+ .btns .allow_and_continue, .btns .allow_and_continue:hover, .btns .allow_and_continue:focus{
36
+ display: inline-block;
37
+ background: url(img/allow&continue.png) no-repeat;
38
+ width: 279px;
39
+ height: 61px;
40
+ border: none;
41
+
42
+ }
43
+ .btns .skip, .btns .skip:hover, .btns .skip:focus{
44
+ margin-left: 66px;
45
+ display: inline-block;
46
+ background: url(img/skip.png) no-repeat;
47
+ width: 76px;
48
+ height: 59px;
49
+ }
50
+ .permissions{
51
+ color: #525252 !important;
52
+ }
53
+ .list{
54
+ margin-top: 15px;
55
+ display:none;
56
+ }
57
+ .list_item{
58
+ display: table;
59
+ margin-bottom: 15px;
60
+ }
61
+ .list_item:after{
62
+ content: "";
63
+ clear: both;
64
+ display: table;
65
+ }
66
+ .list_img_wrap{
67
+ float: left;
68
+ }
69
+ .list_img_wrap img{
70
+ width: 27px;
71
+ }
72
+ .list_text_wrap{
73
+ margin-left: 33px;
74
+ float: right;
75
+ }
76
+ .list_title, .list_text{
77
+ color: #525252;
78
+ font-size: 13px;
79
+ }
80
+ .wd_loader{
81
+ vertical-align: top;
82
+ width: 30px;
83
+ margin-top: 11px;
84
+ visibility: hidden;
85
+ }
86
+ .wd-subscribe-footer{
87
+ text-align: center;
88
+ padding: 4px 0px;
89
+ border-top: 1px solid rgba(204, 204, 204, 0.52);
90
+ }
91
+ .wd-footer-menu {
92
+ display: inline-block;
93
+ list-style-type: none;
94
+ padding: 0;
95
+ margin: 0;
96
+ }
97
+ .wd-footer-menu li{
98
+ float: left;
99
+ }
100
+ .wd-footer-menu li, .wd-footer-menu li a{
101
+ color: rgba(62, 60, 60, 0.57) !important;
102
+ text-decoration: none;
103
+ font-size: 12px;
104
+ padding: 2px;
105
+ font-weight: bold;
106
+ display: inline-block;
107
+ vertical-align: middle;
108
+ }
109
+
110
+
111
+ .wd-footer-menu li a:hover{
112
+ color: rgba(62, 60, 60, 0.57) !important;
113
+ text-decoration: underline;
114
  }
wd/assets/img/fmc_main_plugin.png ADDED
Binary file
wd/assets/js/deactivate_popup.js CHANGED
@@ -1,107 +1,159 @@
1
- ////////////////////////////////////////////////////////////////////////////////////////
2
- // Events //
3
- ////////////////////////////////////////////////////////////////////////////////////////
4
- ////////////////////////////////////////////////////////////////////////////////////////
5
- // Constants //
6
- ////////////////////////////////////////////////////////////////////////////////////////
7
- ////////////////////////////////////////////////////////////////////////////////////////
8
- // Variables //
9
- ////////////////////////////////////////////////////////////////////////////////////////
10
- var deactivated = false;
11
- var additionalInfo = "";
12
- var btnVal = 3;
13
-
14
- ////////////////////////////////////////////////////////////////////////////////////////
15
- // Constructor & Destructor //
16
- ////////////////////////////////////////////////////////////////////////////////////////
17
-
18
-
19
- ////////////////////////////////////////////////////////////////////////////////////////
20
- // Public Methods //
21
- ////////////////////////////////////////////////////////////////////////////////////////
22
- function wdReady(prefix){
23
-
24
- jQuery(document).on("click", "." + window[prefix + "WDDeactivateVars"].deactivate_class, function(){
25
- jQuery(".wd-" + prefix + "-opacity").show();
26
- jQuery(".wd-" + prefix + "-deactivate-popup").show();
27
- if(jQuery(this).attr("data-uninstall") == "1"){
28
- btnVal = 2 ;
29
- }
30
-
31
- return false;
32
- });
33
-
34
- jQuery(document).on("change", "[name=" + prefix + "_reasons]", function(){
35
-
36
- jQuery("." + prefix + "_additional_details_wrap").html("");
37
- jQuery(".wd-" + prefix + "-deactivate-popup").removeClass("wd-popup-active1 wd-popup-active2");
38
- if(jQuery(this).val() == "reason_plugin_is_hard_to_use_technical_problems"){
39
-
40
- additionalInfo = '<div class="wd-additional-active"><div><strong>Please describe your issue.</strong></div><br>' +
41
- '<textarea name="' + prefix + '_additional_details" rows = "4"></textarea><br>' +
42
- '<div>Our support will contact <input type="text" name="' + prefix + '_email" value="' + window[prefix + "WDDeactivateVars"].email + '"> shortly.</div>'+
43
- '<br><div><button class="button button-primary wd-' + prefix + '-deactivate" data-val="' + btnVal + '">Submit support ticket</button></div></div>';
44
- jQuery("." + prefix + "_additional_details_wrap").append(additionalInfo);
45
- jQuery(".wd-" + prefix + "-deactivate-popup").addClass("wd-popup-active1");
46
-
47
- }
48
- else if(jQuery(this).val() == "reason_free_version_limited"){
49
- additionalInfo = '<div class="wd-additional-active">' +
50
- '<div><strong>We believe our premium version will fit your needs.</strong></div>' +
51
- '<div><a href="' + window[prefix + "WDDeactivateVars"].plugin_wd_url+ '" target="_blank">Try with 30 day money back guarantee.</a></div>';
52
-
53
- jQuery("." + prefix + "_additional_details_wrap").append(additionalInfo);
54
- jQuery(".wd-" + prefix + "-deactivate-popup").addClass("wd-popup-active2");
55
- }
56
- else if(jQuery(this).val() == "reason_premium_expensive"){
57
- additionalInfo = '<div class="wd-additional-active">' +
58
- '<div><strong>We have a special offer for you.</strong></div>' +
59
- '<div>Submit this form to get the offer to <input type="text" name="' + prefix + '_email" value="' + window[prefix + "WDDeactivateVars"].email + '"></div>' +
60
- '<br><div><button class="button button-primary wd-' + prefix + '-deactivate" data-val="' + btnVal + '">Submit</button></div></div>';
61
-
62
- jQuery("." + prefix + "_additional_details_wrap").append(additionalInfo);
63
- jQuery(".wd-" + prefix + "-deactivate-popup").addClass("wd-popup-active2");
64
- }
65
-
66
- jQuery("#wd-" + prefix + "-deactivate").hide();
67
- jQuery("#wd-" + prefix + "-submit-and-deactivate").show();
68
-
69
- });
70
- jQuery(document).on("keyup", "[name=" + prefix + "_additional_details]", function(){
71
- if(jQuery(this).val().trim() || jQuery("[name=" + prefix + "_reasons]:checked").length > 0){
72
- jQuery("#wd-" + prefix + "-deactivate").hide();
73
- jQuery("#wd-" + prefix + "-submit-and-deactivate").show();
74
- }
75
- else{
76
- jQuery("#wd-" + prefix + "-deactivate").show();
77
- jQuery("#wd-" + prefix + "-submit-and-deactivate").hide();
78
- }
79
-
80
- });
81
- jQuery(document).on("click", ".wd-" + prefix + "-deactivate", function(){
82
- jQuery(".wd-deactivate-popup-opacity-" + prefix).show();
83
- if(jQuery(this).hasClass("wd-clicked") == false){
84
- jQuery(this).addClass("wd-clicked");
85
- jQuery("[name=" + prefix + "_submit_and_deactivate]").val(jQuery(this).attr("data-val"));
86
- jQuery("#" + prefix + "_deactivate_form").submit();
87
- }
88
- return false;
89
- });
90
-
91
- jQuery(document).on("click", ".wd-" + prefix + "-cancel, .wd-opacity", function(){
92
- jQuery(".wd-" + prefix + "-opacity").hide();
93
- jQuery(".wd-" + prefix + "-deactivate-popup").hide();
94
- return false;
95
- });
96
-
97
- }
98
-
99
- ////////////////////////////////////////////////////////////////////////////////////////
100
- // Getters & Setters //
101
- ////////////////////////////////////////////////////////////////////////////////////////
102
- ////////////////////////////////////////////////////////////////////////////////////////
103
- // Private Methods //
104
- ////////////////////////////////////////////////////////////////////////////////////////
105
- ////////////////////////////////////////////////////////////////////////////////////////
106
- // Listeners //
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  ////////////////////////////////////////////////////////////////////////////////////////
1
+ ////////////////////////////////////////////////////////////////////////////////////////
2
+ // Events //
3
+ ////////////////////////////////////////////////////////////////////////////////////////
4
+ ////////////////////////////////////////////////////////////////////////////////////////
5
+ // Constants //
6
+ ////////////////////////////////////////////////////////////////////////////////////////
7
+ ////////////////////////////////////////////////////////////////////////////////////////
8
+ // Variables //
9
+ ////////////////////////////////////////////////////////////////////////////////////////
10
+ var deactivated = false;
11
+ var additionalInfo = "";
12
+ var btnVal = 3;
13
+
14
+ ////////////////////////////////////////////////////////////////////////////////////////
15
+ // Constructor & Destructor //
16
+ ////////////////////////////////////////////////////////////////////////////////////////
17
+
18
+
19
+ ////////////////////////////////////////////////////////////////////////////////////////
20
+ // Public Methods //
21
+ ////////////////////////////////////////////////////////////////////////////////////////
22
+ function wdReady(prefix){
23
+
24
+ var agree_with_pp = false;
25
+
26
+ jQuery(document).on("click", "." + window[prefix + "WDDeactivateVars"].deactivate_class, function(){
27
+ agree_with_pp = false;
28
+ if (!jQuery('#wd-' + prefix + '-submit-and-deactivate').hasClass('button-primary-disabled')) {
29
+ jQuery('#wd-' + prefix + '-submit-and-deactivate').addClass('button-primary-disabled')
30
+ }
31
+ jQuery(".wd-" + prefix + "-opacity").show();
32
+ jQuery(".wd-" + prefix + "-deactivate-popup").show();
33
+ if(jQuery(this).attr("data-uninstall") == "1"){
34
+ btnVal = 2 ;
35
+ }
36
+
37
+ return false;
38
+ });
39
+
40
+ jQuery(document).on("change", "[name=" + prefix + "_reasons]", function(){
41
+
42
+ var disabled_class = (agree_with_pp === false) ? "button-primary-disabled" : "";
43
+
44
+ jQuery("." + prefix + "_additional_details_wrap").html("");
45
+ jQuery(".wd-" + prefix + "-deactivate-popup").removeClass("wd-popup-active1 wd-popup-active2 wd-popup-active3 wd-popup-active4");
46
+ if(jQuery(this).val() == "reason_plugin_is_hard_to_use_technical_problems"){
47
+
48
+ additionalInfo = '<div class="wd-additional-active"><div><strong>Please describe your issue.</strong></div><br>' +
49
+ '<textarea name="' + prefix + '_additional_details" rows = "4"></textarea><br>' +
50
+ '<div>Our support will contact <input type="text" name="' + prefix + '_email" value="' + window[prefix + "WDDeactivateVars"].email + '"> shortly.</div>'+
51
+ '<br><div><button class="button button-primary ' + disabled_class + ' wd-' + prefix + '-deactivate" data-val="' + btnVal + '">Submit support ticket</button></div></div>';
52
+ jQuery("." + prefix + "_additional_details_wrap").append(additionalInfo);
53
+ jQuery(".wd-" + prefix + "-deactivate-popup").addClass("wd-popup-active1");
54
+
55
+ }
56
+ else if(jQuery(this).val() == "reason_free_version_limited"){
57
+ additionalInfo = '<div class="wd-additional-active">' +
58
+ '<div><strong>We believe our premium version will fit your needs.</strong></div>' +
59
+ '<div><a href="' + window[prefix + "WDDeactivateVars"].plugin_wd_url+ '" target="_blank">Try with 30 day money back guarantee.</a></div>';
60
+
61
+ jQuery("." + prefix + "_additional_details_wrap").append(additionalInfo);
62
+ jQuery(".wd-" + prefix + "-deactivate-popup").addClass("wd-popup-active2");
63
+ }
64
+ else if(jQuery(this).val() == "reason_premium_expensive"){
65
+ additionalInfo = '<div class="wd-additional-active">' +
66
+ '<div><strong>We have a special offer for you.</strong></div>' +
67
+ '<div>Submit this form to get the offer to <input type="text" name="' + prefix + '_email" value="' + window[prefix + "WDDeactivateVars"].email + '"></div>' +
68
+ '<br><div><button class="button button-primary ' + disabled_class + ' wd-' + prefix + '-deactivate" data-val="' + btnVal + '">Submit</button></div></div>';
69
+
70
+ jQuery("." + prefix + "_additional_details_wrap").append(additionalInfo);
71
+ jQuery(".wd-" + prefix + "-deactivate-popup").addClass("wd-popup-active3");
72
+ }else{
73
+ jQuery(".wd-" + prefix + "-deactivate-popup").addClass("wd-popup-active4");
74
+ }
75
+
76
+ var checked = (agree_with_pp === true) ? "checked" : "";
77
+ var agree_checkbox =
78
+ "<div style='margin-top: 5px;'>" +
79
+ "<input type='checkbox' " + checked + " name='" + prefix + "_agree_with_pp" + "' id='" + prefix + "_agree_with_pp" + "'/>" +
80
+ "By submitting this form your email and website URL will be sent to Web-Dorado. Click the checkbox if you consent to usage of mentioned data by Web-Dorado in accordance with our <a target='_blank' href='https://web-dorado.com/web-dorado-privacy-statement.html'>Privacy Policy</a>."+
81
+ "</div>";
82
+
83
+ jQuery("." + prefix + "_additional_details_wrap").prepend(agree_checkbox);
84
+
85
+ jQuery("#wd-" + prefix + "-deactivate").hide();
86
+ jQuery("#wd-" + prefix + "-submit-and-deactivate").show();
87
+
88
+ });
89
+ jQuery(document).on("keyup", "[name=" + prefix + "_additional_details]", function(){
90
+ if(jQuery(this).val().trim() || jQuery("[name=" + prefix + "_reasons]:checked").length > 0){
91
+ jQuery("#wd-" + prefix + "-deactivate").hide();
92
+ jQuery("#wd-" + prefix + "-submit-and-deactivate").show();
93
+ }
94
+ else{
95
+ jQuery("#wd-" + prefix + "-deactivate").show();
96
+ jQuery("#wd-" + prefix + "-submit-and-deactivate").hide();
97
+ }
98
+
99
+ });
100
+
101
+ jQuery(document).on("change", "[name=" + prefix + "_agree_with_pp]", function () {
102
+ if(jQuery(this).prop('checked')){
103
+ jQuery(".wd-" + prefix + "-deactivate").removeClass('button-primary-disabled');
104
+ agree_with_pp = true;
105
+ }else{
106
+ jQuery(".wd-" + prefix + "-deactivate").addClass('button-primary-disabled');
107
+ agree_with_pp = false;
108
+ }
109
+ });
110
+
111
+ jQuery(document).on("click", ".wd-" + prefix + "-deactivate", function(e){
112
+
113
+ var data_val = jQuery(this).data('val');
114
+ var checkbox = jQuery("#" + prefix + "_agree_with_pp");
115
+
116
+
117
+ if (data_val !== 1 && (checkbox.length === 0 || checkbox.prop('checked') === false)) {
118
+ return false;
119
+ }
120
+
121
+ jQuery(".wd-deactivate-popup-opacity-" + prefix).show();
122
+ if(jQuery(this).hasClass("wd-clicked") == false){
123
+ jQuery(this).addClass("wd-clicked");
124
+ jQuery("[name=" + prefix + "_submit_and_deactivate]").val(jQuery(this).attr("data-val"));
125
+ jQuery("#" + prefix + "_deactivate_form").submit();
126
+ }
127
+ return false;
128
+ });
129
+
130
+ jQuery(document).on("click", ".wd-" + prefix + "-cancel, .wd-opacity, .wd-deactivate-popup-close-btn", function(){
131
+ jQuery(".wd-" + prefix + "-opacity").hide();
132
+ jQuery(".wd-" + prefix + "-deactivate-popup").hide();
133
+ reset_popup();
134
+
135
+ return false;
136
+ });
137
+
138
+ function reset_popup() {
139
+ jQuery("." + prefix + "_additional_details_wrap").html("");
140
+ jQuery(".wd-" + prefix + "-deactivate-popup").removeClass("wd-popup-active1 wd-popup-active2 wd-popup-active3 wd-popup-active4");
141
+
142
+ jQuery("#wd-" + prefix + "-deactivate").removeClass("button-primary-disabled");
143
+ jQuery("#wd-" + prefix + "-deactivate").show();
144
+ jQuery("#wd-" + prefix + "-submit-and-deactivate").hide();
145
+ jQuery('#' + prefix + '_deactivate_form input[name="' + prefix + '_reasons' + '"]').prop('checked', false);
146
+
147
+ }
148
+
149
+ }
150
+
151
+ ////////////////////////////////////////////////////////////////////////////////////////
152
+ // Getters & Setters //
153
+ ////////////////////////////////////////////////////////////////////////////////////////
154
+ ////////////////////////////////////////////////////////////////////////////////////////
155
+ // Private Methods //
156
+ ////////////////////////////////////////////////////////////////////////////////////////
157
+ ////////////////////////////////////////////////////////////////////////////////////////
158
+ // Listeners //
159
  ////////////////////////////////////////////////////////////////////////////////////////
wd/assets/js/overview.js CHANGED
@@ -1,56 +1,56 @@
1
- ////////////////////////////////////////////////////////////////////////////////////////
2
- // Events //
3
- ////////////////////////////////////////////////////////////////////////////////////////
4
- ////////////////////////////////////////////////////////////////////////////////////////
5
- // Constants //
6
- ////////////////////////////////////////////////////////////////////////////////////////
7
- ////////////////////////////////////////////////////////////////////////////////////////
8
- // Variables //
9
- ////////////////////////////////////////////////////////////////////////////////////////
10
- ////////////////////////////////////////////////////////////////////////////////////////
11
- // Constructor & Destructor //
12
- ////////////////////////////////////////////////////////////////////////////////////////
13
- jQuery(document).ready(function () {
14
- jQuery(".overview_content > div:not(#welcome)").hide();
15
- jQuery(".overview_tabs li a:not(.not_tab)").on("click", function(){
16
- jQuery(".overview_tabs li a").removeClass("overview_tab_active");
17
- jQuery(this).addClass("overview_tab_active");
18
- jQuery(".overview_content > div").hide();
19
- var id = jQuery(this).attr("href");
20
- jQuery(id).show();
21
- return false;
22
- });
23
-
24
- // rating
25
- // jQuery(".rating").each(function(){
26
- // var rate = jQuery(this).attr("data-rating");
27
- // jQuery("<span class='stars-container'>")
28
- // .addClass("stars-" + rate.toString())
29
- // .text("★★★★★")
30
- // .appendTo(jQuery(this));
31
- // jQuery("body").append('<style>.stars-' + rate.toString() + ':after{width:' + rate + '%;}</style>');
32
- // });
33
-
34
- jQuery("#wd-copy").on("click", function(){
35
- var selector = document.querySelector('#wd-site-deatils-textarea');
36
- selector.select();
37
- document.execCommand('copy');
38
-
39
- return false;
40
-
41
- });
42
-
43
- });
44
-
45
- ////////////////////////////////////////////////////////////////////////////////////////
46
- // Public Methods //
47
- ////////////////////////////////////////////////////////////////////////////////////////
48
- ////////////////////////////////////////////////////////////////////////////////////////
49
- // Getters & Setters //
50
- ////////////////////////////////////////////////////////////////////////////////////////
51
- ////////////////////////////////////////////////////////////////////////////////////////
52
- // Private Methods //
53
- ////////////////////////////////////////////////////////////////////////////////////////
54
- ////////////////////////////////////////////////////////////////////////////////////////
55
- // Listeners //
56
  ////////////////////////////////////////////////////////////////////////////////////////
1
+ ////////////////////////////////////////////////////////////////////////////////////////
2
+ // Events //
3
+ ////////////////////////////////////////////////////////////////////////////////////////
4
+ ////////////////////////////////////////////////////////////////////////////////////////
5
+ // Constants //
6
+ ////////////////////////////////////////////////////////////////////////////////////////
7
+ ////////////////////////////////////////////////////////////////////////////////////////
8
+ // Variables //
9
+ ////////////////////////////////////////////////////////////////////////////////////////
10
+ ////////////////////////////////////////////////////////////////////////////////////////
11
+ // Constructor & Destructor //
12
+ ////////////////////////////////////////////////////////////////////////////////////////
13
+ jQuery(document).ready(function () {
14
+ jQuery(".overview_content > div:not(#welcome)").hide();
15
+ jQuery(".overview_tabs li a:not(.not_tab)").on("click", function(){
16
+ jQuery(".overview_tabs li a").removeClass("overview_tab_active");
17
+ jQuery(this).addClass("overview_tab_active");
18
+ jQuery(".overview_content > div").hide();
19
+ var id = jQuery(this).attr("href");
20
+ jQuery(id).show();
21
+ return false;
22
+ });
23
+
24
+ // rating
25
+ // jQuery(".rating").each(function(){
26
+ // var rate = jQuery(this).attr("data-rating");
27
+ // jQuery("<span class='stars-container'>")
28
+ // .addClass("stars-" + rate.toString())
29
+ // .text("★★★★★")
30
+ // .appendTo(jQuery(this));
31
+ // jQuery("body").append('<style>.stars-' + rate.toString() + ':after{width:' + rate + '%;}</style>');
32
+ // });
33
+
34
+ jQuery("#wd-copy").on("click", function(){
35
+ var selector = document.querySelector('#wd-site-deatils-textarea');
36
+ selector.select();
37
+ document.execCommand('copy');
38
+
39
+ return false;
40
+
41
+ });
42
+
43
+ });
44
+
45
+ ////////////////////////////////////////////////////////////////////////////////////////
46
+ // Public Methods //
47
+ ////////////////////////////////////////////////////////////////////////////////////////
48
+ ////////////////////////////////////////////////////////////////////////////////////////
49
+ // Getters & Setters //
50
+ ////////////////////////////////////////////////////////////////////////////////////////
51
+ ////////////////////////////////////////////////////////////////////////////////////////
52
+ // Private Methods //
53
+ ////////////////////////////////////////////////////////////////////////////////////////
54
+ ////////////////////////////////////////////////////////////////////////////////////////
55
+ // Listeners //
56
  ////////////////////////////////////////////////////////////////////////////////////////
wd/assets/js/subsribe.js CHANGED
@@ -1,36 +1,36 @@
1
- ////////////////////////////////////////////////////////////////////////////////////////
2
- // Events //
3
- ////////////////////////////////////////////////////////////////////////////////////////
4
- ////////////////////////////////////////////////////////////////////////////////////////
5
- // Constants //
6
- ////////////////////////////////////////////////////////////////////////////////////////
7
- ////////////////////////////////////////////////////////////////////////////////////////
8
- // Variables //
9
- ////////////////////////////////////////////////////////////////////////////////////////
10
- ////////////////////////////////////////////////////////////////////////////////////////
11
- // Constructor & Destructor //
12
- ////////////////////////////////////////////////////////////////////////////////////////
13
- jQuery(document).on("ready", function () {
14
- jQuery(".permissions").on("click", function(){
15
- jQuery(".list").toggle();
16
- return false;
17
- });
18
-
19
- jQuery(".allow_and_continue").on("click", function(){
20
- jQuery(this).css("opacity", "0.5");
21
- jQuery(".wd_loader").css("visibility", "visible");
22
- });
23
- });
24
-
25
- ////////////////////////////////////////////////////////////////////////////////////////
26
- // Public Methods //
27
- ////////////////////////////////////////////////////////////////////////////////////////
28
- ////////////////////////////////////////////////////////////////////////////////////////
29
- // Getters & Setters //
30
- ////////////////////////////////////////////////////////////////////////////////////////
31
- ////////////////////////////////////////////////////////////////////////////////////////
32
- // Private Methods //
33
- ////////////////////////////////////////////////////////////////////////////////////////
34
- ////////////////////////////////////////////////////////////////////////////////////////
35
- // Listeners //
36
  ////////////////////////////////////////////////////////////////////////////////////////
1
+ ////////////////////////////////////////////////////////////////////////////////////////
2
+ // Events //
3
+ ////////////////////////////////////////////////////////////////////////////////////////
4
+ ////////////////////////////////////////////////////////////////////////////////////////
5
+ // Constants //
6
+ ////////////////////////////////////////////////////////////////////////////////////////
7
+ ////////////////////////////////////////////////////////////////////////////////////////
8
+ // Variables //
9
+ ////////////////////////////////////////////////////////////////////////////////////////
10
+ ////////////////////////////////////////////////////////////////////////////////////////
11
+ // Constructor & Destructor //
12
+ ////////////////////////////////////////////////////////////////////////////////////////
13
+ jQuery(document).on("ready", function () {
14
+ jQuery(".permissions").on("click", function(){
15
+ jQuery(".list").toggle();
16
+ return false;
17
+ });
18
+
19
+ jQuery(".allow_and_continue").on("click", function(){
20
+ jQuery(this).css("opacity", "0.5");
21
+ jQuery(".wd_loader").css("visibility", "visible");
22
+ });
23
+ });
24
+
25
+ ////////////////////////////////////////////////////////////////////////////////////////
26
+ // Public Methods //
27
+ ////////////////////////////////////////////////////////////////////////////////////////
28
+ ////////////////////////////////////////////////////////////////////////////////////////
29
+ // Getters & Setters //
30
+ ////////////////////////////////////////////////////////////////////////////////////////
31
+ ////////////////////////////////////////////////////////////////////////////////////////
32
+ // Private Methods //
33
+ ////////////////////////////////////////////////////////////////////////////////////////
34
+ ////////////////////////////////////////////////////////////////////////////////////////
35
+ // Listeners //
36
  ////////////////////////////////////////////////////////////////////////////////////////
wd/config.php CHANGED
@@ -1,127 +1,131 @@
1
- <?php
2
- if ( ! defined( 'ABSPATH' ) ) {
3
- exit;
4
- }
5
-
6
- class DoradoWebConfig {
7
- public static $instance;
8
-
9
- public $prefix = null;
10
- public $wd_plugin_id = null;
11
- public $plugin_title = null;
12
- public $plugin_wordpress_slug = null;
13
- public $plugin_dir = null;
14
- public $plugin_main_file = null;
15
- public $description = null;
16
- public $plugin_features = null;
17
- public $user_guide = null;
18
- public $overview_welcome_image = null;
19
- public $video_youtube_id = null;
20
- public $plugin_wd_url = null;
21
- public $plugin_wd_demo_link = null;
22
- public $plugin_wd_addons_link = null;
23
- public $plugin_wizard_link = null;
24
- public $after_subscribe = null;
25
- public $plugin_menu_title = null;
26
- public $plugin_menu_icon = null;
27
- public $wd_dir = null;
28
- public $wd_dir_includes = null;
29
- public $wd_dir_templates = null;
30
- public $wd_dir_assets = null;
31
- public $wd_url_css = null;
32
- public $wd_url_js = null;
33
- public $wd_url_img = null;
34
- public $deactivate = null;
35
- public $subscribe = null;
36
- public $custom_post = null;
37
- public $menu_capability = null;
38
- public $menu_position = null;
39
-
40
- public function set_options( $options ){
41
-
42
- if(isset( $options["prefix"] )) {
43
- $this->prefix = $options["prefix"];
44
- }
45
- if(isset( $options["wd_plugin_id"] )) {
46
- $this->wd_plugin_id = $options["wd_plugin_id"];
47
- }
48
- if(isset( $options["plugin_title"] )) {
49
- $this->plugin_title = $options["plugin_title"];
50
- }
51
- if(isset( $options["plugin_wordpress_slug"] )) {
52
- $this->plugin_wordpress_slug = $options["plugin_wordpress_slug"];
53
- }
54
- if(isset( $options["plugin_dir"] )) {
55
- $this->plugin_dir = $options["plugin_dir"];
56
- }
57
- if(isset( $options["plugin_main_file"] )) {
58
- $this->plugin_main_file = $options["plugin_main_file"];
59
- }
60
-
61
- if(isset( $options["description"] )) {
62
- $this->description = $options["description"];
63
- }
64
- if(isset( $options["plugin_features"] )) {
65
- $this->plugin_features = $options["plugin_features"];
66
- }
67
- if(isset( $options["user_guide"] )) {
68
- $this->user_guide = $options["user_guide"];
69
- }
70
- if(isset( $options["video_youtube_id"] )) {
71
- $this->video_youtube_id = $options["video_youtube_id"];
72
- }
73
- if(isset( $options["overview_welcome_image"] )) {
74
- $this->overview_welcome_image = $options["overview_welcome_image"];
75
- }
76
- if(isset( $options["plugin_wd_url"] )) {
77
- $this->plugin_wd_url = $options["plugin_wd_url"];
78
- }
79
- if(isset( $options["plugin_wd_demo_link"] )) {
80
- $this->plugin_wd_demo_link = $options["plugin_wd_demo_link"];
81
- }
82
- if(isset( $options["plugin_wd_addons_link"] )) {
83
- $this->plugin_wd_addons_link = $options["plugin_wd_addons_link"];
84
- }
85
- if(isset( $options["plugin_wizard_link"] )) {
86
- $this->plugin_wizard_link = $options["plugin_wizard_link"];
87
- }
88
- if(isset( $options["after_subscribe"] )) {
89
- $this->after_subscribe = $options["after_subscribe"];
90
- }
91
- if(isset( $options["plugin_menu_title"] )) {
92
- $this->plugin_menu_title = $options["plugin_menu_title"];
93
- }
94
- if(isset( $options["plugin_menu_icon"] )) {
95
- $this->plugin_menu_icon = $options["plugin_menu_icon"];
96
- }
97
- if(isset( $options["deactivate"] )) {
98
- $this->deactivate = $options["deactivate"];
99
- }
100
- if(isset( $options["subscribe"] )) {
101
- $this->subscribe = $options["subscribe"];
102
- }
103
- if(isset( $options["custom_post"] )) {
104
- $this->custom_post = $options["custom_post"];
105
- }
106
- if(isset( $options["menu_capability"] )) {
107
- $this->menu_capability = $options["menu_capability"];
108
- }
109
- if(isset( $options["menu_position"] )) {
110
- $this->menu_position = $options["menu_position"];
111
- }
112
-
113
- // directories
114
- $this->wd_dir = dirname( $this->plugin_main_file ) . '/wd';
115
- $this->wd_dir_includes = $this->wd_dir . '/includes';
116
- $this->wd_dir_templates = $this->wd_dir . '/templates';
117
- $this->wd_dir_assets = $this->wd_dir . '/assets';
118
- $this->wd_url_css = plugins_url( plugin_basename( $this->wd_dir ) ) . '/assets/css';
119
- $this->wd_url_js = plugins_url( plugin_basename( $this->wd_dir ) ) . '/assets/js';
120
- $this->wd_url_img = plugins_url( plugin_basename( $this->wd_dir ) ) . '/assets/img';
121
- }
122
-
123
-
124
- }
125
-
126
-
127
-
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+
6
+ class DoradoWebConfig {
7
+ public static $instance;
8
+
9
+ public $prefix = null;
10
+ public $wd_plugin_id = null;
11
+ public $plugin_title = null;
12
+ public $plugin_wordpress_slug = null;
13
+ public $plugin_dir = null;
14
+ public $plugin_main_file = null;
15
+ public $description = null;
16
+ public $plugin_features = null;
17
+ public $user_guide = null;
18
+ public $overview_welcome_image = null;
19
+ public $video_youtube_id = null;
20
+ public $plugin_wd_url = null;
21
+ public $plugin_wd_demo_link = null;
22
+ public $plugin_wd_addons_link = null;
23
+ public $plugin_wizard_link = null;
24
+ public $after_subscribe = null;
25
+ public $plugin_menu_title = null;
26
+ public $plugin_menu_icon = null;
27
+ public $wd_dir = null;
28
+ public $wd_dir_includes = null;
29
+ public $wd_dir_templates = null;
30
+ public $wd_dir_assets = null;
31
+ public $wd_url_css = null;
32
+ public $wd_url_js = null;
33
+ public $wd_url_img = null;
34
+ public $deactivate = null;
35
+ public $subscribe = null;
36
+ public $custom_post = null;
37
+ public $menu_capability = null;
38
+ public $menu_position = null;
39
+ public $start_using_url = null;
40
+
41
+ public function set_options( $options ){
42
+
43
+ if(isset( $options["prefix"] )) {
44
+ $this->prefix = $options["prefix"];
45
+ }
46
+ if(isset( $options["wd_plugin_id"] )) {
47
+ $this->wd_plugin_id = $options["wd_plugin_id"];
48
+ }
49
+ if(isset( $options["plugin_title"] )) {
50
+ $this->plugin_title = $options["plugin_title"];
51
+ }
52
+ if(isset( $options["plugin_wordpress_slug"] )) {
53
+ $this->plugin_wordpress_slug = $options["plugin_wordpress_slug"];
54
+ }
55
+ if(isset( $options["plugin_dir"] )) {
56
+ $this->plugin_dir = $options["plugin_dir"];
57
+ }
58
+ if(isset( $options["plugin_main_file"] )) {
59
+ $this->plugin_main_file = $options["plugin_main_file"];
60
+ }
61
+
62
+ if(isset( $options["description"] )) {
63
+ $this->description = $options["description"];
64
+ }
65
+ if(isset( $options["plugin_features"] )) {
66
+ $this->plugin_features = $options["plugin_features"];
67
+ }
68
+ if(isset( $options["user_guide"] )) {
69
+ $this->user_guide = $options["user_guide"];
70
+ }
71
+ if(isset( $options["video_youtube_id"] )) {
72
+ $this->video_youtube_id = $options["video_youtube_id"];
73
+ }
74
+ if(isset( $options["overview_welcome_image"] )) {
75
+ $this->overview_welcome_image = $options["overview_welcome_image"];
76
+ }
77
+ if(isset( $options["plugin_wd_url"] )) {
78
+ $this->plugin_wd_url = $options["plugin_wd_url"];
79
+ }
80
+ if(isset( $options["plugin_wd_demo_link"] )) {
81
+ $this->plugin_wd_demo_link = $options["plugin_wd_demo_link"];
82
+ }
83
+ if(isset( $options["plugin_wd_addons_link"] )) {
84
+ $this->plugin_wd_addons_link = $options["plugin_wd_addons_link"];
85
+ }
86
+ if(isset( $options["plugin_wizard_link"] )) {
87
+ $this->plugin_wizard_link = $options["plugin_wizard_link"];
88
+ }
89
+ if(isset( $options["after_subscribe"] )) {
90
+ $this->after_subscribe = $options["after_subscribe"];
91
+ }
92
+ if(isset( $options["plugin_menu_title"] )) {
93
+ $this->plugin_menu_title = $options["plugin_menu_title"];
94
+ }
95
+ if(isset( $options["plugin_menu_icon"] )) {
96
+ $this->plugin_menu_icon = $options["plugin_menu_icon"];
97
+ }
98
+ if(isset( $options["deactivate"] )) {
99
+ $this->deactivate = $options["deactivate"];
100
+ }
101
+ if(isset( $options["subscribe"] )) {
102
+ $this->subscribe = $options["subscribe"];
103
+ }
104
+ if(isset( $options["custom_post"] )) {
105
+ $this->custom_post = $options["custom_post"];
106
+ }
107
+ if(isset( $options["menu_capability"] )) {
108
+ $this->menu_capability = $options["menu_capability"];
109
+ }
110
+ if(isset( $options["menu_position"] )) {
111
+ $this->menu_position = $options["menu_position"];
112
+ }
113
+ if(isset( $options["start_using_url"] )) {
114
+ $this->start_using_url = $options["start_using_url"];
115
+ }
116
+
117
+ // directories
118
+ $this->wd_dir = dirname( $this->plugin_main_file ) . '/wd';
119
+ $this->wd_dir_includes = $this->wd_dir . '/includes';
120
+ $this->wd_dir_templates = $this->wd_dir . '/templates';
121
+ $this->wd_dir_assets = $this->wd_dir . '/assets';
122
+ $this->wd_url_css = plugins_url( plugin_basename( $this->wd_dir ) ) . '/assets/css';
123
+ $this->wd_url_js = plugins_url( plugin_basename( $this->wd_dir ) ) . '/assets/js';
124
+ $this->wd_url_img = plugins_url( plugin_basename( $this->wd_dir ) ) . '/assets/img';
125
+ }
126
+
127
+
128
+ }
129
+
130
+
131
+
wd/includes/api.php CHANGED
@@ -1,81 +1,81 @@
1
- <?php
2
- if ( !defined( 'ABSPATH' ) ) {
3
- exit;
4
- }
5
-
6
- class DoradoWebApi{
7
- ////////////////////////////////////////////////////////////////////////////////////////
8
- // Events //
9
- ////////////////////////////////////////////////////////////////////////////////////////
10
- ////////////////////////////////////////////////////////////////////////////////////////
11
- // Constants //
12
- ////////////////////////////////////////////////////////////////////////////////////////
13
- ////////////////////////////////////////////////////////////////////////////////////////
14
- // Variables //
15
- ////////////////////////////////////////////////////////////////////////////////////////
16
-
17
- public $config ;
18
- public $userhash = array();
19
-
20
-
21
- ////////////////////////////////////////////////////////////////////////////////////////
22
- // Constructor & Destructor //
23
- ////////////////////////////////////////////////////////////////////////////////////////
24
- public function __construct( $config = array() ) {
25
- $this->config = $config;
26
- $this->userhash = $this->get_userhash();
27
- }
28
- ////////////////////////////////////////////////////////////////////////////////////////
29
- // Public Methods //
30
- ////////////////////////////////////////////////////////////////////////////////////////
31
-
32
-
33
- public function get_remote_data( $id ) {
34
- $remote_data_path = DORADO_WEB_API_PLUGIN_DATA_PATH . '/' . $this->userhash;
35
- $request = wp_remote_get( ( str_replace( '_id_', $id, $remote_data_path ) ) );
36
-
37
- if ( !is_wp_error($request) || wp_remote_retrieve_response_code($request) === 200 ) {
38
- return json_decode($request['body'], true);
39
- }
40
- return false;
41
- }
42
-
43
-
44
- public function get_userhash(){
45
- $wd_options = $this->config;
46
- $userhash = 'nohash';
47
- if ( file_exists( $wd_options->plugin_dir . '/.keep') && is_readable( $wd_options->plugin_dir . '/.keep' ) ) {
48
- $f = fopen( $wd_options->plugin_dir . '/.keep', 'r' );
49
- $userhash = fgets( $f );
50
- fclose( $f );
51
- }
52
- return $userhash;
53
- }
54
-
55
- public function get_hash(){
56
- $response = wp_remote_get("https://api.web-dorado.com/hash/" . $_SERVER['REMOTE_ADDR'] . "/" . $_SERVER['HTTP_HOST']);
57
-
58
- $response_body = ( !is_wp_error($response) && isset($response["body"])) ? json_decode($response["body"], true) : null;
59
-
60
- if(is_array($response_body)){
61
- $hash = $response_body["body"]["hash"];
62
- }
63
- else{
64
- $hash = null;
65
- }
66
-
67
- return $hash;
68
- }
69
-
70
-
71
- ////////////////////////////////////////////////////////////////////////////////////////
72
- // Getters & Setters //
73
- ////////////////////////////////////////////////////////////////////////////////////////
74
- ////////////////////////////////////////////////////////////////////////////////////////
75
- // Private Methods //
76
- ////////////////////////////////////////////////////////////////////////////////////////
77
- ////////////////////////////////////////////////////////////////////////////////////////
78
- // Listeners //
79
- ////////////////////////////////////////////////////////////////////////////////////////
80
-
81
  }
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+
6
+ class DoradoWebApi{
7
+ ////////////////////////////////////////////////////////////////////////////////////////
8
+ // Events //
9
+ ////////////////////////////////////////////////////////////////////////////////////////
10
+ ////////////////////////////////////////////////////////////////////////////////////////
11
+ // Constants //
12
+ ////////////////////////////////////////////////////////////////////////////////////////
13
+ ////////////////////////////////////////////////////////////////////////////////////////
14
+ // Variables //
15
+ ////////////////////////////////////////////////////////////////////////////////////////
16
+
17
+ public $config ;
18
+ public $userhash = array();
19
+
20
+
21
+ ////////////////////////////////////////////////////////////////////////////////////////
22
+ // Constructor & Destructor //
23
+ ////////////////////////////////////////////////////////////////////////////////////////
24
+ public function __construct( $config = array() ) {
25
+ $this->config = $config;
26
+ $this->userhash = $this->get_userhash();
27
+ }
28
+ ////////////////////////////////////////////////////////////////////////////////////////
29
+ // Public Methods //
30
+ ////////////////////////////////////////////////////////////////////////////////////////
31
+
32
+
33
+ public function get_remote_data( $id ) {
34
+ $remote_data_path = DORADO_WEB_API_PLUGIN_DATA_PATH . '/' . $this->userhash;
35
+ $request = wp_remote_get( ( str_replace( '_id_', $id, $remote_data_path ) ) );
36
+
37
+ if ( !is_wp_error($request) || wp_remote_retrieve_response_code($request) === 200 ) {
38
+ return json_decode($request['body'], true);
39
+ }
40
+ return false;
41
+ }
42
+
43
+
44
+ public function get_userhash(){
45
+ $wd_options = $this->config;
46
+ $userhash = 'nohash';
47
+ if ( file_exists( $wd_options->plugin_dir . '/.keep') && is_readable( $wd_options->plugin_dir . '/.keep' ) ) {
48
+ $f = fopen( $wd_options->plugin_dir . '/.keep', 'r' );
49
+ $userhash = fgets( $f );
50
+ fclose( $f );
51
+ }
52
+ return $userhash;
53
+ }
54
+
55
+ public function get_hash(){
56
+ $response = wp_remote_get("https://api.web-dorado.com/hash/" . $_SERVER['REMOTE_ADDR'] . "/" . $_SERVER['HTTP_HOST']);
57
+
58
+ $response_body = ( !is_wp_error($response) && isset($response["body"])) ? json_decode($response["body"], true) : null;
59
+
60
+ if(is_array($response_body)){
61
+ $hash = $response_body["body"]["hash"];
62
+ }
63
+ else{
64
+ $hash = null;
65
+ }
66
+
67
+ return $hash;
68
+ }
69
+
70
+
71
+ ////////////////////////////////////////////////////////////////////////////////////////
72
+ // Getters & Setters //
73
+ ////////////////////////////////////////////////////////////////////////////////////////
74
+ ////////////////////////////////////////////////////////////////////////////////////////
75
+ // Private Methods //
76
+ ////////////////////////////////////////////////////////////////////////////////////////
77
+ ////////////////////////////////////////////////////////////////////////////////////////
78
+ // Listeners //
79
+ ////////////////////////////////////////////////////////////////////////////////////////
80
+
81
  }
wd/includes/deactivate.php CHANGED
@@ -1,179 +1,179 @@
1
- <?php
2
- if ( ! defined( 'ABSPATH' ) ) {
3
- exit;
4
- }
5
-
6
- class DoradoWebDeactivate{
7
- ////////////////////////////////////////////////////////////////////////////////////////
8
- // Events //
9
- ////////////////////////////////////////////////////////////////////////////////////////
10
- ////////////////////////////////////////////////////////////////////////////////////////
11
- // Constants //
12
- ////////////////////////////////////////////////////////////////////////////////////////
13
- ////////////////////////////////////////////////////////////////////////////////////////
14
- // Variables //
15
- ////////////////////////////////////////////////////////////////////////////////////////
16
- public $deactivate_reasons = array();
17
- public $config;
18
- // Reason IDs
19
- const REASON_PLUGIN_IS_HARD_TO_USE_TECHNICAL_PROBLEMS = "reason_plugin_is_hard_to_use_technical_problems";
20
- const REASON_FREE_VERSION_IS_LIMITED = "reason_free_version_limited";
21
- const REASON_PRO_EXPENSIVE = "reason_premium_expensive";
22
- const REASON_UPGRADING_TO_PAID_VERSION = "reason_upgrading_to_paid_version";
23
- const REASON_TEMPORARY_DEACTIVATION = "reason_temporary_deactivation";
24
-
25
- ////////////////////////////////////////////////////////////////////////////////////////
26
- // Constructor & Destructor //
27
- ////////////////////////////////////////////////////////////////////////////////////////
28
- public function __construct( $config = array() ) {
29
- $this->config = $config;
30
- $wd_options = $this->config;
31
-
32
- $this->deactivate_reasons = array(
33
- 1 => array(
34
- 'id' => self::REASON_PLUGIN_IS_HARD_TO_USE_TECHNICAL_PROBLEMS,
35
- 'text' => __( 'Technical problems / hard to use', $wd_options->prefix ),
36
- ),
37
- 2 => array(
38
- 'id' => self::REASON_FREE_VERSION_IS_LIMITED,
39
- 'text' => __( 'Free version is limited', $wd_options->prefix ),
40
- ),
41
- 3 => array(
42
- 'id' => self::REASON_PRO_EXPENSIVE,
43
- 'text' => __( 'Premium is expensive', $wd_options->prefix ),
44
- ),
45
- 4 => array(
46
- 'id' => self::REASON_UPGRADING_TO_PAID_VERSION,
47
- 'text' => __( 'Upgrading to paid version', $wd_options->prefix ),
48
- ),
49
- 5 => array(
50
- 'id' => self::REASON_TEMPORARY_DEACTIVATION,
51
- 'text' => __( 'Temporary deactivation', $wd_options->prefix ),
52
- ),
53
- );
54
-
55
- add_action( 'admin_footer', array( $this, 'add_deactivation_feedback_dialog_box' ) );
56
- add_action( 'admin_init', array( $this, 'submit_and_deactivate' ) );
57
-
58
-
59
- add_action( 'admin_enqueue_scripts', array( $this, 'scripts' ) );
60
-
61
-
62
-
63
-
64
- }
65
- ////////////////////////////////////////////////////////////////////////////////////////
66
- // Public Methods //
67
- ////////////////////////////////////////////////////////////////////////////////////////
68
- public function add_deactivation_feedback_dialog_box(){
69
- $deactivate_reasons = $this->deactivate_reasons;
70
- $wd_options = $this->config;
71
-
72
- ?>
73
- <script>
74
- jQuery(document).ready(function () {
75
- wdReady("<?php echo $wd_options->prefix; ?>");
76
- });
77
- </script>
78
- <?php
79
-
80
- $deactivate_url =
81
- add_query_arg(
82
- array(
83
- 'action' => 'deactivate',
84
- 'plugin' => plugin_basename( $wd_options->plugin_main_file ),
85
- '_wpnonce' => wp_create_nonce( 'deactivate-plugin_' . plugin_basename( $wd_options->plugin_main_file ) )
86
- ),
87
- admin_url( 'plugins.php' )
88
- );
89
-
90
- require ( $wd_options->wd_dir_templates . '/display_deactivation_popup.php' );
91
- }
92
-
93
-
94
-
95
- public function scripts(){
96
- $wd_options = $this->config;
97
- wp_enqueue_style( 'wd-deactivate-popup', $wd_options->wd_url_css . '/deactivate_popup.css', array(), get_option($wd_options->prefix . "_version" ) );
98
- wp_enqueue_script( 'wd-deactivate-popup', $wd_options->wd_url_js . '/deactivate_popup.js', array(), get_option($wd_options->prefix . "_version" ));
99
-
100
- $admin_data = wp_get_current_user();
101
- wp_localize_script( 'wd-deactivate-popup', $wd_options->prefix . 'WDDeactivateVars' , array(
102
- "prefix" => $wd_options->prefix ,
103
- "deactivate_class" => $wd_options->prefix . '_deactivate_link',
104
- "email" => $admin_data->data->user_email,
105
- "plugin_wd_url" => $wd_options->plugin_wd_url,
106
- ));
107
-
108
-
109
- }
110
- public function submit_and_deactivate(){
111
- $wd_options = $this->config;
112
- if( isset( $_POST[$wd_options->prefix . "_submit_and_deactivate"] ) ){
113
-
114
- if( $_POST[$wd_options->prefix . "_submit_and_deactivate"] == 2 || $_POST[$wd_options->prefix . "_submit_and_deactivate"] == 3 ){
115
- $api = new DoradoWebApi( $wd_options );
116
- $hash = $api->get_hash();
117
- if($hash != null){
118
- $data = array();
119
-
120
- $data["reason"] = isset($_POST[$wd_options->prefix . "_reasons"]) ? $_POST[$wd_options->prefix . "_reasons"] : "";
121
- $data["site_url"] = site_url();
122
- $data["plugin_id"] = $wd_options->wd_plugin_id;
123
-
124
- $data["additional_details"] = isset($_POST[$wd_options->prefix . "_additional_details"]) ? $_POST[$wd_options->prefix . "_additional_details"] : "";
125
- $admin_data = wp_get_current_user();
126
- $data["email"] = isset($_POST[$wd_options->prefix . "_email"]) ? $_POST[$wd_options->prefix . "_email"] : $admin_data->data->user_email;
127
- $user_first_name = get_user_meta( $admin_data->ID, "first_name", true );
128
- $user_last_name = get_user_meta( $admin_data->ID, "last_name", true );
129
-
130
- $data["name"] = $user_first_name || $user_last_name ? $user_first_name . " " . $user_last_name : $admin_data->data->user_login;
131
- $data["hash"] = $hash;
132
- $response = wp_remote_post( "https://api.web-dorado.com/deactivatereasons", array(
133
- 'method' => 'POST',
134
- 'timeout' => 45,
135
- 'redirection' => 5,
136
- 'httpversion' => '1.0',
137
- 'blocking' => true,
138
- 'headers' => array(),
139
- 'body' => json_encode($data),
140
- 'cookies' => array()
141
- )
142
- );
143
-
144
- $response_body = (!is_wp_error($response) && isset( $response["body"] )) ? json_decode( $response["body"], true ) : null;
145
- if( is_array( $response_body ) && $response_body["body"]["msg"] == "Access" ) {
146
-
147
- }
148
- }
149
- }
150
- if($_POST[$wd_options->prefix . "_submit_and_deactivate"] == 2 || $_POST[$wd_options->prefix . "_submit_and_deactivate"] == 1 ){
151
- $deactivate_url =
152
- add_query_arg(
153
- array(
154
- 'action' => 'deactivate',
155
- 'plugin' => plugin_basename( $wd_options->plugin_main_file ),
156
- '_wpnonce' => wp_create_nonce( 'deactivate-plugin_' . plugin_basename( $wd_options->plugin_main_file ) )
157
- ),
158
- admin_url( 'plugins.php' )
159
- );
160
- echo '<script>window.location.href="' . $deactivate_url . '";</script>';
161
- }
162
-
163
- }
164
- }
165
-
166
- ////////////////////////////////////////////////////////////////////////////////////////
167
- // Getters & Setters //
168
- ////////////////////////////////////////////////////////////////////////////////////////
169
- ////////////////////////////////////////////////////////////////////////////////////////
170
- // Private Methods //
171
- ////////////////////////////////////////////////////////////////////////////////////////
172
-
173
- ////////////////////////////////////////////////////////////////////////////////////////
174
- // Listeners //
175
- ////////////////////////////////////////////////////////////////////////////////////////
176
-
177
- }
178
-
179
-
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+
6
+ class DoradoWebDeactivate{
7
+ ////////////////////////////////////////////////////////////////////////////////////////
8
+ // Events //
9
+ ////////////////////////////////////////////////////////////////////////////////////////
10
+ ////////////////////////////////////////////////////////////////////////////////////////
11
+ // Constants //
12
+ ////////////////////////////////////////////////////////////////////////////////////////
13
+ ////////////////////////////////////////////////////////////////////////////////////////
14
+ // Variables //
15
+ ////////////////////////////////////////////////////////////////////////////////////////
16
+ public $deactivate_reasons = array();
17
+ public $config;
18
+ // Reason IDs
19
+ const REASON_PLUGIN_IS_HARD_TO_USE_TECHNICAL_PROBLEMS = "reason_plugin_is_hard_to_use_technical_problems";
20
+ const REASON_FREE_VERSION_IS_LIMITED = "reason_free_version_limited";
21
+ const REASON_PRO_EXPENSIVE = "reason_premium_expensive";
22
+ const REASON_UPGRADING_TO_PAID_VERSION = "reason_upgrading_to_paid_version";
23
+ const REASON_TEMPORARY_DEACTIVATION = "reason_temporary_deactivation";
24
+
25
+ ////////////////////////////////////////////////////////////////////////////////////////
26
+ // Constructor & Destructor //
27
+ ////////////////////////////////////////////////////////////////////////////////////////
28
+ public function __construct( $config = array() ) {
29
+ $this->config = $config;
30
+ $wd_options = $this->config;
31
+
32
+ $this->deactivate_reasons = array(
33
+ 1 => array(
34
+ 'id' => self::REASON_PLUGIN_IS_HARD_TO_USE_TECHNICAL_PROBLEMS,
35
+ 'text' => __( 'Technical problems / hard to use', $wd_options->prefix ),
36
+ ),
37
+ 2 => array(
38
+ 'id' => self::REASON_FREE_VERSION_IS_LIMITED,
39
+ 'text' => __( 'Free version is limited', $wd_options->prefix ),
40
+ ),
41
+ 3 => array(
42
+ 'id' => self::REASON_PRO_EXPENSIVE,
43
+ 'text' => __( 'Premium is expensive', $wd_options->prefix ),
44
+ ),
45
+ 4 => array(
46
+ 'id' => self::REASON_UPGRADING_TO_PAID_VERSION,
47
+ 'text' => __( 'Upgrading to paid version', $wd_options->prefix ),
48
+ ),
49
+ 5 => array(
50
+ 'id' => self::REASON_TEMPORARY_DEACTIVATION,
51
+ 'text' => __( 'Temporary deactivation', $wd_options->prefix ),
52
+ ),
53
+ );
54
+
55
+ add_action( 'admin_footer', array( $this, 'add_deactivation_feedback_dialog_box' ) );
56
+ add_action( 'admin_init', array( $this, 'submit_and_deactivate' ) );
57
+
58
+
59
+ add_action( 'admin_enqueue_scripts', array( $this, 'scripts' ) );
60
+
61
+
62
+
63
+
64
+ }
65
+ ////////////////////////////////////////////////////////////////////////////////////////
66
+ // Public Methods //
67
+ ////////////////////////////////////////////////////////////////////////////////////////
68
+ public function add_deactivation_feedback_dialog_box(){
69
+ $deactivate_reasons = $this->deactivate_reasons;
70
+ $wd_options = $this->config;
71
+
72
+ ?>
73
+ <script>
74
+ jQuery(document).ready(function () {
75
+ wdReady("<?php echo $wd_options->prefix; ?>");
76
+ });
77
+ </script>
78
+ <?php
79
+
80
+ $deactivate_url =
81
+ add_query_arg(
82
+ array(
83
+ 'action' => 'deactivate',
84
+ 'plugin' => plugin_basename( $wd_options->plugin_main_file ),
85
+ '_wpnonce' => wp_create_nonce( 'deactivate-plugin_' . plugin_basename( $wd_options->plugin_main_file ) )
86
+ ),
87
+ admin_url( 'plugins.php' )
88
+ );
89
+
90
+ require ( $wd_options->wd_dir_templates . '/display_deactivation_popup.php' );
91
+ }
92
+
93
+
94
+
95
+ public function scripts(){
96
+ $wd_options = $this->config;
97
+ wp_enqueue_style( 'wd-deactivate-popup', $wd_options->wd_url_css . '/deactivate_popup.css', array(), get_option($wd_options->prefix . "_version" ) );
98
+ wp_enqueue_script( 'wd-deactivate-popup', $wd_options->wd_url_js . '/deactivate_popup.js', array(), get_option($wd_options->prefix . "_version" ));
99
+
100
+ $admin_data = wp_get_current_user();
101
+ wp_localize_script( 'wd-deactivate-popup', $wd_options->prefix . 'WDDeactivateVars' , array(
102
+ "prefix" => $wd_options->prefix ,
103
+ "deactivate_class" => $wd_options->prefix . '_deactivate_link',
104
+ "email" => $admin_data->data->user_email,
105
+ "plugin_wd_url" => $wd_options->plugin_wd_url,
106
+ ));
107
+
108
+
109
+ }
110
+ public function submit_and_deactivate(){
111
+ $wd_options = $this->config;
112
+ if( isset( $_POST[$wd_options->prefix . "_submit_and_deactivate"] ) ){
113
+
114
+ if( $_POST[$wd_options->prefix . "_submit_and_deactivate"] == 2 || $_POST[$wd_options->prefix . "_submit_and_deactivate"] == 3 ){
115
+ $api = new DoradoWebApi( $wd_options );
116
+ $hash = $api->get_hash();
117
+ if($hash != null){
118
+ $data = array();
119
+
120
+ $data["reason"] = isset($_POST[$wd_options->prefix . "_reasons"]) ? $_POST[$wd_options->prefix . "_reasons"] : "";
121
+ $data["site_url"] = site_url();
122
+ $data["plugin_id"] = $wd_options->wd_plugin_id;
123
+
124
+ $data["additional_details"] = isset($_POST[$wd_options->prefix . "_additional_details"]) ? $_POST[$wd_options->prefix . "_additional_details"] : "";
125
+ $admin_data = wp_get_current_user();
126
+ $data["email"] = isset($_POST[$wd_options->prefix . "_email"]) ? $_POST[$wd_options->prefix . "_email"] : $admin_data->data->user_email;
127
+ $user_first_name = get_user_meta( $admin_data->ID, "first_name", true );
128
+ $user_last_name = get_user_meta( $admin_data->ID, "last_name", true );
129
+
130
+ $data["name"] = $user_first_name || $user_last_name ? $user_first_name . " " . $user_last_name : $admin_data->data->user_login;
131
+ $data["hash"] = $hash;
132
+ $response = wp_remote_post( "https://api.web-dorado.com/deactivatereasons", array(
133
+ 'method' => 'POST',
134
+ 'timeout' => 45,
135
+ 'redirection' => 5,
136
+ 'httpversion' => '1.0',
137
+ 'blocking' => true,
138
+ 'headers' => array(),
139
+ 'body' => json_encode($data),
140
+ 'cookies' => array()
141
+ )
142
+ );
143
+
144
+ $response_body = (!is_wp_error($response) && isset( $response["body"] )) ? json_decode( $response["body"], true ) : null;
145
+ if( is_array( $response_body ) && $response_body["body"]["msg"] == "Access" ) {
146
+
147
+ }
148
+ }
149
+ }
150
+ if($_POST[$wd_options->prefix . "_submit_and_deactivate"] == 2 || $_POST[$wd_options->prefix . "_submit_and_deactivate"] == 1 ){
151
+ $deactivate_url =
152
+ add_query_arg(
153
+ array(
154
+ 'action' => 'deactivate',
155
+ 'plugin' => plugin_basename( $wd_options->plugin_main_file ),
156
+ '_wpnonce' => wp_create_nonce( 'deactivate-plugin_' . plugin_basename( $wd_options->plugin_main_file ) )
157
+ ),
158
+ admin_url( 'plugins.php' )
159
+ );
160
+ echo '<script>window.location.href="' . $deactivate_url . '";</script>';
161
+ }
162
+
163
+ }
164
+ }
165
+
166
+ ////////////////////////////////////////////////////////////////////////////////////////
167
+ // Getters & Setters //
168
+ ////////////////////////////////////////////////////////////////////////////////////////
169
+ ////////////////////////////////////////////////////////////////////////////////////////
170
+ // Private Methods //
171
+ ////////////////////////////////////////////////////////////////////////////////////////
172
+
173
+ ////////////////////////////////////////////////////////////////////////////////////////
174
+ // Listeners //
175
+ ////////////////////////////////////////////////////////////////////////////////////////
176
+
177
+ }
178
+
179
+
wd/includes/notices.php CHANGED
@@ -1,223 +1,223 @@
1
- <?php
2
- if ( !defined( 'ABSPATH' ) ) {
3
- exit;
4
- }
5
-
6
- class DoradoWebNotices {
7
-
8
- protected $promo_link = '';
9
-
10
- public $config;
11
- public $notice_spam = 0;
12
- public $notice_spam_max = 2;
13
-
14
- // Basic actions to run
15
- public function __construct( $config = array() ) {
16
- $this->config = $config;
17
- // Runs the admin notice ignore function incase a dismiss button has been clicked
18
- add_action( 'admin_init', array( $this, 'admin_notice_ignore' ) );
19
- // Runs the admin notice temp ignore function incase a temp dismiss link has been clicked
20
- add_action( 'admin_init', array( $this, 'admin_notice_temp_ignore' ) );
21
- add_action( 'admin_notices', array( $this, 'wd_admin_notices' ) );
22
- }
23
-
24
- // Checks to ensure notices aren't disabled and the user has the correct permissions.
25
- public function wd_admin_notice() {
26
- $wd_options = $this->config;
27
- $settings = get_option($wd_options->prefix . '_admin_notice');
28
- if ( !isset( $settings['disable_admin_notices'] ) || ( isset( $settings['disable_admin_notices'] ) && $settings['disable_admin_notices'] == 0 ) ) {
29
- if ( current_user_can( 'manage_options' ) ) {
30
- return true;
31
- }
32
- }
33
- return false;
34
- }
35
-
36
- // Primary notice function that can be called from an outside function sending necessary variables
37
- public function admin_notice( $admin_notices ) {
38
- $wd_options = $this->config;
39
- // Check options
40
- if ( !$this->wd_admin_notice() ) {
41
- return false;
42
- }
43
- foreach ( $admin_notices as $slug => $admin_notice ) {
44
- // Call for spam protection
45
- if ( $this->anti_notice_spam() ) {
46
- return false;
47
- }
48
-
49
- // Check for proper page to display on
50
- if (isset( $admin_notices[$slug]['pages']) && is_array( $admin_notices[$slug]['pages'])) {
51
- if ( !$this->admin_notice_pages( $admin_notices[$slug]['pages'] ) ) {
52
- return false;
53
- }
54
- }
55
-
56
- // Check for required fields
57
- if ( !$this->required_fields( $admin_notices[$slug] ) ) {
58
-
59
- // Get the current date then set start date to either passed value or current date value and add interval
60
- $current_date = current_time( "n/j/Y" );
61
- $start = ( isset( $admin_notices[$slug]['start'] ) ? $admin_notices[$slug]['start'] : $current_date );
62
- $start = date( "n/j/Y", strtotime( $start ) );
63
- $date_array = explode( '/', $start );
64
- $interval = ( isset( $admin_notices[$slug]['int'] ) ? $admin_notices[$slug]['int'] : 0 );
65
-
66
- $date_array[1] += $interval;
67
- $start = date( "n/j/Y", mktime( 0, 0, 0, $date_array[0], $date_array[1], $date_array[2] ) );
68
-
69
- // This is the main notices storage option
70
- $admin_notices_option = get_option( $wd_options->prefix . '_admin_notice', array() );
71
- // Check if the message is already stored and if so just grab the key otherwise store the message and its associated date information
72
- if ( !array_key_exists( $slug, $admin_notices_option ) ) {
73
- $admin_notices_option[$slug]['start'] = $start;
74
- $admin_notices_option[$slug]['int'] = $interval;
75
- update_option( $wd_options->prefix . '_admin_notice', $admin_notices_option );
76
- }
77
-
78
- // Sanity check to ensure we have accurate information
79
- // New date information will not overwrite old date information
80
- $admin_display_check = ( isset( $admin_notices_option[$slug]['dismissed'] ) ? $admin_notices_option[$slug]['dismissed'] : 0 );
81
- $admin_display_start = ( isset( $admin_notices_option[$slug]['start'] ) ? $admin_notices_option[$slug]['start'] : $start );
82
- $admin_display_interval = ( isset($admin_notices_option[$slug]['int'] ) ? $admin_notices_option[$slug]['int'] : $interval );
83
- $admin_display_msg = ( isset($admin_notices[$slug]['msg'] ) ? $admin_notices[$slug]['msg'] : '' );
84
- $admin_display_title = ( isset($admin_notices[$slug]['title'] ) ? $admin_notices[$slug]['title'] : '' );
85
- $admin_display_link = ( isset( $admin_notices[$slug]['link'] ) ? $admin_notices[$slug]['link'] : '' );
86
- $output_css = false;
87
-
88
- // Ensure the notice hasn't been hidden and that the current date is after the start date
89
- if ( $admin_display_check == 0 && strtotime($admin_display_start) <= strtotime($current_date ) ) {
90
-
91
- // Get remaining query string
92
- $query_str = ( isset( $admin_notices[$slug]['later_link'] ) ? $admin_notices[$slug]['later_link'] : esc_url(add_query_arg( $wd_options->prefix . '_admin_notice_ignore', $slug ) ) );
93
- if ( strpos($slug, 'promo' ) === FALSE ) {
94
- // Admin notice display output
95
- echo '<div class="update-nag wd-admin-notice">
96
- <div class="wd-notice-logo" style="background-image: url(' . $wd_options->wd_url_img . '/' . $wd_options->prefix . '_main_plugin.png);"></div>
97
- <p class="wd-notice-title">' . $admin_display_title . '</p>
98
- <p class="wd-notice-body">' . $admin_display_msg . '</p>
99
- <ul class="wd-notice-body wd-blue">' . $admin_display_link . '</ul>
100
- <a href="' . $query_str . '" class="dashicons dashicons-dismiss"></a>
101
- </div>';
102
- }
103
- else {
104
- echo '<div class="admin-notice-promo">';
105
- echo $admin_display_msg;
106
- echo '<ul class="notice-body-promo blue">
107
- ' . $admin_display_link . '
108
- </ul>';
109
- echo '<a href="' . $query_str . '" class="dashicons dashicons-dismiss close-promo"></a>';
110
- echo '</div>';
111
- }
112
- $this->notice_spam += 1;
113
- $output_css = true;
114
- }
115
- if ( $output_css ) {
116
- wp_enqueue_style( $wd_options->prefix . '-admin-notices', $wd_options->wd_url_css . '/notices.css', array(), get_option($wd_options->prefix . "_version" ) );
117
- }
118
- }
119
- }
120
- }
121
-
122
- // Spam protection check
123
- public function anti_notice_spam() {
124
- if ( $this->notice_spam >= $this->notice_spam_max ) {
125
- return true;
126
- }
127
- return false;
128
- }
129
-
130
- // Ignore function that gets ran at admin init to ensure any messages that were dismissed get marked
131
- public function admin_notice_ignore() {
132
- $wd_options = $this->config;
133
- // If user clicks to ignore the notice, update the option to not show it again
134
- if ( isset( $_GET[$wd_options->prefix . '_admin_notice_ignore'] ) ) {
135
- $admin_notices_option = get_option( $wd_options->prefix . '_admin_notice', array() );
136
- $admin_notices_option[$_GET[$wd_options->prefix . '_admin_notice_ignore']]['dismissed'] = 1;
137
- update_option( $wd_options->prefix . '_admin_notice', $admin_notices_option );
138
- $query_str = remove_query_arg( $wd_options->prefix . '_admin_notice_ignore' );
139
- wp_redirect( $query_str );
140
- exit;
141
- }
142
- }
143
-
144
- // Temp Ignore function that gets ran at admin init to ensure any messages that were temp dismissed get their start date changed
145
- public function admin_notice_temp_ignore() {
146
- $wd_options = $this->config;
147
- // If user clicks to temp ignore the notice, update the option to change the start date - default interval of 14 days
148
- if ( isset( $_GET[$wd_options->prefix . '_admin_notice_temp_ignore'] ) ) {
149
- $admin_notices_option = get_option( $wd_options->prefix . '_admin_notice', array() );
150
- $current_date = current_time( "n/j/Y" );
151
- $date_array = explode( '/', $current_date );
152
- $interval = (isset($_GET['wd_int']) ? $_GET['wd_int'] : 14);
153
- $date_array[1] += $interval;
154
- $new_start = date( "n/j/Y", mktime( 0, 0, 0, $date_array[0], $date_array[1], $date_array[2] ) );
155
-
156
- $admin_notices_option[$_GET[$wd_options->prefix . '_admin_notice_temp_ignore']]['start'] = $new_start;
157
- $admin_notices_option[$_GET[$wd_options->prefix . '_admin_notice_temp_ignore']]['dismissed'] = 0;
158
- update_option( $wd_options->prefix . '_admin_notice', $admin_notices_option );
159
- $query_str = remove_query_arg( array( $wd_options->prefix . '_admin_notice_temp_ignore', 'wd_int' ) );
160
- wp_redirect( $query_str );
161
- exit;
162
- }
163
- }
164
-
165
- public function admin_notice_pages($pages) {
166
- $wd_options = $this->config;
167
- foreach ( $pages as $key => $page ) {
168
- if (is_array($page)) {
169
- if ( isset( $_GET['page'] ) && $_GET['page'] == $page[0] && isset($_GET['tab']) && $_GET['tab'] == $page[1] ) {
170
- return true;
171
- }
172
- }
173
- else {
174
- if ( $page == 'all' ) {
175
- return true;
176
- }
177
- if ( get_current_screen()->id === $page ) {
178
- return true;
179
- }
180
- if ( isset($_GET['page']) && $_GET['page'] == $page ) {
181
- return true;
182
- }
183
- }
184
- return false;
185
- }
186
- }
187
-
188
- // Required fields check
189
- public function required_fields( $fields ) {
190
- if ( !isset( $fields['msg'] ) || ( isset($fields['msg'] ) && empty( $fields['msg'] ) ) ) {
191
- return true;
192
- }
193
- if ( !isset( $fields['title'] ) || ( isset( $fields['title'] ) && empty( $fields['title'] ) ) ) {
194
- return true;
195
- }
196
- return false;
197
- }
198
-
199
- // Special parameters function that is to be used in any extension of this class
200
- public function special_parameters($admin_notices) {
201
- // Intentionally left blank
202
- }
203
-
204
- public function wd_admin_notices() {
205
- $wd_options = $this->config;
206
- $two_week_review_ignore = add_query_arg( array( $wd_options->prefix . '_admin_notice_ignore' => 'two_week_review' ) );
207
- $two_week_review_temp = add_query_arg( array( $wd_options->prefix . '_admin_notice_temp_ignore' => 'two_week_review', 'int' => 14 ) );
208
- $promo_close = add_query_arg( array( $wd_options->prefix . '_admin_notice_ignore' => 'ecommerce_promo' ) );
209
-
210
- $notices['two_week_review'] = array(
211
- 'title' => __('Leave A Review?', $wd_options->prefix),
212
- 'msg' => sprintf(__('We hope you\'ve enjoyed using WordPress %s! Would you consider leaving us a review on WordPress.org?', $wd_options->prefix), $wd_options->plugin_title),
213
- 'link' => '<li><span class="dashicons dashicons-external"></span><a href="https://wordpress.org/support/plugin/' . $wd_options->plugin_wordpress_slug . '/reviews?filter=5&rate=5#new-post" target="_blank">' . __('Sure! I\'d love to!', $wd_options->prefix) . '</a></li>
214
- <li><span class="dashicons dashicons-smiley"></span><a href="' . $two_week_review_ignore . '"> ' . __('I\'ve already left a review', $wd_options->prefix) . '</a></li>
215
- <li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $two_week_review_temp . '">' . __('Maybe Later', $wd_options->prefix) . '</a></li>
216
- <li><span class="dashicons dashicons-dismiss"></span><a href="' . $two_week_review_ignore . '">' . __('Never show again', $wd_options->prefix) . '</a></li>',
217
- 'later_link' => $two_week_review_temp,
218
- 'int' => 14
219
- );
220
-
221
- $this->admin_notice($notices);
222
- }
223
- }
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+
6
+ class DoradoWebNotices {
7
+
8
+ protected $promo_link = '';
9
+
10
+ public $config;
11
+ public $notice_spam = 0;
12
+ public $notice_spam_max = 2;
13
+
14
+ // Basic actions to run
15
+ public function __construct( $config = array() ) {
16
+ $this->config = $config;
17
+ // Runs the admin notice ignore function incase a dismiss button has been clicked
18
+ add_action( 'admin_init', array( $this, 'admin_notice_ignore' ) );
19
+ // Runs the admin notice temp ignore function incase a temp dismiss link has been clicked
20
+ add_action( 'admin_init', array( $this, 'admin_notice_temp_ignore' ) );
21
+ add_action( 'admin_notices', array( $this, 'wd_admin_notices' ) );
22
+ }
23
+
24
+ // Checks to ensure notices aren't disabled and the user has the correct permissions.
25
+ public function wd_admin_notice() {
26
+ $wd_options = $this->config;
27
+ $settings = get_option($wd_options->prefix . '_admin_notice');
28
+ if ( !isset( $settings['disable_admin_notices'] ) || ( isset( $settings['disable_admin_notices'] ) && $settings['disable_admin_notices'] == 0 ) ) {
29
+ if ( current_user_can( 'manage_options' ) ) {
30
+ return true;
31
+ }
32
+ }
33
+ return false;
34
+ }
35
+
36
+ // Primary notice function that can be called from an outside function sending necessary variables
37
+ public function admin_notice( $admin_notices ) {
38
+ $wd_options = $this->config;
39
+ // Check options
40
+ if ( !$this->wd_admin_notice() ) {
41
+ return false;
42
+ }
43
+ foreach ( $admin_notices as $slug => $admin_notice ) {
44
+ // Call for spam protection
45
+ if ( $this->anti_notice_spam() ) {
46
+ return false;
47
+ }
48
+
49
+ // Check for proper page to display on
50
+ if (isset( $admin_notices[$slug]['pages']) && is_array( $admin_notices[$slug]['pages'])) {
51
+ if ( !$this->admin_notice_pages( $admin_notices[$slug]['pages'] ) ) {
52
+ return false;
53
+ }
54
+ }
55
+
56
+ // Check for required fields
57
+ if ( !$this->required_fields( $admin_notices[$slug] ) ) {
58
+
59
+ // Get the current date then set start date to either passed value or current date value and add interval
60
+ $current_date = current_time( "n/j/Y" );
61
+ $start = ( isset( $admin_notices[$slug]['start'] ) ? $admin_notices[$slug]['start'] : $current_date );
62
+ $start = date( "n/j/Y", strtotime( $start ) );
63
+ $date_array = explode( '/', $start );
64
+ $interval = ( isset( $admin_notices[$slug]['int'] ) ? $admin_notices[$slug]['int'] : 0 );
65
+
66
+ $date_array[1] += $interval;
67
+ $start = date( "n/j/Y", mktime( 0, 0, 0, $date_array[0], $date_array[1], $date_array[2] ) );
68
+
69
+ // This is the main notices storage option
70
+ $admin_notices_option = get_option( $wd_options->prefix . '_admin_notice', array() );
71
+ // Check if the message is already stored and if so just grab the key otherwise store the message and its associated date information
72
+ if ( !array_key_exists( $slug, $admin_notices_option ) ) {
73
+ $admin_notices_option[$slug]['start'] = $start;
74
+ $admin_notices_option[$slug]['int'] = $interval;
75
+ update_option( $wd_options->prefix . '_admin_notice', $admin_notices_option );
76
+ }
77
+
78
+ // Sanity check to ensure we have accurate information
79
+ // New date information will not overwrite old date information
80
+ $admin_display_check = ( isset( $admin_notices_option[$slug]['dismissed'] ) ? $admin_notices_option[$slug]['dismissed'] : 0 );
81
+ $admin_display_start = ( isset( $admin_notices_option[$slug]['start'] ) ? $admin_notices_option[$slug]['start'] : $start );
82
+ $admin_display_interval = ( isset($admin_notices_option[$slug]['int'] ) ? $admin_notices_option[$slug]['int'] : $interval );
83
+ $admin_display_msg = ( isset($admin_notices[$slug]['msg'] ) ? $admin_notices[$slug]['msg'] : '' );
84
+ $admin_display_title = ( isset($admin_notices[$slug]['title'] ) ? $admin_notices[$slug]['title'] : '' );
85
+ $admin_display_link = ( isset( $admin_notices[$slug]['link'] ) ? $admin_notices[$slug]['link'] : '' );
86
+ $output_css = false;
87
+
88
+ // Ensure the notice hasn't been hidden and that the current date is after the start date
89
+ if ( $admin_display_check == 0 && strtotime($admin_display_start) <= strtotime($current_date ) ) {
90
+
91
+ // Get remaining query string
92
+ $query_str = ( isset( $admin_notices[$slug]['later_link'] ) ? $admin_notices[$slug]['later_link'] : esc_url(add_query_arg( $wd_options->prefix . '_admin_notice_ignore', $slug ) ) );
93
+ if ( strpos($slug, 'promo' ) === FALSE ) {
94
+ // Admin notice display output
95
+ echo '<div class="update-nag wd-admin-notice">
96
+ <div class="wd-notice-logo" style="background-image: url(' . $wd_options->wd_url_img . '/' . $wd_options->prefix . '_main_plugin.png);"></div>
97
+ <p class="wd-notice-title">' . $admin_display_title . '</p>
98
+ <p class="wd-notice-body">' . $admin_display_msg . '</p>
99
+ <ul class="wd-notice-body wd-blue">' . $admin_display_link . '</ul>
100
+ <a href="' . $query_str . '" class="dashicons dashicons-dismiss"></a>
101
+ </div>';
102
+ }
103
+ else {
104
+ echo '<div class="admin-notice-promo">';
105
+ echo $admin_display_msg;
106
+ echo '<ul class="notice-body-promo blue">
107
+ ' . $admin_display_link . '
108
+ </ul>';
109
+ echo '<a href="' . $query_str . '" class="dashicons dashicons-dismiss close-promo"></a>';
110
+ echo '</div>';
111
+ }
112
+ $this->notice_spam += 1;
113
+ $output_css = true;
114
+ }
115
+ if ( $output_css ) {
116
+ wp_enqueue_style( $wd_options->prefix . '-admin-notices', $wd_options->wd_url_css . '/notices.css', array(), get_option($wd_options->prefix . "_version" ) );
117
+ }
118
+ }
119
+ }
120
+ }
121
+
122
+ // Spam protection check
123
+ public function anti_notice_spam() {
124
+ if ( $this->notice_spam >= $this->notice_spam_max ) {
125
+ return true;
126
+ }
127
+ return false;
128
+ }
129
+
130
+ // Ignore function that gets ran at admin init to ensure any messages that were dismissed get marked
131
+ public function admin_notice_ignore() {
132
+ $wd_options = $this->config;
133
+ // If user clicks to ignore the notice, update the option to not show it again
134
+ if ( isset( $_GET[$wd_options->prefix . '_admin_notice_ignore'] ) ) {
135
+ $admin_notices_option = get_option( $wd_options->prefix . '_admin_notice', array() );
136
+ $admin_notices_option[$_GET[$wd_options->prefix . '_admin_notice_ignore']]['dismissed'] = 1;
137
+ update_option( $wd_options->prefix . '_admin_notice', $admin_notices_option );
138
+ $query_str = remove_query_arg( $wd_options->prefix . '_admin_notice_ignore' );
139
+ wp_redirect( $query_str );
140
+ exit;
141
+ }
142
+ }
143
+
144
+ // Temp Ignore function that gets ran at admin init to ensure any messages that were temp dismissed get their start date changed
145
+ public function admin_notice_temp_ignore() {
146
+ $wd_options = $this->config;
147
+ // If user clicks to temp ignore the notice, update the option to change the start date - default interval of 14 days
148
+ if ( isset( $_GET[$wd_options->prefix . '_admin_notice_temp_ignore'] ) ) {
149
+ $admin_notices_option = get_option( $wd_options->prefix . '_admin_notice', array() );
150
+ $current_date = current_time( "n/j/Y" );
151
+ $date_array = explode( '/', $current_date );
152
+ $interval = (isset($_GET['wd_int']) ? $_GET['wd_int'] : 14);
153
+ $date_array[1] += $interval;
154
+ $new_start = date( "n/j/Y", mktime( 0, 0, 0, $date_array[0], $date_array[1], $date_array[2] ) );
155
+
156
+ $admin_notices_option[$_GET[$wd_options->prefix . '_admin_notice_temp_ignore']]['start'] = $new_start;
157
+ $admin_notices_option[$_GET[$wd_options->prefix . '_admin_notice_temp_ignore']]['dismissed'] = 0;
158
+ update_option( $wd_options->prefix . '_admin_notice', $admin_notices_option );
159
+ $query_str = remove_query_arg( array( $wd_options->prefix . '_admin_notice_temp_ignore', 'wd_int' ) );
160
+ wp_redirect( $query_str );
161
+ exit;
162
+ }
163
+ }
164
+
165
+ public function admin_notice_pages($pages) {
166
+ $wd_options = $this->config;
167
+ foreach ( $pages as $key => $page ) {
168
+ if (is_array($page)) {
169
+ if ( isset( $_GET['page'] ) && $_GET['page'] == $page[0] && isset($_GET['tab']) && $_GET['tab'] == $page[1] ) {
170
+ return true;
171
+ }
172
+ }
173
+ else {
174
+ if ( $page == 'all' ) {
175
+ return true;
176
+ }
177
+ if ( get_current_screen()->id === $page ) {
178
+ return true;
179
+ }
180
+ if ( isset($_GET['page']) && $_GET['page'] == $page ) {
181
+ return true;
182
+ }
183
+ }
184
+ return false;
185
+ }
186
+ }
187
+
188
+ // Required fields check
189
+ public function required_fields( $fields ) {
190
+ if ( !isset( $fields['msg'] ) || ( isset($fields['msg'] ) && empty( $fields['msg'] ) ) ) {
191
+ return true;
192
+ }
193
+ if ( !isset( $fields['title'] ) || ( isset( $fields['title'] ) && empty( $fields['title'] ) ) ) {
194
+ return true;
195
+ }
196
+ return false;
197
+ }
198
+
199
+ // Special parameters function that is to be used in any extension of this class
200
+ public function special_parameters($admin_notices) {
201
+ // Intentionally left blank
202
+ }
203
+
204
+ public function wd_admin_notices() {
205
+ $wd_options = $this->config;
206
+ $two_week_review_ignore = add_query_arg( array( $wd_options->prefix . '_admin_notice_ignore' => 'two_week_review' ) );
207
+ $two_week_review_temp = add_query_arg( array( $wd_options->prefix . '_admin_notice_temp_ignore' => 'two_week_review', 'int' => 14 ) );
208
+ $promo_close = add_query_arg( array( $wd_options->prefix . '_admin_notice_ignore' => 'ecommerce_promo' ) );
209
+
210
+ $notices['two_week_review'] = array(
211
+ 'title' => __('Leave A Review?', $wd_options->prefix),
212
+ 'msg' => sprintf(__('We hope you\'ve enjoyed using WordPress %s! Would you consider leaving us a review on WordPress.org?', $wd_options->prefix), $wd_options->plugin_title),
213
+ 'link' => '<li><span class="dashicons dashicons-external"></span><a href="https://wordpress.org/support/plugin/' . $wd_options->plugin_wordpress_slug . '/reviews?filter=5&rate=5#new-post" target="_blank">' . __('Sure! I\'d love to!', $wd_options->prefix) . '</a></li>
214
+ <li><span class="dashicons dashicons-smiley"></span><a href="' . $two_week_review_ignore . '"> ' . __('I\'ve already left a review', $wd_options->prefix) . '</a></li>
215
+ <li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $two_week_review_temp . '">' . __('Maybe Later', $wd_options->prefix) . '</a></li>
216
+ <li><span class="dashicons dashicons-dismiss"></span><a href="' . $two_week_review_ignore . '">' . __('Never show again', $wd_options->prefix) . '</a></li>',
217
+ 'later_link' => $two_week_review_temp,
218
+ 'int' => 14
219
+ );
220
+
221
+ $this->admin_notice($notices);
222
+ }
223
+ }
wd/includes/overview.php CHANGED
@@ -1,312 +1,315 @@
1
- <?php
2
- if ( !defined( 'ABSPATH' ) ) {
3
- exit;
4
- }
5
-
6
- class DoradoWebOverview{
7
- ////////////////////////////////////////////////////////////////////////////////////////
8
- // Events //
9
- ////////////////////////////////////////////////////////////////////////////////////////
10
- ////////////////////////////////////////////////////////////////////////////////////////
11
- // Constants //
12
- ////////////////////////////////////////////////////////////////////////////////////////
13
- ////////////////////////////////////////////////////////////////////////////////////////
14
- // Variables //
15
- ////////////////////////////////////////////////////////////////////////////////////////
16
- public $config ;
17
- private $tabs = array();
18
-
19
- ////////////////////////////////////////////////////////////////////////////////////////
20
- // Constructor & Destructor //
21
- ////////////////////////////////////////////////////////////////////////////////////////
22
- public function __construct( $config = array() ) {
23
- $this->config = $config;
24
- $wd_options = $this->config;
25
- $this->tabs = array(
26
- 'welcome' => array(
27
- 'name' => __( "Welcome", $wd_options->prefix ),
28
- 'view' => array( $this, 'wd_overview_welcome' )
29
- ),
30
- 'user_guide' => array(
31
- 'name' => __( "User Guide", $wd_options->prefix ),
32
- 'view' => array( $this, 'wd_overview_user_guide' )
33
- ),
34
- 'deals' => array(
35
- 'name' => __( 'Deals', $wd_options->prefix ),
36
- 'view' => array( $this, 'wd_overview_deals' )
37
- ),
38
- 'support' => array(
39
- 'name' => __( "Support", $wd_options->prefix ),
40
- 'view' => array( $this, 'wd_overview_support' )
41
- ),
42
- 'https://web-dorado.com/support/submit-your-idea.html' => array(
43
- 'name' => __( "Submit Your Idea", $wd_options->prefix ),
44
- 'view' => false
45
- ),
46
- 'https://wordpress.org/support/plugin/' . $wd_options->plugin_wordpress_slug => array(
47
- 'name' => __( "Forum", $wd_options->prefix ),
48
- 'view' => false
49
- )
50
- );
51
-
52
-
53
-
54
- }
55
- ////////////////////////////////////////////////////////////////////////////////////////
56
- // Public Methods //
57
- ////////////////////////////////////////////////////////////////////////////////////////
58
- public function display_overview_page(){
59
- $wd_options = $this->config;
60
- $tabs = $this->tabs;
61
- $start_using_url = "";
62
- if(!empty($this->config->custom_post)) {
63
- if (strpos($this->config->custom_post, 'post_type', 0) !== false) {
64
- $start_using_url = admin_url($this->config->custom_post);
65
- } else {
66
- $start_using_url = menu_page_url($this->config->custom_post, false);
67
- }
68
- }
69
- require_once( $wd_options->wd_dir_templates . "/display_overview.php" );
70
- }
71
- public function wd_overview_welcome(){
72
- $wd_options = $this->config;
73
- //http://api.wordpress.org/plugins/info/1.0/wd-google-maps
74
- require_once( $wd_options->wd_dir_templates . "/display_overview_welcome.php" );
75
- }
76
- public function wd_overview_user_guide(){
77
- $wd_options = $this->config;
78
- $user_guide = $wd_options->user_guide;
79
- require_once( $wd_options->wd_dir_templates . "/display_overview_user_guide.php" );
80
- }
81
- public function wd_overview_deals(){
82
-
83
- $wd_options = $this->config;
84
- $plugins = array(
85
- "form-maker" => array(
86
- 'title' => 'Form Maker',
87
- 'text' => __( 'Wordpress form builder plugin', $wd_options->prefix ),
88
- 'content' => __( 'Form Maker is a modern and advanced tool for creating WordPress forms easily and fast.', $wd_options->prefix ),
89
- 'href' => 'https://web-dorado.com/products/wordpress-form.html'
90
- ),
91
- "photo-gallery" => array(
92
- 'title' => 'Photo Gallery',
93
- 'text' => __( 'WordPress Photo Gallery plugin', $wd_options->prefix ),
94
- 'content' => __( 'Photo Gallery is a fully responsive WordPress Gallery plugin with advanced functionality.', $wd_options->prefix ),
95
- 'href' => 'https://web-dorado.com/products/wordpress-photo-gallery-plugin.html'
96
- ),
97
- "event-calendar-wd" => array(
98
- 'title' => 'Event Calendar WD',
99
- 'text' => __( 'WordPress calendar plugin', $wd_options->prefix ),
100
- 'content' => __( 'Organize and publish your events in an easy and elegant way using Event Calendar WD.', $wd_options->prefix ),
101
- 'href' => 'https://web-dorado.com/products/wordpress-event-calendar-wd.html'
102
- ),
103
- "wd-google-maps" => array(
104
- 'title' => 'WD Google Maps',
105
- 'text' => __( 'WD Google Maps plugin', $wd_options->prefix ),
106
- 'content' => __( 'Google Maps WD is an intuitive tool for creating Google maps with advanced markers, custom layers and overlays for your website.', $wd_options->prefix ),
107
- 'href' => 'https://web-dorado.com/products/wordpress-google-maps-plugin.html'
108
- ),
109
- "slider-wd" => array(
110
- 'title' => 'Slider WD',
111
- 'text' => __( 'WordPress slider plugin', $wd_options->prefix ),
112
- 'content' => __( 'Create responsive, highly configurable sliders with various effects for your WordPress site.', $wd_options->prefix ),
113
- 'href' => 'https://web-dorado.com/products/wordpress-slider-plugin.html'
114
- ),
115
- "spider-event-calendar" => array(
116
- 'title' => 'Spider Calendar',
117
- 'text' => __( 'WordPress event calendar plugin', $wd_options->prefix ),
118
- 'content' => __( 'Spider Event Calendar is a highly configurable product which allows you to have multiple organized events.', $wd_options->prefix ),
119
- 'href' => 'https://web-dorado.com/products/wordpress-calendar.html'
120
- ),
121
- "wd-instagram-feed" => array(
122
- 'title' => 'Instagram Feed WD',
123
- 'text' => __( 'WordPress Instagram Feed plugin', $wd_options->prefix ),
124
- 'content' => __( 'WD Instagram Feed is a user-friendly tool for displaying user or hashtag-based feeds on your website.', $wd_options->prefix ),
125
- 'href' => 'https://web-dorado.com/products/wordpress-instagram-feed-wd.html'
126
- ),
127
- );
128
- unset($plugins[$wd_options->plugin_wordpress_slug]) ;
129
-
130
- // foreach ( $plugins as $wp_slug => &$plugin ){
131
- // $wp_data = $this->
132
- //remote_get($wp_slug);
133
- // $plugin["downloaded"] = $wp_data["downloaded"];
134
- // $plugin["rating"] = $wp_data["rating"];
135
- // }
136
-
137
- $themes = array(
138
- "business_elite" => array(
139
- 'title' => 'Business Elite Theme',
140
- 'href' => 'https://web-dorado.com/wordpress-themes/business-elite.html'
141
- ),
142
- "portfolio_gallery" => array(
143
- 'title' => 'Portfolio Gallery Theme',
144
- 'href' => 'https://web-dorado.com/wordpress-themes/portfolio-gallery.html'
145
- ),
146
- "sauron" => array(
147
- 'title' => 'Sauron Theme',
148
- 'href' => 'https://web-dorado.com/wordpress-themes/sauron.html'
149
- ),
150
- "business_world" => array(
151
- 'title' => 'Business World Theme',
152
- 'href' => 'https://web-dorado.com/wordpress-themes/business-world.html'
153
- ),
154
- );
155
-
156
- require_once( $wd_options->wd_dir_templates . "/display_overview_deals.php" );
157
- }
158
- public function wd_overview_support(){
159
- $wd_options = $this->config;
160
- global $wpdb;
161
- $server_info = array();
162
-
163
- // Get PHP Version
164
- $server_info["Operating System"] = PHP_OS . " (" . ( PHP_INT_SIZE * 8 ) . ")";
165
- $server_info["PHP Version"] = PHP_VERSION;
166
- $server_info["Server"] = $_SERVER["SERVER_SOFTWARE"];
167
-
168
- // Get MYSQL Version
169
- $sql_version = $wpdb->get_var( "SELECT VERSION() AS version" );
170
- $server_info["MySQL Version"] = $sql_version;
171
-
172
- // GET SQL Mode
173
- $mysqlinfo = $wpdb->get_results( "SHOW VARIABLES LIKE 'sql_mode'" );
174
- if ( is_array( $mysqlinfo ) )
175
- $sql_mode = $mysqlinfo[0]->Value;
176
- if ( empty( $sql_mode ) )
177
- $sql_mode = __( 'Not set', $wd_options->prefix );
178
- $server_info["SQL Mode"] = $sql_mode;
179
-
180
- // Get PHP allow_url_fopen
181
- if( ini_get( 'allow_url_fopen' ) )
182
- $allow_url_fopen = __( 'On', $wd_options->prefix );
183
- else
184
- $allow_url_fopen = __( 'Off', $wd_options->prefix );
185
- $server_info["PHP Allow URL fopen"] = $allow_url_fopen;
186
-
187
- // Get PHP Max Upload Size
188
- if (function_exists('wp_max_upload_size'))
189
- $upload_max = strval(round((int) wp_max_upload_size() / (1024 * 1024))) . 'M';
190
- else if(ini_get('upload_max_filesize'))
191
- $upload_max = ini_get('upload_max_filesize');
192
- else
193
- $upload_max = __('N/A', $wd_options->prefix);
194
-
195
- $server_info["PHP Max Upload Size"] = $upload_max;
196
-
197
- // Get PHP Output buffer Size
198
- if( ini_get( 'pcre.backtrack_limit' ) )
199
- $backtrack_limit = ini_get( 'pcre.backtrack_limit' );
200
- else
201
- $backtrack_limit = __( 'N/A', $wd_options->prefix );
202
- $server_info["PCRE Backtracking Limit"] = $backtrack_limit;
203
-
204
- // Get PHP Max Post Size
205
- if( ini_get( 'post_max_size' ) )
206
- $post_max = ini_get( 'post_max_size' );
207
- else
208
- $post_max = __( 'N/A', $wd_options->prefix );
209
- $server_info["PHP Max Post Size"] = $post_max;
210
-
211
- // Get PHP Max execution time
212
- if( ini_get( 'max_execution_time' ) )
213
- $max_execute = ini_get( 'max_execution_time' );
214
- else
215
- $max_execute = __( 'N/A', $wd_options->prefix );
216
- $server_info["PHP Max Script Execute Time"] = $max_execute;
217
-
218
-
219
- // Get PHP Memory Limit
220
- if( ini_get( 'memory_limit' ) )
221
- $memory_limit = ini_get( 'memory_limit' );
222
- else
223
- $memory_limit = __( 'N/A', $wd_options->prefix );
224
- $server_info["PHP Memory Limit"] = $memory_limit;
225
-
226
- // Get actual memory_get_usage
227
- if ( function_exists( 'memory_get_usage' ) )
228
- $memory_usage = round( memory_get_usage() / 1024 / 1024, 2 ) . __( ' MByte', $wd_options->prefix );
229
- else
230
- $memory_usage = __( 'N/A', $wd_options->prefix );
231
- $server_info["Memory usage"] = $memory_usage;
232
-
233
- // required for EXIF read
234
- if ( is_callable( 'exif_read_data' ) )
235
- $exif = __( 'Yes', $wd_options->prefix ). " (V" . substr( phpversion( 'exif' ), 0, 4 ) . ")" ;
236
- else
237
- $exif = __( 'No', $wd_options->prefix );
238
- $server_info["PHP Exif support"] = $exif;
239
-
240
- // required for meta data
241
- if ( is_callable( 'iptcparse' ) )
242
- $iptc = __( 'Yes', $wd_options->prefix );
243
- else
244
- $iptc = __( 'No', $wd_options->prefix );
245
- $server_info["PHP IPTC support"] = $iptc;
246
-
247
- // required for meta data
248
- if ( is_callable( 'xml_parser_create' ) )
249
- $xml = __( 'Yes', $wd_options->prefix );
250
- else
251
- $xml = __( 'No', $wd_options->prefix );
252
- $server_info["PHP XML support"] = $xml;
253
-
254
- $gd_info = array( "GD support" => __( 'No', $wd_options->prefix ) );
255
- if( function_exists( "gd_info" ) ){
256
- $gd_info = array();
257
- foreach( gd_info() as $key => $val ){
258
- if( is_bool($val) ){
259
- $gd_info[$key] = $val ? __( 'Yes', $wd_options->prefix ) : __( 'No', $wd_options->prefix );
260
- }
261
- else{
262
- $gd_info[$key] = $val;
263
- }
264
- }
265
- }
266
-
267
- require_once( $wd_options->wd_dir_templates . "/display_overview_support.php" );
268
- }
269
-
270
- public function overview_styles() {
271
- $wd_options = $this->config;
272
- $version = get_option( $wd_options->prefix . "_version" );
273
- wp_enqueue_style( $wd_options->prefix . '_overview_css', $wd_options->wd_url_css . '/overview.css', array(), $version );
274
-
275
- }
276
- public function overview_scripts() {
277
- $wd_options = $this->config;
278
- $version = get_option( $wd_options->prefix . "_version" );
279
- wp_enqueue_script( $wd_options->prefix . '_overview_js', $wd_options->wd_url_js . '/overview.js', array(), $version );
280
-
281
- }
282
- ////////////////////////////////////////////////////////////////////////////////////////
283
- // Getters & Setters //
284
- ////////////////////////////////////////////////////////////////////////////////////////
285
- ////////////////////////////////////////////////////////////////////////////////////////
286
- // Private Methods //
287
- ////////////////////////////////////////////////////////////////////////////////////////
288
- private function remote_get($plugin_wp_slug){
289
- $request = wp_remote_get(" http://api.wordpress.org/plugins/info/1.0/" . $plugin_wp_slug);
290
- $data = array();
291
- if (!is_wp_error($request) || wp_remote_retrieve_response_code($request) === 200) {
292
- $body = unserialize($request['body']);
293
- $data["downloaded"] = $body->downloaded;
294
- $ratings = $body->ratings;
295
- if( $ratings[5] == 0 && $ratings[4] == 0 && $ratings[3] == 0 && $ratings[2] == 0 && $ratings[1] == 0){
296
- $data["rating"] = 100;
297
- }
298
- else{
299
- $data["rating"] = round( ( ( $ratings[5] * 5 + $ratings[4] * 4 + $ratings[3] * 3 + $ratings[2] * 2 + $ratings[1] * 1 ) / $body->num_ratings ) , 1 );
300
-
301
- $data["rating"] = round( ( $data["rating"] / 5 ) * 100 );
302
- }
303
- return $data;
304
- }
305
- return false;
306
-
307
- }
308
- ////////////////////////////////////////////////////////////////////////////////////////
309
- // Listeners //
310
- ////////////////////////////////////////////////////////////////////////////////////////
311
-
 
 
 
312
  }
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+
6
+ class DoradoWebOverview{
7
+ ////////////////////////////////////////////////////////////////////////////////////////
8
+ // Events //
9
+ ////////////////////////////////////////////////////////////////////////////////////////
10
+ ////////////////////////////////////////////////////////////////////////////////////////
11
+ // Constants //
12
+ ////////////////////////////////////////////////////////////////////////////////////////
13
+ ////////////////////////////////////////////////////////////////////////////////////////
14
+ // Variables //
15
+ ////////////////////////////////////////////////////////////////////////////////////////
16
+ public $config ;
17
+ private $tabs = array();
18
+
19
+ ////////////////////////////////////////////////////////////////////////////////////////
20
+ // Constructor & Destructor //
21
+ ////////////////////////////////////////////////////////////////////////////////////////
22
+ public function __construct( $config = array() ) {
23
+ $this->config = $config;
24
+ $wd_options = $this->config;
25
+ $this->tabs = array(
26
+ 'welcome' => array(
27
+ 'name' => __( "Welcome", $wd_options->prefix ),
28
+ 'view' => array( $this, 'wd_overview_welcome' )
29
+ ),
30
+ 'user_guide' => array(
31
+ 'name' => __( "User Guide", $wd_options->prefix ),
32
+ 'view' => array( $this, 'wd_overview_user_guide' )
33
+ ),
34
+ 'deals' => array(
35
+ 'name' => __( 'Deals', $wd_options->prefix ),
36
+ 'view' => array( $this, 'wd_overview_deals' )
37
+ ),
38
+ 'support' => array(
39
+ 'name' => __( "Support", $wd_options->prefix ),
40
+ 'view' => array( $this, 'wd_overview_support' )
41
+ ),
42
+ 'https://web-dorado.com/support/submit-your-idea.html' => array(
43
+ 'name' => __( "Submit Your Idea", $wd_options->prefix ),
44
+ 'view' => false
45
+ ),
46
+ 'https://wordpress.org/support/plugin/' . $wd_options->plugin_wordpress_slug => array(
47
+ 'name' => __( "Forum", $wd_options->prefix ),
48
+ 'view' => false
49
+ )
50
+ );
51
+
52
+
53
+
54
+ }
55
+ ////////////////////////////////////////////////////////////////////////////////////////
56
+ // Public Methods //
57
+ ////////////////////////////////////////////////////////////////////////////////////////
58
+ public function display_overview_page(){
59
+ $wd_options = $this->config;
60
+ $tabs = $this->tabs;
61
+ $start_using_url = "";
62
+ if(!empty($this->config->custom_post)) {
63
+ if (strpos($this->config->custom_post, 'post_type', 0) !== false) {
64
+ $start_using_url = admin_url($this->config->custom_post);
65
+ } else {
66
+ $start_using_url = menu_page_url($this->config->custom_post, false);
67
+ }
68
+ }
69
+ if(!empty($this->config->start_using_url)){
70
+ $start_using_url = $this->config->start_using_url;
71
+ }
72
+ require_once( $wd_options->wd_dir_templates . "/display_overview.php" );
73
+ }
74
+ public function wd_overview_welcome(){
75
+ $wd_options = $this->config;
76
+ //http://api.wordpress.org/plugins/info/1.0/wd-google-maps
77
+ require_once( $wd_options->wd_dir_templates . "/display_overview_welcome.php" );
78
+ }
79
+ public function wd_overview_user_guide(){
80
+ $wd_options = $this->config;
81
+ $user_guide = $wd_options->user_guide;
82
+ require_once( $wd_options->wd_dir_templates . "/display_overview_user_guide.php" );
83
+ }
84
+ public function wd_overview_deals(){
85
+
86
+ $wd_options = $this->config;
87
+ $plugins = array(
88
+ "form-maker" => array(
89
+ 'title' => 'Form Maker',
90
+ 'text' => __( 'Wordpress form builder plugin', $wd_options->prefix ),
91
+ 'content' => __( 'Form Maker is a modern and advanced tool for creating WordPress forms easily and fast.', $wd_options->prefix ),
92
+ 'href' => 'https://web-dorado.com/products/wordpress-form.html'
93
+ ),
94
+ "photo-gallery" => array(
95
+ 'title' => 'Photo Gallery',
96
+ 'text' => __( 'WordPress Photo Gallery plugin', $wd_options->prefix ),
97
+ 'content' => __( 'Photo Gallery is a fully responsive WordPress Gallery plugin with advanced functionality.', $wd_options->prefix ),
98
+ 'href' => 'https://web-dorado.com/products/wordpress-photo-gallery-plugin.html'
99
+ ),
100
+ "event-calendar-wd" => array(
101
+ 'title' => 'Event Calendar WD',
102
+ 'text' => __( 'WordPress calendar plugin', $wd_options->prefix ),
103
+ 'content' => __( 'Organize and publish your events in an easy and elegant way using Event Calendar WD.', $wd_options->prefix ),
104
+ 'href' => 'https://web-dorado.com/products/wordpress-event-calendar-wd.html'
105
+ ),
106
+ "wd-google-maps" => array(
107
+ 'title' => 'WD Google Maps',
108
+ 'text' => __( 'WD Google Maps plugin', $wd_options->prefix ),
109
+ 'content' => __( 'Google Maps WD is an intuitive tool for creating Google maps with advanced markers, custom layers and overlays for your website.', $wd_options->prefix ),
110
+ 'href' => 'https://web-dorado.com/products/wordpress-google-maps-plugin.html'
111
+ ),
112
+ "slider-wd" => array(
113
+ 'title' => 'Slider WD',
114
+ 'text' => __( 'WordPress slider plugin', $wd_options->prefix ),
115
+ 'content' => __( 'Create responsive, highly configurable sliders with various effects for your WordPress site.', $wd_options->prefix ),
116
+ 'href' => 'https://web-dorado.com/products/wordpress-slider-plugin.html'
117
+ ),
118
+ "spider-event-calendar" => array(
119
+ 'title' => 'Spider Calendar',
120
+ 'text' => __( 'WordPress event calendar plugin', $wd_options->prefix ),
121
+ 'content' => __( 'Spider Event Calendar is a highly configurable product which allows you to have multiple organized events.', $wd_options->prefix ),
122
+ 'href' => 'https://web-dorado.com/products/wordpress-calendar.html'
123
+ ),
124
+ "wd-instagram-feed" => array(
125
+ 'title' => 'Instagram Feed WD',
126
+ 'text' => __( 'WordPress Instagram Feed plugin', $wd_options->prefix ),
127
+ 'content' => __( 'WD Instagram Feed is a user-friendly tool for displaying user or hashtag-based feeds on your website.', $wd_options->prefix ),
128
+ 'href' => 'https://web-dorado.com/products/wordpress-instagram-feed-wd.html'
129
+ ),
130
+ );
131
+ unset($plugins[$wd_options->plugin_wordpress_slug]) ;
132
+
133
+ // foreach ( $plugins as $wp_slug => &$plugin ){
134
+ // $wp_data = $this->
135
+ //remote_get($wp_slug);
136
+ // $plugin["downloaded"] = $wp_data["downloaded"];
137
+ // $plugin["rating"] = $wp_data["rating"];
138
+ // }
139
+
140
+ $themes = array(
141
+ "business_elite" => array(
142
+ 'title' => 'Business Elite Theme',
143
+ 'href' => 'https://web-dorado.com/wordpress-themes/business-elite.html'
144
+ ),
145
+ "portfolio_gallery" => array(
146
+ 'title' => 'Portfolio Gallery Theme',
147
+ 'href' => 'https://web-dorado.com/wordpress-themes/portfolio-gallery.html'
148
+ ),
149
+ "sauron" => array(
150
+ 'title' => 'Sauron Theme',
151
+ 'href' => 'https://web-dorado.com/wordpress-themes/sauron.html'
152
+ ),
153
+ "business_world" => array(
154
+ 'title' => 'Business World Theme',
155
+ 'href' => 'https://web-dorado.com/wordpress-themes/business-world.html'
156
+ ),
157
+ );
158
+
159
+ require_once( $wd_options->wd_dir_templates . "/display_overview_deals.php" );
160
+ }
161
+ public function wd_overview_support(){
162
+ $wd_options = $this->config;
163
+ global $wpdb;
164
+ $server_info = array();
165
+
166
+ // Get PHP Version
167
+ $server_info["Operating System"] = PHP_OS . " (" . ( PHP_INT_SIZE * 8 ) . ")";
168
+ $server_info["PHP Version"] = PHP_VERSION;
169
+ $server_info["Server"] = $_SERVER["SERVER_SOFTWARE"];
170
+
171
+ // Get MYSQL Version
172
+ $sql_version = $wpdb->get_var( "SELECT VERSION() AS version" );
173
+ $server_info["MySQL Version"] = $sql_version;
174
+
175
+ // GET SQL Mode
176
+ $mysqlinfo = $wpdb->get_results( "SHOW VARIABLES LIKE 'sql_mode'" );
177
+ if ( is_array( $mysqlinfo ) )
178
+ $sql_mode = $mysqlinfo[0]->Value;
179
+ if ( empty( $sql_mode ) )
180
+ $sql_mode = __( 'Not set', $wd_options->prefix );
181
+ $server_info["SQL Mode"] = $sql_mode;
182
+
183
+ // Get PHP allow_url_fopen
184
+ if( ini_get( 'allow_url_fopen' ) )
185
+ $allow_url_fopen = __( 'On', $wd_options->prefix );
186
+ else
187
+ $allow_url_fopen = __( 'Off', $wd_options->prefix );
188
+ $server_info["PHP Allow URL fopen"] = $allow_url_fopen;
189
+
190
+ // Get PHP Max Upload Size
191
+ if (function_exists('wp_max_upload_size'))
192
+ $upload_max = strval(round((int) wp_max_upload_size() / (1024 * 1024))) . 'M';
193
+ else if(ini_get('upload_max_filesize'))
194
+ $upload_max = ini_get('upload_max_filesize');
195
+ else
196
+ $upload_max = __('N/A', $wd_options->prefix);
197
+
198
+ $server_info["PHP Max Upload Size"] = $upload_max;
199
+
200
+ // Get PHP Output buffer Size
201
+ if( ini_get( 'pcre.backtrack_limit' ) )
202
+ $backtrack_limit = ini_get( 'pcre.backtrack_limit' );
203
+ else
204
+ $backtrack_limit = __( 'N/A', $wd_options->prefix );
205
+ $server_info["PCRE Backtracking Limit"] = $backtrack_limit;
206
+
207
+ // Get PHP Max Post Size
208
+ if( ini_get( 'post_max_size' ) )
209
+ $post_max = ini_get( 'post_max_size' );
210
+ else
211
+ $post_max = __( 'N/A', $wd_options->prefix );
212
+ $server_info["PHP Max Post Size"] = $post_max;
213
+
214
+ // Get PHP Max execution time
215
+ if( ini_get( 'max_execution_time' ) )
216
+ $max_execute = ini_get( 'max_execution_time' );
217
+ else
218
+ $max_execute = __( 'N/A', $wd_options->prefix );
219
+ $server_info["PHP Max Script Execute Time"] = $max_execute;
220
+
221
+
222
+ // Get PHP Memory Limit
223
+ if( ini_get( 'memory_limit' ) )
224
+ $memory_limit = ini_get( 'memory_limit' );
225
+ else
226
+ $memory_limit = __( 'N/A', $wd_options->prefix );
227
+ $server_info["PHP Memory Limit"] = $memory_limit;
228
+
229
+ // Get actual memory_get_usage
230
+ if ( function_exists( 'memory_get_usage' ) )
231
+ $memory_usage = round( memory_get_usage() / 1024 / 1024, 2 ) . __( ' MByte', $wd_options->prefix );
232
+ else
233
+ $memory_usage = __( 'N/A', $wd_options->prefix );
234
+ $server_info["Memory usage"] = $memory_usage;
235
+
236
+ // required for EXIF read
237
+ if ( is_callable( 'exif_read_data' ) )
238
+ $exif = __( 'Yes', $wd_options->prefix ). " (V" . substr( phpversion( 'exif' ), 0, 4 ) . ")" ;
239
+ else
240
+ $exif = __( 'No', $wd_options->prefix );
241
+ $server_info["PHP Exif support"] = $exif;
242
+
243
+ // required for meta data
244
+ if ( is_callable( 'iptcparse' ) )
245
+ $iptc = __( 'Yes', $wd_options->prefix );
246
+ else
247
+ $iptc = __( 'No', $wd_options->prefix );
248
+ $server_info["PHP IPTC support"] = $iptc;
249
+
250
+ // required for meta data
251
+ if ( is_callable( 'xml_parser_create' ) )
252
+ $xml = __( 'Yes', $wd_options->prefix );
253
+ else
254
+ $xml = __( 'No', $wd_options->prefix );
255
+ $server_info["PHP XML support"] = $xml;
256
+
257
+ $gd_info = array( "GD support" => __( 'No', $wd_options->prefix ) );
258
+ if( function_exists( "gd_info" ) ){
259
+ $gd_info = array();
260
+ foreach( gd_info() as $key => $val ){
261
+ if( is_bool($val) ){
262
+ $gd_info[$key] = $val ? __( 'Yes', $wd_options->prefix ) : __( 'No', $wd_options->prefix );
263
+ }
264
+ else{
265
+ $gd_info[$key] = $val;
266
+ }
267
+ }
268
+ }
269
+
270
+ require_once( $wd_options->wd_dir_templates . "/display_overview_support.php" );
271
+ }
272
+
273
+ public function overview_styles() {
274
+ $wd_options = $this->config;
275
+ $version = get_option( $wd_options->prefix . "_version" );
276
+ wp_enqueue_style( $wd_options->prefix . '_overview_css', $wd_options->wd_url_css . '/overview.css', array(), $version );
277
+
278
+ }
279
+ public function overview_scripts() {
280
+ $wd_options = $this->config;
281
+ $version = get_option( $wd_options->prefix . "_version" );
282
+ wp_enqueue_script( $wd_options->prefix . '_overview_js', $wd_options->wd_url_js . '/overview.js', array(), $version );
283
+
284
+ }
285
+ ////////////////////////////////////////////////////////////////////////////////////////
286
+ // Getters & Setters //
287
+ ////////////////////////////////////////////////////////////////////////////////////////
288
+ ////////////////////////////////////////////////////////////////////////////////////////
289
+ // Private Methods //
290
+ ////////////////////////////////////////////////////////////////////////////////////////
291
+ private function remote_get($plugin_wp_slug){
292
+ $request = wp_remote_get(" http://api.wordpress.org/plugins/info/1.0/" . $plugin_wp_slug);
293
+ $data = array();
294
+ if (!is_wp_error($request) || wp_remote_retrieve_response_code($request) === 200) {
295
+ $body = unserialize($request['body']);
296
+ $data["downloaded"] = $body->downloaded;
297
+ $ratings = $body->ratings;
298
+ if( $ratings[5] == 0 && $ratings[4] == 0 && $ratings[3] == 0 && $ratings[2] == 0 && $ratings[1] == 0){
299
+ $data["rating"] = 100;
300
+ }
301
+ else{
302
+ $data["rating"] = round( ( ( $ratings[5] * 5 + $ratings[4] * 4 + $ratings[3] * 3 + $ratings[2] * 2 + $ratings[1] * 1 ) / $body->num_ratings ) , 1 );
303
+
304
+ $data["rating"] = round( ( $data["rating"] / 5 ) * 100 );
305
+ }
306
+ return $data;
307
+ }
308
+ return false;
309
+
310
+ }
311
+ ////////////////////////////////////////////////////////////////////////////////////////
312
+ // Listeners //
313
+ ////////////////////////////////////////////////////////////////////////////////////////
314
+
315
  }
wd/includes/subscribe.php CHANGED
@@ -1,138 +1,138 @@
1
- <?php
2
- if ( ! defined( 'ABSPATH' ) ) {
3
- exit;
4
- }
5
- class DoradoWebSubscribe {
6
- // //////////////////////////////////////////////////////////////////////////////////////
7
- // Events //
8
- // //////////////////////////////////////////////////////////////////////////////////////
9
- // //////////////////////////////////////////////////////////////////////////////////////
10
- // Constants //
11
- // //////////////////////////////////////////////////////////////////////////////////////
12
- // //////////////////////////////////////////////////////////////////////////////////////
13
- // Variables //
14
- // //////////////////////////////////////////////////////////////////////////////////////
15
- public $config;
16
- // //////////////////////////////////////////////////////////////////////////////////////
17
- // Constructor & Destructor //
18
- // //////////////////////////////////////////////////////////////////////////////////////
19
- public function __construct( $config = array() ){
20
- $this->config = $config;
21
- add_action( 'admin_init', array( $this, 'after_subscribe' ) );
22
- }
23
- // //////////////////////////////////////////////////////////////////////////////////////
24
- // Public Methods //
25
- // //////////////////////////////////////////////////////////////////////////////////////
26
-
27
- public function subscribe_scripts() {
28
- $wd_options = $this->config;
29
- wp_register_script ( 'subscribe_js', $wd_options->wd_url_js . '/subsribe.js' );
30
- wp_enqueue_script ( 'subscribe_js' );
31
-
32
- }
33
- public function subscribe_styles() {
34
- $wd_options = $this->config;
35
- wp_enqueue_style( $wd_options->prefix . 'subscribe', $wd_options->wd_url_css . '/subscribe.css' );
36
-
37
- }
38
-
39
- public function subscribe_display_page() {
40
- $wd_options = $this->config;
41
- $list = array(
42
- 0 => array(
43
- "title" => __( "Your name &", $wd_options->prefix ),
44
- "small_text" => __( "Email address", $wd_options->prefix ),
45
- "img" => $wd_options->wd_url_img . '/sub_1.png',
46
- ),
47
- 1 => array(
48
- "title" => __( "Site URL", $wd_options->prefix ),
49
- "small_text" => __( "Wordpress version", $wd_options->prefix ),
50
- "img" => $wd_options->wd_url_img . '/sub_2.png',
51
- ),
52
- 2 => array(
53
- "title" => __( "List of plugins", $wd_options->prefix ),
54
- "small_text" => "",
55
- "img" => $wd_options->wd_url_img . '/sub_4.png',
56
- ),
57
- );
58
-
59
- require_once ( $wd_options->wd_dir_templates . "/display_subscribe.php" );
60
- }
61
- public function after_subscribe(){
62
- $wd_options = $this->config;
63
- if( isset( $_GET[ $wd_options->prefix . "_sub_action"] ) ){
64
-
65
- if( $_GET[$wd_options->prefix . "_sub_action"] == "allow" ){
66
- $api = new DoradoWebApi($wd_options);
67
- $hash = $api->get_hash();
68
-
69
- if( $hash != null ){
70
- $all_plugins = array();
71
- $plugins = get_plugins();
72
- foreach ( $plugins as $slug => $data ) {
73
- $plugin = array(
74
- "Name" => $data["Name"],
75
- "PluginURI" => $data["PluginURI"],
76
- "Author" => $data["Author"],
77
- "AuthorURI" => $data["AuthorURI"]
78
- );
79
- $all_plugins[$slug] = $plugin;
80
- }
81
-
82
- $data = array();
83
- $data["site_url"] = site_url();
84
-
85
- $admin_data = wp_get_current_user();
86
-
87
- $user_first_name = get_user_meta( $admin_data->ID, "first_name", true );
88
- $user_last_name = get_user_meta( $admin_data->ID, "last_name", true );
89
-
90
- $data["name"] = $user_first_name || $user_last_name ? $user_first_name . " " . $user_last_name : $admin_data->data->user_login;
91
-
92
- $data["email"] = $admin_data->data->user_email;
93
- $data["wp_version"] = get_bloginfo( 'version' );
94
- $data["plugin_id"] = $wd_options->wd_plugin_id;
95
- $data["hash"] = $hash;
96
- $data["all_plugins"] = $all_plugins;
97
-
98
-
99
- $response = wp_remote_post( "https://api.web-dorado.com/collectuserdata", array(
100
- 'method' => 'POST',
101
- 'timeout' => 45,
102
- 'redirection' => 5,
103
- 'httpversion' => '1.0',
104
- 'blocking' => true,
105
- 'headers' => array(),
106
- 'body' => json_encode($data),
107
- 'cookies' => array()
108
- )
109
- );
110
-
111
- $response_body = (!is_wp_error($response) && isset( $response["body"] )) ? json_decode( $response["body"], true ) : null;
112
-
113
- if( is_array( $response_body ) && $response_body["body"]["msg"] == "Access" ) {
114
-
115
- }
116
- }
117
- }
118
- if ( get_option( $wd_options->prefix . "_subscribe_done" ) != 1 ) {
119
- update_option( $wd_options->prefix . "_subscribe_done", 1 );
120
- }
121
- else {
122
- add_option( $wd_options->prefix . "_subscribe_done" , "1", '', 'no');
123
- }
124
-
125
- wp_safe_redirect( $wd_options->after_subscribe );
126
- }
127
-
128
- }
129
- // //////////////////////////////////////////////////////////////////////////////////////
130
- // Getters & Setters //
131
- // //////////////////////////////////////////////////////////////////////////////////////
132
- // //////////////////////////////////////////////////////////////////////////////////////
133
- // Private Methods //
134
- // //////////////////////////////////////////////////////////////////////////////////////
135
- // //////////////////////////////////////////////////////////////////////////////////////
136
- // Listeners //
137
- // //////////////////////////////////////////////////////////////////////////////////////
138
- }
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+ class DoradoWebSubscribe {
6
+ // //////////////////////////////////////////////////////////////////////////////////////
7
+ // Events //
8
+ // //////////////////////////////////////////////////////////////////////////////////////
9
+ // //////////////////////////////////////////////////////////////////////////////////////
10
+ // Constants //
11
+ // //////////////////////////////////////////////////////////////////////////////////////
12
+ // //////////////////////////////////////////////////////////////////////////////////////
13
+ // Variables //
14
+ // //////////////////////////////////////////////////////////////////////////////////////
15
+ public $config;
16
+ // //////////////////////////////////////////////////////////////////////////////////////
17
+ // Constructor & Destructor //
18
+ // //////////////////////////////////////////////////////////////////////////////////////
19
+ public function __construct( $config = array() ){
20
+ $this->config = $config;
21
+ add_action( 'admin_init', array( $this, 'after_subscribe' ) );
22
+ }
23
+ // //////////////////////////////////////////////////////////////////////////////////////
24
+ // Public Methods //
25
+ // //////////////////////////////////////////////////////////////////////////////////////
26
+
27
+ public function subscribe_scripts() {
28
+ $wd_options = $this->config;
29
+ wp_register_script ( 'subscribe_js', $wd_options->wd_url_js . '/subsribe.js' );
30
+ wp_enqueue_script ( 'subscribe_js' );
31
+
32
+ }
33
+ public function subscribe_styles() {
34
+ $wd_options = $this->config;
35
+ wp_enqueue_style( $wd_options->prefix . 'subscribe', $wd_options->wd_url_css . '/subscribe.css' );
36
+
37
+ }
38
+
39
+ public function subscribe_display_page() {
40
+ $wd_options = $this->config;
41
+ $list = array(
42
+ 0 => array(
43
+ "title" => __( "Your name &", $wd_options->prefix ),
44
+ "small_text" => __( "Email address", $wd_options->prefix ),
45
+ "img" => $wd_options->wd_url_img . '/sub_1.png',
46
+ ),
47
+ 1 => array(
48
+ "title" => __( "Site URL", $wd_options->prefix ),
49
+ "small_text" => __( "Wordpress version", $wd_options->prefix ),
50
+ "img" => $wd_options->wd_url_img . '/sub_2.png',
51
+ ),
52
+ 2 => array(
53
+ "title" => __( "List of plugins", $wd_options->prefix ),
54
+ "small_text" => "",
55
+ "img" => $wd_options->wd_url_img . '/sub_4.png',
56
+ ),
57
+ );
58
+
59
+ require_once ( $wd_options->wd_dir_templates . "/display_subscribe.php" );
60
+ }
61
+ public function after_subscribe(){
62
+ $wd_options = $this->config;
63
+ if( isset( $_GET[ $wd_options->prefix . "_sub_action"] ) ){
64
+
65
+ if( $_GET[$wd_options->prefix . "_sub_action"] == "allow" ){
66
+ $api = new DoradoWebApi($wd_options);
67
+ $hash = $api->get_hash();
68
+
69
+ if( $hash != null ){
70
+ $all_plugins = array();
71
+ $plugins = get_plugins();
72
+ foreach ( $plugins as $slug => $data ) {
73
+ $plugin = array(
74
+ "Name" => $data["Name"],
75
+ "PluginURI" => $data["PluginURI"],
76
+ "Author" => $data["Author"],
77
+ "AuthorURI" => $data["AuthorURI"]
78
+ );
79
+ $all_plugins[$slug] = $plugin;
80
+ }
81
+
82
+ $data = array();
83
+ $data["site_url"] = site_url();
84
+
85
+ $admin_data = wp_get_current_user();
86
+
87
+ $user_first_name = get_user_meta( $admin_data->ID, "first_name", true );
88
+ $user_last_name = get_user_meta( $admin_data->ID, "last_name", true );
89
+
90
+ $data["name"] = $user_first_name || $user_last_name ? $user_first_name . " " . $user_last_name : $admin_data->data->user_login;
91
+
92
+ $data["email"] = $admin_data->data->user_email;
93
+ $data["wp_version"] = get_bloginfo( 'version' );
94
+ $data["plugin_id"] = $wd_options->wd_plugin_id;
95
+ $data["hash"] = $hash;
96
+ $data["all_plugins"] = $all_plugins;
97
+
98
+
99
+ $response = wp_remote_post( "https://api.web-dorado.com/collectuserdata", array(
100
+ 'method' => 'POST',
101
+ 'timeout' => 45,
102
+ 'redirection' => 5,
103
+ 'httpversion' => '1.0',
104
+ 'blocking' => true,
105
+ 'headers' => array(),
106
+ 'body' => json_encode($data),
107
+ 'cookies' => array()
108
+ )
109
+ );
110
+
111
+ $response_body = (!is_wp_error($response) && isset( $response["body"] )) ? json_decode( $response["body"], true ) : null;
112
+
113
+ if( is_array( $response_body ) && $response_body["body"]["msg"] == "Access" ) {
114
+
115
+ }
116
+ }
117
+ }
118
+ if ( get_option( $wd_options->prefix . "_subscribe_done" ) != 1 ) {
119
+ update_option( $wd_options->prefix . "_subscribe_done", 1 );
120
+ }
121
+ else {
122
+ add_option( $wd_options->prefix . "_subscribe_done" , "1", '', 'no');
123
+ }
124
+
125
+ wp_safe_redirect( $wd_options->after_subscribe );
126
+ }
127
+
128
+ }
129
+ // //////////////////////////////////////////////////////////////////////////////////////
130
+ // Getters & Setters //
131
+ // //////////////////////////////////////////////////////////////////////////////////////
132
+ // //////////////////////////////////////////////////////////////////////////////////////
133
+ // Private Methods //
134
+ // //////////////////////////////////////////////////////////////////////////////////////
135
+ // //////////////////////////////////////////////////////////////////////////////////////
136
+ // Listeners //
137
+ // //////////////////////////////////////////////////////////////////////////////////////
138
+ }
wd/start.php CHANGED
@@ -1,41 +1,41 @@
1
- <?php
2
- if ( ! defined( 'ABSPATH' ) ) {
3
- exit;
4
- }
5
- define( 'DORADO_WEB_API_PLUGIN_DATA_PATH', 'https://api.web-dorado.com/v2/_id_/plugindata' );
6
- require_once dirname( __FILE__ ) . '/config.php';
7
-
8
- /**
9
- * @param options for Plugin details.
10
- * prefix;
11
- * wd_plugin_id;
12
- * plugin_title;
13
- * plugin_dir;
14
- * plugin_main_file;
15
- * description;
16
- * plugin_features;
17
- * user_guide;
18
- * video_youtube_id;
19
- * plugin_wd_url;
20
- * plugin_wd_demo_link;
21
- * plugin_wd_addons_link;
22
- * plugin_wizard_link;
23
- * after_subscribe;
24
- * plugin_menu_title;
25
- * plugin_menu_icon;
26
- * custom_post;
27
- */
28
-
29
- function dorado_web_init( $options ) {
30
-
31
- // load files
32
- require_once dirname( __FILE__ ) . '/wd.php';
33
-
34
- $wd = new DoradoWeb();
35
- $wd->wd_init( $options );
36
-
37
- }
38
-
39
-
40
-
41
-
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+ define( 'DORADO_WEB_API_PLUGIN_DATA_PATH', 'https://api.web-dorado.com/v2/_id_/plugindata' );
6
+ require_once dirname( __FILE__ ) . '/config.php';
7
+
8
+ /**
9
+ * @param options for Plugin details.
10
+ * prefix;
11
+ * wd_plugin_id;
12
+ * plugin_title;
13
+ * plugin_dir;
14
+ * plugin_main_file;
15
+ * description;
16
+ * plugin_features;
17
+ * user_guide;
18
+ * video_youtube_id;
19
+ * plugin_wd_url;
20
+ * plugin_wd_demo_link;
21
+ * plugin_wd_addons_link;
22
+ * plugin_wizard_link;
23
+ * after_subscribe;
24
+ * plugin_menu_title;
25
+ * plugin_menu_icon;
26
+ * custom_post;
27
+ */
28
+
29
+ function dorado_web_init( $options ) {
30
+
31
+ // load files
32
+ require_once dirname( __FILE__ ) . '/wd.php';
33
+
34
+ $wd = new DoradoWeb();
35
+ $wd->wd_init( $options );
36
+
37
+ }
38
+
39
+
40
+
41
+
wd/templates/display_deactivation_popup.php CHANGED
@@ -1,27 +1,28 @@
1
- <div class="wd-opacity wd-<?php echo $wd_options->prefix; ?>-opacity"></div>
2
- <div class="wd-deactivate-popup wd-<?php echo $wd_options->prefix; ?>-deactivate-popup">
3
- <div class="wd-deactivate-popup-opacity wd-deactivate-popup-opacity-<?php echo $wd_options->prefix; ?>">
4
- <img src="<?php echo $wd_options->wd_url_img . '/spinner.gif'; ?>" class="wd-img-loader" >
5
- </div>
6
- <form method="post" id="<?php echo $wd_options->prefix; ?>_deactivate_form">
7
- <div class="wd-deactivate-popup-header">
8
- <?php _e( "Please let us know why you are deactivating. Your answer will help us to serve you better (Optional)", $wd_options->prefix ); ?>:
9
- </div>
10
-
11
- <div class="wd-deactivate-popup-body">
12
- <?php foreach( $deactivate_reasons as $deactivate_reason_slug => $deactivate_reason ) { ?>
13
- <div class="wd-<?php echo $wd_options->prefix; ?>-reasons">
14
- <input type="radio" value="<?php echo $deactivate_reason["id"];?>" id="<?php echo $wd_options->prefix . "-" .$deactivate_reason["id"]; ?>" name="<?php echo $wd_options->prefix; ?>_reasons" >
15
- <label for="<?php echo $wd_options->prefix . "-" . $deactivate_reason["id"]; ?>"><?php echo $deactivate_reason["text"];?></label>
16
- </div>
17
- <?php } ?>
18
- <div class="<?php echo $wd_options->prefix; ?>_additional_details_wrap"></div>
19
- </div>
20
- <div class="wd-btns">
21
- <a href="<?php echo $deactivate_url; ?>" data-val="1" class="button button-primary button-close wd-<?php echo $wd_options->prefix; ?>-deactivate" id="wd-<?php echo $wd_options->prefix; ?>-deactivate"><?php _e( "Skip and Deactivate" , $wd_options->prefix ); ?></a>
22
- <a href="<?php echo $deactivate_url; ?>" data-val="2" class="button button-primary button-close wd-<?php echo $wd_options->prefix; ?>-deactivate" id="wd-<?php echo $wd_options->prefix; ?>-submit-and-deactivate" style="display:none;"><?php _e( "Submit and Deactivate" , $wd_options->prefix ); ?></a>
23
- </div>
24
- <input type="hidden" name="<?php echo $wd_options->prefix . "_submit_and_deactivate"; ?>" value="" >
25
- <?php wp_nonce_field( $wd_options->prefix . '_save_form', $wd_options->prefix . '_save_form_fild'); ?>
26
- </form>
27
- </div>
 
1
+ <div class="wd-opacity wd-<?php echo $wd_options->prefix; ?>-opacity"></div>
2
+ <div class="wd-deactivate-popup wd-<?php echo $wd_options->prefix; ?>-deactivate-popup">
3
+ <div class="wd-deactivate-popup-opacity wd-deactivate-popup-opacity-<?php echo $wd_options->prefix; ?>">
4
+ <img src="<?php echo $wd_options->wd_url_img . '/spinner.gif'; ?>" class="wd-img-loader" >
5
+ </div>
6
+ <form method="post" id="<?php echo $wd_options->prefix; ?>_deactivate_form">
7
+ <div class="wd-deactivate-popup-header">
8
+ <?php _e( "Please let us know why you are deactivating. Your answer will help us to provide you support or sometimes offer discounts. (Optional)", $wd_options->prefix ); ?>:
9
+ <span class="wd-deactivate-popup-close-btn"></span>
10
+ </div>
11
+
12
+ <div class="wd-deactivate-popup-body">
13
+ <?php foreach( $deactivate_reasons as $deactivate_reason_slug => $deactivate_reason ) { ?>
14
+ <div class="wd-<?php echo $wd_options->prefix; ?>-reasons">
15
+ <input type="radio" value="<?php echo $deactivate_reason["id"];?>" id="<?php echo $wd_options->prefix . "-" .$deactivate_reason["id"]; ?>" name="<?php echo $wd_options->prefix; ?>_reasons" >
16
+ <label for="<?php echo $wd_options->prefix . "-" . $deactivate_reason["id"]; ?>"><?php echo $deactivate_reason["text"];?></label>
17
+ </div>
18
+ <?php } ?>
19
+ <div class="<?php echo $wd_options->prefix; ?>_additional_details_wrap"></div>
20
+ </div>
21
+ <div class="wd-btns">
22
+ <a href="<?php echo $deactivate_url; ?>" data-val="1" class="button button-primary button-close wd-<?php echo $wd_options->prefix; ?>-deactivate" id="wd-<?php echo $wd_options->prefix; ?>-deactivate"><?php _e( "Skip and Deactivate" , $wd_options->prefix ); ?></a>
23
+ <a href="<?php echo $deactivate_url; ?>" data-val="2" class="button button-primary button-primary-disabled button-close wd-<?php echo $wd_options->prefix; ?>-deactivate" id="wd-<?php echo $wd_options->prefix; ?>-submit-and-deactivate" style="display:none;"><?php _e( "Submit and Deactivate" , $wd_options->prefix ); ?></a>
24
+ </div>
25
+ <input type="hidden" name="<?php echo $wd_options->prefix . "_submit_and_deactivate"; ?>" value="" >
26
+ <?php wp_nonce_field( $wd_options->prefix . '_save_form', $wd_options->prefix . '_save_form_fild'); ?>
27
+ </form>
28
+ </div>
wd/templates/display_overview.php CHANGED
@@ -1,43 +1,43 @@
1
- <div class="overview_welcome">
2
- <div class="wd-cell wd-valign-middle">
3
- <a href="<?php echo $wd_options->plugin_wd_url; ?>" target="_blank"><img
4
- src="<?php echo $wd_options->wd_url_img . '/' . $wd_options->prefix . '_main_plugin.png'; ?>"></a>
5
- </div>
6
- <div class="wd-cell wd-valign-middle">
7
-
8
- <h2><?php echo sprintf(__("Welcome to %s", $wd_options->prefix), $wd_options->plugin_title); ?> <?php if (!empty($start_using_url)) { ?>
9
- <div class="wd-start-using-button">
10
- <a href="<?php echo $start_using_url; ?>" class="button button-primary button-large">Start using</a>
11
- </div>
12
- <?php } ?></h2>
13
-
14
- <div class="overview_welcome_text">
15
-
16
- <div><?php echo sprintf(__("CONGRATS! You've successfully installed %s WordPress plugin.", $wd_options->prefix), $wd_options->plugin_title); ?></div>
17
- <div><?php echo $wd_options->description; ?></div>
18
- </div>
19
- </div>
20
- </div>
21
- <div class="overview_wrap">
22
- <ul class="overview_tabs">
23
- <?php
24
- foreach ($tabs as $tab_key => $tab) {
25
- $href = $tab['view'] !== false ? "#" . $tab_key : $tab_key;
26
- $target = $tab['view'] == false ? 'target="_blank" class="not_tab"' : '';
27
- $overview_tab_active_class = $tab_key == 'welcome' ? 'class="overview_tab_active"' : ''
28
- ?>
29
- <li class=""><a
30
- href="<?php echo $href; ?>" <?php echo $overview_tab_active_class; ?> <?php echo $target; ?>><?php echo esc_html($tab['name']); ?></a>
31
- </li>
32
- <?php } ?>
33
- </ul>
34
- <div class="overview_content">
35
- <?php
36
- foreach ($tabs as $tab_key => $tab) {
37
- if ($tab['view'] !== false) {
38
- echo call_user_func($tab['view']);
39
- }
40
- }
41
- ?>
42
- </div>
43
  </div>
1
+ <div class="overview_welcome">
2
+ <div class="wd-cell wd-valign-middle">
3
+ <a href="<?php echo $wd_options->plugin_wd_url; ?>" target="_blank"><img
4
+ src="<?php echo $wd_options->wd_url_img . '/' . $wd_options->prefix . '_main_plugin.png'; ?>"></a>
5
+ </div>
6
+ <div class="wd-cell wd-valign-middle">
7
+
8
+ <h2><?php echo sprintf(__("Welcome to %s", $wd_options->prefix), $wd_options->plugin_title); ?> <?php if (!empty($start_using_url)) { ?>
9
+ <div class="wd-start-using-button">
10
+ <a href="<?php echo $start_using_url; ?>" class="button button-primary button-large">Start using</a>
11
+ </div>
12
+ <?php } ?></h2>
13
+
14
+ <div class="overview_welcome_text">
15
+
16
+ <div><?php echo sprintf(__("CONGRATS! You've successfully installed %s WordPress plugin.", $wd_options->prefix), $wd_options->plugin_title); ?></div>
17
+ <div><?php echo $wd_options->description; ?></div>
18
+ </div>
19
+ </div>
20
+ </div>
21
+ <div class="overview_wrap">
22
+ <ul class="overview_tabs">
23
+ <?php
24
+ foreach ($tabs as $tab_key => $tab) {
25
+ $href = $tab['view'] !== false ? "#" . $tab_key : $tab_key;
26
+ $target = $tab['view'] == false ? 'target="_blank" class="not_tab"' : '';
27
+ $overview_tab_active_class = $tab_key == 'welcome' ? 'class="overview_tab_active"' : ''
28
+ ?>
29
+ <li class=""><a
30
+ href="<?php echo $href; ?>" <?php echo $overview_tab_active_class; ?> <?php echo $target; ?>><?php echo esc_html($tab['name']); ?></a>
31
+ </li>
32
+ <?php } ?>
33
+ </ul>
34
+ <div class="overview_content">
35
+ <?php
36
+ foreach ($tabs as $tab_key => $tab) {
37
+ if ($tab['view'] !== false) {
38
+ echo call_user_func($tab['view']);
39
+ }
40
+ }
41
+ ?>
42
+ </div>
43
  </div>
wd/templates/display_overview_deals.php CHANGED
@@ -1,81 +1,81 @@
1
- <div id="deals">
2
-
3
- <div id="plugins">
4
- <div class="deals_header deals_header_plugins">
5
- <a href="https://web-dorado.com/wordpress-plugins-bundle.html" target="_blank">
6
- <div class="wd-table">
7
- <div class="wd-cell wd-text-right wd-valign-middle">
8
- <img src="<?php echo $wd_options->wd_url_img . '/' . $wd_options->prefix . '_main_plugin.png'; ?>" width="100px">
9
- </div>
10
- <div class="wd-cell wd-valign-middle">
11
- <div class="titles_wrap">
12
- <div class="deals_main_title"><?php echo sprintf( __( "Get %s", $wd_options->prefix ), $wd_options->plugin_title ); ?></div>
13
- <div class="deals_main_title"><span class="higlight">+27 </span><?php echo __( "plugins", $wd_options->prefix ); ?></div>
14
- <div class="deals_secondary_title"><?php echo __( "for", $wd_options->prefix ); ?><span class="higlight"> $99 </span><?php echo __( "only", $wd_options->prefix ); ?></div>
15
- </div>
16
- <div class="deals_save"><?php echo __( "Save 80%", $wd_options->prefix ); ?></div>
17
- </div>
18
- </div>
19
- </a>
20
- </div>
21
- <div class="deals_content">
22
- <?php foreach( $plugins as $wp_slug => &$plugin ){ ?>
23
-
24
- <div class="deal_block">
25
- <div class="deal_title">
26
- <a href="<?php echo $plugin["href"]; ?>" target="_blank" >
27
- <img src = "<?php echo $wd_options->wd_url_img . '/plugins/' . $wp_slug . '.png'; ?>">
28
- <h2><?php echo $plugin["title"]; ?></h2>
29
- </a>
30
- </div>
31
- <div class="deal_desc">
32
- <p><?php echo $plugin["content"]; ?></p>
33
- <div class="deal_desc_footer">
34
- <div class="download_btn">
35
- <a href="<?php echo $plugin["href"]; ?>" target="_blank" ><?php _e( "Download", $wd_options->prefix ); ?></a>
36
- </div>
37
- </div>
38
- </div>
39
-
40
- </div>
41
- <?php } ?>
42
- </div>
43
- <div class="get_all_deals">
44
- <a href="https://web-dorado.com/wordpress-plugins-bundle.html" target="_blank" >
45
- <?php _e( "Get all plugins", $wd_options->prefix ); ?>
46
- </a>
47
- </div>
48
- </div>
49
- <div id="themes">
50
- <div class="deals_header deals_header_themes">
51
- <a href="https://web-dorado.com/wordpress-themes-bundle.html" target="_blank">
52
- <div class="wd-table">
53
- <div class="wd-cell wd-text-right wd-valign-middle">
54
- </div>
55
- <div class="wd-cell wd-valign-middle">
56
- <div class="titles_wrap">
57
- <div class="deals_main_title"><?php echo __( "Get all 11 themes", $wd_options->prefix ); ?></div>
58
- <div class="deals_main_title"><?php echo __( "for", $wd_options->prefix ); ?><span class="higlight"> $40 </span><?php echo __( "only", $wd_options->prefix ); ?></div>
59
- </div>
60
- <div class="deals_save"><?php echo __( "Save 70%", $wd_options->prefix ); ?></div>
61
- </div>
62
- </div>
63
- </a>
64
- </div>
65
- <div class="deals_content">
66
- <?php foreach( $themes as $slug => $theme ){ ?>
67
- <div class="theme_block">
68
- <a href="<?php echo $theme["href"]; ?>" target="_blank" >
69
- <img src = "<?php echo $wd_options->wd_url_img . '/plugins/' . $slug . '.png'; ?>" width="100%;">
70
- <div><?php echo $theme["title"]; ?></div>
71
- </a>
72
- </div>
73
- <?php } ?>
74
- </div>
75
- <div class="get_all_deals">
76
- <a href="https://web-dorado.com/wordpress-themes-bundle.html" target="_blank" >
77
- <?php _e( "Find out more", $wd_options->prefix ); ?>
78
- </a>
79
- </div>
80
- </div>
81
  </div>
1
+ <div id="deals">
2
+
3
+ <div id="plugins">
4
+ <div class="deals_header deals_header_plugins">
5
+ <a href="https://web-dorado.com/wordpress-plugins-bundle.html" target="_blank">
6
+ <div class="wd-table">
7
+ <div class="wd-cell wd-text-right wd-valign-middle">
8
+ <img src="<?php echo $wd_options->wd_url_img . '/' . $wd_options->prefix . '_main_plugin.png'; ?>" width="100px">
9
+ </div>
10
+ <div class="wd-cell wd-valign-middle">
11
+ <div class="titles_wrap">
12
+ <div class="deals_main_title"><?php echo sprintf( __( "Get %s", $wd_options->prefix ), $wd_options->plugin_title ); ?></div>
13
+ <div class="deals_main_title"><span class="higlight">+27 </span><?php echo __( "plugins", $wd_options->prefix ); ?></div>
14
+ <div class="deals_secondary_title"><?php echo __( "for", $wd_options->prefix ); ?><span class="higlight"> $99 </span><?php echo __( "only", $wd_options->prefix ); ?></div>
15
+ </div>
16
+ <div class="deals_save"><?php echo __( "Save 80%", $wd_options->prefix ); ?></div>
17
+ </div>
18
+ </div>
19
+ </a>
20
+ </div>
21
+ <div class="deals_content">
22
+ <?php foreach( $plugins as $wp_slug => &$plugin ){ ?>
23
+
24
+ <div class="deal_block">
25
+ <div class="deal_title">
26
+ <a href="<?php echo $plugin["href"]; ?>" target="_blank" >
27
+ <img src = "<?php echo $wd_options->wd_url_img . '/plugins/' . $wp_slug . '.png'; ?>">
28
+ <h2><?php echo $plugin["title"]; ?></h2>
29
+ </a>
30
+ </div>
31
+ <div class="deal_desc">
32
+ <p><?php echo $plugin["content"]; ?></p>
33
+ <div class="deal_desc_footer">
34
+ <div class="download_btn">
35
+ <a href="<?php echo $plugin["href"]; ?>" target="_blank" ><?php _e( "Download", $wd_options->prefix ); ?></a>
36
+ </div>
37
+ </div>
38
+ </div>
39
+
40
+ </div>
41
+ <?php } ?>
42
+ </div>
43
+ <div class="get_all_deals">
44
+ <a href="https://web-dorado.com/wordpress-plugins-bundle.html" target="_blank" >
45
+ <?php _e( "Get all plugins", $wd_options->prefix ); ?>
46
+ </a>
47
+ </div>
48
+ </div>
49
+ <div id="themes">
50
+ <div class="deals_header deals_header_themes">
51
+ <a href="https://web-dorado.com/wordpress-themes-bundle.html" target="_blank">
52
+ <div class="wd-table">
53
+ <div class="wd-cell wd-text-right wd-valign-middle">
54
+ </div>
55
+ <div class="wd-cell wd-valign-middle">
56
+ <div class="titles_wrap">
57
+ <div class="deals_main_title"><?php echo __( "Get all 11 themes", $wd_options->prefix ); ?></div>
58
+ <div class="deals_main_title"><?php echo __( "for", $wd_options->prefix ); ?><span class="higlight"> $40 </span><?php echo __( "only", $wd_options->prefix ); ?></div>
59
+ </div>
60
+ <div class="deals_save"><?php echo __( "Save 70%", $wd_options->prefix ); ?></div>
61
+ </div>
62
+ </div>
63
+ </a>
64
+ </div>
65
+ <div class="deals_content">
66
+ <?php foreach( $themes as $slug => $theme ){ ?>
67
+ <div class="theme_block">
68
+ <a href="<?php echo $theme["href"]; ?>" target="_blank" >
69
+ <img src = "<?php echo $wd_options->wd_url_img . '/plugins/' . $slug . '.png'; ?>" width="100%;">
70
+ <div><?php echo $theme["title"]; ?></div>
71
+ </a>
72
+ </div>
73
+ <?php } ?>
74
+ </div>
75
+ <div class="get_all_deals">
76
+ <a href="https://web-dorado.com/wordpress-themes-bundle.html" target="_blank" >
77
+ <?php _e( "Find out more", $wd_options->prefix ); ?>
78
+ </a>
79
+ </div>
80
+ </div>
81
  </div>
wd/templates/display_overview_support.php CHANGED
@@ -1,43 +1,59 @@
1
- <div id="support">
2
- <p class="wd-support-main">
3
- <?php echo sprintf( __("You may contact us by filling in this form or by email %s any time you need professional support or have any questions. You can also fill in the form to leave your comments or feedback.", $wd_options->prefix), "<span class='support_email'>(support@web-dorado.com)</span>") ;?>
4
- </p>
5
- <div class="wd-overview-site-deatils">
6
- <h2><?php _e( "Site Details", $wd_options->prefix ); ?></h2>
7
- <p>
8
- <?php _e( "When contacting support, consider copying and pasting this information in your support request.", $wd_options->prefix ); ?>
9
- <br>
10
- <?php _e( "It helps us troubleshoot more quickly.", $wd_options->prefix ); ?>
11
- </p>
12
- <?php
13
- if ( function_exists('current_user_can' ) ) {
14
- if ( current_user_can('manage_options') ) {
15
- ?>
16
- <div class="wd-site-deatils wd-table">
17
- <button id="wd-copy"><?php _e( "Copy to Clipboard", $wd_options->prefix ); ?></button>
18
- <div id="wd-site-deatils">
19
- <textarea rows="10" id="wd-site-deatils-textarea"><?php
20
- _e( "Server Settings", $wd_options->prefix );
21
- echo '&#13;&#10;&#13;&#10;';
22
- foreach( $server_info as $key => $val ){
23
- echo $key . ": " . $val . '&#13;&#10;';
24
- }
25
- echo '&#13;&#10;';
26
- _e( "Graphic Library", $wd_options->prefix );
27
- echo '&#13;&#10;&#13;&#10;';
28
- foreach( $gd_info as $key => $val ){
29
- echo $key . ": " . $val . '&#13;&#10;';
30
- }
31
- ?></textarea>
32
- </div>
33
- </div>
34
- <?php
35
- }
36
- }
37
- ?>
38
-
39
- </div>
40
- <div class="contact_us_wrap">
41
- <a href="https://web-dorado.com/support/contact-us.html" target="_blank" class="contact_us"><?php _e("Contact us", $wd_options->prefix); ?></a>
42
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  </div>
1
+ <div id="support">
2
+ <p class="wd-support-main">
3
+ <?php echo sprintf( __("You may contact us by filling in this form or by email %s any time you need professional support or have any questions. You can also fill in the form to leave your comments or feedback.", $wd_options->prefix), "<span class='support_email'>(support@web-dorado.com)</span>") ;?>
4
+ </p>
5
+ <div class="wd-overview-site-deatils">
6
+ <h2><?php _e( "Site Details", $wd_options->prefix ); ?></h2>
7
+ <p>
8
+ <?php _e( "When contacting support, consider copying and pasting this information in your support request.", $wd_options->prefix ); ?>
9
+ <br>
10
+ <?php _e( "It helps us troubleshoot more quickly.", $wd_options->prefix ); ?>
11
+ </p>
12
+ <?php
13
+ if ( function_exists('current_user_can' ) ) {
14
+ if ( current_user_can('manage_options') ) {
15
+ ?>
16
+ <div class="wd-site-deatils wd-table">
17
+ <button id="wd-copy"><?php _e( "Copy to Clipboard", $wd_options->prefix ); ?></button>
18
+ <div id="wd-site-deatils">
19
+ <textarea rows="10" id="wd-site-deatils-textarea"><?php
20
+ _e( "Server Settings", $wd_options->prefix );
21
+ echo '&#13;&#10;&#13;&#10;';
22
+ foreach( $server_info as $key => $val ){
23
+ echo $key . ": " . $val . '&#13;&#10;';
24
+ }
25
+ echo '&#13;&#10;';
26
+ _e( "Graphic Library", $wd_options->prefix );
27
+ echo '&#13;&#10;&#13;&#10;';
28
+ foreach( $gd_info as $key => $val ){
29
+ echo $key . ": " . $val . '&#13;&#10;';
30
+ }
31
+ echo '&#13;&#10;';
32
+ _e("Active Plugins", $wd_options->prefix);
33
+ echo '&#13;&#10;';
34
+ $activepl = get_option('active_plugins');
35
+ $plugins = get_plugins();
36
+ $activated_plugins = array();
37
+ foreach ( $activepl as $p ) {
38
+ if ( isset($plugins[$p]) ) {
39
+ array_push($activated_plugins, $plugins[$p]);
40
+ echo '&#13;&#10;' . $plugins[$p]['Name'];
41
+ }
42
+ }
43
+ echo '&#13;&#10;&#13;&#10;';
44
+ _e("Active theme", $wd_options->prefix);
45
+ echo '&#13;&#10;&#13;&#10;';
46
+ echo wp_get_theme();
47
+ ?></textarea>
48
+ </div>
49
+ </div>
50
+ <?php
51
+ }
52
+ }
53
+ ?>
54
+
55
+ </div>
56
+ <div class="contact_us_wrap">
57
+ <a href="https://web-dorado.com/support/contact-us.html" target="_blank" class="contact_us"><?php _e("Contact us", $wd_options->prefix); ?></a>
58
+ </div>
59
  </div>
wd/templates/display_overview_user_guide.php CHANGED
@@ -1,46 +1,46 @@
1
- <div id="user_guide">
2
- <div class="wd-table">
3
- <div class="wd-cell">
4
- <?php for( $i = 0; $i < ceil( count($user_guide) / 2 ); $i++) { ?>
5
- <div class="user_guide_item">
6
- <a href="<?php echo $user_guide[$i]["url"]; ?>" class="user_guide_title" target="_blank"><?php echo $user_guide[$i]["main_title"]; ?></a>
7
- <?php foreach( $user_guide[$i]["titles"] as $title ) { ?>
8
- <div><a href="<?php echo $title["url"]; ?>" target="_blank" class="user_guide_titles"><?php echo $title["title"]; ?></a></div>
9
- <?php } ?>
10
- </div>
11
- <?php } ?>
12
- </div>
13
- <div class="wd-cell">
14
- <?php for( $i = $i; $i < count($user_guide); $i++) { ?>
15
- <div class="user_guide_item">
16
- <a href="<?php echo $user_guide[$i]["url"]; ?>" class="user_guide_title" target="_blank"><?php echo $user_guide[$i]["main_title"]; ?></a>
17
- <?php foreach( $user_guide[$i]["titles"] as $title ) { ?>
18
- <div><a href="<?php echo $title["url"]; ?>" target="_blank" class="user_guide_titles"><?php echo $title["title"]; ?></a></div>
19
- <?php } ?>
20
- </div>
21
- <?php } ?>
22
- </div>
23
- <div class="wd-cell">
24
- <?php if($wd_options->plugin_wd_demo_link) { ?>
25
- <a href="<?php echo $wd_options->plugin_wd_demo_link; ?>" class="user_guide_demo" target="_blank">
26
- <?php _e( "Demo", $wd_options->prefix ); ?>
27
- </a>
28
- <?php } ?>
29
- <a href="<?php echo $wd_options->plugin_wd_url; ?>" class="user_guide_plugin" target="_blank">
30
- <?php echo $wd_options->plugin_title; ?>
31
- </a>
32
- <a href="https://wordpress.org/support/plugin/<?php echo $wd_options->plugin_wordpress_slug; ?>" class="user_guide_support_forum" target="_blank">
33
- <?php _e( "Support Forum", $wd_options->prefix ); ?>
34
- </a>
35
- <a href="https://web-dorado.com/support/faq.html" class="user_guide_faq" target="_blank">
36
- <?php _e( "FAQ", $wd_options->prefix ); ?>
37
- </a>
38
- <?php if($wd_options->plugin_wd_addons_link) { ?>
39
- <a href="<?php echo $wd_options->plugin_wd_addons_link; ?>" class="user_guide_addons" target="_blank">
40
- <?php _e( "Addons", $wd_options->prefix ); ?>
41
- </a>
42
- <?php } ?>
43
- </div>
44
- </div>
45
- </div>
46
-
1
+ <div id="user_guide">
2
+ <div class="wd-table">
3
+ <div class="wd-cell">
4
+ <?php for( $i = 0; $i < ceil( count($user_guide) / 2 ); $i++) { ?>
5
+ <div class="user_guide_item">
6
+ <a href="<?php echo $user_guide[$i]["url"]; ?>" class="user_guide_title" target="_blank"><?php echo $user_guide[$i]["main_title"]; ?></a>
7
+ <?php foreach( $user_guide[$i]["titles"] as $title ) { ?>
8
+ <div><a href="<?php echo $title["url"]; ?>" target="_blank" class="user_guide_titles"><?php echo $title["title"]; ?></a></div>
9
+ <?php } ?>
10
+ </div>
11
+ <?php } ?>
12
+ </div>
13
+ <div class="wd-cell">
14
+ <?php for( $i = $i; $i < count($user_guide); $i++) { ?>
15
+ <div class="user_guide_item">
16
+ <a href="<?php echo $user_guide[$i]["url"]; ?>" class="user_guide_title" target="_blank"><?php echo $user_guide[$i]["main_title"]; ?></a>
17
+ <?php foreach( $user_guide[$i]["titles"] as $title ) { ?>
18
+ <div><a href="<?php echo $title["url"]; ?>" target="_blank" class="user_guide_titles"><?php echo $title["title"]; ?></a></div>
19
+ <?php } ?>
20
+ </div>
21
+ <?php } ?>
22
+ </div>
23
+ <div class="wd-cell">
24
+ <?php if($wd_options->plugin_wd_demo_link) { ?>
25
+ <a href="<?php echo $wd_options->plugin_wd_demo_link; ?>" class="user_guide_demo" target="_blank">
26
+ <?php _e( "Demo", $wd_options->prefix ); ?>
27
+ </a>
28
+ <?php } ?>
29
+ <a href="<?php echo $wd_options->plugin_wd_url; ?>" class="user_guide_plugin" target="_blank">
30
+ <?php echo $wd_options->plugin_title; ?>
31
+ </a>
32
+ <a href="https://wordpress.org/support/plugin/<?php echo $wd_options->plugin_wordpress_slug; ?>" class="user_guide_support_forum" target="_blank">
33
+ <?php _e( "Support Forum", $wd_options->prefix ); ?>
34
+ </a>
35
+ <a href="https://web-dorado.com/support/faq.html" class="user_guide_faq" target="_blank">
36
+ <?php _e( "FAQ", $wd_options->prefix ); ?>
37
+ </a>
38
+ <?php if($wd_options->plugin_wd_addons_link) { ?>
39
+ <a href="<?php echo $wd_options->plugin_wd_addons_link; ?>" class="user_guide_addons" target="_blank">
40
+ <?php _e( "Addons", $wd_options->prefix ); ?>
41
+ </a>
42
+ <?php } ?>
43
+ </div>
44
+ </div>
45
+ </div>
46
+
wd/templates/display_overview_welcome.php CHANGED
@@ -1,31 +1,31 @@
1
- <div id="welcome">
2
- <!-- display plugin video -->
3
- <?php if( $wd_options->video_youtube_id ){ ?>
4
- <div class="wd-video_container">
5
- <iframe width="100%" height="400" src="//www.youtube.com/embed/<?php echo $wd_options->video_youtube_id; ?>?rel=0" frameborder="0" allowfullscreen></iframe>
6
- </div>
7
- <?php }
8
- else if( $wd_options->overview_welcome_image ) { ?>
9
- <img src="<?php echo $wd_options->overview_welcome_image; ?>" width="100%" />
10
-
11
- <?php } ?>
12
-
13
- <!-- display plugin features -->
14
- <div class="plugin_features">
15
- <!-- if your plugin has a wizard-->
16
- <?php if( $wd_options->plugin_wizard_link ) { ?>
17
- <div class="wd-tour">
18
- <a class="wd-tour-btn" href="<?php echo $wd_options->plugin_wizard_link;?>"><?php _e( "Run Install Wizard ",$wd_options->prefix); ?></a>
19
- </div>
20
- <?php } ?>
21
- <?php foreach( $wd_options->plugin_features as $feature ){ ?>
22
- <h2 class="plugin_feature_title"><?php echo $feature["title"]; ?></h2>
23
- <div class="plugin_feature_description"><?php echo $feature["description"]; ?></div>
24
- <?php } ?>
25
- <div class="more_features_wrap">
26
- <a href="<?php echo $wd_options->plugin_wd_url; ?>" class="more_features" target="_blank"><?php _e( "More features", $wd_options->prefix ); ?></a>
27
- </div>
28
- </div>
29
-
30
- </div>
31
-
1
+ <div id="welcome">
2
+ <!-- display plugin video -->
3
+ <?php if( $wd_options->video_youtube_id ){ ?>
4
+ <div class="wd-video_container">
5
+ <iframe width="100%" height="400" src="//www.youtube.com/embed/<?php echo $wd_options->video_youtube_id; ?>?rel=0" frameborder="0" allowfullscreen></iframe>
6
+ </div>
7
+ <?php }
8
+ else if( $wd_options->overview_welcome_image ) { ?>
9
+ <img src="<?php echo $wd_options->overview_welcome_image; ?>" width="100%" />
10
+
11
+ <?php } ?>
12
+
13
+ <!-- display plugin features -->
14
+ <div class="plugin_features">
15
+ <!-- if your plugin has a wizard-->
16
+ <?php if( $wd_options->plugin_wizard_link ) { ?>
17
+ <div class="wd-tour">
18
+ <a class="wd-tour-btn" href="<?php echo $wd_options->plugin_wizard_link;?>"><?php _e( "Run Install Wizard ",$wd_options->prefix); ?></a>
19
+ </div>
20
+ <?php } ?>
21
+ <?php foreach( $wd_options->plugin_features as $feature ){ ?>
22
+ <h2 class="plugin_feature_title"><?php echo $feature["title"]; ?></h2>
23
+ <div class="plugin_feature_description"><?php echo $feature["description"]; ?></div>
24
+ <?php } ?>
25
+ <div class="more_features_wrap">
26
+ <a href="<?php echo $wd_options->plugin_wd_url; ?>" class="more_features" target="_blank"><?php _e( "More features", $wd_options->prefix ); ?></a>
27
+ </div>
28
+ </div>
29
+
30
+ </div>
31
+
wd/templates/display_subscribe.php CHANGED
@@ -1,47 +1,50 @@
1
- <div class="wd-subscribe">
2
- <div class="wd-subscribe-content">
3
- <div class="imgs">
4
- <img src="<?php echo $wd_options->wd_url_img . '/wp_logo.png'; ?>">
5
- <span>+</span>
6
- <img src="<?php echo $wd_options->wd_url_img . '/' . $wd_options->prefix . '_main_plugin.png'; ?>">
7
- </div>
8
- <div class="texts">
9
- <p><?php _e( "Hi there", $wd_options->prefix ); ?>,</p>
10
- <p>
11
- <?php echo sprintf( __( "Allow %s to collect some usage data. This will allow you to get more out of your plugin experience - get awesome customer support, receive exclusive deals and discounts on premium products and more. You can choose to skip this step, %s will still work just fine.", $wd_options->prefix ), '<strong>Web-Dorado</strong>', $wd_options->plugin_title ); ?>
12
- </p>
13
- </div>
14
- <div class="btns">
15
- <a href="<?php echo "admin.php?page=" . $wd_options->prefix . "_subscribe&". $wd_options->prefix . "_sub_action=allow" ;?>" class="allow_and_continue"></a>
16
- <img src="<?php echo $wd_options->wd_url_img . '/loader.gif';?>" class="wd_loader">
17
- <a href="<?php echo "admin.php?page=" . $wd_options->prefix . "_subscribe&" . $wd_options->prefix . "_sub_action=skip" ;?>" class="skip" ></a>
18
- </div>
19
- <a href="#" class="permissions"><?php _e( "What data is being collected?" , $wd_options->prefix ); ?></a>
20
- <div class="list">
21
- <?php foreach( $list as $list_item ) { ?>
22
- <div class="list_item">
23
- <div class="list_img_wrap"><img src="<?php echo $list_item["img"]; ?>"></div>
24
- <div class="list_text_wrap">
25
- <div class="list_title"><?php echo $list_item["title"]; ?></div>
26
- <div class="list_text"><?php echo $list_item["small_text"]; ?></div>
27
- </div>
28
- </div>
29
- <?php } ?>
30
- </div>
31
- </div>
32
- <div class="wd-subscribe-footer">
33
- <ul class="wd-footer-menu">
34
- <li>
35
- <a href="https://web-dorado.com/web-dorado-privacy-statement.html" target="_blank">
36
- <?php _e( "Privacy Policy", $wd_options->prefix ); ?>
37
- </a>
38
- <span>.</span>
39
- </li>
40
- <li>
41
- <a href="https://web-dorado.com/terms-of-service.html" target="_blank">
42
- <?php _e( "Terms of Use", $wd_options->prefix ); ?>
43
- </a>
44
- </li>
45
- </ul>
46
- </div>
47
- </div>
 
 
 
1
+ <div class="wd-subscribe">
2
+ <div class="wd-subscribe-content">
3
+ <div class="imgs">
4
+ <img src="<?php echo $wd_options->wd_url_img . '/wp_logo.png'; ?>">
5
+ <span>+</span>
6
+ <img src="<?php echo $wd_options->wd_url_img . '/' . $wd_options->prefix . '_main_plugin.png'; ?>">
7
+ </div>
8
+ <div class="texts">
9
+ <p><?php _e( "Hi there", $wd_options->prefix ); ?>,</p>
10
+ <p>
11
+ <?php
12
+ $pp_text = "<a target='_blank' href='https://web-dorado.com/web-dorado-privacy-statement.html'>" . __("Privacy Policy", $wd_options->prefix) . "</a>";
13
+ echo sprintf(__("Allow %s to collect some usage data, to be able to provide you more out of your plugin experience - awesome customer support and more. Check how we handle your personal data in our %s. You can always customize your preferences from the emails your receive from us. You can choose to skip this step, %s will still work just fine.", $wd_options->prefix), '<strong>Web-Dorado</strong>', $pp_text, $wd_options->plugin_title);
14
+ ?>
15
+ </p>
16
+ </div>
17
+ <div class="btns">
18
+ <a href="<?php echo "admin.php?page=" . $wd_options->prefix . "_subscribe&". $wd_options->prefix . "_sub_action=allow" ;?>" class="allow_and_continue"></a>
19
+ <img src="<?php echo $wd_options->wd_url_img . '/loader.gif';?>" class="wd_loader">
20
+ <a href="<?php echo "admin.php?page=" . $wd_options->prefix . "_subscribe&" . $wd_options->prefix . "_sub_action=skip" ;?>" class="skip" ></a>
21
+ </div>
22
+ <a href="#" class="permissions"><?php _e( "What data is being collected?" , $wd_options->prefix ); ?></a>
23
+ <div class="list">
24
+ <?php foreach( $list as $list_item ) { ?>
25
+ <div class="list_item">
26
+ <div class="list_img_wrap"><img src="<?php echo $list_item["img"]; ?>"></div>
27
+ <div class="list_text_wrap">
28
+ <div class="list_title"><?php echo $list_item["title"]; ?></div>
29
+ <div class="list_text"><?php echo $list_item["small_text"]; ?></div>
30
+ </div>
31
+ </div>
32
+ <?php } ?>
33
+ </div>
34
+ </div>
35
+ <div class="wd-subscribe-footer">
36
+ <ul class="wd-footer-menu">
37
+ <li>
38
+ <a href="https://web-dorado.com/web-dorado-privacy-statement.html" target="_blank">
39
+ <?php _e( "Privacy Policy", $wd_options->prefix ); ?>
40
+ </a>
41
+ <span>.</span>
42
+ </li>
43
+ <li>
44
+ <a href="https://web-dorado.com/terms-of-service.html" target="_blank">
45
+ <?php _e( "Terms of Use", $wd_options->prefix ); ?>
46
+ </a>
47
+ </li>
48
+ </ul>
49
+ </div>
50
+ </div>
wd/wd.php CHANGED
@@ -1,156 +1,156 @@
1
- <?php
2
- if ( ! defined( 'ABSPATH' ) ) {
3
- exit;
4
- }
5
-
6
- class DoradoWeb {
7
- ////////////////////////////////////////////////////////////////////////////////////////
8
- // Events //
9
- ////////////////////////////////////////////////////////////////////////////////////////
10
- ////////////////////////////////////////////////////////////////////////////////////////
11
- // Constants //
12
- ////////////////////////////////////////////////////////////////////////////////////////
13
- ////////////////////////////////////////////////////////////////////////////////////////
14
- // Variables //
15
- ////////////////////////////////////////////////////////////////////////////////////////
16
- public static $instance;
17
- public $overview_instance;
18
- public $subscribe_instance;
19
- public $config;
20
- private $version = "1.0.13";
21
-
22
- ////////////////////////////////////////////////////////////////////////////////////////
23
- // Constructor & Destructor //
24
- ////////////////////////////////////////////////////////////////////////////////////////
25
- public function __construct() {
26
- // Add menu for Overview page
27
- add_action( 'admin_menu', array( $this, 'wd_overview_menu_page' ), 10 );
28
-
29
- }
30
- ////////////////////////////////////////////////////////////////////////////////////////
31
- // Public Methods //
32
- ////////////////////////////////////////////////////////////////////////////////////////
33
-
34
- // Init plugin data
35
- public function wd_init( $options ) {
36
-
37
- if(!is_array($options)){
38
- return false;
39
- }
40
- $config = new DoradoWebConfig();
41
- $config->set_options( $options );
42
- $this->config = $config;
43
- if( !class_exists("DoradoWebApi") ){
44
- $this->wd_includes();
45
- }
46
-
47
- $this->init_classes();
48
- $this->register_hooks();
49
-
50
- }
51
-
52
- // Create overview menu page
53
- public function wd_overview_menu_page() {
54
- $wd_options = $this->config;
55
-
56
- $capability = $wd_options->menu_capability ? $wd_options->menu_capability : "manage_options";
57
- if( get_option( $wd_options->prefix . "_subscribe_done" ) == 1 || $wd_options->subscribe === false ){
58
- $parent_slug = $wd_options->custom_post;
59
- }
60
- else{
61
-
62
- $subscribe_page = add_menu_page( $wd_options->plugin_menu_title, $wd_options->plugin_menu_title, "manage_options", $wd_options->prefix . '_subscribe' , array( $this, 'display_subscribew_page' ), $wd_options->plugin_menu_icon, $wd_options->menu_position );
63
-
64
- $subscribe_instance = new DoradoWebSubscribe($this->config);
65
- $this->subscribe_instance = $subscribe_instance;
66
- add_action( 'admin_print_styles-' . $subscribe_page, array( $subscribe_instance, 'subscribe_styles' ) );
67
- add_action( 'admin_print_scripts-' . $subscribe_page, array( $subscribe_instance, 'subscribe_scripts' ) );
68
-
69
- $parent_slug = null;
70
- }
71
-
72
- $overview_page = add_submenu_page( $parent_slug, __( 'Overview', $wd_options->prefix ), __( 'Overview', $wd_options->prefix ), $capability, 'overview_' . $wd_options->prefix, array( $this, 'display_overview_page' ));
73
-
74
-
75
- $overview_instance = new DoradoWebOverview($this->config);
76
- $this->overview_instance = $overview_instance;
77
- add_action( 'admin_print_styles-' . $overview_page, array( $overview_instance, 'overview_styles' ) );
78
- add_action( 'admin_print_scripts-' . $overview_page, array( $overview_instance, 'overview_scripts' ) );
79
- }
80
-
81
- public function display_subscribew_page(){
82
- $this->subscribe_instance->subscribe_display_page();
83
- }
84
-
85
- // Display overview page
86
- public function display_overview_page() {
87
- $this->overview_instance->display_overview_page();
88
- }
89
-
90
-
91
- // Includs
92
- public function wd_includes(){
93
- $wd_options = $this->config;
94
-
95
- require_once $wd_options->wd_dir_includes . '/deactivate.php' ;
96
- // notices
97
- require_once $wd_options->wd_dir_includes . '/api.php';
98
- require_once $wd_options->wd_dir_includes . '/notices.php';
99
- require_once $wd_options->wd_dir_includes . "/overview.php";
100
- require_once $wd_options->wd_dir_includes . "/subscribe.php";
101
-
102
- }
103
- public function init_classes(){
104
- $wd_options = $this->config;
105
-
106
- $current_url = $_SERVER['REQUEST_URI'];
107
- if( $wd_options->deactivate === true ){
108
- if(strpos( $current_url, "plugins.php" ) !== false ){
109
- new DoradoWebDeactivate( $this->config );
110
- }
111
- }
112
-
113
- new DoradoWebNotices( $this->config );
114
-
115
- }
116
-
117
- public function register_hooks(){
118
- $wd_options = $this->config;
119
- if( $wd_options->deactivate === true ){
120
- add_filter( 'plugin_action_links_' . plugin_basename( $wd_options->plugin_main_file ), array( $this, 'change_deactivation_link' ) );
121
- }
122
-
123
- }
124
-
125
-
126
- public function change_deactivation_link ( $links ) {
127
- $wd_options = $this->config;
128
- $deactivate_url =
129
- add_query_arg(
130
- array(
131
- 'action' => 'deactivate',
132
- 'plugin' => plugin_basename( $wd_options->plugin_main_file ),
133
- '_wpnonce' => wp_create_nonce( 'deactivate-plugin_' . plugin_basename( $wd_options->plugin_main_file ) )
134
- ),
135
- admin_url( 'plugins.php' )
136
- );
137
-
138
- $links["deactivate"] = '<a href="'.$deactivate_url.'" class="' . $wd_options->prefix . '_deactivate_link">Deactivate</a>';
139
- return $links;
140
- }
141
-
142
- ////////////////////////////////////////////////////////////////////////////////////////
143
- // Getters & Setters //
144
- ////////////////////////////////////////////////////////////////////////////////////////
145
- ////////////////////////////////////////////////////////////////////////////////////////
146
- // Private Methods //
147
- ////////////////////////////////////////////////////////////////////////////////////////
148
-
149
- ////////////////////////////////////////////////////////////////////////////////////////
150
- // Listeners //
151
- ////////////////////////////////////////////////////////////////////////////////////////
152
-
153
- }
154
-
155
-
156
-
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+
6
+ class DoradoWeb {
7
+ ////////////////////////////////////////////////////////////////////////////////////////
8
+ // Events //
9
+ ////////////////////////////////////////////////////////////////////////////////////////
10
+ ////////////////////////////////////////////////////////////////////////////////////////
11
+ // Constants //
12
+ ////////////////////////////////////////////////////////////////////////////////////////
13
+ ////////////////////////////////////////////////////////////////////////////////////////
14
+ // Variables //
15
+ ////////////////////////////////////////////////////////////////////////////////////////
16
+ public static $instance;
17
+ public $overview_instance;
18
+ public $subscribe_instance;
19
+ public $config;
20
+ private $version = "1.0.15";
21
+
22
+ ////////////////////////////////////////////////////////////////////////////////////////
23
+ // Constructor & Destructor //
24
+ ////////////////////////////////////////////////////////////////////////////////////////
25
+ public function __construct() {
26
+ // Add menu for Overview page
27
+ add_action( 'admin_menu', array( $this, 'wd_overview_menu_page' ), 10 );
28
+
29
+ }
30
+ ////////////////////////////////////////////////////////////////////////////////////////
31
+ // Public Methods //
32
+ ////////////////////////////////////////////////////////////////////////////////////////
33
+
34
+ // Init plugin data
35
+ public function wd_init( $options ) {
36
+
37
+ if(!is_array($options)){
38
+ return false;
39
+ }
40
+ $config = new DoradoWebConfig();
41
+ $config->set_options( $options );
42
+ $this->config = $config;
43
+ if( !class_exists("DoradoWebApi") ){
44
+ $this->wd_includes();
45
+ }
46
+
47
+ $this->init_classes();
48
+ $this->register_hooks();
49
+
50
+ }
51
+
52
+ // Create overview menu page
53
+ public function wd_overview_menu_page() {
54
+ $wd_options = $this->config;
55
+
56
+ $capability = $wd_options->menu_capability ? $wd_options->menu_capability : "manage_options";
57
+ if( get_option( $wd_options->prefix . "_subscribe_done" ) == 1 || $wd_options->subscribe === false ){
58
+ $parent_slug = $wd_options->custom_post;
59
+ }
60
+ else{
61
+
62
+ $subscribe_page = add_menu_page( $wd_options->plugin_menu_title, $wd_options->plugin_menu_title, "manage_options", $wd_options->prefix . '_subscribe' , array( $this, 'display_subscribew_page' ), $wd_options->plugin_menu_icon, $wd_options->menu_position );
63
+
64
+ $subscribe_instance = new DoradoWebSubscribe($this->config);
65
+ $this->subscribe_instance = $subscribe_instance;
66
+ add_action( 'admin_print_styles-' . $subscribe_page, array( $subscribe_instance, 'subscribe_styles' ) );
67
+ add_action( 'admin_print_scripts-' . $subscribe_page, array( $subscribe_instance, 'subscribe_scripts' ) );
68
+
69
+ $parent_slug = null;
70
+ }
71
+
72
+ $overview_page = add_submenu_page( $parent_slug, __( 'Overview', $wd_options->prefix ), __( 'Overview', $wd_options->prefix ), $capability, 'overview_' . $wd_options->prefix, array( $this, 'display_overview_page' ));
73
+
74
+
75
+ $overview_instance = new DoradoWebOverview($this->config);
76
+ $this->overview_instance = $overview_instance;
77
+ add_action( 'admin_print_styles-' . $overview_page, array( $overview_instance, 'overview_styles' ) );
78
+ add_action( 'admin_print_scripts-' . $overview_page, array( $overview_instance, 'overview_scripts' ) );
79
+ }
80
+
81
+ public function display_subscribew_page(){
82
+ $this->subscribe_instance->subscribe_display_page();
83
+ }
84
+
85
+ // Display overview page
86
+ public function display_overview_page() {
87
+ $this->overview_instance->display_overview_page();
88
+ }
89
+
90
+
91
+ // Includs
92
+ public function wd_includes(){
93
+ $wd_options = $this->config;
94
+
95
+ require_once $wd_options->wd_dir_includes . '/deactivate.php' ;
96
+ // notices
97
+ require_once $wd_options->wd_dir_includes . '/api.php';
98
+ require_once $wd_options->wd_dir_includes . '/notices.php';
99
+ require_once $wd_options->wd_dir_includes . "/overview.php";
100
+ require_once $wd_options->wd_dir_includes . "/subscribe.php";
101
+
102
+ }
103
+ public function init_classes(){
104
+ $wd_options = $this->config;
105
+
106
+ $current_url = $_SERVER['REQUEST_URI'];
107
+ if( $wd_options->deactivate === true ){
108
+ if(strpos( $current_url, "plugins.php" ) !== false ){
109
+ new DoradoWebDeactivate( $this->config );
110
+ }
111
+ }
112
+
113
+ new DoradoWebNotices( $this->config );
114
+
115
+ }
116
+
117
+ public function register_hooks(){
118
+ $wd_options = $this->config;
119
+ if( $wd_options->deactivate === true ){
120
+ add_filter( 'plugin_action_links_' . plugin_basename( $wd_options->plugin_main_file ), array( $this, 'change_deactivation_link' ) );
121
+ }
122
+
123
+ }
124
+
125
+
126
+ public function change_deactivation_link ( $links ) {
127
+ $wd_options = $this->config;
128
+ $deactivate_url =
129
+ add_query_arg(
130
+ array(
131
+ 'action' => 'deactivate',
132
+ 'plugin' => plugin_basename( $wd_options->plugin_main_file ),
133
+ '_wpnonce' => wp_create_nonce( 'deactivate-plugin_' . plugin_basename( $wd_options->plugin_main_file ) )
134
+ ),
135
+ admin_url( 'plugins.php' )
136
+ );
137
+
138
+ $links["deactivate"] = '<a href="'.$deactivate_url.'" class="' . $wd_options->prefix . '_deactivate_link">Deactivate</a>';
139
+ return $links;
140
+ }
141
+
142
+ ////////////////////////////////////////////////////////////////////////////////////////
143
+ // Getters & Setters //
144
+ ////////////////////////////////////////////////////////////////////////////////////////
145
+ ////////////////////////////////////////////////////////////////////////////////////////
146
+ // Private Methods //
147
+ ////////////////////////////////////////////////////////////////////////////////////////
148
+
149
+ ////////////////////////////////////////////////////////////////////////////////////////
150
+ // Listeners //
151
+ ////////////////////////////////////////////////////////////////////////////////////////
152
+
153
+ }
154
+
155
+
156
+