Gallery by BestWebSoft - Version 4.6.9

Version Description

  • 27.09.2022 =
  • Update : All functionality was updated for WordPress 6.0
  • Update : BWS Panel section was updated.
  • Update : Notification of the maximum number of images has been added.
  • Bugfix : Gallery Categories widget has been fixed.
  • Bugfix : Gallery Lightbox options have been fixed.
  • PRO : Comments on Gallery page have been fixed.
Download this release

Release Info

Developer bestwebsoft
Plugin Icon 128x128 Gallery by BestWebSoft
Version 4.6.9
Comparing to
See all releases

Code changes from version 4.6.8 to 4.6.9

bws_menu/bws_functions.php CHANGED
@@ -1,19 +1,25 @@
1
  <?php
2
- /*
3
- * General functions for BestWebSoft plugins
4
- */
5
-
6
- require( dirname( __FILE__ ) . '/deprecated.php' );
7
- require_once( dirname( __FILE__ ) . '/deactivation-form.php' );
8
 
9
  /**
10
- * Function to add 'bestwebsoft' slug for BWS_Menu MO file if BWS_Menu loaded from theme.
11
- *
12
- * @since 1.9.7
13
  */
14
- if ( ! function_exists ( 'bws_get_mofile' ) ) {
 
 
 
 
 
 
 
 
 
15
  function bws_get_mofile( $mofile, $domain ) {
16
- if ( 'bestwebsoft' == $domain ) {
17
  $locale = get_locale();
18
  return str_replace( $locale, "bestwebsoft-{$locale}", $mofile );
19
  }
@@ -22,8 +28,12 @@ if ( ! function_exists ( 'bws_get_mofile' ) ) {
22
  }
23
  }
24
 
25
- /* Internationalization, first(!) */
26
- if ( isset( $bws_menu_source ) && 'themes' == $bws_menu_source ) {
 
 
 
 
27
  add_filter( 'load_textdomain_mofile', 'bws_get_mofile', 10, 2 );
28
  load_theme_textdomain( 'bestwebsoft', get_stylesheet_directory() . '/inc/bws_menu/languages' );
29
  remove_filter( 'load_textdomain_mofile', 'bws_get_mofile' );
@@ -36,15 +46,15 @@ if ( isset( $bws_menu_source ) && 'themes' == $bws_menu_source ) {
36
  *
37
  * @since 1.9.7
38
  */
39
- if ( ! function_exists ( 'bws_menu_url' ) ) {
40
- if ( ! isset( $bws_menu_source ) || 'plugins' == $bws_menu_source ) {
41
  function bws_menu_url( $path = '' ) {
42
  return plugins_url( $path, __FILE__ );
43
  }
44
  } else {
45
  function bws_menu_url( $path = '' ) {
46
  $bws_menu_current_dir = str_replace( '\\', '/', dirname( __FILE__ ) );
47
- $bws_menu_abspath = str_replace( '\\', '/', ABSPATH );
48
  $bws_menu_current_url = site_url( str_replace( $bws_menu_abspath, '', $bws_menu_current_dir ) );
49
 
50
  return sprintf( '%s/%s', $bws_menu_current_url, $path );
@@ -53,45 +63,55 @@ if ( ! function_exists ( 'bws_menu_url' ) ) {
53
  }
54
 
55
  /**
56
- * Function check if plugin is compatible with current WP version
57
- * @return void
58
- */
 
59
  if ( ! function_exists( 'bws_wp_min_version_check' ) ) {
60
  function bws_wp_min_version_check( $plugin_basename, $plugin_info, $require_wp, $min_wp = false ) {
61
  global $wp_version, $bws_versions_notice_array;
62
- if ( false == $min_wp )
63
  $min_wp = $require_wp;
64
- if ( version_compare( $wp_version, $min_wp, "<" ) ) {
65
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
 
66
  if ( is_plugin_active( $plugin_basename ) ) {
67
  deactivate_plugins( $plugin_basename );
68
  $admin_url = ( function_exists( 'get_admin_url' ) ) ? get_admin_url( null, 'plugins.php' ) : esc_url( '/wp-admin/plugins.php' );
69
  wp_die(
70
  sprintf(
71
  "<strong>%s</strong> %s <strong>WordPress %s</strong> %s <br /><br />%s <a href='%s'>%s</a>.",
72
- $plugin_info['Name'],
73
- __( 'requires', 'bestwebsoft' ),
74
- $require_wp,
75
- __( 'or higher, that is why it has been deactivated! Please upgrade WordPress and try again.', 'bestwebsoft' ),
76
- __( 'Back to the WordPress', 'bestwebsoft' ),
77
- $admin_url,
78
- __( 'Plugins page', 'bestwebsoft' )
79
  )
80
  );
81
  }
82
- } elseif ( version_compare( $wp_version, $require_wp, "<" ) ) {
83
- $bws_versions_notice_array[] = array( 'name' => $plugin_info['Name'], 'version' => $require_wp );
 
 
 
84
  }
85
  }
86
  }
87
 
 
 
 
 
 
88
  if ( ! function_exists( 'bws_plugin_reviews_block' ) ) {
89
  function bws_plugin_reviews_block( $plugin_name, $plugin_slug ) { ?>
90
  <div class="bws-plugin-reviews">
91
  <div class="bws-plugin-reviews-rate">
92
- <?php _e( 'Like the plugin?', 'bestwebsoft' ); ?>
93
- <a href="https://wordpress.org/support/view/plugin-reviews/<?php echo esc_attr( $plugin_slug ); ?>?filter=5" target="_blank" title="<?php printf( __( '%s reviews', 'bestwebsoft' ), sanitize_text_field( $plugin_name ) ); ?>">
94
- <?php _e( 'Rate it', 'bestwebsoft' ); ?>
95
  <span class="dashicons dashicons-star-filled"></span>
96
  <span class="dashicons dashicons-star-filled"></span>
97
  <span class="dashicons dashicons-star-filled"></span>
@@ -100,76 +120,89 @@ if ( ! function_exists( 'bws_plugin_reviews_block' ) ) {
100
  </a>
101
  </div>
102
  <div class="bws-plugin-reviews-support">
103
- <?php _e( 'Need help?', 'bestwebsoft' ); ?>
104
- <a href="https://support.bestwebsoft.com"><?php _e( 'Visit Help Center', 'bestwebsoft' ); ?></a>
105
  </div>
106
  <div class="bws-plugin-reviews-donate">
107
- <?php _e( 'Want to support the plugin?', 'bestwebsoft' ); ?>
108
- <a href="https://bestwebsoft.com/donate/"><?php _e( 'Donate', 'bestwebsoft' ); ?></a>
109
  </div>
110
  </div>
111
- <?php }
 
112
  }
113
 
114
- if ( ! function_exists ( 'bws_plugin_update_row' ) ) {
 
 
 
 
 
115
  function bws_plugin_update_row( $plugin_key, $link_slug = false, $free_plugin_name = false ) {
116
  global $bstwbsftwppdtplgns_options, $wp_version;
117
  $wp_list_table = _get_list_table( 'WP_Plugins_List_Table' );
118
  if ( isset( $bstwbsftwppdtplgns_options['wrong_license_key'][ $plugin_key ] ) ) {
119
  $explode_plugin_key = explode( '/', $plugin_key );
120
- $class = ( $wp_version >= 4.6 ) ? 'active' : '';
121
- $style = ( $wp_version < 4.6 ) ? ' style="background-color: #FFEBE8;border-color: #CC0000;"' : '';
122
- $div_class = ( $wp_version >= 4.6 ) ? ' notice inline notice-warning notice-alt' : '';
123
- echo '<tr class="bws-plugin-update-tr plugin-update-tr ' . $class . '" id="' . esc_attr( $explode_plugin_key[0] ) . '-update" data-slug="' . esc_attr( $explode_plugin_key[0] ) . '" data-plugin="' . esc_attr( $plugin_key ) . '">
124
  <td colspan="' . esc_attr( $wp_list_table->get_column_count() ) . '" class="plugin-update colspanchange">
125
- <div class="update-message' . $div_class . '"' . $style . '>';
126
- if ( $wp_version >= 4.6 )
127
- echo '<p>';
128
- echo '<strong>' . __( 'WARNING: Illegal use notification', 'bestwebsoft' ) . '.</strong> ' . __( 'You can use one license of the Pro plugin for one domain only. Please check and edit your license or domain if necessary using your personal Client Area. We strongly recommend you to solve the problem within 24 hours, otherwise the Pro plugin will be deactivated.', 'bestwebsoft' ) . ' <a target="_blank" href="https://support.bestwebsoft.com/hc/en-us/articles/204240089">' . __( 'Learn More', 'bestwebsoft' ) . '</a>';
129
- if ( $wp_version >= 4.6 )
130
- echo '</p>';
 
 
131
  echo '</div>
132
  </td>
133
  </tr>';
134
- } elseif ( isset( $bstwbsftwppdtplgns_options['time_out'][ $plugin_key ] ) && strtotime( $bstwbsftwppdtplgns_options['time_out'][ $plugin_key ] ) < strtotime( date("m/d/Y") ) ) {
135
  $explode_plugin_key = explode( '/', $plugin_key );
136
- $class = ( $wp_version >= 4.6 ) ? 'active' : '';
137
- $style = ( $wp_version < 4.6 ) ? ' style="color: #8C0000;"' : '';
138
- $div_class = ( $wp_version >= 4.6 ) ? ' notice inline notice-warning notice-alt' : '';
139
- echo '<tr class="bws-plugin-update-tr plugin-update-tr ' . $class . '" id="' . esc_attr( $explode_plugin_key[0] ) . '-update" data-slug="' . esc_attr( $explode_plugin_key[0] ) . '" data-plugin="' . esc_attr( $plugin_key ) . '">
140
  <td colspan="' . esc_attr( $wp_list_table->get_column_count() ) . '" class="plugin-update colspanchange">
141
- <div class="update-message' . $div_class . '"' . $style . '>';
142
- if ( $wp_version >= 4.6 )
143
- echo '<p>';
144
- if ( isset( $bstwbsftwppdtplgns_options['trial'][ $plugin_key ] ) && $link_slug != false ) {
145
- echo __( 'Notice: Your Pro Trial license has expired. To continue using the plugin, you should buy a Pro license', 'bestwebsoft' ) . ' - <a href="https://bestwebsoft.com/products/wordpress/plugins/' . esc_attr( $link_slug ) . '/">https://bestwebsoft.com/products/wordpress/plugins/' . esc_attr( $link_slug ) . '/</a>';
146
- } else {
147
- echo __( 'Your license has expired. To continue getting top-priority support and plugin updates, you should extend it.', 'bestwebsoft' ) . ' <a target="_new" href="https://support.bestwebsoft.com/entries/53487136">' . __( "Learn more", 'bestwebsoft' ) . '</a>';
148
- }
149
- if ( $wp_version >= 4.6 )
150
- echo '</p>';
151
- echo '</div>
 
 
152
  </td>
153
  </tr>';
154
  } elseif ( isset( $bstwbsftwppdtplgns_options['trial'][ $plugin_key ] ) ) {
155
  $explode_plugin_key = explode( '/', $plugin_key );
156
- $class = ( $wp_version >= 4.6 ) ? 'active' : '';
157
- $style = ( $wp_version < 4.6 ) ? ' style="color: #8C0000;"' : '';
158
- $div_class = ( $wp_version >= 4.6 ) ? ' notice inline notice-warning notice-alt' : '';
159
- echo '<tr class="bws-plugin-update-tr plugin-update-tr ' . $class . '" id="' . esc_attr( $explode_plugin_key[0] ) . '-update" data-slug="' . esc_attr( $explode_plugin_key[0] ) . '" data-plugin="' . esc_attr( $plugin_key ) . '">
160
  <td colspan="' . esc_attr( $wp_list_table->get_column_count() ) . '" class="plugin-update colspanchange">
161
- <div class="update-message' . $div_class . '"' . $style . '>';
162
- if ( $wp_version >= 4.6 )
163
- echo '<p>';
164
- if ( $free_plugin_name != false ) {
165
- printf( __( 'Notice: You are using the Pro Trial license of %s plugin.', 'bestwebsoft' ), $free_plugin_name );
166
- } else {
167
- _e( 'Notice: You are using the Pro Trial license of plugin.', 'bestwebsoft' );
168
- }
169
- if ( isset( $bstwbsftwppdtplgns_options['time_out'][ $plugin_key ] ) )
170
- echo ' ' . __( 'The Pro Trial license will expire on', 'bestwebsoft' ) . ' ' . $bstwbsftwppdtplgns_options['time_out'][ $plugin_key ] . '.';
171
- if ( $wp_version >= 4.6 )
172
- echo '</p>';
 
 
 
173
  echo '</div>
174
  </td>
175
  </tr>';
@@ -177,6 +210,11 @@ if ( ! function_exists ( 'bws_plugin_update_row' ) ) {
177
  }
178
  }
179
 
 
 
 
 
 
180
  if ( ! function_exists( 'bws_admin_notices' ) ) {
181
  function bws_admin_notices() {
182
  global $bws_versions_notice_array, $bws_plugin_banner_to_settings, $bstwbsftwppdtplgns_options, $bws_plugin_banner_go_pro, $bstwbsftwppdtplgns_banner_array, $bws_plugin_banner_timeout;
@@ -184,8 +222,8 @@ if ( ! function_exists( 'bws_admin_notices' ) ) {
184
  /* bws_plugin_banner_go_pro */
185
  if ( ! empty( $bws_plugin_banner_go_pro ) ) {
186
  /* get $bws_plugins */
187
- require( dirname( __FILE__ ) . '/product_list.php' );
188
-
189
  foreach ( $bstwbsftwppdtplgns_banner_array as $value ) {
190
  if ( isset( $bws_plugin_banner_go_pro[ $value[0] ] ) && ! isset( $_COOKIE[ $value[0] ] ) ) {
191
 
@@ -193,78 +231,87 @@ if ( ! function_exists( 'bws_admin_notices' ) ) {
193
  continue;
194
  }
195
 
196
- $single_banner_value = $bws_plugin_banner_go_pro[ $value[0] ]; ?>
 
197
  <div class="updated" style="padding: 0; margin: 0; border: none; background: none;">
198
- <div class="<?php echo $single_banner_value['prefix']; ?>_message bws_banner_on_plugin_page bws_go_pro_banner" style="display: none;">
199
- <button class="<?php echo $single_banner_value['prefix']; ?>_close_icon close_icon notice-dismiss bws_hide_settings_notice" title="<?php _e( 'Close notice', 'bestwebsoft' ); ?>"></button>
200
  <div class="icon">
201
  <img title="" src="<?php echo esc_attr( $single_banner_value['banner_url'] ); ?>" alt="" />
202
  </div>
203
  <div class="text">
204
- <?php _e( 'It’s time to upgrade your', 'bestwebsoft' ); ?> <strong><?php echo $single_banner_value['plugin_info']['Name']; ?> plugin</strong> <?php _e( 'to', 'bestwebsoft' ); ?> <strong>Pro</strong> <?php _e( 'version!', 'bestwebsoft' ); ?><br />
205
- <span><?php _e( 'Extend standard plugin functionality with new great options.', 'bestwebsoft' ); ?></span>
206
  </div>
207
  <div class="button_div">
208
- <a class="button" target="_blank" href="<?php echo $single_banner_value['bws_link']; ?>"><?php _e( 'Learn More', 'bestwebsoft' ); ?></a>
209
  </div>
210
  </div>
211
  </div>
212
- <?php break;
 
213
  }
214
  }
215
  }
216
 
217
  /* $bws_plugin_banner_timeout */
218
  if ( ! empty( $bws_plugin_banner_timeout ) ) {
219
- foreach ( $bws_plugin_banner_timeout as $banner_value ) { ?>
 
220
  <div class="updated" style="padding: 0; margin: 0; border: none; background: none;">
221
- <div class="<?php echo $banner_value['prefix']; ?>_message_timeout bws_banner_on_plugin_page bws_banner_timeout" style="display:none;">
222
- <button class="<?php echo $banner_value['prefix']; ?>_close_icon close_icon notice-dismiss bws_hide_settings_notice" title="<?php _e( 'Close notice', 'bestwebsoft' ); ?>"></button>
223
  <div class="icon">
224
- <img title="" src="<?php echo esc_attr( $banner_value['banner_url'] ); ?>" alt="" />
225
  </div>
226
- <div class="text"><?php printf( __( "Your license key for %s expires on %s and you won't be granted TOP-PRIORITY SUPPORT or UPDATES.", 'bestwebsoft' ), '<strong>' . $banner_value['plugin_name'] . '</strong>', $bstwbsftwppdtplgns_options['time_out'][ $banner_value['plugin_key'] ] ); ?> <a target="_new" href="https://support.bestwebsoft.com/entries/53487136"><?php _e( "Learn more", 'bestwebsoft' ); ?></a></div>
227
  </div>
228
  </div>
229
- <?php }
 
230
  }
231
 
232
  /* versions notice */
233
  if ( ! empty( $bws_versions_notice_array ) ) {
234
- foreach ( $bws_versions_notice_array as $key => $value ) { ?>
 
235
  <div class="update-nag">
236
- <?php printf(
237
- "<strong>%s</strong> %s <strong>WordPress %s</strong> %s",
238
- $value['name'],
239
- __( 'requires', 'bestwebsoft' ),
240
- $value['version'],
241
- __( 'or higher! We do not guarantee that our plugin will work correctly. Please upgrade to WordPress latest version.', 'bestwebsoft' )
242
- ); ?>
 
 
243
  </div>
244
- <?php }
 
245
  }
246
 
247
  /* banner_to_settings notice */
248
  if ( ! empty( $bws_plugin_banner_to_settings ) ) {
249
- if ( 1 == count( $bws_plugin_banner_to_settings ) ) { ?>
 
250
  <div class="updated" style="padding: 0; margin: 0; border: none; background: none;">
251
  <div class="bws_banner_on_plugin_page bws_banner_to_settings">
252
  <div class="icon">
253
- <img title="" src="<?php echo esc_attr( $bws_plugin_banner_to_settings[0]['banner_url'] ); ?>" alt="" />
254
  </div>
255
  <div class="text">
256
- <strong><?php printf( __( 'Thank you for installing %s plugin!', 'bestwebsoft' ), $bws_plugin_banner_to_settings[0]['plugin_info']['Name'] ); ?></strong>
257
  <br />
258
- <?php _e( "Let's get started", 'bestwebsoft' ); ?>:
259
- <a href="<?php echo esc_url( self_admin_url( $bws_plugin_banner_to_settings[0]['settings_url'] ) ); ?>"><?php _e( 'Settings', 'bestwebsoft' ); ?></a>
260
- <?php if ( false != $bws_plugin_banner_to_settings[0]['post_type_url'] ) { ?>
261
- <?php _e( 'or', 'bestwebsoft' ); ?>
262
- <a href="<?php echo esc_url( self_admin_url( $bws_plugin_banner_to_settings[0]['post_type_url'] ) ); ?>"><?php _e( 'Add New', 'bestwebsoft' ); ?></a>
263
  <?php } ?>
264
  </div>
265
  <form action="" method="post">
266
- <button class="notice-dismiss bws_hide_settings_notice" title="<?php _e( 'Close notice', 'bestwebsoft' ); ?>"></button>
267
- <input type="hidden" name="bws_hide_settings_notice_<?php echo $bws_plugin_banner_to_settings[0]['plugin_options_name']; ?>" value="hide" />
268
  <?php wp_nonce_field( plugin_basename( __FILE__ ), 'bws_settings_nonce_name' ); ?>
269
  </form>
270
  </div>
@@ -273,15 +320,15 @@ if ( ! function_exists( 'bws_admin_notices' ) ) {
273
  <div class="updated" style="padding: 0; margin: 0; border: none; background: none;">
274
  <div class="bws_banner_on_plugin_page bws_banner_to_settings_joint">
275
  <form action="" method="post">
276
- <button class="notice-dismiss bws_hide_settings_notice" title="<?php _e( 'Close notice', 'bestwebsoft' ); ?>"></button>
277
  <div class="bws-text">
278
  <div class="icon">
279
  <span class="dashicons dashicons-admin-plugins"></span>
280
  </div>
281
- <strong><?php _e( 'Thank you for installing plugins by BestWebSoft!', 'bestwebsoft' ); ?></strong>
282
  <div class="hide-if-no-js bws-more-links">
283
- <a href="#" class="bws-more"><?php _e( 'More Details', 'bestwebsoft' ); ?></a>
284
- <a href="#" class="bws-less hidden"><?php _e( 'Less Details', 'bestwebsoft' ); ?></a>
285
  </div>
286
  <?php wp_nonce_field( plugin_basename( __FILE__ ), 'bws_settings_nonce_name' ); ?>
287
  <div class="clear"></div>
@@ -289,98 +336,124 @@ if ( ! function_exists( 'bws_admin_notices' ) ) {
289
  <div class="bws-details hide-if-js">
290
  <?php foreach ( $bws_plugin_banner_to_settings as $value ) { ?>
291
  <div>
292
- <strong><?php echo str_replace( ' by BestWebSoft', '', $value['plugin_info']['Name'] ); ?></strong>&ensp;<a href="<?php echo esc_url( self_admin_url( $value['settings_url'] ) ); ?>"><?php _e( 'Settings', 'bestwebsoft' ); ?></a>
293
- <?php if ( false != $value['post_type_url'] ) { ?>
294
- &ensp;|&ensp;<a target="_blank" href="<?php echo esc_url( self_admin_url( $value['post_type_url'] ) ); ?>"><?php _e( 'Add New', 'bestwebsoft' ); ?></a>
295
  <?php } ?>
296
- <input type="hidden" name="bws_hide_settings_notice_<?php echo $value['plugin_options_name']; ?>" value="hide" />
297
  </div>
298
  <?php } ?>
299
  </div>
300
  </div>
301
  </form>
302
  </div>
303
- <?php }
 
304
  }
305
 
306
  /**
307
- * show notices about deprecated_function
 
308
  * @since 1.9.8
309
  */
310
- if ( ! empty( $bstwbsftwppdtplgns_options['deprecated_function'] ) ) { ?>
 
311
  <div class="update-nag">
312
- <strong><?php _e( 'Deprecated function(-s) is used on the site here:', 'bestwebsoft' ); ?></strong>
313
- <?php $i = 1;
 
314
  foreach ( $bstwbsftwppdtplgns_options['deprecated_function'] as $function_name => $attr ) {
315
- if ( 1 != $i )
316
  echo ' ,';
 
317
  if ( ! empty( $attr['product-name'] ) ) {
318
- echo $attr['product-name'];
319
  } elseif ( ! empty( $attr['file'] ) ) {
320
- echo $attr['file'];
321
  }
322
  unset( $bstwbsftwppdtplgns_options['deprecated_function'][ $function_name ] );
323
  $i++;
324
- } ?>.
 
 
325
  <br/>
326
- <?php _e( 'This function(-s) will be removed over time. Please update the product(-s).', 'bestwebsoft' ); ?>
327
  </div>
328
- <?php if ( is_multisite() )
 
329
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
330
- else
331
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
 
332
  }
333
  }
334
  }
335
 
 
 
 
 
 
336
  if ( ! function_exists( 'bws_plugin_banner_go_pro' ) ) {
337
  function bws_plugin_banner_go_pro( $plugin_options, $plugin_info, $this_banner_prefix, $bws_link_slug, $link_key, $link_pn, $banner_url_or_slug ) {
338
  global $bws_plugin_banner_go_pro, $wp_version, $bstwbsftwppdtplgns_banner_array;
339
 
340
- if ( ! isset( $plugin_options['first_install'] ) || strtotime( '-1 week' ) < $plugin_options['first_install'] )
341
  return;
 
342
 
343
- $bws_link = esc_url( 'https://bestwebsoft.com/products/wordpress/plugins/' . $bws_link_slug . '/?k=' . $link_key . '&pn=' . $link_pn . '&v=' . $plugin_info["Version"] . '&wp_v=' . $wp_version );
344
 
345
- if ( false == strrpos( $banner_url_or_slug, '/' ) ) {
346
  $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.png';
347
  }
348
 
349
  $bws_plugin_banner_go_pro[ $this_banner_prefix . '_hide_banner_on_plugin_page' ] = array(
350
- 'plugin_info' => $plugin_info,
351
- 'prefix' => $this_banner_prefix,
352
- 'bws_link' => $bws_link,
353
- 'banner_url' => $banner_url_or_slug
354
  );
355
 
356
  if ( empty( $bstwbsftwppdtplgns_banner_array ) ) {
357
- if ( ! function_exists( 'bws_get_banner_array' ) )
358
- require_once( dirname( __FILE__ ) . '/bws_menu.php' );
 
359
  bws_get_banner_array();
360
  }
361
  }
362
  }
363
 
 
 
 
 
 
364
  if ( ! function_exists( 'bws_add_plugin_banner_timeout' ) ) {
365
  function bws_add_plugin_banner_timeout( $plugin_key, $plugin_prefix, $plugin_name, $banner_url_or_slug ) {
366
  global $bws_plugin_banner_timeout;
367
 
368
- if ( isset( $bstwbsftwppdtplgns_options['time_out'][ $plugin_key ] ) && ( strtotime( $bstwbsftwppdtplgns_options['time_out'][ $plugin_key ] ) < strtotime( date("m/d/Y") . '+1 month' ) ) && ( strtotime( $bstwbsftwppdtplgns_options['time_out'][ $plugin_key ] ) > strtotime( date("m/d/Y") ) ) ) {
369
 
370
- if ( false == strrpos( $banner_url_or_slug, '/' ) ) {
371
  $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.png';
372
  }
373
 
374
  $bws_plugin_banner_timeout[] = array(
375
- 'plugin_key' => $plugin_key,
376
- 'prefix' => $plugin_prefix,
377
- 'plugin_name' => $plugin_name,
378
- 'banner_url' => $banner_url_or_slug
379
  );
380
  }
381
  }
382
  }
383
 
 
 
 
 
 
384
  if ( ! function_exists( 'bws_plugin_banner_to_settings' ) ) {
385
  function bws_plugin_banner_to_settings( $plugin_info, $plugin_options_name, $banner_url_or_slug, $settings_url, $post_type_url = false ) {
386
  global $bws_plugin_banner_to_settings;
@@ -389,98 +462,116 @@ if ( ! function_exists( 'bws_plugin_banner_to_settings' ) ) {
389
 
390
  $plugin_options = $is_network_admin ? get_site_option( $plugin_options_name ) : get_option( $plugin_options_name );
391
 
392
- if ( isset( $plugin_options['display_settings_notice'] ) && 0 == $plugin_options['display_settings_notice'] )
393
  return;
 
394
 
395
- if ( isset( $_POST['bws_hide_settings_notice_' . $plugin_options_name ] ) && check_admin_referer( plugin_basename( __FILE__ ), 'bws_settings_nonce_name' ) ) {
396
  $plugin_options['display_settings_notice'] = 0;
397
- if ( $is_network_admin )
398
  update_site_option( $plugin_options_name, $plugin_options );
399
- else
400
  update_option( $plugin_options_name, $plugin_options );
 
401
  return;
402
  }
403
 
404
- if ( false == strrpos( $banner_url_or_slug, '/' ) ) {
405
  $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.png';
406
  }
407
 
408
  $bws_plugin_banner_to_settings[] = array(
409
- 'plugin_info' => $plugin_info,
410
- 'plugin_options_name' => $plugin_options_name,
411
- 'banner_url' => $banner_url_or_slug,
412
- 'settings_url' => $settings_url,
413
- 'post_type_url' => $post_type_url
414
  );
415
  }
416
  }
417
 
 
 
 
 
 
418
  if ( ! function_exists( 'bws_plugin_suggest_feature_banner' ) ) {
419
  function bws_plugin_suggest_feature_banner( $plugin_info, $plugin_options_name, $banner_url_or_slug ) {
420
  $is_network_admin = is_network_admin();
421
 
422
  $plugin_options = $is_network_admin ? get_site_option( $plugin_options_name ) : get_option( $plugin_options_name );
423
 
424
- if ( isset( $plugin_options['display_suggest_feature_banner'] ) && 0 == $plugin_options['display_suggest_feature_banner'] )
425
  return;
 
426
 
427
  if ( ! isset( $plugin_options['first_install'] ) ) {
428
- $plugin_options['first_install'] = strtotime( "now" );
429
- $update_option = $return = true;
430
  } elseif ( strtotime( '-2 week' ) < $plugin_options['first_install'] ) {
431
  $return = true;
432
  }
433
 
434
  if ( ! isset( $plugin_options['go_settings_counter'] ) ) {
435
  $plugin_options['go_settings_counter'] = 1;
436
- $update_option = $return = true;
437
  } elseif ( 20 > $plugin_options['go_settings_counter'] ) {
438
  $plugin_options['go_settings_counter'] = $plugin_options['go_settings_counter'] + 1;
439
- $update_option = $return = true;
440
  }
441
 
442
  if ( isset( $update_option ) ) {
443
- if ( $is_network_admin )
444
  update_site_option( $plugin_options_name, $plugin_options );
445
- else
446
  update_option( $plugin_options_name, $plugin_options );
 
447
  }
448
 
449
- if ( isset( $return ) )
450
  return;
 
451
 
452
- if ( isset( $_POST['bws_hide_suggest_feature_banner_' . $plugin_options_name ] ) && check_admin_referer( $plugin_info['Name'], 'bws_settings_nonce_name' ) ) {
453
  $plugin_options['display_suggest_feature_banner'] = 0;
454
- if ( $is_network_admin )
455
  update_site_option( $plugin_options_name, $plugin_options );
456
- else
457
  update_option( $plugin_options_name, $plugin_options );
 
458
  return;
459
  }
460
 
461
- if ( false == strrpos( $banner_url_or_slug, '/' ) ) {
462
  $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.png';
463
- } ?>
 
464
  <div class="updated" style="padding: 0; margin: 0; border: none; background: none;">
465
  <div class="bws_banner_on_plugin_page bws_suggest_feature_banner">
466
  <div class="icon">
467
- <img title="" src="<?php echo esc_attr( $banner_url_or_slug ); ?>" alt="" />
468
  </div>
469
  <div class="text">
470
- <strong><?php printf( __( 'Thank you for choosing %s plugin!', 'bestwebsoft' ), $plugin_info['Name'] ); ?></strong><br />
471
- <?php _e( "If you have a feature, suggestion or idea you'd like to see in the plugin, we'd love to hear about it!", 'bestwebsoft' ); ?>
472
- <a target="_blank" href="https://support.bestwebsoft.com/hc/en-us/requests/new"><?php _e( 'Suggest a Feature', 'bestwebsoft' ); ?></a>
473
  </div>
474
  <form action="" method="post">
475
- <button class="notice-dismiss bws_hide_settings_notice" title="<?php _e( 'Close notice', 'bestwebsoft' ); ?>"></button>
476
- <input type="hidden" name="bws_hide_suggest_feature_banner_<?php echo $plugin_options_name; ?>" value="hide" />
477
  <?php wp_nonce_field( $plugin_info['Name'], 'bws_settings_nonce_name' ); ?>
478
  </form>
479
  </div>
480
  </div>
481
- <?php }
 
482
  }
483
 
 
 
 
 
 
484
  if ( ! function_exists( 'bws_affiliate_postbox' ) ) {
485
  function bws_affiliate_postbox() {
486
 
@@ -490,12 +581,13 @@ if ( ! function_exists( 'bws_affiliate_postbox' ) ) {
490
  return;
491
  }
492
 
493
- if ( isset( $_POST['bws_hide_affiliate_banner' ] ) && check_admin_referer( 'bws_affiliate_postbox', 'bws_settings_nonce_name' ) ) {
494
  update_user_meta( get_current_user_id(), '_bws_affiliate_postbox_dismissed', strtotime( 'now' ) );
495
  return;
496
  }
497
 
498
- $bws_link = esc_url( 'https://bestwebsoft.com/affiliate/?utm_source=plugin&utm_medium=settings&utm_campaign=affiliate_program' ); ?>
 
499
  <div id="bws-affiliate-postbox" class="postbox">
500
  <form action="" method="post">
501
  <button class="notice-dismiss bws_hide_settings_notice" title="<?php esc_html_e( 'Close notice', 'bestwebsoft' ); ?>"></button>
@@ -508,72 +600,97 @@ if ( ! function_exists( 'bws_affiliate_postbox' ) ) {
508
  <div><?php esc_html_e( 'from each BestWebSoft plugin and theme sale you refer', 'bestwebsoft' ); ?></div>
509
  <div class="bws-row">
510
  <div class="bws-cell">
511
- <img src="<?php echo bws_menu_url( "images/join-icon.svg" ); ?>" alt="" />
512
  <div><?php esc_html_e( 'Join affiliate program', 'bestwebsoft' ); ?></div>
513
  </div>
514
  <div class="bws-cell">
515
- <img src="<?php echo bws_menu_url( "images/promote-icon.svg" ); ?>" alt="" />
516
  <div><?php esc_html_e( 'Promote and sell products', 'bestwebsoft' ); ?></div>
517
  </div>
518
  <div class="bws-cell">
519
- <img src="<?php echo bws_menu_url( "images/earn-icon.svg" ); ?>" alt="" />
520
  <div><?php esc_html_e( 'Get commission!', 'bestwebsoft' ); ?></div>
521
  </div>
522
  </div>
523
  <div class="clear"></div>
524
  <p>
525
- <a class="button" href="<?php echo $bws_link; ?>" target="_blank"><?php esc_html_e( 'Start Now', 'bestwebsoft' ); ?></a>
526
  </p>
527
  </div>
528
- <?php }
 
529
  }
530
 
 
 
 
 
 
531
  if ( ! function_exists( 'bws_show_settings_notice' ) ) {
532
- function bws_show_settings_notice() { ?>
 
533
  <div id="bws_save_settings_notice" class="updated fade below-h2" style="display:none;">
534
  <p>
535
- <strong><?php _e( 'Notice', 'bestwebsoft' ); ?></strong>: <?php _e( "The plugin's settings have been changed.", 'bestwebsoft' ); ?>
536
- <a class="bws_save_anchor" href="#bws-submit-button"><?php _e( 'Save Changes', 'bestwebsoft' ); ?></a>
537
  </p>
538
  </div>
539
- <?php }
 
540
  }
541
 
 
 
 
 
 
542
  if ( ! function_exists( 'bws_hide_premium_options' ) ) {
543
  function bws_hide_premium_options( $options ) {
544
- if ( ! isset( $options['hide_premium_options'] ) || ! is_array( $options['hide_premium_options'] ) )
545
  $options['hide_premium_options'] = array();
 
546
 
547
  $options['hide_premium_options'][] = get_current_user_id();
548
 
549
  return array(
550
- 'message' => __( 'You can always look at premium options by checking the "Pro Options" in the "Misc" tab.', 'bestwebsoft' ),
551
- 'options' => $options );
 
552
  }
553
  }
554
 
 
 
 
 
 
555
  if ( ! function_exists( 'bws_hide_premium_options_check' ) ) {
556
  function bws_hide_premium_options_check( $options ) {
557
- if ( ! empty( $options['hide_premium_options'] ) && in_array( get_current_user_id(), $options['hide_premium_options'] ) )
558
  return true;
559
- else
560
  return false;
 
561
  }
562
  }
563
 
564
- if ( ! function_exists ( 'bws_plugins_admin_init' ) ) {
 
 
 
565
  function bws_plugins_admin_init() {
566
- if ( isset( $_GET['bws_activate_plugin'] ) && check_admin_referer( 'bws_activate_plugin' . $_GET['bws_activate_plugin'] ) ) {
 
567
 
568
- $plugin = isset( $_GET['bws_activate_plugin'] ) ? sanitize_text_field( $_GET['bws_activate_plugin'] ) : '';
569
  $result = activate_plugin( $plugin, '', is_network_admin() );
570
  if ( is_wp_error( $result ) ) {
571
- if ( 'unexpected_output' == $result->get_error_code() ) {
572
  $redirect = self_admin_url( 'admin.php?page=bws_panel&error=true&charsout=' . strlen( $result->get_error_data() ) . '&plugin=' . $plugin );
573
- wp_redirect( add_query_arg( '_error_nonce', wp_create_nonce( 'plugin-activation-error_' . $plugin ), $redirect ) );
574
  exit();
575
  } else {
576
- wp_die( $result );
577
  }
578
  }
579
 
@@ -589,50 +706,63 @@ if ( ! function_exists ( 'bws_plugins_admin_init' ) ) {
589
  /**
590
  * @deprecated 1.9.8 (15.12.2016)
591
  */
592
- $is_main_page = in_array( $_GET['page'], array( 'bws_panel', 'bws_themes', 'bws_system_status' ) );
593
- $page = wp_unslash( $_GET['page'] );
594
- $tab = isset( $_GET['tab'] ) ? wp_unslash( $_GET['tab'] ) : '';
595
 
596
- if ( $is_main_page )
597
  $current_page = 'admin.php?page=' . $page;
598
- else
599
  $current_page = isset( $_GET['tab'] ) ? 'admin.php?page=' . $page . '&tab=' . $tab : 'admin.php?page=' . $page;
 
600
  /*end deprecated */
601
 
602
- wp_redirect( self_admin_url( esc_url( $current_page . '&activate=true' ) ) );
603
  exit();
604
  }
605
 
606
- if ( isset( $_GET['page'] ) && ( $_GET['page'] == 'bws_panel' || strpos( $_GET['page'], '-bws-panel' ) ) ) {
607
- if ( ! session_id() )
608
  @session_start();
 
609
  }
610
 
611
  bws_add_editor_buttons();
612
  }
613
  }
614
 
615
- if ( ! function_exists ( 'bws_admin_enqueue_scripts' ) ) {
 
 
 
616
  function bws_admin_enqueue_scripts() {
617
  global $wp_scripts, $hook_suffix,
618
  $post_type,
619
  $bws_plugin_banner_go_pro, $bws_plugin_banner_timeout, $bstwbsftwppdtplgns_banner_array,
620
- $bws_shortcode_list;
 
 
 
621
 
622
  $jquery_ui_version = isset( $wp_scripts->registered['jquery-ui-core']->ver ) ? $wp_scripts->registered['jquery-ui-core']->ver : '1.12.1';
623
- wp_enqueue_style( 'jquery-ui-style', bws_menu_url( 'css/jquery-ui-styles/' . $jquery_ui_version . '/jquery-ui.css' ) );
624
- wp_enqueue_style( 'bws-admin-css', bws_menu_url( 'css/general_style.css' ) );
 
 
 
 
 
 
625
  wp_enqueue_script( 'bws-admin-scripts', bws_menu_url( 'js/general_script.js' ), array( 'jquery', 'jquery-ui-tooltip' ) );
626
 
627
- if ( isset( $_GET['page'] ) && ( in_array( $_GET['page'], array( 'bws_panel', 'bws_themes', 'bws_system_status' ) ) || strpos( $_GET['page'], '-bws-panel' ) ) ) {
628
- wp_enqueue_style( 'bws_menu_style', bws_menu_url( 'css/style.css' ) );
629
- wp_enqueue_script( 'bws_menu_script', bws_menu_url( 'js/bws_menu.js' ) );
630
  wp_enqueue_script( 'theme-install' );
631
  add_thickbox();
632
  wp_enqueue_script( 'plugin-install' );
633
  }
634
 
635
- if ( 'plugins.php' == $hook_suffix ) {
636
  if ( ! empty( $bws_plugin_banner_go_pro ) || ! empty( $bws_plugin_banner_timeout ) ) {
637
  wp_enqueue_script( 'bws_menu_cookie', bws_menu_url( 'js/c_o_o_k_i_e.js' ) );
638
 
@@ -645,7 +775,7 @@ if ( ! function_exists ( 'bws_admin_enqueue_scripts' ) ) {
645
  $script = "(function($) {
646
  $(document).ready( function() {
647
  var hide_message = $.cookie( '" . $prefix . "_hide_banner_on_plugin_page' );
648
- if ( hide_message == 'true' ) {
649
  $( '." . $prefix . "_message' ).css( 'display', 'none' );
650
  } else {
651
  $( '." . $prefix . "_message' ).css( 'display', 'block' );
@@ -671,7 +801,7 @@ if ( ! function_exists ( 'bws_admin_enqueue_scripts' ) ) {
671
 
672
  foreach ( $bws_plugin_banner_timeout as $banner_value ) {
673
  $script .= "var hide_message = $.cookie( '" . $banner_value['prefix'] . "_timeout_hide_banner_on_plugin_page' );
674
- if ( hide_message == 'true' ) {
675
  $( '." . $banner_value['prefix'] . "_message_timeout' ).css( 'display', 'none' );
676
  } else {
677
  $( '." . $banner_value['prefix'] . "_message_timeout' ).css( 'display', 'block' );
@@ -682,8 +812,8 @@ if ( ! function_exists ( 'bws_admin_enqueue_scripts' ) ) {
682
  });";
683
  }
684
 
685
- $script .= "});
686
- })(jQuery);";
687
 
688
  wp_register_script( 'plugin_banner_timeout_hide', '' );
689
  wp_enqueue_script( 'plugin_banner_timeout_hide' );
@@ -698,18 +828,23 @@ if ( ! function_exists ( 'bws_admin_enqueue_scripts' ) ) {
698
  }
699
  }
700
 
 
 
 
 
701
  if ( ! empty( $bws_shortcode_list ) ) {
702
  /* TinyMCE Shortcode Plugin */
703
  $script = "var bws_shortcode_button = {
704
- 'label': '" . esc_attr__( "Add BWS Shortcode", "bestwebsoft" ) . "',
705
- 'title': '" . esc_attr__( "Add BWS Plugins Shortcode", "bestwebsoft" ) . "',
706
  'function_name': [";
707
- foreach ( $bws_shortcode_list as $value ) {
708
- if ( isset( $value['js_function'] ) )
709
- $script .= "'" . $value['js_function'] . "',";
710
- }
711
- $script .= "]
712
- };";
 
713
  wp_register_script( 'bws_shortcode_button', '' );
714
  wp_enqueue_script( 'bws_shortcode_button' );
715
  wp_add_inline_script( 'bws_shortcode_button', sprintf( $script ) );
@@ -717,17 +852,17 @@ if ( ! function_exists ( 'bws_admin_enqueue_scripts' ) ) {
717
  /* TinyMCE Shortcode Plugin */
718
  if ( isset( $post_type ) && in_array( $post_type, array( 'post', 'page' ) ) ) {
719
  $tooltip_args = array(
720
- 'tooltip_id' => 'bws_shortcode_button_tooltip',
721
- 'css_selector' => '.mce-bws_shortcode_button',
722
- 'actions' => array(
723
- 'click' => false,
724
- 'onload' => true
725
  ),
726
- 'content' => '<h3>' . __( 'Add shortcode', 'bestwebsoft' ) . '</h3><p>' . __( "Add BestWebSoft plugins' shortcodes using this button.", 'bestwebsoft' ) . '</p>',
727
- 'position' => array(
728
- 'edge' => 'right'
729
  ),
730
- 'set_timeout' => 2000
731
  );
732
  bws_add_tooltip_in_admin( $tooltip_args );
733
  }
@@ -744,13 +879,21 @@ if ( ! function_exists( 'bws_enqueue_settings_scripts' ) ) {
744
  function bws_enqueue_settings_scripts() {
745
  wp_enqueue_script( 'jquery-ui-resizable' );
746
  wp_enqueue_script( 'jquery-ui-tabs' );
747
- wp_enqueue_style( 'bws-modal-css', bws_menu_url( 'css/modal.css' ) );
748
  }
749
  }
750
 
751
- if ( ! function_exists ( 'bws_plugins_admin_head' ) ) {
 
 
 
 
 
752
  function bws_plugins_admin_head() {
753
- if ( isset( $_GET['page'] ) && $_GET['page'] == "bws_panel" ) { ?>
 
 
 
754
  <noscript>
755
  <style type="text/css">
756
  .bws_product_button {
@@ -758,28 +901,38 @@ if ( ! function_exists ( 'bws_plugins_admin_head' ) ) {
758
  }
759
  </style>
760
  </noscript>
761
- <?php }
762
- }
 
763
  }
764
 
765
- if ( ! function_exists ( 'bws_plugins_admin_footer' ) ) {
 
 
 
 
 
766
  function bws_plugins_admin_footer() {
767
- bws_shortcode_media_button_popup();
 
 
 
768
  }
769
  }
770
 
771
- if ( ! function_exists ( 'bws_plugins_include_codemirror' ) ) {
 
 
 
 
 
772
  function bws_plugins_include_codemirror() {
773
  global $wp_version;
774
- if ( version_compare( $wp_version, '4.9.0', '>=' ) ) {
775
  wp_enqueue_style( 'wp-codemirror' );
776
  wp_enqueue_script( 'wp-codemirror' );
777
- } else {
778
- wp_enqueue_style( 'codemirror.css', bws_menu_url( 'css/codemirror.css' ) );
779
- wp_enqueue_script( 'codemirror.js', bws_menu_url( 'js/codemirror.js' ), array( 'jquery' ) );
780
- }
781
-
782
- }
783
  }
784
 
785
  /**
@@ -787,12 +940,17 @@ if ( ! function_exists ( 'bws_plugins_include_codemirror' ) ) {
787
  */
788
  if ( ! function_exists( 'bws_add_tooltip_in_admin' ) ) {
789
  function bws_add_tooltip_in_admin( $tooltip_args = array() ) {
790
- new BWS_admin_tooltip( $tooltip_args );
791
  }
792
  }
793
 
794
- if ( ! class_exists( 'BWS_admin_tooltip' ) ) {
795
- class BWS_admin_tooltip {
 
 
 
 
 
796
  private $tooltip_args;
797
 
798
  public function __construct( $tooltip_args ) {
@@ -800,32 +958,32 @@ if ( ! class_exists( 'BWS_admin_tooltip' ) ) {
800
 
801
  /* Default arguments */
802
  $tooltip_args_default = array(
803
- 'tooltip_id' => false,
804
- 'css_selector' => false,
805
- 'actions' => array(
806
- 'click' => true,
807
- 'onload' => false,
808
  ),
809
- 'buttons' => array(
810
- 'close' => array(
811
  'type' => 'dismiss',
812
- 'text' => __( 'Close', 'bestwebsoft' ),
813
  ),
814
  ),
815
- 'position' => array(
816
- 'edge' => 'top',
817
- 'align' => 'center',
818
- 'pos-left' => 0,
819
- 'pos-top' => 0,
820
- 'zindex' => 10000
821
  ),
822
- 'set_timeout' => 0
823
  );
824
- $tooltip_args = array_merge( $tooltip_args_default, $tooltip_args );
825
  /* Check that our merged array has default values */
826
  foreach ( $tooltip_args_default as $arg_key => $arg_value ) {
827
  if ( is_array( $arg_value ) ) {
828
- foreach ( $arg_value as $key => $value) {
829
  if ( ! isset( $tooltip_args[ $arg_key ][ $key ] ) ) {
830
  $tooltip_args[ $arg_key ][ $key ] = $tooltip_args_default[ $arg_key ][ $key ];
831
  }
@@ -844,7 +1002,7 @@ if ( ! class_exists( 'BWS_admin_tooltip' ) ) {
844
  return;
845
  } else {
846
  /* check position */
847
- if ( ! in_array( $tooltip_args['position']['edge'], array( 'left', 'right', 'top', 'bottom' ) ) ) {
848
  $tooltip_args['position']['edge'] = 'top';
849
  }
850
  if ( ! in_array( $tooltip_args['position']['align'], array( 'top', 'bottom', 'left', 'right', 'center' ) ) ) {
@@ -864,7 +1022,7 @@ if ( ! class_exists( 'BWS_admin_tooltip' ) ) {
864
  break;
865
  case 'top':
866
  case 'bottom':
867
- if ( $tooltip_args['position']['align'] == 'left' ) {
868
  $tooltip_args['position']['pos-left'] -= 65;
869
  }
870
  break;
@@ -875,16 +1033,16 @@ if ( ! class_exists( 'BWS_admin_tooltip' ) ) {
875
  wp_enqueue_script( 'wp-pointer' );
876
  /* add script that displays our tooltip */
877
  if ( ! isset( $bstwbsftwppdtplgns_tooltip_script_add ) ) {
878
- wp_enqueue_script( 'bws-tooltip-script', bws_menu_url( 'js/bws_tooltip.js' ) );
879
  $bstwbsftwppdtplgns_tooltip_script_add = true;
880
  }
881
  $tooltip_args = $this->tooltip_args;
882
 
883
- $script = "(function($) {
884
  $(document).ready( function() {
885
- $.bwsTooltip( " . json_encode( $tooltip_args ) . " );
886
  })
887
- })(jQuery);";
888
  wp_register_script( 'bws-tooltip-script-single-' . $this->tooltip_args['tooltip_id'], '' );
889
  wp_enqueue_script( 'bws-tooltip-script-single-' . $this->tooltip_args['tooltip_id'] );
890
  wp_add_inline_script( 'bws-tooltip-script-single-' . $this->tooltip_args['tooltip_id'], sprintf( $script ) );
@@ -892,22 +1050,33 @@ if ( ! class_exists( 'BWS_admin_tooltip' ) ) {
892
  }
893
  }
894
 
895
- if ( ! function_exists ( 'bws_form_restore_default_confirm' ) ) {
896
- function bws_form_restore_default_confirm( $plugin_basename ) { ?>
 
 
 
 
 
 
897
  <div>
898
- <p><?php _e( 'Are you sure you want to restore default settings?', 'bestwebsoft' ) ?></p>
899
  <form method="post" action="">
900
  <p>
901
- <button class="button button-primary" name="bws_restore_confirm"><?php _e( 'Yes, restore all settings', 'bestwebsoft' ) ?></button>
902
- <button class="button" name="bws_restore_deny"><?php _e( 'No, go back to the settings page', 'bestwebsoft' ) ?></button>
903
  <?php wp_nonce_field( $plugin_basename, 'bws_settings_nonce_name' ); ?>
904
  </p>
905
  </form>
906
  </div>
907
- <?php }
 
908
  }
909
 
910
- /* shortcode */
 
 
 
 
911
  if ( ! function_exists( 'bws_add_editor_buttons' ) ) {
912
  function bws_add_editor_buttons() {
913
  global $bws_shortcode_list;
@@ -918,13 +1087,23 @@ if ( ! function_exists( 'bws_add_editor_buttons' ) ) {
918
  }
919
  }
920
 
921
- if ( ! function_exists( 'bws_add_buttons' ) ){
 
 
 
 
 
922
  function bws_add_buttons( $plugin_array ) {
923
  $plugin_array['add_bws_shortcode'] = bws_menu_url( 'js/shortcode-button.js' );
924
  return $plugin_array;
925
  }
926
  }
927
 
 
 
 
 
 
928
  if ( ! function_exists( 'bws_register_buttons' ) ) {
929
  function bws_register_buttons( $buttons ) {
930
  array_push( $buttons, 'add_bws_shortcode' ); /* dropcap', 'recentposts */
@@ -932,50 +1111,60 @@ if ( ! function_exists( 'bws_register_buttons' ) ) {
932
  }
933
  }
934
 
935
- /* Generate inline content for the popup window when the "bws shortcode" button is clicked */
 
 
 
 
936
  if ( ! function_exists( 'bws_shortcode_media_button_popup' ) ) {
937
  function bws_shortcode_media_button_popup() {
938
  global $bws_shortcode_list;
939
 
940
- if ( ! empty( $bws_shortcode_list ) ) { ?>
 
941
  <div id="bws_shortcode_popup" style="display:none;">
942
  <div id="bws_shortcode_popup_block">
943
  <div id="bws_shortcode_select_plugin">
944
- <h4><?php _e( 'Plugin', 'bestwebsoft' ); ?></h4>
945
  <select name="bws_shortcode_select" id="bws_shortcode_select">
946
  <?php foreach ( $bws_shortcode_list as $key => $value ) { ?>
947
- <option value="<?php echo esc_attr( $key ); ?>"><?php echo $value['name']; ?></option>
948
  <?php } ?>
949
  </select>
950
  </div>
951
  <div class="clear"></div>
952
  <div id="bws_shortcode_content">
953
- <h4><?php _e( 'Shortcode settings', 'bestwebsoft' ); ?></h4>
954
- <?php echo apply_filters( 'bws_shortcode_button_content', '' ); ?>
955
  </div>
956
  <div class="clear"></div>
957
  <div id="bws_shortcode_content_bottom">
958
- <p><?php _e( 'The shortcode will be inserted', 'bestwebsoft' ); ?></p>
959
  <div id="bws_shortcode_block"><div id="bws_shortcode_display"></div></div>
960
  </div>
961
  </div>
962
  </div>
963
- <?php }
 
964
  }
965
  }
966
 
967
  /**
968
- * output shortcode in a special block
 
969
  * @since 1.9.8
970
  */
971
  if ( ! function_exists( 'bws_shortcode_output' ) ) {
972
- function bws_shortcode_output( $shortcode ) { ?>
973
- <span class="bws_shortcode_output"><input type="text" onfocus="this.select();" readonly="readonly" value="<?php echo $shortcode; ?>" class="large-text bws_no_bind_notice"></span>
974
- <?php }
 
 
975
  }
976
 
977
  /**
978
- * output tooltip
 
979
  * @since 1.9.8
980
  * @param string $content - HTML content for the tooltip
981
  * @param string $class - Can be standart "bws-hide-for-mobile" (tooltip will be hidden in 782px) and "bws-auto-width" (need for img) or some custom class.
@@ -988,7 +1177,11 @@ if ( ! function_exists( 'bws_add_help_box' ) ) {
988
  }
989
  }
990
 
991
- /* add help tab */
 
 
 
 
992
  if ( ! function_exists( 'bws_help_tab' ) ) {
993
  function bws_help_tab( $screen, $args ) {
994
  $url = ( ! empty( $args['section'] ) ) ? 'https://support.bestwebsoft.com/hc/en-us/sections/' . $args['section'] : 'https://support.bestwebsoft.com/';
@@ -998,113 +1191,143 @@ if ( ! function_exists( 'bws_help_tab' ) ) {
998
  $screen->add_help_tab(
999
  array(
1000
  'id' => $args['id'] . '_help_tab',
1001
- 'title' => __( 'FAQ', 'bestwebsoft' ),
1002
- 'content' => $content
1003
  )
1004
  );
1005
 
1006
  $screen->set_help_sidebar(
1007
- '<p><strong>' . __( 'For more information:', 'bestwebsoft' ) . '</strong></p>' .
1008
- '<p><a href="https://bestwebsoft.com/documentation/" target="_blank">' . __( 'Documentation', 'bestwebsoft' ) . '</a></p>' .
1009
- '<p><a href="https://www.youtube.com/user/bestwebsoft/playlists?flow=grid&sort=da&view=1" target="_blank">' . __( 'Video Instructions', 'bestwebsoft' ) . '</a></p>' .
1010
- '<p><a href="https://support.bestwebsoft.com/hc/en-us/requests/new" target="_blank">' . __( 'Submit a Request', 'bestwebsoft' ) . '</a></p>'
1011
  );
1012
  }
1013
  }
1014
 
 
 
 
 
 
1015
  if ( ! function_exists( 'bws_enqueue_custom_code_css_js' ) ) {
1016
  function bws_enqueue_custom_code_css_js() {
1017
  global $bstwbsftwppdtplgns_options;
1018
 
1019
- if ( ! isset( $bstwbsftwppdtplgns_options ) )
1020
  $bstwbsftwppdtplgns_options = ( function_exists( 'is_multisite' ) && is_multisite() ) ? get_site_option( 'bstwbsftwppdtplgns_options' ) : get_option( 'bstwbsftwppdtplgns_options' );
 
1021
 
1022
  if ( ! empty( $bstwbsftwppdtplgns_options['custom_code'] ) ) {
1023
  $is_multisite = is_multisite();
1024
- if ( $is_multisite )
1025
  $blog_id = get_current_blog_id();
 
1026
 
1027
- if ( ! $is_multisite && ! empty( $bstwbsftwppdtplgns_options['custom_code']['bws-custom-code.css'] ) )
1028
- wp_enqueue_style( 'bws-custom-style', $bstwbsftwppdtplgns_options['custom_code']['bws-custom-code.css'] );
1029
- elseif ( $is_multisite && ! empty( $bstwbsftwppdtplgns_options['custom_code'][ $blog_id ]['bws-custom-code.css'] ) )
1030
- wp_enqueue_style( 'bws-custom-style', $bstwbsftwppdtplgns_options['custom_code'][ $blog_id ]['bws-custom-code.css'] );
 
1031
 
1032
- if ( ! $is_multisite && ! empty( $bstwbsftwppdtplgns_options['custom_code']['bws-custom-code.js'] ) )
1033
- wp_enqueue_script( 'bws-custom-style', $bstwbsftwppdtplgns_options['custom_code']['bws-custom-code.js'] );
1034
- elseif ( $is_multisite && ! empty( $bstwbsftwppdtplgns_options['custom_code'][ $blog_id ]['bws-custom-code.js'] ) )
1035
- wp_enqueue_script( 'bws-custom-style', $bstwbsftwppdtplgns_options['custom_code'][ $blog_id ]['bws-custom-code.js'] );
 
1036
  }
1037
  }
1038
  }
1039
 
 
 
 
 
 
1040
  if ( ! function_exists( 'bws_enqueue_custom_code_php' ) ) {
1041
  function bws_enqueue_custom_code_php() {
1042
- if ( is_admin() )
1043
  return;
 
1044
 
1045
  global $bstwbsftwppdtplgns_options;
1046
 
1047
- if ( ! isset( $bstwbsftwppdtplgns_options ) )
1048
  $bstwbsftwppdtplgns_options = ( function_exists( 'is_multisite' ) && is_multisite() ) ? get_site_option( 'bstwbsftwppdtplgns_options' ) : get_option( 'bstwbsftwppdtplgns_options' );
 
1049
 
1050
  if ( ! empty( $bstwbsftwppdtplgns_options['custom_code'] ) ) {
1051
 
1052
  $is_multisite = is_multisite();
1053
- if ( $is_multisite )
1054
  $blog_id = get_current_blog_id();
 
1055
 
1056
  if ( ! $is_multisite && ! empty( $bstwbsftwppdtplgns_options['custom_code']['bws-custom-code.php'] ) ) {
1057
  if ( file_exists( $bstwbsftwppdtplgns_options['custom_code']['bws-custom-code.php'] ) ) {
1058
- if ( ! defined( 'BWS_GLOBAL' ) )
1059
  define( 'BWS_GLOBAL', true );
1060
- require_once( $bstwbsftwppdtplgns_options['custom_code']['bws-custom-code.php'] );
 
1061
  } else {
1062
  unset( $bstwbsftwppdtplgns_options['custom_code']['bws-custom-code.php'] );
1063
- if ( $is_multisite )
1064
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
1065
- else
1066
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
 
1067
  }
1068
  } elseif ( $is_multisite && ! empty( $bstwbsftwppdtplgns_options['custom_code'][ $blog_id ]['bws-custom-code.php'] ) ) {
1069
  if ( file_exists( $bstwbsftwppdtplgns_options['custom_code'][ $blog_id ]['bws-custom-code.php'] ) ) {
1070
- if ( ! defined( 'BWS_GLOBAL' ) )
1071
  define( 'BWS_GLOBAL', true );
1072
- require_once( $bstwbsftwppdtplgns_options['custom_code'][ $blog_id ]['bws-custom-code.php'] );
 
1073
  } else {
1074
  unset( $bstwbsftwppdtplgns_options['custom_code'][ $blog_id ]['bws-custom-code.php'] );
1075
- if ( $is_multisite )
1076
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
1077
- else
1078
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
 
1079
  }
1080
  }
1081
  }
1082
  }
1083
  }
1084
 
 
 
 
 
 
1085
  if ( ! function_exists( 'bws_delete_plugin' ) ) {
1086
  function bws_delete_plugin( $basename ) {
1087
  global $bstwbsftwppdtplgns_options;
1088
 
1089
  $is_multisite = is_multisite();
1090
- if ( $is_multisite )
1091
  $blog_id = get_current_blog_id();
 
1092
 
1093
- if ( ! isset( $bstwbsftwppdtplgns_options ) )
1094
  $bstwbsftwppdtplgns_options = ( $is_multisite ) ? get_site_option( 'bstwbsftwppdtplgns_options' ) : get_option( 'bstwbsftwppdtplgns_options' );
 
1095
 
1096
  /* remove bws_menu versions */
1097
  unset( $bstwbsftwppdtplgns_options['bws_menu']['version'][ $basename ] );
1098
  /* remove track usage data */
1099
- if ( isset( $bstwbsftwppdtplgns_options['bws_menu']['track_usage']['products'][ $basename ] ) )
1100
  unset( $bstwbsftwppdtplgns_options['bws_menu']['track_usage']['products'][ $basename ] );
 
1101
  /* if empty ['bws_menu']['version'] - there is no other bws plugins - delete all */
1102
  if ( empty( $bstwbsftwppdtplgns_options['bws_menu']['version'] ) ) {
1103
  /* remove options */
1104
- if ( $is_multisite )
1105
  delete_site_option( 'bstwbsftwppdtplgns_options' );
1106
- else
1107
  delete_option( 'bstwbsftwppdtplgns_options' );
 
1108
 
1109
  /* remove custom_code */
1110
  if ( $is_multisite ) {
@@ -1115,7 +1338,7 @@ if ( ! function_exists( 'bws_delete_plugin' ) ) {
1115
  foreach ( $blogids as $blog_id ) {
1116
  switch_to_blog( $blog_id );
1117
  $upload_dir = wp_upload_dir();
1118
- $folder = $upload_dir['basedir'] . '/bws-custom-code';
1119
  if ( file_exists( $folder ) && is_dir( $folder ) ) {
1120
  array_map( 'unlink', glob( "$folder/*" ) );
1121
  rmdir( $folder );
@@ -1124,7 +1347,7 @@ if ( ! function_exists( 'bws_delete_plugin' ) ) {
1124
  switch_to_blog( $old_blog );
1125
  } else {
1126
  $upload_dir = wp_upload_dir();
1127
- $folder = $upload_dir['basedir'] . '/bws-custom-code';
1128
  if ( file_exists( $folder ) && is_dir( $folder ) ) {
1129
  array_map( 'unlink', glob( "$folder/*" ) );
1130
  rmdir( $folder );
@@ -1137,7 +1360,7 @@ if ( ! function_exists( 'bws_delete_plugin' ) ) {
1137
  add_action( 'admin_init', 'bws_plugins_admin_init' );
1138
  add_action( 'admin_enqueue_scripts', 'bws_admin_enqueue_scripts' );
1139
  add_action( 'admin_head', 'bws_plugins_admin_head' );
1140
- add_action( 'admin_footer','bws_plugins_admin_footer' );
1141
 
1142
  add_action( 'admin_notices', 'bws_admin_notices', 30 );
1143
 
1
  <?php
2
+ /**
3
+ * @package BWS Menu
4
+ * @version 2.4.2
5
+ * Main functions
6
+ */
 
7
 
8
  /**
9
+ * General functions for BestWebSoft plugins
 
 
10
  */
11
+ require dirname( __FILE__ ) . '/deprecated.php';
12
+ require_once dirname( __FILE__ ) . '/deactivation-form.php';
13
+
14
+
15
+ if ( ! function_exists( 'bws_get_mofile' ) ) {
16
+ /**
17
+ * Function to add 'bestwebsoft' slug for BWS_Menu MO file if BWS_Menu loaded from theme.
18
+ *
19
+ * @since 1.9.7
20
+ */
21
  function bws_get_mofile( $mofile, $domain ) {
22
+ if ( 'bestwebsoft' === $domain ) {
23
  $locale = get_locale();
24
  return str_replace( $locale, "bestwebsoft-{$locale}", $mofile );
25
  }
28
  }
29
  }
30
 
31
+ /**
32
+ * Internationalization, first(!)
33
+ *
34
+ * @since 1.9.7
35
+ */
36
+ if ( isset( $bws_menu_source ) && 'themes' === $bws_menu_source ) {
37
  add_filter( 'load_textdomain_mofile', 'bws_get_mofile', 10, 2 );
38
  load_theme_textdomain( 'bestwebsoft', get_stylesheet_directory() . '/inc/bws_menu/languages' );
39
  remove_filter( 'load_textdomain_mofile', 'bws_get_mofile' );
46
  *
47
  * @since 1.9.7
48
  */
49
+ if ( ! function_exists( 'bws_menu_url' ) ) {
50
+ if ( ! isset( $bws_menu_source ) || 'plugins' === $bws_menu_source ) {
51
  function bws_menu_url( $path = '' ) {
52
  return plugins_url( $path, __FILE__ );
53
  }
54
  } else {
55
  function bws_menu_url( $path = '' ) {
56
  $bws_menu_current_dir = str_replace( '\\', '/', dirname( __FILE__ ) );
57
+ $bws_menu_abspath = str_replace( '\\', '/', ABSPATH );
58
  $bws_menu_current_url = site_url( str_replace( $bws_menu_abspath, '', $bws_menu_current_dir ) );
59
 
60
  return sprintf( '%s/%s', $bws_menu_current_url, $path );
63
  }
64
 
65
  /**
66
+ * Function check if plugin is compatible with current WP version
67
+ *
68
+ * @return void
69
+ */
70
  if ( ! function_exists( 'bws_wp_min_version_check' ) ) {
71
  function bws_wp_min_version_check( $plugin_basename, $plugin_info, $require_wp, $min_wp = false ) {
72
  global $wp_version, $bws_versions_notice_array;
73
+ if ( false === $min_wp ) {
74
  $min_wp = $require_wp;
75
+ }
76
+ if ( version_compare( $wp_version, $min_wp, '<' ) ) {
77
+ include_once ABSPATH . 'wp-admin/includes/plugin.php';
78
  if ( is_plugin_active( $plugin_basename ) ) {
79
  deactivate_plugins( $plugin_basename );
80
  $admin_url = ( function_exists( 'get_admin_url' ) ) ? get_admin_url( null, 'plugins.php' ) : esc_url( '/wp-admin/plugins.php' );
81
  wp_die(
82
  sprintf(
83
  "<strong>%s</strong> %s <strong>WordPress %s</strong> %s <br /><br />%s <a href='%s'>%s</a>.",
84
+ esc_html( $plugin_info['Name'] ),
85
+ esc_html__( 'requires', 'bestwebsoft' ),
86
+ esc_html( $require_wp ),
87
+ esc_html__( 'or higher, that is why it has been deactivated! Please upgrade WordPress and try again.', 'bestwebsoft' ),
88
+ esc_html__( 'Back to the WordPress', 'bestwebsoft' ),
89
+ esc_url( $admin_url ),
90
+ esc_html__( 'Plugins page', 'bestwebsoft' )
91
  )
92
  );
93
  }
94
+ } elseif ( version_compare( $wp_version, $require_wp, '<' ) ) {
95
+ $bws_versions_notice_array[] = array(
96
+ 'name' => $plugin_info['Name'],
97
+ 'version' => $require_wp,
98
+ );
99
  }
100
  }
101
  }
102
 
103
+ /**
104
+ * Function display review block
105
+ *
106
+ * @echo string
107
+ */
108
  if ( ! function_exists( 'bws_plugin_reviews_block' ) ) {
109
  function bws_plugin_reviews_block( $plugin_name, $plugin_slug ) { ?>
110
  <div class="bws-plugin-reviews">
111
  <div class="bws-plugin-reviews-rate">
112
+ <?php esc_html_e( 'Like the plugin?', 'bestwebsoft' ); ?>
113
+ <a href="https://wordpress.org/support/view/plugin-reviews/<?php echo esc_attr( $plugin_slug ); ?>?filter=5" target="_blank" title="<?php printf( esc_html__( '%s reviews', 'bestwebsoft' ), esc_html( sanitize_text_field( $plugin_name ) ) ); ?>">
114
+ <?php esc_html_e( 'Rate it', 'bestwebsoft' ); ?>
115
  <span class="dashicons dashicons-star-filled"></span>
116
  <span class="dashicons dashicons-star-filled"></span>
117
  <span class="dashicons dashicons-star-filled"></span>
120
  </a>
121
  </div>
122
  <div class="bws-plugin-reviews-support">
123
+ <?php esc_html_e( 'Need help?', 'bestwebsoft' ); ?>
124
+ <a href="https://support.bestwebsoft.com"><?php esc_html_e( 'Visit Help Center', 'bestwebsoft' ); ?></a>
125
  </div>
126
  <div class="bws-plugin-reviews-donate">
127
+ <?php esc_html_e( 'Want to support the plugin?', 'bestwebsoft' ); ?>
128
+ <a href="https://bestwebsoft.com/donate/"><?php esc_html_e( 'Donate', 'bestwebsoft' ); ?></a>
129
  </div>
130
  </div>
131
+ <?php
132
+ }
133
  }
134
 
135
+ /**
136
+ * Function display license notification
137
+ *
138
+ * @echo string
139
+ */
140
+ if ( ! function_exists( 'bws_plugin_update_row' ) ) {
141
  function bws_plugin_update_row( $plugin_key, $link_slug = false, $free_plugin_name = false ) {
142
  global $bstwbsftwppdtplgns_options, $wp_version;
143
  $wp_list_table = _get_list_table( 'WP_Plugins_List_Table' );
144
  if ( isset( $bstwbsftwppdtplgns_options['wrong_license_key'][ $plugin_key ] ) ) {
145
  $explode_plugin_key = explode( '/', $plugin_key );
146
+ $class = ( $wp_version >= 4.6 ) ? 'active' : '';
147
+ $style = ( $wp_version < 4.6 ) ? ' style="background-color: #FFEBE8;border-color: #CC0000;"' : '';
148
+ $div_class = ( $wp_version >= 4.6 ) ? ' notice inline notice-warning notice-alt' : '';
149
+ echo '<tr class="bws-plugin-update-tr plugin-update-tr ' . esc_attr( $class ) . '" id="' . esc_attr( $explode_plugin_key[0] ) . '-update" data-slug="' . esc_attr( $explode_plugin_key[0] ) . '" data-plugin="' . esc_attr( $plugin_key ) . '">
150
  <td colspan="' . esc_attr( $wp_list_table->get_column_count() ) . '" class="plugin-update colspanchange">
151
+ <div class="update-message' . esc_attr( $div_class ) . '"' . wp_kses_post( $style ) . '>';
152
+ if ( $wp_version >= 4.6 ) {
153
+ echo '<p>';
154
+ }
155
+ echo '<strong>' . esc_html__( 'WARNING: Illegal use notification', 'bestwebsoft' ) . '.</strong> ' . esc_html__( 'You can use one license of the Pro plugin for one domain only. Please check and edit your license or domain if necessary using your personal Client Area. We strongly recommend you to solve the problem within 24 hours, otherwise the Pro plugin will be deactivated.', 'bestwebsoft' ) . ' <a target="_blank" href="https://support.bestwebsoft.com/hc/en-us/articles/204240089">' . esc_html__( 'Learn More', 'bestwebsoft' ) . '</a>';
156
+ if ( $wp_version >= 4.6 ) {
157
+ echo '</p>';
158
+ }
159
  echo '</div>
160
  </td>
161
  </tr>';
162
+ } elseif ( isset( $bstwbsftwppdtplgns_options['time_out'][ $plugin_key ] ) && strtotime( $bstwbsftwppdtplgns_options['time_out'][ $plugin_key ] ) < strtotime( gmdate( 'm/d/Y' ) ) ) {
163
  $explode_plugin_key = explode( '/', $plugin_key );
164
+ $class = ( $wp_version >= 4.6 ) ? 'active' : '';
165
+ $style = ( $wp_version < 4.6 ) ? ' style="color: #8C0000;"' : '';
166
+ $div_class = ( $wp_version >= 4.6 ) ? ' notice inline notice-warning notice-alt' : '';
167
+ echo '<tr class="bws-plugin-update-tr plugin-update-tr ' . esc_attr( $class ) . '" id="' . esc_attr( $explode_plugin_key[0] ) . '-update" data-slug="' . esc_attr( $explode_plugin_key[0] ) . '" data-plugin="' . esc_attr( $plugin_key ) . '">
168
  <td colspan="' . esc_attr( $wp_list_table->get_column_count() ) . '" class="plugin-update colspanchange">
169
+ <div class="update-message' . esc_attr( $div_class ) . '"' . wp_kses_post( $style ) . '>';
170
+ if ( $wp_version >= 4.6 ) {
171
+ echo '<p>';
172
+ }
173
+ if ( isset( $bstwbsftwppdtplgns_options['trial'][ $plugin_key ] ) && false !== $link_slug ) {
174
+ echo esc_html__( 'Notice: Your Pro Trial license has expired. To continue using the plugin, you should buy a Pro license', 'bestwebsoft' ) . ' - <a href="https://bestwebsoft.com/products/wordpress/plugins/' . esc_attr( $link_slug ) . '/">https://bestwebsoft.com/products/wordpress/plugins/' . esc_attr( $link_slug ) . '/</a>';
175
+ } else {
176
+ echo esc_html__( 'Your license has expired. To continue getting top-priority support and plugin updates, you should extend it.', 'bestwebsoft' ) . ' <a target="_new" href="https://support.bestwebsoft.com/entries/53487136">' . esc_html__( 'Learn more', 'bestwebsoft' ) . '</a>';
177
+ }
178
+ if ( $wp_version >= 4.6 ) {
179
+ echo '</p>';
180
+ }
181
+ echo '</div>
182
  </td>
183
  </tr>';
184
  } elseif ( isset( $bstwbsftwppdtplgns_options['trial'][ $plugin_key ] ) ) {
185
  $explode_plugin_key = explode( '/', $plugin_key );
186
+ $class = ( $wp_version >= 4.6 ) ? 'active' : '';
187
+ $style = ( $wp_version < 4.6 ) ? ' style="color: #8C0000;"' : '';
188
+ $div_class = ( $wp_version >= 4.6 ) ? ' notice inline notice-warning notice-alt' : '';
189
+ echo '<tr class="bws-plugin-update-tr plugin-update-tr ' . esc_attr( $class ) . '" id="' . esc_attr( $explode_plugin_key[0] ) . '-update" data-slug="' . esc_attr( $explode_plugin_key[0] ) . '" data-plugin="' . esc_attr( $plugin_key ) . '">
190
  <td colspan="' . esc_attr( $wp_list_table->get_column_count() ) . '" class="plugin-update colspanchange">
191
+ <div class="update-message' . esc_attr( $div_class ) . '"' . wp_kses_post( $style ) . '>';
192
+ if ( $wp_version >= 4.6 ) {
193
+ echo '<p>';
194
+ }
195
+ if ( false !== $free_plugin_name ) {
196
+ printf( esc_html__( 'Notice: You are using the Pro Trial license of %s plugin.', 'bestwebsoft' ), esc_html( $free_plugin_name ) );
197
+ } else {
198
+ esc_html_e( 'Notice: You are using the Pro Trial license of plugin.', 'bestwebsoft' );
199
+ }
200
+ if ( isset( $bstwbsftwppdtplgns_options['time_out'][ $plugin_key ] ) ) {
201
+ echo ' ' . esc_html__( 'The Pro Trial license will expire on', 'bestwebsoft' ) . ' ' . esc_html( $bstwbsftwppdtplgns_options['time_out'][ $plugin_key ] ) . '.';
202
+ }
203
+ if ( $wp_version >= 4.6 ) {
204
+ echo '</p>';
205
+ }
206
  echo '</div>
207
  </td>
208
  </tr>';
210
  }
211
  }
212
 
213
+ /**
214
+ * Function display admin notices
215
+ *
216
+ * @echo string
217
+ */
218
  if ( ! function_exists( 'bws_admin_notices' ) ) {
219
  function bws_admin_notices() {
220
  global $bws_versions_notice_array, $bws_plugin_banner_to_settings, $bstwbsftwppdtplgns_options, $bws_plugin_banner_go_pro, $bstwbsftwppdtplgns_banner_array, $bws_plugin_banner_timeout;
222
  /* bws_plugin_banner_go_pro */
223
  if ( ! empty( $bws_plugin_banner_go_pro ) ) {
224
  /* get $bws_plugins */
225
+ require dirname( __FILE__ ) . '/product_list.php';
226
+
227
  foreach ( $bstwbsftwppdtplgns_banner_array as $value ) {
228
  if ( isset( $bws_plugin_banner_go_pro[ $value[0] ] ) && ! isset( $_COOKIE[ $value[0] ] ) ) {
229
 
231
  continue;
232
  }
233
 
234
+ $single_banner_value = $bws_plugin_banner_go_pro[ $value[0] ];
235
+ ?>
236
  <div class="updated" style="padding: 0; margin: 0; border: none; background: none;">
237
+ <div class="<?php echo esc_attr( $single_banner_value['prefix'] ); ?>_message bws_banner_on_plugin_page bws_go_pro_banner" style="display: none;">
238
+ <button class="<?php echo esc_attr( $single_banner_value['prefix'] ); ?>_close_icon close_icon notice-dismiss bws_hide_settings_notice" title="<?php esc_html_e( 'Close notice', 'bestwebsoft' ); ?>"></button>
239
  <div class="icon">
240
  <img title="" src="<?php echo esc_attr( $single_banner_value['banner_url'] ); ?>" alt="" />
241
  </div>
242
  <div class="text">
243
+ <?php esc_html_e( 'It’s time to upgrade your', 'bestwebsoft' ); ?> <strong><?php echo esc_html( $single_banner_value['plugin_info']['Name'] ); ?> plugin</strong> <?php esc_html_e( 'to', 'bestwebsoft' ); ?> <strong>Pro</strong> <?php esc_html_e( 'version!', 'bestwebsoft' ); ?><br />
244
+ <span><?php esc_html_e( 'Extend standard plugin functionality with new great options.', 'bestwebsoft' ); ?></span>
245
  </div>
246
  <div class="button_div">
247
+ <a class="button" target="_blank" href="<?php echo esc_url( $single_banner_value['bws_link'] ); ?>"><?php esc_html_e( 'Learn More', 'bestwebsoft' ); ?></a>
248
  </div>
249
  </div>
250
  </div>
251
+ <?php
252
+ break;
253
  }
254
  }
255
  }
256
 
257
  /* $bws_plugin_banner_timeout */
258
  if ( ! empty( $bws_plugin_banner_timeout ) ) {
259
+ foreach ( $bws_plugin_banner_timeout as $banner_value ) {
260
+ ?>
261
  <div class="updated" style="padding: 0; margin: 0; border: none; background: none;">
262
+ <div class="<?php echo esc_attr( $banner_value['prefix'] ); ?>_message_timeout bws_banner_on_plugin_page bws_banner_timeout" style="display:none;">
263
+ <button class="<?php echo esc_attr( $banner_value['prefix'] ); ?>_close_icon close_icon notice-dismiss bws_hide_settings_notice" title="<?php esc_html_e( 'Close notice', 'bestwebsoft' ); ?>"></button>
264
  <div class="icon">
265
+ <img title="" src="<?php echo esc_url( $banner_value['banner_url'] ); ?>" alt="" />
266
  </div>
267
+ <div class="text"><?php printf( esc_html__( "Your license key for %1\$s expires on %2\$s and you won't be granted TOP-PRIORITY SUPPORT or UPDATES.", 'bestwebsoft' ), '<strong>' . esc_html__( $banner_value['plugin_name'] ) . '</strong>', esc_html__( $bstwbsftwppdtplgns_options['time_out'][ $banner_value['plugin_key'] ] ) ); ?> <a target="_new" href="https://support.bestwebsoft.com/entries/53487136"><?php esc_html_e( 'Learn more', 'bestwebsoft' ); ?></a></div>
268
  </div>
269
  </div>
270
+ <?php
271
+ }
272
  }
273
 
274
  /* versions notice */
275
  if ( ! empty( $bws_versions_notice_array ) ) {
276
+ foreach ( $bws_versions_notice_array as $key => $value ) {
277
+ ?>
278
  <div class="update-nag">
279
+ <?php
280
+ printf(
281
+ '<strong>%s</strong> %s <strong>WordPress %s</strong> %s',
282
+ esc_html__( $value['name'] ),
283
+ esc_html__( 'requires', 'bestwebsoft' ),
284
+ esc_html__( $value['version'] ),
285
+ esc_html__( 'or higher! We do not guarantee that our plugin will work correctly. Please upgrade to WordPress latest version.', 'bestwebsoft' )
286
+ );
287
+ ?>
288
  </div>
289
+ <?php
290
+ }
291
  }
292
 
293
  /* banner_to_settings notice */
294
  if ( ! empty( $bws_plugin_banner_to_settings ) ) {
295
+ if ( 1 === count( $bws_plugin_banner_to_settings ) ) {
296
+ ?>
297
  <div class="updated" style="padding: 0; margin: 0; border: none; background: none;">
298
  <div class="bws_banner_on_plugin_page bws_banner_to_settings">
299
  <div class="icon">
300
+ <img title="" src="<?php echo esc_url( $bws_plugin_banner_to_settings[0]['banner_url'] ); ?>" alt="" />
301
  </div>
302
  <div class="text">
303
+ <strong><?php printf( esc_html__( 'Thank you for installing %s plugin!', 'bestwebsoft' ), esc_html( $bws_plugin_banner_to_settings[0]['plugin_info']['Name'] ) ); ?></strong>
304
  <br />
305
+ <?php esc_html_e( "Let's get started", 'bestwebsoft' ); ?>:
306
+ <a href="<?php echo esc_url( self_admin_url( $bws_plugin_banner_to_settings[0]['settings_url'] ) ); ?>"><?php esc_html_e( 'Settings', 'bestwebsoft' ); ?></a>
307
+ <?php if ( false !== $bws_plugin_banner_to_settings[0]['post_type_url'] ) { ?>
308
+ <?php esc_html_e( 'or', 'bestwebsoft' ); ?>
309
+ <a href="<?php echo esc_url( self_admin_url( $bws_plugin_banner_to_settings[0]['post_type_url'] ) ); ?>"><?php esc_html_e( 'Add New', 'bestwebsoft' ); ?></a>
310
  <?php } ?>
311
  </div>
312
  <form action="" method="post">
313
+ <button class="notice-dismiss bws_hide_settings_notice" title="<?php esc_html_e( 'Close notice', 'bestwebsoft' ); ?>"></button>
314
+ <input type="hidden" name="bws_hide_settings_notice_<?php echo esc_html( $bws_plugin_banner_to_settings[0]['plugin_options_name'] ); ?>" value="hide" />
315
  <?php wp_nonce_field( plugin_basename( __FILE__ ), 'bws_settings_nonce_name' ); ?>
316
  </form>
317
  </div>
320
  <div class="updated" style="padding: 0; margin: 0; border: none; background: none;">
321
  <div class="bws_banner_on_plugin_page bws_banner_to_settings_joint">
322
  <form action="" method="post">
323
+ <button class="notice-dismiss bws_hide_settings_notice" title="<?php esc_html_e( 'Close notice', 'bestwebsoft' ); ?>"></button>
324
  <div class="bws-text">
325
  <div class="icon">
326
  <span class="dashicons dashicons-admin-plugins"></span>
327
  </div>
328
+ <strong><?php esc_html_e( 'Thank you for installing plugins by BestWebSoft!', 'bestwebsoft' ); ?></strong>
329
  <div class="hide-if-no-js bws-more-links">
330
+ <a href="#" class="bws-more"><?php esc_html_e( 'More Details', 'bestwebsoft' ); ?></a>
331
+ <a href="#" class="bws-less hidden"><?php esc_html_e( 'Less Details', 'bestwebsoft' ); ?></a>
332
  </div>
333
  <?php wp_nonce_field( plugin_basename( __FILE__ ), 'bws_settings_nonce_name' ); ?>
334
  <div class="clear"></div>
336
  <div class="bws-details hide-if-js">
337
  <?php foreach ( $bws_plugin_banner_to_settings as $value ) { ?>
338
  <div>
339
+ <strong><?php echo esc_html( str_replace( ' by BestWebSoft', '', $value['plugin_info']['Name'] ) ); ?></strong>&ensp;<a href="<?php echo esc_url( self_admin_url( $value['settings_url'] ) ); ?>"><?php esc_html_e( 'Settings', 'bestwebsoft' ); ?></a>
340
+ <?php if ( false !== $value['post_type_url'] ) { ?>
341
+ &ensp;|&ensp;<a target="_blank" href="<?php echo esc_url( self_admin_url( $value['post_type_url'] ) ); ?>"><?php esc_html_e( 'Add New', 'bestwebsoft' ); ?></a>
342
  <?php } ?>
343
+ <input type="hidden" name="bws_hide_settings_notice_<?php echo esc_html( $value['plugin_options_name'] ); ?>" value="hide" />
344
  </div>
345
  <?php } ?>
346
  </div>
347
  </div>
348
  </form>
349
  </div>
350
+ <?php
351
+ }
352
  }
353
 
354
  /**
355
+ * Show notices about deprecated_function
356
+ *
357
  * @since 1.9.8
358
  */
359
+ if ( ! empty( $bstwbsftwppdtplgns_options['deprecated_function'] ) ) {
360
+ ?>
361
  <div class="update-nag">
362
+ <strong><?php esc_html_e( 'Deprecated function(-s) is used on the site here:', 'bestwebsoft' ); ?></strong>
363
+ <?php
364
+ $i = 1;
365
  foreach ( $bstwbsftwppdtplgns_options['deprecated_function'] as $function_name => $attr ) {
366
+ if ( 1 !== $i ) {
367
  echo ' ,';
368
+ }
369
  if ( ! empty( $attr['product-name'] ) ) {
370
+ echo esc_html( $attr['product-name'] );
371
  } elseif ( ! empty( $attr['file'] ) ) {
372
+ echo esc_url( $attr['file'] );
373
  }
374
  unset( $bstwbsftwppdtplgns_options['deprecated_function'][ $function_name ] );
375
  $i++;
376
+ }
377
+ ?>
378
+ .
379
  <br/>
380
+ <?php esc_html_e( 'This function(-s) will be removed over time. Please update the product(-s).', 'bestwebsoft' ); ?>
381
  </div>
382
+ <?php
383
+ if ( is_multisite() ) {
384
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
385
+ } else {
386
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
387
+ }
388
  }
389
  }
390
  }
391
 
392
+ /**
393
+ * Function display banner
394
+ *
395
+ * @return array
396
+ */
397
  if ( ! function_exists( 'bws_plugin_banner_go_pro' ) ) {
398
  function bws_plugin_banner_go_pro( $plugin_options, $plugin_info, $this_banner_prefix, $bws_link_slug, $link_key, $link_pn, $banner_url_or_slug ) {
399
  global $bws_plugin_banner_go_pro, $wp_version, $bstwbsftwppdtplgns_banner_array;
400
 
401
+ if ( ! isset( $plugin_options['first_install'] ) || strtotime( '-1 week' ) < $plugin_options['first_install'] ) {
402
  return;
403
+ }
404
 
405
+ $bws_link = esc_url( 'https://bestwebsoft.com/products/wordpress/plugins/' . $bws_link_slug . '/?k=' . $link_key . '&pn=' . $link_pn . '&v=' . $plugin_info['Version'] . '&wp_v=' . $wp_version );
406
 
407
+ if ( false === strrpos( $banner_url_or_slug, '/' ) ) {
408
  $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.png';
409
  }
410
 
411
  $bws_plugin_banner_go_pro[ $this_banner_prefix . '_hide_banner_on_plugin_page' ] = array(
412
+ 'plugin_info' => $plugin_info,
413
+ 'prefix' => $this_banner_prefix,
414
+ 'bws_link' => $bws_link,
415
+ 'banner_url' => $banner_url_or_slug,
416
  );
417
 
418
  if ( empty( $bstwbsftwppdtplgns_banner_array ) ) {
419
+ if ( ! function_exists( 'bws_get_banner_array' ) ) {
420
+ require_once dirname( __FILE__ ) . '/bws_menu.php';
421
+ }
422
  bws_get_banner_array();
423
  }
424
  }
425
  }
426
 
427
+ /**
428
+ * Function update banner params
429
+ *
430
+ * @return global array
431
+ */
432
  if ( ! function_exists( 'bws_add_plugin_banner_timeout' ) ) {
433
  function bws_add_plugin_banner_timeout( $plugin_key, $plugin_prefix, $plugin_name, $banner_url_or_slug ) {
434
  global $bws_plugin_banner_timeout;
435
 
436
+ if ( isset( $bstwbsftwppdtplgns_options['time_out'][ $plugin_key ] ) && ( strtotime( $bstwbsftwppdtplgns_options['time_out'][ $plugin_key ] ) < strtotime( gmdate( 'm/d/Y' ) . '+1 month' ) ) && ( strtotime( $bstwbsftwppdtplgns_options['time_out'][ $plugin_key ] ) > strtotime( gmdate( 'm/d/Y' ) ) ) ) {
437
 
438
+ if ( false === strrpos( $banner_url_or_slug, '/' ) ) {
439
  $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.png';
440
  }
441
 
442
  $bws_plugin_banner_timeout[] = array(
443
+ 'plugin_key' => $plugin_key,
444
+ 'prefix' => $plugin_prefix,
445
+ 'plugin_name' => $plugin_name,
446
+ 'banner_url' => $banner_url_or_slug,
447
  );
448
  }
449
  }
450
  }
451
 
452
+ /**
453
+ * Function settings for banner
454
+ *
455
+ * @return global array
456
+ */
457
  if ( ! function_exists( 'bws_plugin_banner_to_settings' ) ) {
458
  function bws_plugin_banner_to_settings( $plugin_info, $plugin_options_name, $banner_url_or_slug, $settings_url, $post_type_url = false ) {
459
  global $bws_plugin_banner_to_settings;
462
 
463
  $plugin_options = $is_network_admin ? get_site_option( $plugin_options_name ) : get_option( $plugin_options_name );
464
 
465
+ if ( isset( $plugin_options['display_settings_notice'] ) && 0 === $plugin_options['display_settings_notice'] ) {
466
  return;
467
+ }
468
 
469
+ if ( isset( $_POST[ 'bws_hide_settings_notice_' . $plugin_options_name ] ) && check_admin_referer( plugin_basename( __FILE__ ), 'bws_settings_nonce_name' ) ) {
470
  $plugin_options['display_settings_notice'] = 0;
471
+ if ( $is_network_admin ) {
472
  update_site_option( $plugin_options_name, $plugin_options );
473
+ } else {
474
  update_option( $plugin_options_name, $plugin_options );
475
+ }
476
  return;
477
  }
478
 
479
+ if ( false === strrpos( $banner_url_or_slug, '/' ) ) {
480
  $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.png';
481
  }
482
 
483
  $bws_plugin_banner_to_settings[] = array(
484
+ 'plugin_info' => $plugin_info,
485
+ 'plugin_options_name' => $plugin_options_name,
486
+ 'banner_url' => $banner_url_or_slug,
487
+ 'settings_url' => $settings_url,
488
+ 'post_type_url' => $post_type_url,
489
  );
490
  }
491
  }
492
 
493
+ /**
494
+ * Function display for feature banner
495
+ *
496
+ * @echo string
497
+ */
498
  if ( ! function_exists( 'bws_plugin_suggest_feature_banner' ) ) {
499
  function bws_plugin_suggest_feature_banner( $plugin_info, $plugin_options_name, $banner_url_or_slug ) {
500
  $is_network_admin = is_network_admin();
501
 
502
  $plugin_options = $is_network_admin ? get_site_option( $plugin_options_name ) : get_option( $plugin_options_name );
503
 
504
+ if ( isset( $plugin_options['display_suggest_feature_banner'] ) && 0 === $plugin_options['display_suggest_feature_banner'] ) {
505
  return;
506
+ }
507
 
508
  if ( ! isset( $plugin_options['first_install'] ) ) {
509
+ $plugin_options['first_install'] = strtotime( 'now' );
510
+ $update_option = $return = true;
511
  } elseif ( strtotime( '-2 week' ) < $plugin_options['first_install'] ) {
512
  $return = true;
513
  }
514
 
515
  if ( ! isset( $plugin_options['go_settings_counter'] ) ) {
516
  $plugin_options['go_settings_counter'] = 1;
517
+ $update_option = $return = true;
518
  } elseif ( 20 > $plugin_options['go_settings_counter'] ) {
519
  $plugin_options['go_settings_counter'] = $plugin_options['go_settings_counter'] + 1;
520
+ $update_option = $return = true;
521
  }
522
 
523
  if ( isset( $update_option ) ) {
524
+ if ( $is_network_admin ) {
525
  update_site_option( $plugin_options_name, $plugin_options );
526
+ } else {
527
  update_option( $plugin_options_name, $plugin_options );
528
+ }
529
  }
530
 
531
+ if ( isset( $return ) ) {
532
  return;
533
+ }
534
 
535
+ if ( isset( $_POST[ 'bws_hide_suggest_feature_banner_' . $plugin_options_name ] ) && check_admin_referer( $plugin_info['Name'], 'bws_settings_nonce_name' ) ) {
536
  $plugin_options['display_suggest_feature_banner'] = 0;
537
+ if ( $is_network_admin ) {
538
  update_site_option( $plugin_options_name, $plugin_options );
539
+ } else {
540
  update_option( $plugin_options_name, $plugin_options );
541
+ }
542
  return;
543
  }
544
 
545
+ if ( false === strrpos( $banner_url_or_slug, '/' ) ) {
546
  $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.png';
547
+ }
548
+ ?>
549
  <div class="updated" style="padding: 0; margin: 0; border: none; background: none;">
550
  <div class="bws_banner_on_plugin_page bws_suggest_feature_banner">
551
  <div class="icon">
552
+ <img title="" src="<?php echo esc_url( $banner_url_or_slug ); ?>" alt="" />
553
  </div>
554
  <div class="text">
555
+ <strong><?php printf( esc_html__( 'Thank you for choosing %s plugin!', 'bestwebsoft' ), esc_html( $plugin_info['Name'] ) ); ?></strong><br />
556
+ <?php esc_html_e( "If you have a feature, suggestion or idea you'd like to see in the plugin, we'd love to hear about it!", 'bestwebsoft' ); ?>
557
+ <a target="_blank" href="https://support.bestwebsoft.com/hc/en-us/requests/new"><?php esc_html_e( 'Suggest a Feature', 'bestwebsoft' ); ?></a>
558
  </div>
559
  <form action="" method="post">
560
+ <button class="notice-dismiss bws_hide_settings_notice" title="<?php esc_html_e( 'Close notice', 'bestwebsoft' ); ?>"></button>
561
+ <input type="hidden" name="bws_hide_suggest_feature_banner_<?php echo esc_html( $plugin_options_name ); ?>" value="hide" />
562
  <?php wp_nonce_field( $plugin_info['Name'], 'bws_settings_nonce_name' ); ?>
563
  </form>
564
  </div>
565
  </div>
566
+ <?php
567
+ }
568
  }
569
 
570
+ /**
571
+ * Function display affiliate postbox
572
+ *
573
+ * @echo string
574
+ */
575
  if ( ! function_exists( 'bws_affiliate_postbox' ) ) {
576
  function bws_affiliate_postbox() {
577
 
581
  return;
582
  }
583
 
584
+ if ( isset( $_POST['bws_hide_affiliate_banner'] ) && check_admin_referer( 'bws_affiliate_postbox', 'bws_settings_nonce_name' ) ) {
585
  update_user_meta( get_current_user_id(), '_bws_affiliate_postbox_dismissed', strtotime( 'now' ) );
586
  return;
587
  }
588
 
589
+ $bws_link = esc_url( 'https://bestwebsoft.com/affiliate/?utm_source=plugin&utm_medium=settings&utm_campaign=affiliate_program' );
590
+ ?>
591
  <div id="bws-affiliate-postbox" class="postbox">
592
  <form action="" method="post">
593
  <button class="notice-dismiss bws_hide_settings_notice" title="<?php esc_html_e( 'Close notice', 'bestwebsoft' ); ?>"></button>
600
  <div><?php esc_html_e( 'from each BestWebSoft plugin and theme sale you refer', 'bestwebsoft' ); ?></div>
601
  <div class="bws-row">
602
  <div class="bws-cell">
603
+ <img src="<?php echo esc_url( bws_menu_url( 'images/join-icon.svg' ) ); ?>" alt="" />
604
  <div><?php esc_html_e( 'Join affiliate program', 'bestwebsoft' ); ?></div>
605
  </div>
606
  <div class="bws-cell">
607
+ <img src="<?php echo esc_url( bws_menu_url( 'images/promote-icon.svg' ) ); ?>" alt="" />
608
  <div><?php esc_html_e( 'Promote and sell products', 'bestwebsoft' ); ?></div>
609
  </div>
610
  <div class="bws-cell">
611
+ <img src="<?php echo esc_url( bws_menu_url( 'images/earn-icon.svg' ) ); ?>" alt="" />
612
  <div><?php esc_html_e( 'Get commission!', 'bestwebsoft' ); ?></div>
613
  </div>
614
  </div>
615
  <div class="clear"></div>
616
  <p>
617
+ <a class="button" href="<?php echo esc_url( $bws_link ); ?>" target="_blank"><?php esc_html_e( 'Start Now', 'bestwebsoft' ); ?></a>
618
  </p>
619
  </div>
620
+ <?php
621
+ }
622
  }
623
 
624
+ /**
625
+ * Function display settings notice
626
+ *
627
+ * @echo string
628
+ */
629
  if ( ! function_exists( 'bws_show_settings_notice' ) ) {
630
+ function bws_show_settings_notice() {
631
+ ?>
632
  <div id="bws_save_settings_notice" class="updated fade below-h2" style="display:none;">
633
  <p>
634
+ <strong><?php esc_html_e( 'Notice', 'bestwebsoft' ); ?></strong>: <?php esc_html_e( "The plugin's settings have been changed.", 'bestwebsoft' ); ?>
635
+ <a class="bws_save_anchor" href="#bws-submit-button"><?php esc_html_e( 'Save Changes', 'bestwebsoft' ); ?></a>
636
  </p>
637
  </div>
638
+ <?php
639
+ }
640
  }
641
 
642
+ /**
643
+ * Function for hide premium options
644
+ *
645
+ * @echo string
646
+ */
647
  if ( ! function_exists( 'bws_hide_premium_options' ) ) {
648
  function bws_hide_premium_options( $options ) {
649
+ if ( ! isset( $options['hide_premium_options'] ) || ! is_array( $options['hide_premium_options'] ) ) {
650
  $options['hide_premium_options'] = array();
651
+ }
652
 
653
  $options['hide_premium_options'][] = get_current_user_id();
654
 
655
  return array(
656
+ 'message' => esc_html__( 'You can always look at premium options by checking the "Pro Options" in the "Misc" tab.', 'bestwebsoft' ),
657
+ 'options' => $options,
658
+ );
659
  }
660
  }
661
 
662
+ /**
663
+ * Function for check checkbox for hide premium options
664
+ *
665
+ * @return bool
666
+ */
667
  if ( ! function_exists( 'bws_hide_premium_options_check' ) ) {
668
  function bws_hide_premium_options_check( $options ) {
669
+ if ( ! empty( $options['hide_premium_options'] ) && in_array( get_current_user_id(), $options['hide_premium_options'] ) ) {
670
  return true;
671
+ } else {
672
  return false;
673
+ }
674
  }
675
  }
676
 
677
+ /**
678
+ * Function init fir dashboard
679
+ */
680
+ if ( ! function_exists( 'bws_plugins_admin_init' ) ) {
681
  function bws_plugins_admin_init() {
682
+ $page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';
683
+ if ( isset( $_GET['bws_activate_plugin'] ) && check_admin_referer( 'bws_activate_plugin' . sanitize_text_field( wp_unslash( $_GET['bws_activate_plugin'] ) ) ) ) {
684
 
685
+ $plugin = isset( $_GET['bws_activate_plugin'] ) ? sanitize_text_field( wp_unslash( $_GET['bws_activate_plugin'] ) ) : '';
686
  $result = activate_plugin( $plugin, '', is_network_admin() );
687
  if ( is_wp_error( $result ) ) {
688
+ if ( 'unexpected_output' === $result->get_error_code() ) {
689
  $redirect = self_admin_url( 'admin.php?page=bws_panel&error=true&charsout=' . strlen( $result->get_error_data() ) . '&plugin=' . $plugin );
690
+ wp_safe_redirect( add_query_arg( '_error_nonce', wp_create_nonce( 'plugin-activation-error_' . $plugin ), $redirect ) );
691
  exit();
692
  } else {
693
+ wp_die( esc_html( $result ) );
694
  }
695
  }
696
 
706
  /**
707
  * @deprecated 1.9.8 (15.12.2016)
708
  */
709
+ $is_main_page = in_array( $page, array( 'bws_panel', 'bws_themes', 'bws_system_status' ) );
710
+ $tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : '';
 
711
 
712
+ if ( $is_main_page ) {
713
  $current_page = 'admin.php?page=' . $page;
714
+ } else {
715
  $current_page = isset( $_GET['tab'] ) ? 'admin.php?page=' . $page . '&tab=' . $tab : 'admin.php?page=' . $page;
716
+ }
717
  /*end deprecated */
718
 
719
+ wp_safe_redirect( self_admin_url( esc_url( $current_page . '&activate=true' ) ) );
720
  exit();
721
  }
722
 
723
+ if ( 'bws_panel' === $page || strpos( $page, '-bws-panel' ) ) {
724
+ if ( ! session_id() ) {
725
  @session_start();
726
+ }
727
  }
728
 
729
  bws_add_editor_buttons();
730
  }
731
  }
732
 
733
+ /**
734
+ * Function add scripts ans syles for dashboard
735
+ */
736
+ if ( ! function_exists( 'bws_admin_enqueue_scripts' ) ) {
737
  function bws_admin_enqueue_scripts() {
738
  global $wp_scripts, $hook_suffix,
739
  $post_type,
740
  $bws_plugin_banner_go_pro, $bws_plugin_banner_timeout, $bstwbsftwppdtplgns_banner_array,
741
+ $bws_shortcode_list,
742
+ $wp_filesystem;
743
+
744
+ $page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';
745
 
746
  $jquery_ui_version = isset( $wp_scripts->registered['jquery-ui-core']->ver ) ? $wp_scripts->registered['jquery-ui-core']->ver : '1.12.1';
747
+ WP_Filesystem();
748
+ if ( ! $wp_filesystem->exists( dirname( __FILE__ ) . '/css/jquery-ui-styles/' . $jquery_ui_version . '/' ) ) {
749
+ $jquery_ui_version = '1.12.1';
750
+ }
751
+ if ( 'et_divi_options' !== $page ) {
752
+ wp_enqueue_style( 'jquery-ui-style', bws_menu_url( 'css/jquery-ui-styles/' . $jquery_ui_version . '/jquery-ui.css', array(), $jquery_ui_version ) );
753
+ }
754
+ wp_enqueue_style( 'bws-admin-css', bws_menu_url( 'css/general_style.css' ), array(), '2.4.2' );
755
  wp_enqueue_script( 'bws-admin-scripts', bws_menu_url( 'js/general_script.js' ), array( 'jquery', 'jquery-ui-tooltip' ) );
756
 
757
+ if ( in_array( $page, array( 'bws_panel', 'bws_themes', 'bws_system_status' ) ) || strpos( $page, '-bws-panel' ) ) {
758
+ wp_enqueue_style( 'bws_menu_style', bws_menu_url( 'css/style.css' ), array(), '2.4.2' );
759
+ wp_enqueue_script( 'bws_menu_script', bws_menu_url( 'js/bws_menu.js' ), array(), '2.4.2', true );
760
  wp_enqueue_script( 'theme-install' );
761
  add_thickbox();
762
  wp_enqueue_script( 'plugin-install' );
763
  }
764
 
765
+ if ( 'plugins.php' === $hook_suffix ) {
766
  if ( ! empty( $bws_plugin_banner_go_pro ) || ! empty( $bws_plugin_banner_timeout ) ) {
767
  wp_enqueue_script( 'bws_menu_cookie', bws_menu_url( 'js/c_o_o_k_i_e.js' ) );
768
 
775
  $script = "(function($) {
776
  $(document).ready( function() {
777
  var hide_message = $.cookie( '" . $prefix . "_hide_banner_on_plugin_page' );
778
+ if ( hide_message === 'true' ) {
779
  $( '." . $prefix . "_message' ).css( 'display', 'none' );
780
  } else {
781
  $( '." . $prefix . "_message' ).css( 'display', 'block' );
801
 
802
  foreach ( $bws_plugin_banner_timeout as $banner_value ) {
803
  $script .= "var hide_message = $.cookie( '" . $banner_value['prefix'] . "_timeout_hide_banner_on_plugin_page' );
804
+ if ( hide_message === 'true' ) {
805
  $( '." . $banner_value['prefix'] . "_message_timeout' ).css( 'display', 'none' );
806
  } else {
807
  $( '." . $banner_value['prefix'] . "_message_timeout' ).css( 'display', 'block' );
812
  });";
813
  }
814
 
815
+ $script .= '});
816
+ })(jQuery);';
817
 
818
  wp_register_script( 'plugin_banner_timeout_hide', '' );
819
  wp_enqueue_script( 'plugin_banner_timeout_hide' );
828
  }
829
  }
830
 
831
+ if ( 'multilanguage-languages.php' === $page ) {
832
+ wp_enqueue_style( 'bws-modal-css', bws_menu_url( 'css/modal.css' ) );
833
+ }
834
+
835
  if ( ! empty( $bws_shortcode_list ) ) {
836
  /* TinyMCE Shortcode Plugin */
837
  $script = "var bws_shortcode_button = {
838
+ 'label': '" . esc_attr__( 'Add BWS Shortcode', 'bestwebsoft' ) . "',
839
+ 'title': '" . esc_attr__( 'Add BWS Plugins Shortcode', 'bestwebsoft' ) . "',
840
  'function_name': [";
841
+ foreach ( $bws_shortcode_list as $value ) {
842
+ if ( isset( $value['js_function'] ) ) {
843
+ $script .= "'" . $value['js_function'] . "',";
844
+ }
845
+ }
846
+ $script .= ']
847
+ };';
848
  wp_register_script( 'bws_shortcode_button', '' );
849
  wp_enqueue_script( 'bws_shortcode_button' );
850
  wp_add_inline_script( 'bws_shortcode_button', sprintf( $script ) );
852
  /* TinyMCE Shortcode Plugin */
853
  if ( isset( $post_type ) && in_array( $post_type, array( 'post', 'page' ) ) ) {
854
  $tooltip_args = array(
855
+ 'tooltip_id' => 'bws_shortcode_button_tooltip',
856
+ 'css_selector' => '.mce-bws_shortcode_button',
857
+ 'actions' => array(
858
+ 'click' => false,
859
+ 'onload' => true,
860
  ),
861
+ 'content' => '<h3>' . esc_html__( 'Add shortcode', 'bestwebsoft' ) . '</h3><p>' . esc_html__( "Add BestWebSoft plugins' shortcodes using this button.", 'bestwebsoft' ) . '</p>',
862
+ 'position' => array(
863
+ 'edge' => 'right',
864
  ),
865
+ 'set_timeout' => 2000,
866
  );
867
  bws_add_tooltip_in_admin( $tooltip_args );
868
  }
879
  function bws_enqueue_settings_scripts() {
880
  wp_enqueue_script( 'jquery-ui-resizable' );
881
  wp_enqueue_script( 'jquery-ui-tabs' );
882
+ wp_enqueue_style( 'bws-modal-css', bws_menu_url( 'css/modal.css' ), array(), '2.4.2' );
883
  }
884
  }
885
 
886
+ /**
887
+ * Function add syles into admin head
888
+ *
889
+ * @since 1.9.8
890
+ */
891
+ if ( ! function_exists( 'bws_plugins_admin_head' ) ) {
892
  function bws_plugins_admin_head() {
893
+ $page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';
894
+
895
+ if ( $page === 'bws_panel' ) {
896
+ ?>
897
  <noscript>
898
  <style type="text/css">
899
  .bws_product_button {
901
  }
902
  </style>
903
  </noscript>
904
+ <?php
905
+ }
906
+ }
907
  }
908
 
909
+ /**
910
+ * Function add syles into admin footer
911
+ *
912
+ * @since 1.9.8
913
+ */
914
+ if ( ! function_exists( 'bws_plugins_admin_footer' ) ) {
915
  function bws_plugins_admin_footer() {
916
+ $screen = get_current_screen();
917
+ if ( $screen->parent_base == 'edit' ) {
918
+ bws_shortcode_media_button_popup();
919
+ }
920
  }
921
  }
922
 
923
+ /**
924
+ * Function add style and scripts for older version
925
+ *
926
+ * @since 1.9.8
927
+ */
928
+ if ( ! function_exists( 'bws_plugins_include_codemirror' ) ) {
929
  function bws_plugins_include_codemirror() {
930
  global $wp_version;
931
+ if ( version_compare( $wp_version, '4.9.0', '>=' ) ) {
932
  wp_enqueue_style( 'wp-codemirror' );
933
  wp_enqueue_script( 'wp-codemirror' );
934
+ }
935
+ }
 
 
 
 
936
  }
937
 
938
  /**
940
  */
941
  if ( ! function_exists( 'bws_add_tooltip_in_admin' ) ) {
942
  function bws_add_tooltip_in_admin( $tooltip_args = array() ) {
943
+ new BWS_Admin_Tooltip( $tooltip_args );
944
  }
945
  }
946
 
947
+ /**
948
+ * Class for Tooltip
949
+ *
950
+ * @since 1.9.8
951
+ */
952
+ if ( ! class_exists( 'BWS_Admin_Tooltip' ) ) {
953
+ class BWS_Admin_Tooltip {
954
  private $tooltip_args;
955
 
956
  public function __construct( $tooltip_args ) {
958
 
959
  /* Default arguments */
960
  $tooltip_args_default = array(
961
+ 'tooltip_id' => false,
962
+ 'css_selector' => false,
963
+ 'actions' => array(
964
+ 'click' => true,
965
+ 'onload' => false,
966
  ),
967
+ 'buttons' => array(
968
+ 'close' => array(
969
  'type' => 'dismiss',
970
+ 'text' => esc_html__( 'Close', 'bestwebsoft' ),
971
  ),
972
  ),
973
+ 'position' => array(
974
+ 'edge' => 'top',
975
+ 'align' => 'center',
976
+ 'pos-left' => 0,
977
+ 'pos-top' => 0,
978
+ 'zindex' => 10000,
979
  ),
980
+ 'set_timeout' => 0,
981
  );
982
+ $tooltip_args = array_merge( $tooltip_args_default, $tooltip_args );
983
  /* Check that our merged array has default values */
984
  foreach ( $tooltip_args_default as $arg_key => $arg_value ) {
985
  if ( is_array( $arg_value ) ) {
986
+ foreach ( $arg_value as $key => $value ) {
987
  if ( ! isset( $tooltip_args[ $arg_key ][ $key ] ) ) {
988
  $tooltip_args[ $arg_key ][ $key ] = $tooltip_args_default[ $arg_key ][ $key ];
989
  }
1002
  return;
1003
  } else {
1004
  /* check position */
1005
+ if ( ! in_array( $tooltip_args['position']['edge'], array( 'left', 'right', 'top', 'bottom' ) ) ) {
1006
  $tooltip_args['position']['edge'] = 'top';
1007
  }
1008
  if ( ! in_array( $tooltip_args['position']['align'], array( 'top', 'bottom', 'left', 'right', 'center' ) ) ) {
1022
  break;
1023
  case 'top':
1024
  case 'bottom':
1025
+ if ( 'left' === $tooltip_args['position']['align'] ) {
1026
  $tooltip_args['position']['pos-left'] -= 65;
1027
  }
1028
  break;
1033
  wp_enqueue_script( 'wp-pointer' );
1034
  /* add script that displays our tooltip */
1035
  if ( ! isset( $bstwbsftwppdtplgns_tooltip_script_add ) ) {
1036
+ wp_enqueue_script( 'bws-tooltip-script', bws_menu_url( 'js/bws_tooltip.js' ), array(), '2.4.2' );
1037
  $bstwbsftwppdtplgns_tooltip_script_add = true;
1038
  }
1039
  $tooltip_args = $this->tooltip_args;
1040
 
1041
+ $script = '(function($) {
1042
  $(document).ready( function() {
1043
+ $.bwsTooltip( ' . wp_json_encode( $tooltip_args ) . ' );
1044
  })
1045
+ })(jQuery);';
1046
  wp_register_script( 'bws-tooltip-script-single-' . $this->tooltip_args['tooltip_id'], '' );
1047
  wp_enqueue_script( 'bws-tooltip-script-single-' . $this->tooltip_args['tooltip_id'] );
1048
  wp_add_inline_script( 'bws-tooltip-script-single-' . $this->tooltip_args['tooltip_id'], sprintf( $script ) );
1050
  }
1051
  }
1052
 
1053
+ /**
1054
+ * Function display confirm
1055
+ *
1056
+ * @since 1.9.8
1057
+ */
1058
+ if ( ! function_exists( 'bws_form_restore_default_confirm' ) ) {
1059
+ function bws_form_restore_default_confirm( $plugin_basename ) {
1060
+ ?>
1061
  <div>
1062
+ <p><?php esc_html_e( 'Are you sure you want to restore default settings?', 'bestwebsoft' ); ?></p>
1063
  <form method="post" action="">
1064
  <p>
1065
+ <button class="button button-primary" name="bws_restore_confirm"><?php esc_html_e( 'Yes, restore all settings', 'bestwebsoft' ); ?></button>
1066
+ <button class="button" name="bws_restore_deny"><?php esc_html_e( 'No, go back to the settings page', 'bestwebsoft' ); ?></button>
1067
  <?php wp_nonce_field( $plugin_basename, 'bws_settings_nonce_name' ); ?>
1068
  </p>
1069
  </form>
1070
  </div>
1071
+ <?php
1072
+ }
1073
  }
1074
 
1075
+ /**
1076
+ * Function for shortcode
1077
+ *
1078
+ * @since 1.9.8
1079
+ */
1080
  if ( ! function_exists( 'bws_add_editor_buttons' ) ) {
1081
  function bws_add_editor_buttons() {
1082
  global $bws_shortcode_list;
1087
  }
1088
  }
1089
 
1090
+ /**
1091
+ * Function add button for editor
1092
+ *
1093
+ * @since 1.9.8
1094
+ */
1095
+ if ( ! function_exists( 'bws_add_buttons' ) ) {
1096
  function bws_add_buttons( $plugin_array ) {
1097
  $plugin_array['add_bws_shortcode'] = bws_menu_url( 'js/shortcode-button.js' );
1098
  return $plugin_array;
1099
  }
1100
  }
1101
 
1102
+ /**
1103
+ * Function register button for editor
1104
+ *
1105
+ * @since 1.9.8
1106
+ */
1107
  if ( ! function_exists( 'bws_register_buttons' ) ) {
1108
  function bws_register_buttons( $buttons ) {
1109
  array_push( $buttons, 'add_bws_shortcode' ); /* dropcap', 'recentposts */
1111
  }
1112
  }
1113
 
1114
+ /**
1115
+ * Function Generate inline content for the popup window when the "bws shortcode" button is clicked
1116
+ *
1117
+ * @since 1.9.8
1118
+ */
1119
  if ( ! function_exists( 'bws_shortcode_media_button_popup' ) ) {
1120
  function bws_shortcode_media_button_popup() {
1121
  global $bws_shortcode_list;
1122
 
1123
+ if ( ! empty( $bws_shortcode_list ) ) {
1124
+ ?>
1125
  <div id="bws_shortcode_popup" style="display:none;">
1126
  <div id="bws_shortcode_popup_block">
1127
  <div id="bws_shortcode_select_plugin">
1128
+ <h4><?php esc_html_e( 'Plugin', 'bestwebsoft' ); ?></h4>
1129
  <select name="bws_shortcode_select" id="bws_shortcode_select">
1130
  <?php foreach ( $bws_shortcode_list as $key => $value ) { ?>
1131
+ <option value="<?php echo esc_attr( $key ); ?>"><?php echo esc_html( $value['name'] ); ?></option>
1132
  <?php } ?>
1133
  </select>
1134
  </div>
1135
  <div class="clear"></div>
1136
  <div id="bws_shortcode_content">
1137
+ <h4><?php esc_html_e( 'Shortcode settings', 'bestwebsoft' ); ?></h4>
1138
+ <?php echo wp_kses_post( apply_filters( 'bws_shortcode_button_content', '' ) ); ?>
1139
  </div>
1140
  <div class="clear"></div>
1141
  <div id="bws_shortcode_content_bottom">
1142
+ <p><?php esc_html_e( 'The shortcode will be inserted', 'bestwebsoft' ); ?></p>
1143
  <div id="bws_shortcode_block"><div id="bws_shortcode_display"></div></div>
1144
  </div>
1145
  </div>
1146
  </div>
1147
+ <?php
1148
+ }
1149
  }
1150
  }
1151
 
1152
  /**
1153
+ * Output shortcode in a special block
1154
+ *
1155
  * @since 1.9.8
1156
  */
1157
  if ( ! function_exists( 'bws_shortcode_output' ) ) {
1158
+ function bws_shortcode_output( $shortcode ) {
1159
+ ?>
1160
+ <span class="bws_shortcode_output"><input type="text" onfocus="this.select();" readonly="readonly" value="<?php echo esc_attr( $shortcode ); ?>" class="large-text bws_no_bind_notice"></span>
1161
+ <?php
1162
+ }
1163
  }
1164
 
1165
  /**
1166
+ * Output tooltip
1167
+ *
1168
  * @since 1.9.8
1169
  * @param string $content - HTML content for the tooltip
1170
  * @param string $class - Can be standart "bws-hide-for-mobile" (tooltip will be hidden in 782px) and "bws-auto-width" (need for img) or some custom class.
1177
  }
1178
  }
1179
 
1180
+ /**
1181
+ * Function add help tab
1182
+ *
1183
+ * @since 1.9.8
1184
+ */
1185
  if ( ! function_exists( 'bws_help_tab' ) ) {
1186
  function bws_help_tab( $screen, $args ) {
1187
  $url = ( ! empty( $args['section'] ) ) ? 'https://support.bestwebsoft.com/hc/en-us/sections/' . $args['section'] : 'https://support.bestwebsoft.com/';
1191
  $screen->add_help_tab(
1192
  array(
1193
  'id' => $args['id'] . '_help_tab',
1194
+ 'title' => esc_html__( 'FAQ', 'bestwebsoft' ),
1195
+ 'content' => wp_kses_post( $content ),
1196
  )
1197
  );
1198
 
1199
  $screen->set_help_sidebar(
1200
+ '<p><strong>' . esc_html__( 'For more information:', 'bestwebsoft' ) . '</strong></p>' .
1201
+ '<p><a href="https://bestwebsoft.com/documentation/" target="_blank">' . esc_html__( 'Documentation', 'bestwebsoft' ) . '</a></p>' .
1202
+ '<p><a href="https://www.youtube.com/user/bestwebsoft/playlists?flow=grid&sort=da&view=1" target="_blank">' . esc_html__( 'Video Instructions', 'bestwebsoft' ) . '</a></p>' .
1203
+ '<p><a href="https://support.bestwebsoft.com/hc/en-us/requests/new" target="_blank">' . esc_html__( 'Submit a Request', 'bestwebsoft' ) . '</a></p>'
1204
  );
1205
  }
1206
  }
1207
 
1208
+ /**
1209
+ * Function add css and js
1210
+ *
1211
+ * @since 1.9.8
1212
+ */
1213
  if ( ! function_exists( 'bws_enqueue_custom_code_css_js' ) ) {
1214
  function bws_enqueue_custom_code_css_js() {
1215
  global $bstwbsftwppdtplgns_options;
1216
 
1217
+ if ( ! isset( $bstwbsftwppdtplgns_options ) ) {
1218
  $bstwbsftwppdtplgns_options = ( function_exists( 'is_multisite' ) && is_multisite() ) ? get_site_option( 'bstwbsftwppdtplgns_options' ) : get_option( 'bstwbsftwppdtplgns_options' );
1219
+ }
1220
 
1221
  if ( ! empty( $bstwbsftwppdtplgns_options['custom_code'] ) ) {
1222
  $is_multisite = is_multisite();
1223
+ if ( $is_multisite ) {
1224
  $blog_id = get_current_blog_id();
1225
+ }
1226
 
1227
+ if ( ! $is_multisite && ! empty( $bstwbsftwppdtplgns_options['custom_code']['bws-custom-code.css'] ) ) {
1228
+ wp_enqueue_style( 'bws-custom-style', $bstwbsftwppdtplgns_options['custom_code']['bws-custom-code.css'], array(), '2.4.2' );
1229
+ } elseif ( $is_multisite && ! empty( $bstwbsftwppdtplgns_options['custom_code'][ $blog_id ]['bws-custom-code.css'] ) ) {
1230
+ wp_enqueue_style( 'bws-custom-style', $bstwbsftwppdtplgns_options['custom_code'][ $blog_id ]['bws-custom-code.css'], array(), '2.4.2' );
1231
+ }
1232
 
1233
+ if ( ! $is_multisite && ! empty( $bstwbsftwppdtplgns_options['custom_code']['bws-custom-code.js'] ) ) {
1234
+ wp_enqueue_script( 'bws-custom-style', $bstwbsftwppdtplgns_options['custom_code']['bws-custom-code.js'], array(), '2.4.2' );
1235
+ } elseif ( $is_multisite && ! empty( $bstwbsftwppdtplgns_options['custom_code'][ $blog_id ]['bws-custom-code.js'] ) ) {
1236
+ wp_enqueue_script( 'bws-custom-style', $bstwbsftwppdtplgns_options['custom_code'][ $blog_id ]['bws-custom-code.js'], array(), '2.4.2' );
1237
+ }
1238
  }
1239
  }
1240
  }
1241
 
1242
+ /**
1243
+ * Function add custom php code
1244
+ *
1245
+ * @since 1.9.8
1246
+ */
1247
  if ( ! function_exists( 'bws_enqueue_custom_code_php' ) ) {
1248
  function bws_enqueue_custom_code_php() {
1249
+ if ( is_admin() ) {
1250
  return;
1251
+ }
1252
 
1253
  global $bstwbsftwppdtplgns_options;
1254
 
1255
+ if ( ! isset( $bstwbsftwppdtplgns_options ) ) {
1256
  $bstwbsftwppdtplgns_options = ( function_exists( 'is_multisite' ) && is_multisite() ) ? get_site_option( 'bstwbsftwppdtplgns_options' ) : get_option( 'bstwbsftwppdtplgns_options' );
1257
+ }
1258
 
1259
  if ( ! empty( $bstwbsftwppdtplgns_options['custom_code'] ) ) {
1260
 
1261
  $is_multisite = is_multisite();
1262
+ if ( $is_multisite ) {
1263
  $blog_id = get_current_blog_id();
1264
+ }
1265
 
1266
  if ( ! $is_multisite && ! empty( $bstwbsftwppdtplgns_options['custom_code']['bws-custom-code.php'] ) ) {
1267
  if ( file_exists( $bstwbsftwppdtplgns_options['custom_code']['bws-custom-code.php'] ) ) {
1268
+ if ( ! defined( 'BWS_GLOBAL' ) ) {
1269
  define( 'BWS_GLOBAL', true );
1270
+ }
1271
+ require_once $bstwbsftwppdtplgns_options['custom_code']['bws-custom-code.php'];
1272
  } else {
1273
  unset( $bstwbsftwppdtplgns_options['custom_code']['bws-custom-code.php'] );
1274
+ if ( $is_multisite ) {
1275
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
1276
+ } else {
1277
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
1278
+ }
1279
  }
1280
  } elseif ( $is_multisite && ! empty( $bstwbsftwppdtplgns_options['custom_code'][ $blog_id ]['bws-custom-code.php'] ) ) {
1281
  if ( file_exists( $bstwbsftwppdtplgns_options['custom_code'][ $blog_id ]['bws-custom-code.php'] ) ) {
1282
+ if ( ! defined( 'BWS_GLOBAL' ) ) {
1283
  define( 'BWS_GLOBAL', true );
1284
+ }
1285
+ require_once $bstwbsftwppdtplgns_options['custom_code'][ $blog_id ]['bws-custom-code.php'];
1286
  } else {
1287
  unset( $bstwbsftwppdtplgns_options['custom_code'][ $blog_id ]['bws-custom-code.php'] );
1288
+ if ( $is_multisite ) {
1289
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
1290
+ } else {
1291
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
1292
+ }
1293
  }
1294
  }
1295
  }
1296
  }
1297
  }
1298
 
1299
+ /**
1300
+ * Function delete plugin
1301
+ *
1302
+ * @since 1.9.8
1303
+ */
1304
  if ( ! function_exists( 'bws_delete_plugin' ) ) {
1305
  function bws_delete_plugin( $basename ) {
1306
  global $bstwbsftwppdtplgns_options;
1307
 
1308
  $is_multisite = is_multisite();
1309
+ if ( $is_multisite ) {
1310
  $blog_id = get_current_blog_id();
1311
+ }
1312
 
1313
+ if ( ! isset( $bstwbsftwppdtplgns_options ) ) {
1314
  $bstwbsftwppdtplgns_options = ( $is_multisite ) ? get_site_option( 'bstwbsftwppdtplgns_options' ) : get_option( 'bstwbsftwppdtplgns_options' );
1315
+ }
1316
 
1317
  /* remove bws_menu versions */
1318
  unset( $bstwbsftwppdtplgns_options['bws_menu']['version'][ $basename ] );
1319
  /* remove track usage data */
1320
+ if ( isset( $bstwbsftwppdtplgns_options['bws_menu']['track_usage']['products'][ $basename ] ) ) {
1321
  unset( $bstwbsftwppdtplgns_options['bws_menu']['track_usage']['products'][ $basename ] );
1322
+ }
1323
  /* if empty ['bws_menu']['version'] - there is no other bws plugins - delete all */
1324
  if ( empty( $bstwbsftwppdtplgns_options['bws_menu']['version'] ) ) {
1325
  /* remove options */
1326
+ if ( $is_multisite ) {
1327
  delete_site_option( 'bstwbsftwppdtplgns_options' );
1328
+ } else {
1329
  delete_option( 'bstwbsftwppdtplgns_options' );
1330
+ }
1331
 
1332
  /* remove custom_code */
1333
  if ( $is_multisite ) {
1338
  foreach ( $blogids as $blog_id ) {
1339
  switch_to_blog( $blog_id );
1340
  $upload_dir = wp_upload_dir();
1341
+ $folder = $upload_dir['basedir'] . '/bws-custom-code';
1342
  if ( file_exists( $folder ) && is_dir( $folder ) ) {
1343
  array_map( 'unlink', glob( "$folder/*" ) );
1344
  rmdir( $folder );
1347
  switch_to_blog( $old_blog );
1348
  } else {
1349
  $upload_dir = wp_upload_dir();
1350
+ $folder = $upload_dir['basedir'] . '/bws-custom-code';
1351
  if ( file_exists( $folder ) && is_dir( $folder ) ) {
1352
  array_map( 'unlink', glob( "$folder/*" ) );
1353
  rmdir( $folder );
1360
  add_action( 'admin_init', 'bws_plugins_admin_init' );
1361
  add_action( 'admin_enqueue_scripts', 'bws_admin_enqueue_scripts' );
1362
  add_action( 'admin_head', 'bws_plugins_admin_head' );
1363
+ add_action( 'admin_footer', 'bws_plugins_admin_footer' );
1364
 
1365
  add_action( 'admin_notices', 'bws_admin_notices', 30 );
1366
 
bws_menu/bws_include.php CHANGED
@@ -1,19 +1,20 @@
1
  <?php
2
- /*
3
- * Get latest version
4
- */
5
 
6
  if ( ! function_exists( 'bws_include_init' ) ) {
7
  function bws_include_init( $base, $bws_menu_source = 'plugins' ) {
8
  global $bstwbsftwppdtplgns_options, $bstwbsftwppdtplgns_added_menu, $bstwbsftwppdtplgns_active_plugins;
9
- if ( ! function_exists( 'get_plugin_data' ) )
10
- require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
 
11
 
12
  $wp_content_dir = defined( 'WP_CONTENT_DIR' ) ? WP_CONTENT_DIR : ABSPATH . 'wp-content';
13
  $wp_plugins_dir = defined( 'WP_PLUGIN_DIR' ) ? WP_PLUGIN_DIR : $wp_content_dir . '/plugins';
14
 
15
- if ( $bws_menu_source == 'plugins' ) {
16
- $bws_menu_dir = $wp_plugins_dir . '/' . dirname( $base ) . '/bws_menu/bws_menu.php';
17
  $bstwbsftwppdtplgns_active_plugins[ $base ] = get_plugin_data( $wp_plugins_dir . '/' . $base );
18
  } else {
19
  $bws_menu_dir = $wp_content_dir . '/themes/' . $base . '/inc/bws_menu/bws_menu.php';
@@ -21,17 +22,19 @@ if ( ! function_exists( 'bws_include_init' ) ) {
21
 
22
  $bws_menu_info = get_plugin_data( $bws_menu_dir );
23
 
24
- $is_pro_bws_menu = ( strpos( $bws_menu_info["Version"], 'pro' ) !== false );
25
- $bws_menu_version = str_replace( '-pro', '', $bws_menu_info["Version"] );
26
 
27
  if ( ! isset( $bstwbsftwppdtplgns_options ) ) {
28
  if ( function_exists( 'is_multisite' ) && is_multisite() ) {
29
- if ( ! get_site_option( 'bstwbsftwppdtplgns_options' ) )
30
  add_site_option( 'bstwbsftwppdtplgns_options', array() );
 
31
  $bstwbsftwppdtplgns_options = get_site_option( 'bstwbsftwppdtplgns_options' );
32
  } else {
33
- if ( ! get_option( 'bstwbsftwppdtplgns_options' ) )
34
  add_option( 'bstwbsftwppdtplgns_options', array() );
 
35
  $bstwbsftwppdtplgns_options = get_option( 'bstwbsftwppdtplgns_options' );
36
  }
37
  }
@@ -39,55 +42,61 @@ if ( ! function_exists( 'bws_include_init' ) ) {
39
  if ( isset( $bstwbsftwppdtplgns_options['bws_menu_version'] ) ) {
40
  $bstwbsftwppdtplgns_options['bws_menu']['version'][ $base ] = $bws_menu_version;
41
  unset( $bstwbsftwppdtplgns_options['bws_menu_version'] );
42
- if ( function_exists( 'is_multisite' ) && is_multisite() )
43
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
44
- else
45
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
46
- require_once( dirname( __FILE__ ) . '/bws_menu.php' );
47
- require_once( dirname( __FILE__ ) . '/bws_functions.php' );
48
- require_once( dirname( __FILE__ ) . '/class-bws-settings.php' );
49
- } else if ( ! $is_pro_bws_menu && ( ! isset( $bstwbsftwppdtplgns_options['bws_menu']['version'][ $base ] ) || $bstwbsftwppdtplgns_options['bws_menu']['version'][ $base ] != $bws_menu_version ) ) {
 
50
  $bstwbsftwppdtplgns_options['bws_menu']['version'][ $base ] = $bws_menu_version;
51
- if ( function_exists( 'is_multisite' ) && is_multisite() )
52
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
53
- else
54
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
55
- require_once( dirname( __FILE__ ) . '/bws_menu.php' );
56
- require_once( dirname( __FILE__ ) . '/bws_functions.php' );
57
- require_once( dirname( __FILE__ ) . '/class-bws-settings.php' );
58
- } else if ( $is_pro_bws_menu && ( ! isset( $bstwbsftwppdtplgns_options['bws_menu']['version_pro'][ $base ] ) || $bstwbsftwppdtplgns_options['bws_menu']['version_pro'][ $base ] != $bws_menu_version ) ) {
 
59
  $bstwbsftwppdtplgns_options['bws_menu']['version_pro'][ $base ] = $bws_menu_version;
60
-
61
- if ( isset( $bstwbsftwppdtplgns_options['bws_menu']['version'][ $base ] ) )
62
  unset( $bstwbsftwppdtplgns_options['bws_menu']['version'][ $base ] );
63
-
64
- if ( function_exists( 'is_multisite' ) && is_multisite() )
 
65
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
66
- else
67
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
68
- require_once( dirname( __FILE__ ) . '/bws_menu.php' );
69
- require_once( dirname( __FILE__ ) . '/bws_functions.php' );
70
- require_once( dirname( __FILE__ ) . '/class-bws-settings.php' );
71
- } else if ( ! isset( $bstwbsftwppdtplgns_added_menu ) ) {
 
72
 
73
  $all_plugins = get_plugins();
74
- $all_themes = wp_get_themes();
75
 
76
  if ( ! empty( $bstwbsftwppdtplgns_options['bws_menu']['version_pro'] ) ) {
77
  foreach ( $bstwbsftwppdtplgns_options['bws_menu']['version_pro'] as $key => $value ) {
78
  if ( array_key_exists( $key, $all_plugins ) || array_key_exists( $key, $all_themes ) ) {
79
- if ( $bws_menu_version < $value && ( is_plugin_active( $key ) || preg_match( '|' . $key . '$|', get_template_directory() ) ) ) {
80
- if ( ! isset( $product_with_newer_menu ) )
81
  $product_with_newer_menu = $key;
82
- elseif ( $bstwbsftwppdtplgns_options['bws_menu']['version_pro'][ $product_with_newer_menu ] < $bstwbsftwppdtplgns_options['bws_menu']['version_pro'][ $key ] )
83
  $product_with_newer_menu = $key;
 
84
  }
85
  } else {
86
  unset( $bstwbsftwppdtplgns_options['bws_menu']['version_pro'][ $key ] );
87
- if ( function_exists( 'is_multisite' ) && is_multisite() )
88
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
89
- else
90
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
 
91
  }
92
  }
93
  }
@@ -98,49 +107,52 @@ if ( ! function_exists( 'bws_include_init' ) ) {
98
  } else {
99
  foreach ( $bstwbsftwppdtplgns_options['bws_menu']['version'] as $key => $value ) {
100
  if ( array_key_exists( $key, $all_plugins ) || array_key_exists( $key, $all_themes ) ) {
101
- if ( $bws_menu_version < $value && ( is_plugin_active( $key ) || preg_match( '|' . $key . '$|', get_template_directory() ) ) ) {
102
- if ( ! isset( $product_with_newer_menu ) )
103
  $product_with_newer_menu = $key;
104
- elseif ( $bstwbsftwppdtplgns_options['bws_menu']['version'][ $product_with_newer_menu ] < $bstwbsftwppdtplgns_options['bws_menu']['version'][ $key ] )
105
  $product_with_newer_menu = $key;
 
106
  }
107
  } else {
108
  unset( $bstwbsftwppdtplgns_options['bws_menu']['version'][ $key ] );
109
- if ( function_exists( 'is_multisite' ) && is_multisite() )
110
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
111
- else
112
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
 
113
  }
114
  }
115
  }
116
  }
117
 
118
- if ( ! isset( $product_with_newer_menu ) )
119
  $product_with_newer_menu = $base;
 
120
 
121
  $folder_with_newer_menu = explode( '/', $product_with_newer_menu );
122
 
123
  if ( array_key_exists( $product_with_newer_menu, $all_plugins ) ) {
124
- $bws_menu_source = 'plugins';
125
  $bws_menu_new_dir = $wp_plugins_dir . '/' . $folder_with_newer_menu[0];
126
- } else if ( array_key_exists( $product_with_newer_menu, $all_themes ) ) {
127
- $bws_menu_source = 'themes';
128
  $bws_menu_new_dir = $wp_content_dir . '/themes/' . $folder_with_newer_menu[0] . '/inc';
129
  } else {
130
  $bws_menu_new_dir = '';
131
  }
132
 
133
  if ( file_exists( $bws_menu_new_dir . '/bws_menu/bws_functions.php' ) ) {
134
- require_once( $bws_menu_new_dir . '/bws_menu/bws_functions.php' );
135
- require_once( $bws_menu_new_dir . '/bws_menu/bws_menu.php' );
136
- require_once( $bws_menu_new_dir . '/bws_menu/class-bws-settings.php' );
137
  } else {
138
- require_once( dirname( __FILE__ ) . '/bws_menu.php' );
139
- require_once( dirname( __FILE__ ) . '/bws_functions.php' );
140
- require_once( dirname( __FILE__ ) . '/class-bws-settings.php' );
141
  }
142
 
143
  $bstwbsftwppdtplgns_added_menu = true;
144
  }
145
  }
146
- }
1
  <?php
2
+ /**
3
+ * Get latest version
4
+ */
5
 
6
  if ( ! function_exists( 'bws_include_init' ) ) {
7
  function bws_include_init( $base, $bws_menu_source = 'plugins' ) {
8
  global $bstwbsftwppdtplgns_options, $bstwbsftwppdtplgns_added_menu, $bstwbsftwppdtplgns_active_plugins;
9
+ if ( ! function_exists( 'get_plugin_data' ) ) {
10
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
11
+ }
12
 
13
  $wp_content_dir = defined( 'WP_CONTENT_DIR' ) ? WP_CONTENT_DIR : ABSPATH . 'wp-content';
14
  $wp_plugins_dir = defined( 'WP_PLUGIN_DIR' ) ? WP_PLUGIN_DIR : $wp_content_dir . '/plugins';
15
 
16
+ if ( 'plugins' === $bws_menu_source ) {
17
+ $bws_menu_dir = $wp_plugins_dir . '/' . dirname( $base ) . '/bws_menu/bws_menu.php';
18
  $bstwbsftwppdtplgns_active_plugins[ $base ] = get_plugin_data( $wp_plugins_dir . '/' . $base );
19
  } else {
20
  $bws_menu_dir = $wp_content_dir . '/themes/' . $base . '/inc/bws_menu/bws_menu.php';
22
 
23
  $bws_menu_info = get_plugin_data( $bws_menu_dir );
24
 
25
+ $is_pro_bws_menu = ( strpos( $bws_menu_info['Version'], 'pro' ) !== false );
26
+ $bws_menu_version = str_replace( '-pro', '', $bws_menu_info['Version'] );
27
 
28
  if ( ! isset( $bstwbsftwppdtplgns_options ) ) {
29
  if ( function_exists( 'is_multisite' ) && is_multisite() ) {
30
+ if ( ! get_site_option( 'bstwbsftwppdtplgns_options' ) ) {
31
  add_site_option( 'bstwbsftwppdtplgns_options', array() );
32
+ }
33
  $bstwbsftwppdtplgns_options = get_site_option( 'bstwbsftwppdtplgns_options' );
34
  } else {
35
+ if ( ! get_option( 'bstwbsftwppdtplgns_options' ) ) {
36
  add_option( 'bstwbsftwppdtplgns_options', array() );
37
+ }
38
  $bstwbsftwppdtplgns_options = get_option( 'bstwbsftwppdtplgns_options' );
39
  }
40
  }
42
  if ( isset( $bstwbsftwppdtplgns_options['bws_menu_version'] ) ) {
43
  $bstwbsftwppdtplgns_options['bws_menu']['version'][ $base ] = $bws_menu_version;
44
  unset( $bstwbsftwppdtplgns_options['bws_menu_version'] );
45
+ if ( function_exists( 'is_multisite' ) && is_multisite() ) {
46
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
47
+ } else {
48
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
49
+ }
50
+ require_once dirname( __FILE__ ) . '/bws_menu.php';
51
+ require_once dirname( __FILE__ ) . '/bws_functions.php';
52
+ require_once dirname( __FILE__ ) . '/class-bws-settings.php';
53
+ } elseif ( ! $is_pro_bws_menu && ( ! isset( $bstwbsftwppdtplgns_options['bws_menu']['version'][ $base ] ) || $bstwbsftwppdtplgns_options['bws_menu']['version'][ $base ] !== $bws_menu_version ) ) {
54
  $bstwbsftwppdtplgns_options['bws_menu']['version'][ $base ] = $bws_menu_version;
55
+ if ( function_exists( 'is_multisite' ) && is_multisite() ) {
56
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
57
+ } else {
58
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
59
+ }
60
+ require_once dirname( __FILE__ ) . '/bws_menu.php';
61
+ require_once dirname( __FILE__ ) . '/bws_functions.php';
62
+ require_once dirname( __FILE__ ) . '/class-bws-settings.php';
63
+ } elseif ( $is_pro_bws_menu && ( ! isset( $bstwbsftwppdtplgns_options['bws_menu']['version_pro'][ $base ] ) || $bstwbsftwppdtplgns_options['bws_menu']['version_pro'][ $base ] !== $bws_menu_version ) ) {
64
  $bstwbsftwppdtplgns_options['bws_menu']['version_pro'][ $base ] = $bws_menu_version;
65
+
66
+ if ( isset( $bstwbsftwppdtplgns_options['bws_menu']['version'][ $base ] ) ) {
67
  unset( $bstwbsftwppdtplgns_options['bws_menu']['version'][ $base ] );
68
+ }
69
+
70
+ if ( function_exists( 'is_multisite' ) && is_multisite() ) {
71
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
72
+ } else {
73
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
74
+ }
75
+ require_once dirname( __FILE__ ) . '/bws_menu.php';
76
+ require_once dirname( __FILE__ ) . '/bws_functions.php';
77
+ require_once dirname( __FILE__ ) . '/class-bws-settings.php';
78
+ } elseif ( ! isset( $bstwbsftwppdtplgns_added_menu ) ) {
79
 
80
  $all_plugins = get_plugins();
81
+ $all_themes = wp_get_themes();
82
 
83
  if ( ! empty( $bstwbsftwppdtplgns_options['bws_menu']['version_pro'] ) ) {
84
  foreach ( $bstwbsftwppdtplgns_options['bws_menu']['version_pro'] as $key => $value ) {
85
  if ( array_key_exists( $key, $all_plugins ) || array_key_exists( $key, $all_themes ) ) {
86
+ if ( $bws_menu_version <= $value && ( is_plugin_active( $key ) || preg_match( '|' . $key . '$|', get_template_directory() ) ) ) {
87
+ if ( ! isset( $product_with_newer_menu ) ) {
88
  $product_with_newer_menu = $key;
89
+ } elseif ( $bstwbsftwppdtplgns_options['bws_menu']['version_pro'][ $product_with_newer_menu ] <= $bstwbsftwppdtplgns_options['bws_menu']['version_pro'][ $key ] ) {
90
  $product_with_newer_menu = $key;
91
+ }
92
  }
93
  } else {
94
  unset( $bstwbsftwppdtplgns_options['bws_menu']['version_pro'][ $key ] );
95
+ if ( function_exists( 'is_multisite' ) && is_multisite() ) {
96
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
97
+ } else {
98
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
99
+ }
100
  }
101
  }
102
  }
107
  } else {
108
  foreach ( $bstwbsftwppdtplgns_options['bws_menu']['version'] as $key => $value ) {
109
  if ( array_key_exists( $key, $all_plugins ) || array_key_exists( $key, $all_themes ) ) {
110
+ if ( $bws_menu_version <= $value && ( is_plugin_active( $key ) || preg_match( '|' . $key . '$|', get_template_directory() ) ) ) {
111
+ if ( ! isset( $product_with_newer_menu ) ) {
112
  $product_with_newer_menu = $key;
113
+ } elseif ( $bstwbsftwppdtplgns_options['bws_menu']['version'][ $product_with_newer_menu ] <= $bstwbsftwppdtplgns_options['bws_menu']['version'][ $key ] ) {
114
  $product_with_newer_menu = $key;
115
+ }
116
  }
117
  } else {
118
  unset( $bstwbsftwppdtplgns_options['bws_menu']['version'][ $key ] );
119
+ if ( function_exists( 'is_multisite' ) && is_multisite() ) {
120
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
121
+ } else {
122
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
123
+ }
124
  }
125
  }
126
  }
127
  }
128
 
129
+ if ( ! isset( $product_with_newer_menu ) ) {
130
  $product_with_newer_menu = $base;
131
+ }
132
 
133
  $folder_with_newer_menu = explode( '/', $product_with_newer_menu );
134
 
135
  if ( array_key_exists( $product_with_newer_menu, $all_plugins ) ) {
136
+ $bws_menu_source = 'plugins';
137
  $bws_menu_new_dir = $wp_plugins_dir . '/' . $folder_with_newer_menu[0];
138
+ } elseif ( array_key_exists( $product_with_newer_menu, $all_themes ) ) {
139
+ $bws_menu_source = 'themes';
140
  $bws_menu_new_dir = $wp_content_dir . '/themes/' . $folder_with_newer_menu[0] . '/inc';
141
  } else {
142
  $bws_menu_new_dir = '';
143
  }
144
 
145
  if ( file_exists( $bws_menu_new_dir . '/bws_menu/bws_functions.php' ) ) {
146
+ require_once $bws_menu_new_dir . '/bws_menu/bws_functions.php';
147
+ require_once $bws_menu_new_dir . '/bws_menu/bws_menu.php';
148
+ require_once $bws_menu_new_dir . '/bws_menu/class-bws-settings.php';
149
  } else {
150
+ require_once dirname( __FILE__ ) . '/bws_menu.php';
151
+ require_once dirname( __FILE__ ) . '/bws_functions.php';
152
+ require_once dirname( __FILE__ ) . '/class-bws-settings.php';
153
  }
154
 
155
  $bstwbsftwppdtplgns_added_menu = true;
156
  }
157
  }
158
+ }
bws_menu/bws_menu.php CHANGED
@@ -1,11 +1,12 @@
1
  <?php
2
- /*
3
- * Function for displaying BestWebSoft menu
4
- * Version: 2.4.0
5
- */
6
 
7
- if ( ! function_exists ( 'bws_admin_enqueue_scripts' ) )
8
- require_once( dirname( __FILE__ ) . '/bws_functions.php' );
 
9
 
10
  if ( ! function_exists( 'bws_add_menu_render' ) ) {
11
  function bws_add_menu_render() {
@@ -15,31 +16,33 @@ if ( ! function_exists( 'bws_add_menu_render' ) ) {
15
  /**
16
  * @deprecated 1.9.8 (15.12.2016)
17
  */
18
- $is_main_page = in_array( $_GET['page'], array( 'bws_panel', 'bws_themes', 'bws_system_status' ) );
19
- $page = wp_unslash( $_GET['page'] );
20
- $tab = isset( $_GET['tab'] ) ? wp_unslash( $_GET['tab'] ) : '';
21
 
22
- if ( $is_main_page )
23
  $current_page = 'admin.php?page=' . $page;
24
- else
25
  $current_page = isset( $_GET['tab'] ) ? 'admin.php?page=' . $page . '&tab=' . $tab : 'admin.php?page=' . $page;
 
26
 
27
- if ( 'bws_panel' == $page || ( ! $is_main_page && '' == $tab ) ) {
28
 
29
- if ( ! function_exists( 'is_plugin_active_for_network' ) )
30
- require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
 
31
 
32
- /* get $bws_plugins */
33
- require( dirname( __FILE__ ) . '/product_list.php' );
34
 
35
- $all_plugins = get_plugins();
36
- $active_plugins = get_option( 'active_plugins' );
37
  $sitewide_active_plugins = ( function_exists( 'is_multisite' ) && is_multisite() ) ? get_site_option( 'active_sitewide_plugins' ) : array();
38
- $update_availible_all = get_site_transient( 'update_plugins' );
39
 
40
- $plugin_category = isset( $_GET['category'] ) ? esc_attr( $_GET['category'] ) : 'all';
41
 
42
- if ( ( isset( $_GET['sub'] ) && 'installed' == $_GET['sub'] ) || ! isset( $_GET['sub'] ) ) {
43
  $bws_plugins_update_availible = $bws_plugins_expired = array();
44
  foreach ( $bws_plugins as $key_plugin => $value_plugin ) {
45
 
@@ -47,28 +50,28 @@ if ( ! function_exists( 'bws_add_menu_render' ) ) {
47
  $bws_plugins_category[ $category_key ]['count'] = isset( $bws_plugins_category[ $category_key ]['count'] ) ? $bws_plugins_category[ $category_key ]['count'] + 1 : 1;
48
  }
49
 
50
- $is_installed = array_key_exists( $key_plugin, $all_plugins );
51
  $is_pro_installed = false;
52
  if ( isset( $value_plugin['pro_version'] ) ) {
53
  $is_pro_installed = array_key_exists( $value_plugin['pro_version'], $all_plugins );
54
  }
55
- /* check update_availible */
56
  if ( ! empty( $update_availible_all ) && ! empty( $update_availible_all->response ) ) {
57
  if ( $is_pro_installed && array_key_exists( $value_plugin['pro_version'], $update_availible_all->response ) ) {
58
  unset( $bws_plugins[ $key_plugin ] );
59
- $value_plugin['update_availible'] = $value_plugin['pro_version'];
60
  $bws_plugins_update_availible[ $key_plugin ] = $value_plugin;
61
- } else if ( $is_installed && array_key_exists( $key_plugin, $update_availible_all->response ) ) {
62
  unset( $bws_plugins[ $key_plugin ] );
63
- $value_plugin['update_availible'] = $key_plugin;
64
  $bws_plugins_update_availible[ $key_plugin ] = $value_plugin;
65
  }
66
  }
67
- /* check expired */
68
  if ( $is_pro_installed && isset( $bstwbsftwppdtplgns_options['time_out'][ $value_plugin['pro_version'] ] ) &&
69
- strtotime( $bstwbsftwppdtplgns_options['time_out'][ $value_plugin['pro_version'] ] ) < strtotime( date( "m/d/Y" ) ) ) {
70
  unset( $bws_plugins[ $key_plugin ] );
71
- $value_plugin['expired'] = $bstwbsftwppdtplgns_options['time_out'][ $value_plugin['pro_version'] ];
72
  $bws_plugins_expired[ $key_plugin ] = $value_plugin;
73
  }
74
  }
@@ -81,68 +84,71 @@ if ( ! function_exists( 'bws_add_menu_render' ) ) {
81
  }
82
  }
83
 
84
- /*** membership ***/
85
- $bws_license_plugin = 'bws_get_list_for_membership';
86
- $bws_license_key = isset( $bstwbsftwppdtplgns_options[ $bws_license_plugin ] ) ? $bstwbsftwppdtplgns_options[ $bws_license_plugin ] : '';
87
  $update_membership_list = true;
88
 
89
- if ( isset( $_POST['bws_license_key'] ) )
90
- $bws_license_key = sanitize_text_field( $_POST['bws_license_key'] );
 
91
 
92
  if ( isset( $_SESSION['bws_membership_time_check'] ) && isset( $_SESSION['bws_membership_list'] ) && $_SESSION['bws_membership_time_check'] < strtotime( '+12 hours' ) ) {
93
  $update_membership_list = false;
94
- $plugins_array = $_SESSION['bws_membership_list'];
95
  }
96
 
97
- if ( ( $update_membership_list && ! empty( $bws_license_key ) ) || ( isset( $_POST['bws_license_submit'] ) && check_admin_referer( plugin_basename(__FILE__), 'bws_license_nonce_name' ) ) ) {
98
 
99
- if ( '' != $bws_license_key ) {
100
- if ( strlen( $bws_license_key ) != 18 ) {
101
  $error = __( 'Wrong license key', 'bestwebsoft' );
102
  } else {
103
 
104
- if ( isset( $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] ) && $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['time'] > ( time() - (24 * 60 * 60) ) ) {
105
  $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] = $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] + 1;
106
  } else {
107
  $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] = 1;
108
- $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['time'] = time();
109
  }
110
 
111
  /* get Pro list */
112
- $to_send = array();
113
- $to_send["plugins"][ $bws_license_plugin ] = array();
114
- $to_send["plugins"][ $bws_license_plugin ]["bws_license_key"] = $bws_license_key;
115
- $options = array(
116
- 'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3 ),
117
- 'body' => array( 'plugins' => serialize( $to_send ) ),
118
- 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) );
 
119
  $raw_response = wp_remote_post( 'https://bestwebsoft.com/wp-content/plugins/paid-products/plugins/pro-license-check/1.0/', $options );
120
 
121
- if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) {
122
- $error = __( "Something went wrong. Please try again later. If the error appears again, please contact us", 'bestwebsoft' ) . ' <a href="https://support.bestwebsoft.com">BestWebSoft</a>. ' . __( "We are sorry for inconvenience.", 'bestwebsoft' );
123
  } else {
124
  $response = maybe_unserialize( wp_remote_retrieve_body( $raw_response ) );
125
 
126
- if ( is_array( $response ) && !empty( $response ) ) {
127
  foreach ( $response as $key => $value ) {
128
- if ( "wrong_license_key" == $value->package ) {
129
- $error = __( "Wrong license key.", 'bestwebsoft' );
130
- } elseif ( "wrong_domain" == $value->package ) {
131
  $error = __( 'This license key is bound to another site. Change it via personal Client Area.', 'bestwebsoft' ) . '<a target="_blank" href="https://bestwebsoft.com/client-area">' . __( 'Log in', 'bestwebsoft' ) . '</a>';
132
- } elseif ( "you_are_banned" == $value->package ) {
133
- $error = __( "Unfortunately, you have exceeded the number of available tries per day.", 'bestwebsoft' );
134
- } elseif ( "time_out" == $value->package ) {
135
- $error = sprintf( __( "Unfortunately, Your license has expired. To continue getting top-priority support and plugin updates, you should extend it in your %s", 'bestwebsoft' ), ' <a href="https://bestwebsoft.com/client-area">Client Area</a>' );
136
- } elseif ( "duplicate_domen_for_trial" == $value->package ) {
137
- $error = __( "Unfortunately, the Pro licence was already installed to this domain. The Pro Trial license can be installed only once.", 'bestwebsoft' );
138
  } elseif ( is_array( $value->package ) && ! empty( $value->package ) ) {
139
- $plugins_array = $_SESSION['bws_membership_list'] = $value->package;
140
  $_SESSION['bws_membership_time_check'] = strtotime( 'now' );
141
 
142
- if ( isset( $bstwbsftwppdtplgns_options[ $bws_license_plugin ] ) && $bws_license_key == $bstwbsftwppdtplgns_options[ $bws_license_plugin ] ) {
143
  $message = __( 'The license key is valid.', 'bestwebsoft' );
144
- if ( isset( $value->time_out ) && $value->time_out != '' )
145
  $message .= ' ' . __( 'Your license will expire on', 'bestwebsoft' ) . ' ' . $value->time_out . '.';
 
146
  } else {
147
  $message = __( 'Congratulations! Pro Membership license is activated successfully.', 'bestwebsoft' );
148
  }
@@ -151,40 +157,43 @@ if ( ! function_exists( 'bws_add_menu_render' ) ) {
151
  }
152
  }
153
  } else {
154
- $error = __( "Something went wrong. Try again later or upload the plugin manually. We are sorry for inconvenience.", 'bestwebsoft' );
155
  }
156
  }
157
 
158
- if ( is_multisite() )
159
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
160
- else
161
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
 
162
  }
163
  } else {
164
- $error = __( "Please enter your license key.", 'bestwebsoft' );
165
  }
166
  }
167
- } elseif ( 'bws_system_status' == $page || 'system-status' == $tab ) {
168
 
169
- $all_plugins = get_plugins();
170
  $active_plugins = get_option( 'active_plugins' );
171
- $mysql_info = $wpdb->get_results( "SHOW VARIABLES LIKE 'sql_mode'" );
172
- if ( is_array( $mysql_info ) )
173
  $sql_mode = $mysql_info[0]->Value;
174
- if ( empty( $sql_mode ) )
 
175
  $sql_mode = __( 'Not set', 'bestwebsoft' );
 
176
 
177
- $allow_url_fopen = ( ini_get( 'allow_url_fopen' ) ) ? __( 'On', 'bestwebsoft' ) : __( 'Off', 'bestwebsoft' );
178
- $upload_max_filesize = ( ini_get( 'upload_max_filesize' ) )? ini_get( 'upload_max_filesize' ) : __( 'N/A', 'bestwebsoft' );
179
- $post_max_size = ( ini_get( 'post_max_size' ) ) ? ini_get( 'post_max_size' ) : __( 'N/A', 'bestwebsoft' );
180
- $max_execution_time = ( ini_get( 'max_execution_time' ) ) ? ini_get( 'max_execution_time' ) : __( 'N/A', 'bestwebsoft' );
181
- $memory_limit = ( ini_get( 'memory_limit' ) ) ? ini_get( 'memory_limit' ) : __( 'N/A', 'bestwebsoft' );
182
- $wp_memory_limit = ( defined( 'WP_MEMORY_LIMIT' ) ) ? WP_MEMORY_LIMIT : __( 'N/A', 'bestwebsoft' );
183
- $memory_usage = ( function_exists( 'memory_get_usage' ) ) ? round( memory_get_usage() / 1024 / 1024, 2 ) . ' ' . __( 'Mb', 'bestwebsoft' ) : __( 'N/A', 'bestwebsoft' );
184
- $exif_read_data = ( is_callable( 'exif_read_data' ) ) ? __( 'Yes', 'bestwebsoft' ) . " ( V" . substr( phpversion( 'exif' ), 0,4 ) . ")" : __( 'No', 'bestwebsoft' );
185
- $iptcparse = ( is_callable( 'iptcparse' ) ) ? __( 'Yes', 'bestwebsoft' ) : __( 'No', 'bestwebsoft' );
186
- $xml_parser_create = ( is_callable( 'xml_parser_create' ) ) ? __( 'Yes', 'bestwebsoft' ) : __( 'No', 'bestwebsoft' );
187
- $theme = ( function_exists( 'wp_get_theme' ) ) ? wp_get_theme() : get_theme( get_current_theme() );
188
 
189
  if ( function_exists( 'is_multisite' ) ) {
190
  $multisite = is_multisite() ? __( 'Yes', 'bestwebsoft' ) : __( 'No', 'bestwebsoft' );
@@ -196,87 +205,88 @@ if ( ! function_exists( 'bws_add_menu_render' ) ) {
196
  'wp_environment' => array(
197
  'name' => __( 'WordPress Environment', 'bestwebsoft' ),
198
  'data' => array(
199
- __( 'Home URL', 'bestwebsoft' ) => home_url(),
200
- __( 'Website URL', 'bestwebsoft' ) => get_option( 'siteurl' ),
201
- __( 'WP Version', 'bestwebsoft' ) => $wp_version,
202
- __( 'WP Multisite', 'bestwebsoft' ) => $multisite,
203
- __( 'WP Memory Limit', 'bestwebsoft' ) => $wp_memory_limit,
204
- __( 'Active Theme', 'bestwebsoft' ) => $theme['Name'] . ' ' . $theme['Version'] . ' (' . sprintf( __( 'by %s', 'bestwebsoft' ), $theme['Author'] ) . ')'
205
  ),
206
  ),
207
  'server_environment' => array(
208
  'name' => __( 'Server Environment', 'bestwebsoft' ),
209
  'data' => array(
210
- __( 'Operating System', 'bestwebsoft' ) => PHP_OS,
211
- __( 'Server', 'bestwebsoft' ) => $_SERVER["SERVER_SOFTWARE"],
212
- __( 'PHP Version', 'bestwebsoft' ) => PHP_VERSION,
213
- __( 'PHP Allow URL fopen', 'bestwebsoft' ) => $allow_url_fopen,
214
- __( 'PHP Memory Limit', 'bestwebsoft' ) => $memory_limit,
215
- __( 'Memory Usage', 'bestwebsoft' ) => $memory_usage,
216
- __( 'PHP Max Upload Size', 'bestwebsoft' ) => $upload_max_filesize,
217
- __( 'PHP Max Post Size', 'bestwebsoft' ) => $post_max_size,
218
- __( 'PHP Max Script Execute Time', 'bestwebsoft' ) => $max_execution_time,
219
- __( 'PHP Exif support', 'bestwebsoft' ) => $exif_read_data,
220
- __( 'PHP IPTC support', 'bestwebsoft' ) => $iptcparse,
221
- __( 'PHP XML support', 'bestwebsoft' ) => $xml_parser_create,
222
- '$_SERVER[HTTP_HOST]' => $_SERVER['HTTP_HOST'],
223
- '$_SERVER[SERVER_NAME]' => $_SERVER['SERVER_NAME'],
224
  ),
225
  ),
226
- 'db' => array(
227
  'name' => __( 'Database', 'bestwebsoft' ),
228
  'data' => array(
229
- __( 'WP DB version', 'bestwebsoft' ) => get_option( 'db_version' ),
230
- __( 'MySQL version', 'bestwebsoft' ) => $wpdb->get_var( "SELECT VERSION() AS version" ),
231
- __( 'SQL Mode', 'bestwebsoft' ) => $sql_mode,
232
  ),
233
  ),
234
- 'active_plugins' => array(
235
- 'name' => __( 'Active Plugins', 'bestwebsoft' ),
236
- 'data' => array(),
237
- 'count' => 0
 
 
 
 
 
238
  ),
239
- 'inactive_plugins' => array(
240
- 'name' => __( 'Inactive Plugins', 'bestwebsoft' ),
241
- 'data' => array(),
242
- 'count' => 0
243
- )
244
  );
245
 
246
  foreach ( $all_plugins as $path => $plugin ) {
247
  $name = str_replace( 'by BestWebSoft', '', $plugin['Name'] );
248
  if ( is_plugin_active( $path ) ) {
249
  $system_info['active_plugins']['data'][ $name ] = sprintf( __( 'by %s', 'bestwebsoft' ), $plugin['Author'] ) . ' - ' . $plugin['Version'];
250
- $system_info['active_plugins']['count'] = $system_info['active_plugins']['count'] + 1;
251
  } else {
252
  $system_info['inactive_plugins']['data'][ $name ] = sprintf( __( 'by %s', 'bestwebsoft' ), $plugin['Author'] ) . ' - ' . $plugin['Version'];
253
- $system_info['inactive_plugins']['count'] = $system_info['inactive_plugins']['count'] + 1;
254
  }
255
  }
256
 
257
- if ( ( isset( $_REQUEST['bwsmn_form_submit'] ) && check_admin_referer( plugin_basename(__FILE__), 'bwsmn_nonce_submit' ) ) || ( isset( $_REQUEST['bwsmn_form_submit_custom_email'] ) && check_admin_referer( plugin_basename(__FILE__), 'bwsmn_nonce_submit_custom_email' ) ) ) {
258
  if ( isset( $_REQUEST['bwsmn_form_email'] ) ) {
259
- $email = sanitize_email( $_REQUEST['bwsmn_form_email'] );
260
- if ( '' == $email ) {
261
  $error = __( 'Please enter a valid email address.', 'bestwebsoft' );
262
  } else {
263
  $message = sprintf( __( 'Email with system info is sent to %s.', 'bestwebsoft' ), $email );
264
  }
265
  } else {
266
- $email = 'plugin_system_status@bestwebsoft.com';
267
  $message = __( 'Thank you for contacting us.', 'bestwebsoft' );
268
  }
269
 
270
- if ( $error == '' ) {
271
- $headers = 'MIME-Version: 1.0' . "\n";
272
- $headers .= 'Content-type: text/html; charset=utf-8' . "\n";
273
- $headers .= 'From: ' . get_option( 'admin_email' );
274
  $message_text = '<html><head><title>System Info From ' . home_url() . '</title></head><body>';
275
  foreach ( $system_info as $info ) {
276
  if ( ! empty( $info['data'] ) ) {
277
  $message_text .= '<h4>' . $info['name'];
278
- if ( isset( $info['count'] ) )
279
  $message_text .= ' (' . $info['count'] . ')';
 
280
  $message_text .= '</h4><table>';
281
  foreach ( $info['data'] as $key => $value ) {
282
  $message_text .= '<tr><td>' . $key . '</td><td>' . $value . '</td></tr>';
@@ -285,380 +295,544 @@ if ( ! function_exists( 'bws_add_menu_render' ) ) {
285
  }
286
  }
287
  $message_text .= '</body></html>';
288
- $result = wp_mail( $email, 'System Info From ' . home_url(), $message_text, $headers );
289
- if ( $result != true )
290
- $error = __( "Sorry, email message could not be delivered.", 'bestwebsoft' );
 
291
  }
292
  }
293
  } ?>
294
- <div class="bws-wrap">
295
- <div class="bws-header">
296
- <div class="bws-title">
297
- <a href="<?php echo ( $is_main_page ) ? self_admin_url( 'admin.php?page=bws_panel' ) : esc_url( self_admin_url( 'admin.php?page=' . $page ) ); ?>">
298
- <span class="bws-logo bwsicons bwsicons-bws-logo"></span>
299
- BestWebSoft
300
- <span>panel</span>
301
- </a>
302
- </div>
303
- <div class="bws-menu-item-icon">&#8226;&#8226;&#8226;</div>
304
- <div class="bws-nav-tab-wrapper">
305
  <?php if ( $is_main_page ) { ?>
306
- <a class="bws-nav-tab<?php if ( 'bws_panel' == $page ) echo ' bws-nav-tab-active'; ?>" href="<?php echo self_admin_url( 'admin.php?page=bws_panel' ); ?>"><?php _e( 'Plugins', 'bestwebsoft' ); ?></a>
307
- <a class="bws-nav-tab<?php if ( 'bws_themes' == $page ) echo ' bws-nav-tab-active'; ?>" href="<?php echo self_admin_url( 'admin.php?page=bws_themes' ); ?>"><?php _e( 'Themes', 'bestwebsoft' ); ?></a>
308
- <a class="bws-nav-tab<?php if ( 'bws_system_status' == $page ) echo ' bws-nav-tab-active'; ?>" href="<?php echo self_admin_url( 'admin.php?page=bws_system_status' ); ?>"><?php _e( 'System status', 'bestwebsoft' ); ?></a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
309
  <?php } else { ?>
310
- <a class="bws-nav-tab<?php if ( ! isset( $_GET['tab'] ) ) echo ' bws-nav-tab-active'; ?>" href="<?php echo esc_url( self_admin_url( 'admin.php?page=' . $page ) ); ?>"><?php _e( 'Plugins', 'bestwebsoft' ); ?></a>
311
- <a class="bws-nav-tab<?php if ( 'themes' == $tab ) echo ' bws-nav-tab-active'; ?>" href="<?php echo esc_url( self_admin_url( 'admin.php?page=' . $page . '&tab=themes' ) ); ?>"><?php _e( 'Themes', 'bestwebsoft' ); ?></a>
312
- <a class="bws-nav-tab<?php if ( 'system-status' == $tab ) echo ' bws-nav-tab-active'; ?>" href="<?php echo esc_url( self_admin_url( 'admin.php?page=' . $page . '&tab=system-status' ) ); ?>"><?php _e( 'System status', 'bestwebsoft' ); ?></a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
313
  <?php } ?>
314
- </div>
315
- <div class="bws-help-links-wrapper">
316
- <a href="https://support.bestwebsoft.com" target="_blank"><?php _e( 'Support', 'bestwebsoft' ); ?></a>
317
- <a href="https://bestwebsoft.com/client-area" target="_blank" title="<?php _e( 'Manage purchased licenses & subscriptions', 'bestwebsoft' ); ?>">Client Area</a>
318
- </div>
319
- <div class="clear"></div>
320
- </div>
321
- <?php if ( ( 'bws_panel' == $page || ( ! isset( $_GET['tab'] ) && ! $is_main_page ) ) && ! isset( $_POST['bws_plugin_action_submit'] ) ) { ?>
322
- <div class="bws-membership-wrap">
323
- <div class="bws-membership-backround"></div>
324
- <div class="bws-membership">
325
- <div class="bws-membership-title"><?php printf( __( 'Get Access to %s+ Premium Plugins', 'bestwebsoft' ), '30' ); ?></div>
326
- <form class="bws-membership-form" method="post" action="">
327
- <span class="bws-membership-link"><a target="_blank" href="https://bestwebsoft.com/membership/"><?php _e( 'Subscribe to Pro Membership', 'bestwebsoft' ); ?></a> <?php _e( 'or', 'bestwebsoft' ); ?></span>
328
- <?php if ( isset( $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] ) &&
329
- '5' < $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] &&
330
- $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['time'] > ( time() - ( 24 * 60 * 60 ) ) ) { ?>
331
- <div class="bws_form_input_wrap">
332
- <input disabled="disabled" type="text" name="bws_license_key" value="<?php echo esc_attr( $bws_license_key); ?>" />
333
- <div class="bws_error"><?php _e( "Unfortunately, you have exceeded the number of available tries per day.", 'bestwebsoft' ); ?></div>
334
- </div>
335
- <input disabled="disabled" type="submit" class="bws-button" value="<?php _e( 'Check license key', 'bestwebsoft' ); ?>" />
 
 
 
 
336
  <?php } else { ?>
337
- <div class="bws_form_input_wrap">
338
- <input <?php if ( "" != $error ) echo 'class="bws_input_error"'; ?> type="text" placeholder="<?php _e( 'Enter your license key', 'bestwebsoft' ); ?>" maxlength="100" name="bws_license_key" value="<?php echo esc_attr( $bws_license_key ); ?>" />
339
- <div class="bws_error" <?php if ( "" == $error ) echo 'style="display:none"'; ?>><?php echo $error; ?></div>
340
- </div>
341
- <input type="hidden" name="bws_license_plugin" value="<?php echo esc_attr( $bws_license_plugin ); ?>" />
342
- <input type="hidden" name="bws_license_submit" value="submit" />
 
 
 
 
 
 
 
 
 
 
343
  <?php if ( empty( $plugins_array ) ) { ?>
344
- <input type="submit" class="bws-button" value="<?php _e( 'Activate', 'bestwebsoft' ); ?>" />
345
  <?php } else { ?>
346
- <input type="submit" class="bws-button" value="<?php _e( 'Check license key', 'bestwebsoft' ); ?>" />
347
  <?php } ?>
348
- <?php wp_nonce_field( plugin_basename(__FILE__), 'bws_license_nonce_name' ); ?>
349
  <?php } ?>
350
- </form>
351
- <div class="clear"></div>
352
- </div>
353
- </div>
354
  <?php } ?>
355
- <div class="bws-wrap-content wrap">
356
- <?php if ( 'bws_panel' == $page || ( ! isset( $_GET['tab'] ) && ! $is_main_page ) ) { ?>
357
- <div class="updated notice is-dismissible inline" <?php if ( '' == $message || '' != $error ) echo 'style="display:none"'; ?>><p><?php echo $message; ?></p></div>
358
- <h1>
359
- <?php _e( 'Plugins', 'bestwebsoft' ); ?>
360
- <a href="<?php echo self_admin_url( 'plugin-install.php?tab=upload' ); ?>" class="upload page-title-action add-new-h2"><?php _e( 'Upload Plugin', 'bestwebsoft' ); ?></a>
361
- </h1>
362
- <?php if ( isset( $_GET['error'] ) ) {
363
- if ( isset( $_GET['charsout'] ) )
364
- $errmsg = sprintf( __( 'The plugin generated %d characters of <strong>unexpected output</strong> during activation. If you notice &#8220;headers already sent&#8221; messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.' ), $_GET['charsout'] );
365
- else
366
- $errmsg = __( 'Plugin could not be activated because it triggered a <strong>fatal error</strong>.' ); ?>
367
- <div id="message" class="error is-dismissible"><p><?php echo $errmsg; ?></p></div>
 
 
 
 
 
 
 
 
 
368
  <?php } elseif ( isset( $_GET['activate'] ) ) { ?>
369
- <div id="message" class="updated notice is-dismissible"><p><?php _e( 'Plugin <strong>activated</strong>.' ) ?></p></div>
370
- <?php }
 
371
 
372
- if ( isset( $_POST['bws_plugin_action_submit'] ) && isset( $_POST['bws_install_plugin'] ) && check_admin_referer( plugin_basename(__FILE__), 'bws_license_install_nonce_name' ) ) {
373
 
374
- $bws_license_plugin = sanitize_text_field( $_POST['bws_install_plugin'] );
375
 
376
  $bstwbsftwppdtplgns_options[ $bws_license_plugin ] = $bws_license_key;
377
- if ( is_multisite() )
378
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
379
- else
380
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
 
381
 
382
- $url = $plugins_array[ $bws_license_plugin ]['link'] . '&download_from=5'; ?>
383
- <h2><?php _e( 'Download Pro Plugin', 'bestwebsoft' ); ?></h2>
 
384
  <p>
385
- <strong><?php _e( 'Your Pro plugin is ready', 'bestwebsoft' ); ?></strong>
386
  <br>
387
- <?php _e( 'Your plugin has been zipped, and now is ready to download.', 'bestwebsoft' ); ?>
388
  </p>
389
  <p>
390
- <a class="button button-secondary" target="_parent" href="<?php echo esc_url( $url ); ?>"><?php _e( 'Download Now', 'bestwebsoft' ); ?></a>
391
  </p>
392
  <br>
393
  <p>
394
- <strong><?php _e( 'Need help installing the plugin?', 'bestwebsoft' ); ?></strong>
395
  <br>
396
- <a target="_blank" href="https://bestwebsoft.com/documentation/how-to-install-a-wordpress-product/how-to-install-a-wordpress-plugin/"><?php _e( 'How to install WordPress plugin from your admin Dashboard (ZIP archive)', 'bestwebsoft' ); ?></a>
397
  </p>
398
  <p>
399
- <strong><?php _e( 'Get Started', 'bestwebsoft' ); ?></strong>
400
  <br>
401
- <a target="_blank" href="https://bestwebsoft.com/documentation/"><?php _e( 'Documentation', 'bestwebsoft' ); ?></a>
402
  <br>
403
- <a target="_blank" href="https://www.youtube.com/user/bestwebsoft"><?php _e( 'Video Instructions', 'bestwebsoft' ); ?></a>
404
  <br>
405
- <a target="_blank" href="https://support.bestwebsoft.com"><?php _e( 'Knowledge Base', 'bestwebsoft' ); ?></a>
406
  </p>
407
  <p>
408
- <strong><?php _e( 'Licenses & Domains', 'bestwebsoft' ); ?></strong>
409
  <br>
410
- <?php printf( 'Manage your license(-s) and change domain names using the %s at BestWebSoft.',
411
- '<a target="_blank" href="https://bestwebsoft.com/client-area">' . __( 'Client Area', 'bestwebsoft' ) . '</a>' ); ?>
 
 
 
 
412
  </p>
413
- <p><a href="<?php echo esc_url( self_admin_url( $current_page ) ); ?>" target="_parent"><?php _e( 'Return to BestWebSoft Panel', 'bestwebsoft' ); ?></a></p>
414
- <?php } else {
 
415
  $category_href = $current_page;
416
- if ( 'all' != $plugin_category )
417
- $category_href .= '&category=' . $plugin_category; ?>
418
- <ul class="subsubsub">
419
- <li>
420
- <a <?php if ( ! isset( $_GET['sub'] ) ) echo 'class="current" '; ?>href="<?php echo esc_url( self_admin_url( $category_href ) ); ?>"><?php _e( 'All', 'bestwebsoft' ); ?></a>
421
- </li> |
422
- <li>
423
- <a <?php if ( isset( $_GET['sub'] ) && 'installed' == $_GET['sub'] ) echo 'class="current" '; ?>href="<?php echo esc_url( self_admin_url( $category_href . '&sub=installed' ) ); ?>"><?php _e( 'Installed', 'bestwebsoft' ); ?></a>
424
- </li> |
425
- <li>
426
- <a <?php if ( isset( $_GET['sub'] ) && 'not_installed' == $_GET['sub'] ) echo 'class="current" '; ?>href="<?php echo esc_url( self_admin_url( $category_href . '&sub=not_installed' ) ); ?>"><?php _e( 'Not Installed', 'bestwebsoft' ); ?></a>
427
- </li>
428
- </ul>
429
- <div class="clear"></div>
430
- <div class="bws-filter-top">
431
- <h2>
432
- <span class="bws-toggle-indicator"></span>
433
- <?php _e( 'Filter results', 'bestwebsoft' ); ?>
434
- </h2>
435
- <div class="bws-filter-top-inside">
436
- <div class="bws-filter-title"><?php _e( 'Category', 'bestwebsoft' ); ?></div>
437
- <ul class="bws-category">
438
- <li>
439
- <?php $sub_in_url = ( isset( $_GET['sub'] ) && in_array( $_GET['sub'], array( 'installed', 'not_installed' ) ) ) ? '&sub=' . $_GET['sub'] : ''; ?>
440
- <a <?php if ( 'all' == $plugin_category ) echo ' class="bws-active"'; ?> href="<?php echo esc_url(self_admin_url( $current_page . $sub_in_url ) ); ?>"><?php _e( 'All', 'bestwebsoft' ); ?>
441
- <span>(<?php echo count( $bws_plugins ); ?>)</span>
442
- </a>
443
- </li>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
444
  <?php foreach ( $bws_plugins_category as $category_key => $category_value ) { ?>
445
- <li>
446
- <a <?php if ( $category_key == $plugin_category ) echo ' class="bws-active"'; ?> href="<?php echo esc_url( self_admin_url( $current_page . $sub_in_url . '&category=' . $category_key ) ); ?>"><?php echo $category_value['name']; ?>
447
- <span>(<?php echo $category_value['count']; ?>)</span>
448
- </a>
449
- </li>
 
 
 
 
 
450
  <?php } ?>
451
- </ul>
452
- </div>
453
- </div>
454
- <div class="bws-products">
455
- <?php $nothing_found = true;
 
456
  foreach ( $bws_plugins as $key_plugin => $value_plugin ) {
457
 
458
- if ( 'all' != $plugin_category && isset( $bws_plugins_category[ $plugin_category ] ) && ! in_array( $plugin_category, $value_plugin['category'] ) )
459
  continue;
 
460
 
461
  $key_plugin_explode = explode( '/', $key_plugin );
 
 
 
 
 
462
 
463
- $icon = isset( $value_plugin['icon'] ) ? $value_plugin['icon'] : '//ps.w.org/' . $key_plugin_explode[0] . '/assets/icon-256x256.png';
464
  $is_pro_isset = isset( $value_plugin['pro_version'] );
465
  $is_installed = array_key_exists( $key_plugin, $all_plugins );
466
- $is_active = in_array( $key_plugin, $active_plugins ) || isset( $sitewide_active_plugins[ $key_plugin ] );
467
 
468
  $is_pro_installed = $is_pro_active = false;
469
  if ( $is_pro_isset ) {
470
  $is_pro_installed = array_key_exists( $value_plugin['pro_version'], $all_plugins );
471
- $is_pro_active = in_array( $value_plugin['pro_version'], $active_plugins ) || isset( $sitewide_active_plugins[ $value_plugin['pro_version'] ] );
472
  }
473
 
474
- if ( ( isset( $_GET['sub'] ) && 'installed' == $_GET['sub'] && ! $is_pro_installed && ! $is_installed ) ||
475
- ( isset( $_GET['sub'] ) && 'not_installed' == $_GET['sub'] && ( $is_pro_installed || $is_installed ) ) )
476
  continue;
 
477
 
478
- $link_attr = isset( $value_plugin['install_url'] ) ? 'href="' . esc_url( $value_plugin['install_url'] ) . '" target="_blank"' : 'href="' . esc_url( self_admin_url( 'plugin-install.php?tab=plugin-information&plugin=' . $key_plugin_explode[0] . '&from=import&TB_iframe=true&width=600&height=550' ) ) . '" class="thickbox open-plugin-details-modal"';
 
 
 
 
479
 
480
- $nothing_found = false; ?>
481
- <div class="bws_product_box<?php if ( $is_active || $is_pro_active ) echo ' bws_product_active'; ?>">
482
- <div class="bws_product_image">
483
- <a <?php echo $link_attr; ?>><img src="<?php echo $icon; ?>"/></a>
484
- </div>
485
- <div class="bws_product_content">
486
- <div class="bws_product_title"><a <?php echo $link_attr; ?>><?php echo $value_plugin['name']; ?></a></div>
487
- <div class="bws-version">
488
- <?php
489
- if ( $is_pro_installed ) {
490
- echo '<span';
491
- if ( ! empty( $value_plugin['expired'] ) || ! empty( $value_plugin['update_availible'] ) )
492
- echo ' class="bws-update-available"';
493
- echo '>v ' . $all_plugins[ $value_plugin['pro_version'] ]['Version'] . '</span>';
494
- } elseif ( $is_installed ) {
495
- echo '<span';
496
- if ( ! empty( $value_plugin['expired'] ) || ! empty( $value_plugin['update_availible'] ) )
497
- echo ' class="bws-update-available"';
498
- echo '>v ' . $all_plugins[ $key_plugin ]['Version'] . '</span>';
499
- } else {
500
- echo '<span>' . __( 'Not installed', 'bestwebsoft' ) . '</span>';
501
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
502
 
503
- if ( ! empty( $value_plugin['expired'] ) ) {
504
- echo ' - <a class="bws-update-now" href="https://support.bestwebsoft.com/hc/en-us/articles/202356359" target="_blank">' . __( 'Renew to get updates', 'bestwebsoft' ) . '</a>';
505
- } elseif ( ! empty( $value_plugin['update_availible'] ) ) {
506
- $r = $update_availible_all->response[ $value_plugin['update_availible'] ];
507
- echo ' - <a class="bws-update-now" href="' . esc_url( wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' . $value_plugin['update_availible'] ), 'upgrade-plugin_' . $value_plugin['update_availible'] ) ) . '" class="update-link" aria-label="' . sprintf( __( 'Update to v %s', 'bestwebsoft' ), $r->new_version ) . '">' . sprintf( __( 'Update to v %s', 'bestwebsoft' ), $r->new_version ) . '</a>';
508
- } ?>
509
- </div>
510
- <div class="bws_product_description">
511
- <?php echo ( strlen( $value_plugin['description'] ) > 100 ) ? mb_substr( $value_plugin['description'], 0, 100 ) . '...' : $value_plugin['description']; ?>
512
- </div>
513
- <div class="bws_product_links">
514
- <?php if ( $is_active || $is_pro_active ) {
515
- if ( $is_pro_isset ) {
516
- if ( ! $is_pro_installed ) {
517
- if ( ! empty( $plugins_array ) && array_key_exists( $value_plugin['pro_version'], $plugins_array ) ) { ?>
518
- <form method="post" action="">
519
- <input type="submit" class="button button-secondary" value="<?php _e( 'Get Pro', 'bestwebsoft' ); ?>" />
520
- <input type="hidden" name="bws_plugin_action_submit" value="submit" />
521
- <input type="hidden" name="bws_install_plugin" value="<?php echo $value_plugin['pro_version']; ?>" />
522
- <?php wp_nonce_field( plugin_basename(__FILE__), 'bws_license_install_nonce_name' ); ?>
523
- </form>
524
- <?php } else { ?>
525
- <a class="button button-secondary bws_upgrade_button" href="<?php echo esc_url( $bws_plugins[ $key_plugin ]['purchase'] ); ?>" target="_blank"><?php _e( 'Upgrade to Pro', 'bestwebsoft' ); ?></a>
526
- <?php }
527
  }
528
- } else { ?>
529
- <a class="bws_donate" href="https://bestwebsoft.com/donate/" target="_blank"><?php _e( 'Donate', 'bestwebsoft' ); ?></a> <span>|</span>
530
- <?php }
531
-
532
- if ( $is_pro_active ) { ?>
533
- <a class="bws_settings" href="<?php echo esc_url( self_admin_url( $bws_plugins[ $key_plugin ]["pro_settings"] ) ); ?>"><?php _e( 'Settings', 'bestwebsoft' ); ?></a>
534
- <?php } else { ?>
535
- <a class="bws_settings" href="<?php echo esc_url( self_admin_url( $bws_plugins[ $key_plugin ]["settings"] ) ); ?>"><?php _e( 'Settings', 'bestwebsoft' ); ?></a>
536
- <?php }
537
- } else {
538
- if ( $is_pro_installed ) { ?>
539
- <a class="button button-secondary" href="<?php echo esc_url( wp_nonce_url( self_admin_url( $current_page . '&bws_activate_plugin=' . $value_plugin['pro_version'] ), 'bws_activate_plugin' . $value_plugin['pro_version'] ) ); ?>" title="<?php _e( 'Activate this plugin', 'bestwebsoft' ); ?>"><?php _e( 'Activate', 'bestwebsoft' ); ?></a>
540
- <?php } elseif ( ! empty( $plugins_array ) && isset( $value_plugin['pro_version'] ) && array_key_exists( $value_plugin['pro_version'], $plugins_array ) ) { ?>
541
- <form method="post" action="">
542
- <input type="submit" class="button button-secondary" value="<?php _e( 'Get Pro', 'bestwebsoft' ); ?>" />
543
- <input type="hidden" name="bws_plugin_action_submit" value="submit" />
544
- <input type="hidden" name="bws_install_plugin" value="<?php echo $value_plugin['pro_version']; ?>" />
545
- <?php wp_nonce_field( plugin_basename(__FILE__), 'bws_license_install_nonce_name' ); ?>
546
- </form>
547
- <?php } elseif ( $is_installed ) { ?>
548
- <a class="button button-secondary" href="<?php echo esc_url( wp_nonce_url( self_admin_url( $current_page . '&bws_activate_plugin=' . $key_plugin ), 'bws_activate_plugin' . $key_plugin ) ); ?>" title="<?php _e( 'Activate this plugin', 'bestwebsoft' ); ?>"><?php _e( 'Activate', 'bestwebsoft' ); ?></a>
549
- <?php } else {
550
- $install_url = isset( $value_plugin['install_url'] ) ? $value_plugin['install_url'] : network_admin_url( 'plugin-install.php?tab=search&type=term&s=' . str_replace( array( ' ', '-' ), '+', str_replace( '&', '', $value_plugin['name'] ) ) . '+BestWebSoft&plugin-search-input=Search+Plugins' ); ?>
551
- <a class="button button-secondary" href="<?php echo esc_url( $install_url ); ?>" title="<?php _e( 'Install this plugin', 'bestwebsoft' ); ?>" target="_blank"><?php _e( 'Install Now', 'bestwebsoft' ); ?></a>
552
- <?php }
553
- } ?>
554
- </div>
555
- </div>
556
- <div class="clear"></div>
557
- </div>
558
- <?php }
559
- if ( $nothing_found ) { ?>
560
- <p class="description"><?php _e( 'Nothing found. Try another criteria.', 'bestwebsoft' ); ?></p>
561
  <?php } ?>
562
- </div>
563
- <div id="bws-filter-wrapper">
564
- <div class="bws-filter">
565
- <div class="bws-filter-title"><?php _e( 'Category', 'bestwebsoft' ); ?></div>
566
- <ul class="bws-category">
567
- <li>
568
- <?php $sub_in_url = ( isset( $_GET['sub'] ) && in_array( $_GET['sub'], array( 'installed', 'not_installed' ) ) ) ? '&sub=' . $_GET['sub'] : ''; ?>
569
- <a <?php if ( 'all' == $plugin_category ) echo ' class="bws-active"'; ?> href="<?php echo esc_url( self_admin_url( $current_page . $sub_in_url ) ); ?>"><?php _e( 'All', 'bestwebsoft' ); ?>
570
- <span>(<?php echo count( $bws_plugins ); ?>)</span>
571
- </a>
572
- </li>
 
 
 
 
 
573
  <?php foreach ( $bws_plugins_category as $category_key => $category_value ) { ?>
574
- <li>
575
- <a <?php if ( $category_key == $plugin_category ) echo ' class="bws-active"'; ?> href="<?php echo esc_url( self_admin_url( $current_page . $sub_in_url . '&category=' . $category_key ) ); ?>"><?php echo $category_value['name']; ?>
576
- <span>(<?php echo $category_value['count']; ?>)</span>
577
- </a>
578
- </li>
 
 
 
 
 
579
  <?php } ?>
580
- </ul>
581
- </div>
582
- </div><!-- #bws-filter-wrapper -->
583
- <div class="clear"></div>
584
- <?php }
585
- } elseif ( 'bws_themes' == $page || 'themes' == $tab ) {
586
- require( dirname( __FILE__ ) . '/product_list.php' ); ?>
587
- <h1><?php _e( 'Themes', 'bestwebsoft' ); ?></h1>
588
- <div id="availablethemes" class="bws-availablethemes">
589
- <div class="theme-browser content-filterable rendered">
590
- <div class="themes wp-clearfix">
591
- <?php foreach ( $themes as $key => $theme ) {
592
- $installed_theme = wp_get_theme( $theme->slug ); ?>
593
- <div class="theme" tabindex="0">
594
- <div class="theme-screenshot">
595
- <img src="<?php echo bws_menu_url( "icons/themes/" ) . $theme->slug . '.png'; ?>" alt="" />
596
- </div>
597
- <div class="theme-author"><?php printf( __( 'By %s', 'bestwebsoft' ), 'BestWebSoft' ); ?></div>
598
- <h3 class="theme-name"><?php echo $theme->name; ?></h3>
599
- <div class="theme-actions">
600
- <a class="button button-secondary preview install-theme-preview" href="<?php echo esc_url( $theme->href ); ?>" target="_blank"><?php _e( 'Learn More', 'bestwebsoft' ); ?></a>
601
- </div>
602
- <?php if ( $installed_theme->exists() ) {
603
- if ( $wp_version < '4.6' ) { ?>
604
- <div class="theme-installed"><?php _e( 'Already Installed', 'bestwebsoft' ); ?></div>
 
 
 
 
 
 
605
  <?php } else { ?>
606
- <div class="notice notice-success notice-alt inline"><p><?php _e( 'Installed', 'bestwebsoft' ); ?></p></div>
607
- <?php }
608
- } ?>
609
- </div>
 
 
610
  <?php } ?>
611
- <br class="clear" />
612
- </div>
613
- </div>
614
- <p><a class="bws_browse_link" href="https://bestwebsoft.com/products/wordpress/themes/" target="_blank"><?php _e( 'Browse More WordPress Themes', 'bestwebsoft' ); ?> <span class="dashicons dashicons-arrow-right-alt2"></span></a></p>
615
- </div>
616
- <?php } elseif ( 'bws_system_status' == $page || 'system-status' == $tab ) { ?>
617
- <h1><?php _e( 'System status', 'bestwebsoft' ); ?></h1>
618
- <div class="updated fade notice is-dismissible inline" <?php if ( ! ( isset( $_REQUEST['bwsmn_form_submit'] ) || isset( $_REQUEST['bwsmn_form_submit_custom_email'] ) ) || $error != "" ) echo 'style="display:none"'; ?>><p><strong><?php echo $message; ?></strong></p></div>
619
- <div class="error" <?php if ( "" == $error ) echo 'style="display:none"'; ?>><p><strong><?php echo $error; ?></strong></p></div>
620
- <form method="post" action="">
621
- <p>
622
- <input type="hidden" name="bwsmn_form_submit" value="submit" />
623
- <input type="submit" class="button-primary" value="<?php _e( 'Send to support', 'bestwebsoft' ) ?>" />
624
- <?php wp_nonce_field( plugin_basename(__FILE__), 'bwsmn_nonce_submit' ); ?>
625
- </p>
626
- </form>
627
- <form method="post" action="">
628
- <p>
629
- <input type="hidden" name="bwsmn_form_submit_custom_email" value="submit" />
630
- <input type="submit" class="button" value="<?php _e( 'Send to custom email &#187;', 'bestwebsoft' ) ?>" />
631
- <input type="text" maxlength="250" value="" name="bwsmn_form_email" />
632
- <?php wp_nonce_field( plugin_basename(__FILE__), 'bwsmn_nonce_submit_custom_email' ); ?>
633
- </p>
634
- </form>
 
 
 
 
 
 
 
 
 
 
635
  <?php foreach ( $system_info as $info ) { ?>
636
- <table class="widefat bws-system-info" cellspacing="0">
637
- <thead>
638
- <tr>
639
- <th colspan="2">
640
- <strong>
641
- <?php echo $info['name'];
642
- if ( isset( $info['count'] ) )
643
- echo ' (' . $info['count'] . ')'; ?>
644
- </strong>
645
- </th>
646
- </tr>
647
- </thead>
648
- <tbody>
 
 
 
649
  <?php foreach ( $info['data'] as $key => $value ) { ?>
650
- <tr>
651
- <td scope="row"><?php echo $key; ?></td>
652
- <td scope="row"><?php echo $value; ?></td>
653
- </tr>
654
  <?php } ?>
655
- </tbody>
656
- </table>
657
- <?php }
658
- } ?>
659
- </div>
660
- </div>
661
- <?php }
 
 
 
662
  }
663
 
664
  if ( ! function_exists( 'bws_get_banner_array' ) ) {
@@ -675,7 +849,7 @@ if ( ! function_exists( 'bws_get_banner_array' ) ) {
675
  array( 'zndskhc_hide_banner_on_plugin_page', 'zendesk-help-center/zendesk-help-center.php', '1.0.0' ),
676
  array( 'gglcptch_hide_banner_on_plugin_page', 'google-captcha/google-captcha.php', '1.18' ),
677
  array( 'mltlngg_hide_banner_on_plugin_page', 'multilanguage/multilanguage.php', '1.1.1' ),
678
- array( 'adsns_hide_banner_on_plugin_page', 'adsense-plugin/adsense-plugin.php', '1.36' ),
679
  array( 'vstrsnln_hide_banner_on_plugin_page', 'visitors-online/visitors-online.php', '0.2' ),
680
  array( 'cstmsrch_hide_banner_on_plugin_page', 'custom-search-plugin/custom-search-plugin.php', '1.28' ),
681
  array( 'prtfl_hide_banner_on_plugin_page', 'portfolio/portfolio.php', '2.33' ),
@@ -700,11 +874,11 @@ if ( ! function_exists( 'bws_get_banner_array' ) ) {
700
  array( 'cptch_hide_banner_on_plugin_page', 'captcha-bws/captcha-bws.php', '3.8.4' ),
701
  array( 'gllr_hide_banner_on_plugin_page', 'gallery-plugin/gallery-plugin.php', '3.9.1' ),
702
  array( 'cntctfrm_for_ctfrmtdb_hide_banner_on_plugin_page', 'contact-form-plugin/contact_form.php', '3.62' ),
703
- array( 'bwscrrntl_hide_banner_on_plugin_page', 'bws-car-rental/bws-car-rental.php', '0.0.1' ),
704
  array( 'rtng_hide_banner_on_plugin_page', 'rating-bws/rating-bws.php', '1.0.0' ),
705
  array( 'prflxtrflds_hide_banner_on_plugin_page', 'profile-extra-fields/profile-extra-fields.php', '1.1.3' ),
706
  array( 'psttcsv_hide_banner_on_plugin_page', 'post-to-csv/post-to-csv.php', '1.3.4' ),
707
- array( 'cstmdmnpg_hide_banner_on_plugin_page', 'custom-admin-page/custom-admin-page.php', '1.0.0' )
708
  );
709
  }
710
  }
1
  <?php
2
+ /**
3
+ * Function for displaying BestWebSoft menu
4
+ * Version: 2.4.3
5
+ */
6
 
7
+ if ( ! function_exists( 'bws_admin_enqueue_scripts' ) ) {
8
+ require_once dirname( __FILE__ ) . '/bws_functions.php';
9
+ }
10
 
11
  if ( ! function_exists( 'bws_add_menu_render' ) ) {
12
  function bws_add_menu_render() {
16
  /**
17
  * @deprecated 1.9.8 (15.12.2016)
18
  */
19
+ $is_main_page = isset( $_GET['page'] ) && in_array( $_GET['page'], array( 'bws_panel', 'bws_themes', 'bws_system_status' ) );
20
+ $page = sanitize_text_field( wp_unslash( $_GET['page'] ) );
21
+ $tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : '';
22
 
23
+ if ( $is_main_page ) {
24
  $current_page = 'admin.php?page=' . $page;
25
+ } else {
26
  $current_page = isset( $_GET['tab'] ) ? 'admin.php?page=' . $page . '&tab=' . $tab : 'admin.php?page=' . $page;
27
+ }
28
 
29
+ if ( 'bws_panel' === $page || ( ! $is_main_page && '' === $tab ) ) {
30
 
31
+ if ( ! function_exists( 'is_plugin_active_for_network' ) ) {
32
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
33
+ }
34
 
35
+ /* Get $bws_plugins */
36
+ require dirname( __FILE__ ) . '/product_list.php';
37
 
38
+ $all_plugins = get_plugins();
39
+ $active_plugins = get_option( 'active_plugins' );
40
  $sitewide_active_plugins = ( function_exists( 'is_multisite' ) && is_multisite() ) ? get_site_option( 'active_sitewide_plugins' ) : array();
41
+ $update_availible_all = get_site_transient( 'update_plugins' );
42
 
43
+ $plugin_category = isset( $_GET['category'] ) ? sanitize_text_field( wp_unslash( $_GET['category'] ) ) : 'all';
44
 
45
+ if ( ( isset( $_GET['sub'] ) && 'installed' === sanitize_text_field( wp_unslash( $_GET['sub'] ) ) ) || ! isset( $_GET['sub'] ) ) {
46
  $bws_plugins_update_availible = $bws_plugins_expired = array();
47
  foreach ( $bws_plugins as $key_plugin => $value_plugin ) {
48
 
50
  $bws_plugins_category[ $category_key ]['count'] = isset( $bws_plugins_category[ $category_key ]['count'] ) ? $bws_plugins_category[ $category_key ]['count'] + 1 : 1;
51
  }
52
 
53
+ $is_installed = array_key_exists( $key_plugin, $all_plugins );
54
  $is_pro_installed = false;
55
  if ( isset( $value_plugin['pro_version'] ) ) {
56
  $is_pro_installed = array_key_exists( $value_plugin['pro_version'], $all_plugins );
57
  }
58
+ /* Check update_availible */
59
  if ( ! empty( $update_availible_all ) && ! empty( $update_availible_all->response ) ) {
60
  if ( $is_pro_installed && array_key_exists( $value_plugin['pro_version'], $update_availible_all->response ) ) {
61
  unset( $bws_plugins[ $key_plugin ] );
62
+ $value_plugin['update_availible'] = $value_plugin['pro_version'];
63
  $bws_plugins_update_availible[ $key_plugin ] = $value_plugin;
64
+ } elseif ( $is_installed && array_key_exists( $key_plugin, $update_availible_all->response ) ) {
65
  unset( $bws_plugins[ $key_plugin ] );
66
+ $value_plugin['update_availible'] = $key_plugin;
67
  $bws_plugins_update_availible[ $key_plugin ] = $value_plugin;
68
  }
69
  }
70
+ /* Check expired */
71
  if ( $is_pro_installed && isset( $bstwbsftwppdtplgns_options['time_out'][ $value_plugin['pro_version'] ] ) &&
72
+ strtotime( $bstwbsftwppdtplgns_options['time_out'][ $value_plugin['pro_version'] ] ) < strtotime( gmdate( 'm/d/Y' ) ) ) {
73
  unset( $bws_plugins[ $key_plugin ] );
74
+ $value_plugin['expired'] = $bstwbsftwppdtplgns_options['time_out'][ $value_plugin['pro_version'] ];
75
  $bws_plugins_expired[ $key_plugin ] = $value_plugin;
76
  }
77
  }
84
  }
85
  }
86
 
87
+ /*** Membership */
88
+ $bws_license_plugin = 'bws_get_list_for_membership';
89
+ $bws_license_key = isset( $bstwbsftwppdtplgns_options[ $bws_license_plugin ] ) ? $bstwbsftwppdtplgns_options[ $bws_license_plugin ] : '';
90
  $update_membership_list = true;
91
 
92
+ if ( isset( $_POST['bws_license_key'] ) ) {
93
+ $bws_license_key = sanitize_text_field( wp_unslash( $_POST['bws_license_key'] ) );
94
+ }
95
 
96
  if ( isset( $_SESSION['bws_membership_time_check'] ) && isset( $_SESSION['bws_membership_list'] ) && $_SESSION['bws_membership_time_check'] < strtotime( '+12 hours' ) ) {
97
  $update_membership_list = false;
98
+ $plugins_array = $_SESSION['bws_membership_list'];
99
  }
100
 
101
+ if ( ( $update_membership_list && ! empty( $bws_license_key ) ) || ( isset( $_POST['bws_license_submit'] ) && check_admin_referer( plugin_basename( __FILE__ ), 'bws_license_nonce_name' ) ) ) {
102
 
103
+ if ( '' !== $bws_license_key ) {
104
+ if ( 18 !== strlen( $bws_license_key ) ) {
105
  $error = __( 'Wrong license key', 'bestwebsoft' );
106
  } else {
107
 
108
+ if ( isset( $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] ) && $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['time'] > ( time() - ( 24 * 60 * 60 ) ) ) {
109
  $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] = $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] + 1;
110
  } else {
111
  $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] = 1;
112
+ $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['time'] = time();
113
  }
114
 
115
  /* get Pro list */
116
+ $to_send = array();
117
+ $to_send['plugins'][ $bws_license_plugin ] = array();
118
+ $to_send['plugins'][ $bws_license_plugin ]['bws_license_key'] = $bws_license_key;
119
+ $options = array(
120
+ 'timeout' => ( ( defined( 'DOING_CRON' ) && DOING_CRON ) ? 30 : 3 ),
121
+ 'body' => array( 'plugins' => serialize( $to_send ) ),
122
+ 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ),
123
+ );
124
  $raw_response = wp_remote_post( 'https://bestwebsoft.com/wp-content/plugins/paid-products/plugins/pro-license-check/1.0/', $options );
125
 
126
+ if ( is_wp_error( $raw_response ) || 200 !== wp_remote_retrieve_response_code( $raw_response ) ) {
127
+ $error = __( 'Something went wrong. Please try again later. If the error appears again, please contact us', 'bestwebsoft' ) . ' <a href="https://support.bestwebsoft.com">BestWebSoft</a>. ' . __( 'We are sorry for inconvenience.', 'bestwebsoft' );
128
  } else {
129
  $response = maybe_unserialize( wp_remote_retrieve_body( $raw_response ) );
130
 
131
+ if ( is_array( $response ) && ! empty( $response ) ) {
132
  foreach ( $response as $key => $value ) {
133
+ if ( 'wrong_license_key' === $value->package ) {
134
+ $error = __( 'Wrong license key.', 'bestwebsoft' );
135
+ } elseif ( 'wrong_domain' === $value->package ) {
136
  $error = __( 'This license key is bound to another site. Change it via personal Client Area.', 'bestwebsoft' ) . '<a target="_blank" href="https://bestwebsoft.com/client-area">' . __( 'Log in', 'bestwebsoft' ) . '</a>';
137
+ } elseif ( 'you_are_banned' === $value->package ) {
138
+ $error = __( 'Unfortunately, you have exceeded the number of available tries per day.', 'bestwebsoft' );
139
+ } elseif ( 'time_out' === $value->package ) {
140
+ $error = sprintf( __( 'Unfortunately, Your license has expired. To continue getting top-priority support and plugin updates, you should extend it in your %s', 'bestwebsoft' ), ' <a href="https://bestwebsoft.com/client-area">Client Area</a>' );
141
+ } elseif ( 'duplicate_domen_for_trial' === $value->package ) {
142
+ $error = __( 'Unfortunately, the Pro licence was already installed to this domain. The Pro Trial license can be installed only once.', 'bestwebsoft' );
143
  } elseif ( is_array( $value->package ) && ! empty( $value->package ) ) {
144
+ $plugins_array = $_SESSION['bws_membership_list'] = $value->package;
145
  $_SESSION['bws_membership_time_check'] = strtotime( 'now' );
146
 
147
+ if ( isset( $bstwbsftwppdtplgns_options[ $bws_license_plugin ] ) && $bws_license_key === $bstwbsftwppdtplgns_options[ $bws_license_plugin ] ) {
148
  $message = __( 'The license key is valid.', 'bestwebsoft' );
149
+ if ( isset( $value->time_out ) && '' !== $value->time_out ) {
150
  $message .= ' ' . __( 'Your license will expire on', 'bestwebsoft' ) . ' ' . $value->time_out . '.';
151
+ }
152
  } else {
153
  $message = __( 'Congratulations! Pro Membership license is activated successfully.', 'bestwebsoft' );
154
  }
157
  }
158
  }
159
  } else {
160
+ $error = __( 'Something went wrong. Try again later or upload the plugin manually. We are sorry for inconvenience.', 'bestwebsoft' );
161
  }
162
  }
163
 
164
+ if ( is_multisite() ) {
165
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
166
+ } else {
167
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
168
+ }
169
  }
170
  } else {
171
+ $error = __( 'Please enter your license key.', 'bestwebsoft' );
172
  }
173
  }
174
+ } elseif ( 'bws_system_status' === $page || 'system-status' === $tab ) {
175
 
176
+ $all_plugins = get_plugins();
177
  $active_plugins = get_option( 'active_plugins' );
178
+ $mysql_info = $wpdb->get_results( "SHOW VARIABLES LIKE 'sql_mode'" );
179
+ if ( is_array( $mysql_info ) ) {
180
  $sql_mode = $mysql_info[0]->Value;
181
+ }
182
+ if ( empty( $sql_mode ) ) {
183
  $sql_mode = __( 'Not set', 'bestwebsoft' );
184
+ }
185
 
186
+ $allow_url_fopen = ( ini_get( 'allow_url_fopen' ) ) ? __( 'On', 'bestwebsoft' ) : __( 'Off', 'bestwebsoft' );
187
+ $upload_max_filesize = ( ini_get( 'upload_max_filesize' ) ) ? ini_get( 'upload_max_filesize' ) : __( 'N/A', 'bestwebsoft' );
188
+ $post_max_size = ( ini_get( 'post_max_size' ) ) ? ini_get( 'post_max_size' ) : __( 'N/A', 'bestwebsoft' );
189
+ $max_execution_time = ( ini_get( 'max_execution_time' ) ) ? ini_get( 'max_execution_time' ) : __( 'N/A', 'bestwebsoft' );
190
+ $memory_limit = ( ini_get( 'memory_limit' ) ) ? ini_get( 'memory_limit' ) : __( 'N/A', 'bestwebsoft' );
191
+ $wp_memory_limit = ( defined( 'WP_MEMORY_LIMIT' ) ) ? WP_MEMORY_LIMIT : __( 'N/A', 'bestwebsoft' );
192
+ $memory_usage = ( function_exists( 'memory_get_usage' ) ) ? round( memory_get_usage() / 1024 / 1024, 2 ) . ' ' . __( 'Mb', 'bestwebsoft' ) : __( 'N/A', 'bestwebsoft' );
193
+ $exif_read_data = ( is_callable( 'exif_read_data' ) ) ? __( 'Yes', 'bestwebsoft' ) . ' ( V' . substr( phpversion( 'exif' ), 0, 4 ) . ')' : __( 'No', 'bestwebsoft' );
194
+ $iptcparse = ( is_callable( 'iptcparse' ) ) ? __( 'Yes', 'bestwebsoft' ) : __( 'No', 'bestwebsoft' );
195
+ $xml_parser_create = ( is_callable( 'xml_parser_create' ) ) ? __( 'Yes', 'bestwebsoft' ) : __( 'No', 'bestwebsoft' );
196
+ $theme = wp_get_theme();
197
 
198
  if ( function_exists( 'is_multisite' ) ) {
199
  $multisite = is_multisite() ? __( 'Yes', 'bestwebsoft' ) : __( 'No', 'bestwebsoft' );
205
  'wp_environment' => array(
206
  'name' => __( 'WordPress Environment', 'bestwebsoft' ),
207
  'data' => array(
208
+ __( 'Home URL', 'bestwebsoft' ) => home_url(),
209
+ __( 'Website URL', 'bestwebsoft' ) => get_option( 'siteurl' ),
210
+ __( 'WP Version', 'bestwebsoft' ) => $wp_version,
211
+ __( 'WP Multisite', 'bestwebsoft' ) => $multisite,
212
+ __( 'WP Memory Limit', 'bestwebsoft' ) => $wp_memory_limit,
213
+ __( 'Active Theme', 'bestwebsoft' ) => $theme['Name'] . ' ' . $theme['Version'] . ' (' . sprintf( __( 'by %s', 'bestwebsoft' ), $theme['Author'] ) . ')',
214
  ),
215
  ),
216
  'server_environment' => array(
217
  'name' => __( 'Server Environment', 'bestwebsoft' ),
218
  'data' => array(
219
+ __( 'Operating System', 'bestwebsoft' ) => PHP_OS,
220
+ __( 'Server', 'bestwebsoft' ) => isset( $_SERVER['SERVER_SOFTWARE'] ) ? sanitize_email( wp_unslash( $_SERVER['SERVER_SOFTWARE'] ) ) : '',
221
+ __( 'PHP Version', 'bestwebsoft' ) => PHP_VERSION,
222
+ __( 'PHP Allow URL fopen', 'bestwebsoft' ) => $allow_url_fopen,
223
+ __( 'PHP Memory Limit', 'bestwebsoft' ) => $memory_limit,
224
+ __( 'Memory Usage', 'bestwebsoft' ) => $memory_usage,
225
+ __( 'PHP Max Upload Size', 'bestwebsoft' ) => $upload_max_filesize,
226
+ __( 'PHP Max Post Size', 'bestwebsoft' ) => $post_max_size,
227
+ __( 'PHP Max Script Execute Time', 'bestwebsoft' ) => $max_execution_time,
228
+ __( 'PHP Exif support', 'bestwebsoft' ) => $exif_read_data,
229
+ __( 'PHP IPTC support', 'bestwebsoft' ) => $iptcparse,
230
+ __( 'PHP XML support', 'bestwebsoft' ) => $xml_parser_create,
231
+ '$_SERVER[HTTP_HOST]' => isset( $_SERVER['HTTP_HOST'] ) ? sanitize_email( wp_unslash( $_SERVER['HTTP_HOST'] ) ) : '',
232
+ '$_SERVER[SERVER_NAME]' => isset( $_SERVER['SERVER_NAME'] ) ? sanitize_email( wp_unslash( $_SERVER['SERVER_NAME'] ) ) : '',
233
  ),
234
  ),
235
+ 'db' => array(
236
  'name' => __( 'Database', 'bestwebsoft' ),
237
  'data' => array(
238
+ __( 'WP DB version', 'bestwebsoft' ) => get_option( 'db_version' ),
239
+ __( 'MySQL version', 'bestwebsoft' ) => $wpdb->get_var( 'SELECT VERSION() AS version' ),
240
+ __( 'SQL Mode', 'bestwebsoft' ) => $sql_mode,
241
  ),
242
  ),
243
+ 'active_plugins' => array(
244
+ 'name' => __( 'Active Plugins', 'bestwebsoft' ),
245
+ 'data' => array(),
246
+ 'count' => 0,
247
+ ),
248
+ 'inactive_plugins' => array(
249
+ 'name' => __( 'Inactive Plugins', 'bestwebsoft' ),
250
+ 'data' => array(),
251
+ 'count' => 0,
252
  ),
 
 
 
 
 
253
  );
254
 
255
  foreach ( $all_plugins as $path => $plugin ) {
256
  $name = str_replace( 'by BestWebSoft', '', $plugin['Name'] );
257
  if ( is_plugin_active( $path ) ) {
258
  $system_info['active_plugins']['data'][ $name ] = sprintf( __( 'by %s', 'bestwebsoft' ), $plugin['Author'] ) . ' - ' . $plugin['Version'];
259
+ $system_info['active_plugins']['count'] = $system_info['active_plugins']['count'] + 1;
260
  } else {
261
  $system_info['inactive_plugins']['data'][ $name ] = sprintf( __( 'by %s', 'bestwebsoft' ), $plugin['Author'] ) . ' - ' . $plugin['Version'];
262
+ $system_info['inactive_plugins']['count'] = $system_info['inactive_plugins']['count'] + 1;
263
  }
264
  }
265
 
266
+ if ( ( isset( $_REQUEST['bwsmn_form_submit'] ) && check_admin_referer( plugin_basename( __FILE__ ), 'bwsmn_nonce_submit' ) ) || ( isset( $_REQUEST['bwsmn_form_submit_custom_email'] ) && check_admin_referer( plugin_basename( __FILE__ ), 'bwsmn_nonce_submit_custom_email' ) ) ) {
267
  if ( isset( $_REQUEST['bwsmn_form_email'] ) ) {
268
+ $email = sanitize_email( wp_unslash( $_REQUEST['bwsmn_form_email'] ) );
269
+ if ( '' === $email ) {
270
  $error = __( 'Please enter a valid email address.', 'bestwebsoft' );
271
  } else {
272
  $message = sprintf( __( 'Email with system info is sent to %s.', 'bestwebsoft' ), $email );
273
  }
274
  } else {
275
+ $email = 'plugin_system_status@bestwebsoft.com';
276
  $message = __( 'Thank you for contacting us.', 'bestwebsoft' );
277
  }
278
 
279
+ if ( '' === $error ) {
280
+ $headers = 'MIME-Version: 1.0' . "\n";
281
+ $headers .= 'Content-type: text/html; charset=utf-8' . "\n";
282
+ $headers .= 'From: ' . get_option( 'admin_email' );
283
  $message_text = '<html><head><title>System Info From ' . home_url() . '</title></head><body>';
284
  foreach ( $system_info as $info ) {
285
  if ( ! empty( $info['data'] ) ) {
286
  $message_text .= '<h4>' . $info['name'];
287
+ if ( isset( $info['count'] ) ) {
288
  $message_text .= ' (' . $info['count'] . ')';
289
+ }
290
  $message_text .= '</h4><table>';
291
  foreach ( $info['data'] as $key => $value ) {
292
  $message_text .= '<tr><td>' . $key . '</td><td>' . $value . '</td></tr>';
295
  }
296
  }
297
  $message_text .= '</body></html>';
298
+ $result = wp_mail( $email, 'System Info From ' . esc_url( home_url() ), wp_kses( $message_text ), $headers );
299
+ if ( true !== $result ) {
300
+ $error = __( 'Sorry, email message could not be delivered.', 'bestwebsoft' );
301
+ }
302
  }
303
  }
304
  } ?>
305
+ <div class="bws-wrap">
306
+ <div class="bws-header">
307
+ <div class="bws-title">
308
+ <a href="<?php echo ( $is_main_page ) ? esc_url( self_admin_url( 'admin.php?page=bws_panel' ) ) : esc_url( self_admin_url( 'admin.php?page=' . $page ) ); ?>">
309
+ <span class="bws-logo bwsicons bwsicons-bws-logo"></span>
310
+ BestWebSoft
311
+ <span>panel</span>
312
+ </a>
313
+ </div>
314
+ <div class="bws-menu-item-icon">&#8226;&#8226;&#8226;</div>
315
+ <div class="bws-nav-tab-wrapper">
316
  <?php if ( $is_main_page ) { ?>
317
+ <a class="bws-nav-tab <?php
318
+ if ( 'bws_panel' === $page ) {
319
+ echo esc_attr( ' bws-nav-tab-active' );
320
+ }
321
+ ?>" href="<?php echo esc_url( self_admin_url( 'admin.php?page=bws_panel' ) ); ?>"><?php esc_html_e( 'Plugins', 'bestwebsoft' );
322
+ ?>
323
+ </a>
324
+ <!-- pls -->
325
+ <a class="bws-nav-tab <?php
326
+ if ( 'bws_themes' === $page ) {
327
+ echo esc_attr( ' bws-nav-tab-active' );
328
+ }
329
+ ?>" href="<?php echo esc_url( self_admin_url( 'admin.php?page=bws_themes' ) ); ?>"><?php esc_html_e( 'Themes', 'bestwebsoft' ); ?></a>
330
+ <a class="bws-nav-tab <?php
331
+ if ( 'bws_system_status' === $page ) {
332
+ echo esc_attr( ' bws-nav-tab-active' );
333
+ }
334
+ ?>" href="<?php echo esc_url( self_admin_url( 'admin.php?page=bws_system_status' ) ); ?>"><?php esc_html_e( 'System status', 'bestwebsoft' );
335
+ ?>
336
+ </a>
337
  <?php } else { ?>
338
+ <a class="bws-nav-tab <?php
339
+ if ( ! isset( $_GET['tab'] ) ) {
340
+ echo esc_attr( ' bws-nav-tab-active' );
341
+ }
342
+ ?>" href="<?php echo esc_url( self_admin_url( 'admin.php?page=' . $page ) ); ?>"><?php esc_html_e( 'Plugins', 'bestwebsoft' );
343
+ ?>
344
+ </a>
345
+ <!-- pls -->
346
+ <a class="bws-nav-tab <?php
347
+ if ( 'themes' === $tab ) {
348
+ echo esc_attr( ' bws-nav-tab-active' );
349
+ }
350
+ ?>" href="<?php echo esc_url( self_admin_url( 'admin.php?page=' . $page . '&tab=themes' ) ); ?>"><?php esc_html_e( 'Themes', 'bestwebsoft' );
351
+ ?>
352
+ </a>
353
+ <!-- end pls -->
354
+ <a class="bws-nav-tab <?php
355
+ if ( 'system-status' === $tab ) {
356
+ echo esc_attr( ' bws-nav-tab-active' );
357
+ }
358
+ ?>" href="<?php echo esc_url( self_admin_url( 'admin.php?page=' . $page . '&tab=system-status' ) ); ?>"><?php esc_html_e( 'System status', 'bestwebsoft' );
359
+ ?>
360
+ </a>
361
  <?php } ?>
362
+ </div>
363
+ <!-- pls -->
364
+ <div class="bws-help-links-wrapper">
365
+ <a href="https://support.bestwebsoft.com" target="_blank"><?php esc_html_e( 'Support', 'bestwebsoft' ); ?></a>
366
+ <a href="https://bestwebsoft.com/client-area" target="_blank" title="<?php esc_html_e( 'Manage purchased licenses & subscriptions', 'bestwebsoft' ); ?>">Client Area</a>
367
+ </div>
368
+ <!-- end pls -->
369
+ <div class="clear"></div>
370
+ </div>
371
+ <?php if ( ( 'bws_panel' === $page || ( ! isset( $_GET['tab'] ) && ! $is_main_page ) ) && ! isset( $_POST['bws_plugin_action_submit'] ) ) { ?>
372
+ <div class="bws-membership-wrap">
373
+ <div class="bws-membership-backround"></div>
374
+ <div class="bws-membership">
375
+ <div class="bws-membership-title"><?php printf( esc_html__( 'Get Access to %s+ Premium Plugins', 'bestwebsoft' ), '30' ); ?></div>
376
+ <form class="bws-membership-form" method="post" action="">
377
+ <span class="bws-membership-link"><a target="_blank" href="https://bestwebsoft.com/membership/"><?php esc_html_e( 'Subscribe to Pro Membership', 'bestwebsoft' ); ?></a> <?php esc_html_e( 'or', 'bestwebsoft' ); ?></span>
378
+ <?php
379
+ if ( isset( $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] ) &&
380
+ '5' < $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] &&
381
+ $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['time'] > ( time() - ( 24 * 60 * 60 ) ) ) {
382
+ ?>
383
+ <div class="bws_form_input_wrap">
384
+ <input disabled="disabled" type="text" name="bws_license_key" value="<?php echo esc_attr( $bws_license_key ); ?>" />
385
+ <div class="bws_error"><?php esc_html_e( 'Unfortunately, you have exceeded the number of available tries per day.', 'bestwebsoft' ); ?></div>
386
+ </div>
387
+ <input disabled="disabled" type="submit" class="bws-button" value="<?php esc_html_e( 'Check license key', 'bestwebsoft' ); ?>" />
388
  <?php } else { ?>
389
+ <div class="bws_form_input_wrap">
390
+ <input
391
+ <?php
392
+ if ( '' !== $error ) {
393
+ echo 'class="bws_input_error"';}
394
+ ?>
395
+ type="text" placeholder="<?php esc_html_e( 'Enter your license key', 'bestwebsoft' ); ?>" maxlength="100" name="bws_license_key" value="<?php echo esc_attr( $bws_license_key ); ?>" />
396
+ <div class="bws_error"
397
+ <?php
398
+ if ( '' === $error ) {
399
+ echo 'style="display:none"';}
400
+ ?>
401
+ ><?php echo esc_html( $error ); ?></div>
402
+ </div>
403
+ <input type="hidden" name="bws_license_plugin" value="<?php echo esc_attr( $bws_license_plugin ); ?>" />
404
+ <input type="hidden" name="bws_license_submit" value="submit" />
405
  <?php if ( empty( $plugins_array ) ) { ?>
406
+ <input type="submit" class="bws-button" value="<?php esc_html_e( 'Activate', 'bestwebsoft' ); ?>" />
407
  <?php } else { ?>
408
+ <input type="submit" class="bws-button" value="<?php esc_html_e( 'Check license key', 'bestwebsoft' ); ?>" />
409
  <?php } ?>
410
+ <?php wp_nonce_field( plugin_basename( __FILE__ ), 'bws_license_nonce_name' ); ?>
411
  <?php } ?>
412
+ </form>
413
+ <div class="clear"></div>
414
+ </div>
415
+ </div>
416
  <?php } ?>
417
+ <!-- end pls -->
418
+ <div class="bws-wrap-content wrap">
419
+ <?php if ( 'bws_panel' === $page || ( ! isset( $_GET['tab'] ) && ! $is_main_page ) ) { ?>
420
+ <div class="updated notice is-dismissible inline"
421
+ <?php
422
+ if ( '' === $message || '' !== $error ) {
423
+ echo 'style="display:none"';}
424
+ ?>
425
+ ><p><?php echo esc_html( $message ); ?></p></div>
426
+ <h1>
427
+ <?php esc_html_e( 'Plugins', 'bestwebsoft' ); ?>
428
+ <a href="<?php echo esc_url( self_admin_url( 'plugin-install.php?tab=upload' ) ); ?>" class="upload page-title-action add-new-h2"><?php esc_html_e( 'Upload Plugin', 'bestwebsoft' ); ?></a>
429
+ </h1>
430
+ <?php
431
+ if ( isset( $_GET['error'] ) ) {
432
+ if ( isset( $_GET['charsout'] ) ) {
433
+ $errmsg = sprintf( __( 'The plugin generated %d characters of <strong>unexpected output</strong> during activation. If you notice &#8220;headers already sent&#8221; messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.' ), intval( $_GET['charsout'] ) );
434
+ } else {
435
+ $errmsg = __( 'Plugin could not be activated because it triggered a <strong>fatal error</strong>.' );
436
+ }
437
+ ?>
438
+ <div id="message" class="error is-dismissible"><p><?php echo wp_kses( $errmsg ); ?></p></div>
439
  <?php } elseif ( isset( $_GET['activate'] ) ) { ?>
440
+ <div id="message" class="updated notice is-dismissible"><p><?php esc_html_e( 'Plugin <strong>activated</strong>.' ); ?></p></div>
441
+ <?php
442
+ }
443
 
444
+ if ( isset( $_POST['bws_plugin_action_submit'] ) && isset( $_POST['bws_install_plugin'] ) && check_admin_referer( plugin_basename( __FILE__ ), 'bws_license_install_nonce_name' ) ) {
445
 
446
+ $bws_license_plugin = sanitize_text_field( wp_unslash( $_POST['bws_install_plugin'] ) );
447
 
448
  $bstwbsftwppdtplgns_options[ $bws_license_plugin ] = $bws_license_key;
449
+ if ( is_multisite() ) {
450
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
451
+ } else {
452
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
453
+ }
454
 
455
+ $url = $plugins_array[ $bws_license_plugin ]['link'] . '&download_from=5';
456
+ ?>
457
+ <h2><?php esc_html_e( 'Download Pro Plugin', 'bestwebsoft' ); ?></h2>
458
  <p>
459
+ <strong><?php esc_html_e( 'Your Pro plugin is ready', 'bestwebsoft' ); ?></strong>
460
  <br>
461
+ <?php esc_html_e( 'Your plugin has been zipped, and now is ready to download.', 'bestwebsoft' ); ?>
462
  </p>
463
  <p>
464
+ <a class="button button-secondary" target="_parent" href="<?php echo esc_url( $url ); ?>"><?php esc_html_e( 'Download Now', 'bestwebsoft' ); ?></a>
465
  </p>
466
  <br>
467
  <p>
468
+ <strong><?php esc_html_e( 'Need help installing the plugin?', 'bestwebsoft' ); ?></strong>
469
  <br>
470
+ <a target="_blank" href="https://bestwebsoft.com/documentation/how-to-install-a-wordpress-product/how-to-install-a-wordpress-plugin/"><?php esc_html_e( 'How to install WordPress plugin from your admin Dashboard (ZIP archive)', 'bestwebsoft' ); ?></a>
471
  </p>
472
  <p>
473
+ <strong><?php esc_html_e( 'Get Started', 'bestwebsoft' ); ?></strong>
474
  <br>
475
+ <a target="_blank" href="https://bestwebsoft.com/documentation/"><?php esc_html_e( 'Documentation', 'bestwebsoft' ); ?></a>
476
  <br>
477
+ <a target="_blank" href="https://www.youtube.com/user/bestwebsoft"><?php esc_html_e( 'Video Instructions', 'bestwebsoft' ); ?></a>
478
  <br>
479
+ <a target="_blank" href="https://support.bestwebsoft.com"><?php esc_html_e( 'Knowledge Base', 'bestwebsoft' ); ?></a>
480
  </p>
481
  <p>
482
+ <strong><?php esc_html_e( 'Licenses & Domains', 'bestwebsoft' ); ?></strong>
483
  <br>
484
+ <?php
485
+ printf(
486
+ 'Manage your license(-s) and change domain names using the %s at BestWebSoft.',
487
+ '<a target="_blank" href="https://bestwebsoft.com/client-area">' . esc_html__( 'Client Area', 'bestwebsoft' ) . '</a>'
488
+ );
489
+ ?>
490
  </p>
491
+ <p><a href="<?php echo esc_url( self_admin_url( $current_page ) ); ?>" target="_parent"><?php esc_html_e( 'Return to BestWebSoft Panel', 'bestwebsoft' ); ?></a></p>
492
+ <?php
493
+ } else {
494
  $category_href = $current_page;
495
+ if ( 'all' !== $plugin_category ) {
496
+ $category_href .= '&category=' . $plugin_category;
497
+ }
498
+ ?>
499
+ <ul class="subsubsub">
500
+ <li>
501
+ <a
502
+ <?php
503
+ if ( ! isset( $_GET['sub'] ) ) {
504
+ echo 'class="current" ';}
505
+ ?>
506
+ href="<?php echo esc_url( self_admin_url( $category_href ) ); ?>"><?php esc_html_e( 'All', 'bestwebsoft' ); ?></a>
507
+ </li> |
508
+ <li>
509
+ <a
510
+ <?php
511
+ if ( isset( $_GET['sub'] ) && 'installed' === sanitize_text_field( wp_unslash( $_GET['sub'] ) ) ) {
512
+ echo 'class="current" ';}
513
+ ?>
514
+ href="<?php echo esc_url( self_admin_url( $category_href . '&sub=installed' ) ); ?>"><?php esc_html_e( 'Installed', 'bestwebsoft' ); ?></a>
515
+ </li> |
516
+ <li>
517
+ <a
518
+ <?php
519
+ if ( isset( $_GET['sub'] ) && 'not_installed' === sanitize_text_field( wp_unslash( $_GET['sub'] ) ) ) {
520
+ echo 'class="current" ';}
521
+ ?>
522
+ href="<?php echo esc_url( self_admin_url( $category_href . '&sub=not_installed' ) ); ?>"><?php esc_html_e( 'Not Installed', 'bestwebsoft' ); ?></a>
523
+ </li>
524
+ </ul>
525
+ <div class="clear"></div>
526
+ <div class="bws-filter-top">
527
+ <h2>
528
+ <span class="bws-toggle-indicator"></span>
529
+ <?php esc_html_e( 'Filter results', 'bestwebsoft' ); ?>
530
+ </h2>
531
+ <div class="bws-filter-top-inside">
532
+ <div class="bws-filter-title"><?php esc_html_e( 'Category', 'bestwebsoft' ); ?></div>
533
+ <ul class="bws-category">
534
+ <li>
535
+ <?php $sub_in_url = ( isset( $_GET['sub'] ) && in_array( sanitize_text_field( wp_unslash( $_GET['sub'] ) ), array( 'installed', 'not_installed' ) ) ) ? '&sub=' . sanitize_text_field( wp_unslash( $_GET['sub'] ) ) : ''; ?>
536
+ <a
537
+ <?php
538
+ if ( 'all' === $plugin_category ) {
539
+ echo ' class="bws-active"';}
540
+ ?>
541
+ href="<?php echo esc_url( self_admin_url( $current_page . $sub_in_url ) ); ?>"><?php esc_html_e( 'All', 'bestwebsoft' ); ?>
542
+ <span>(<?php echo count( $bws_plugins ); ?>)</span>
543
+ </a>
544
+ </li>
545
  <?php foreach ( $bws_plugins_category as $category_key => $category_value ) { ?>
546
+ <li>
547
+ <a
548
+ <?php
549
+ if ( $category_key === $plugin_category ) {
550
+ echo ' class="bws-active"';}
551
+ ?>
552
+ href="<?php echo esc_url( self_admin_url( $current_page . $sub_in_url . '&category=' . $category_key ) ); ?>"><?php echo esc_html( $category_value['name'] ); ?>
553
+ <span>(<?php echo intval( $category_value['count'] ); ?>)</span>
554
+ </a>
555
+ </li>
556
  <?php } ?>
557
+ </ul>
558
+ </div>
559
+ </div>
560
+ <div class="bws-products">
561
+ <?php
562
+ $nothing_found = true;
563
  foreach ( $bws_plugins as $key_plugin => $value_plugin ) {
564
 
565
+ if ( 'all' !== $plugin_category && isset( $bws_plugins_category[ $plugin_category ] ) && ! in_array( $plugin_category, $value_plugin['category'] ) ) {
566
  continue;
567
+ }
568
 
569
  $key_plugin_explode = explode( '/', $key_plugin );
570
+ if ( in_array( $key_plugin_explode[0], array( 'car-rental', 'contact-form-multi', 'custom-admin-page', 'adsense-plugin', 'zendesk-help-center', 'bws-adsense' ) ) ) {
571
+ $icon = isset( $value_plugin['icon'] ) ? $value_plugin['icon'] : '//ps.w.org/' . $key_plugin_explode[0] . '/assets/icon-256x256.png';
572
+ } else {
573
+ $icon = isset( $value_plugin['icon'] ) ? $value_plugin['icon'] : '//ps.w.org/' . $key_plugin_explode[0] . '/assets/icon-256x256.gif';
574
+ }
575
 
 
576
  $is_pro_isset = isset( $value_plugin['pro_version'] );
577
  $is_installed = array_key_exists( $key_plugin, $all_plugins );
578
+ $is_active = in_array( $key_plugin, $active_plugins ) || isset( $sitewide_active_plugins[ $key_plugin ] );
579
 
580
  $is_pro_installed = $is_pro_active = false;
581
  if ( $is_pro_isset ) {
582
  $is_pro_installed = array_key_exists( $value_plugin['pro_version'], $all_plugins );
583
+ $is_pro_active = in_array( $value_plugin['pro_version'], $active_plugins ) || isset( $sitewide_active_plugins[ $value_plugin['pro_version'] ] );
584
  }
585
 
586
+ if ( ( isset( $_GET['sub'] ) && 'installed' === sanitize_text_field( wp_unslash( $_GET['sub'] ) ) && ! $is_pro_installed && ! $is_installed ) ||
587
+ ( isset( $_GET['sub'] ) && 'not_installed' === sanitize_text_field( wp_unslash( $_GET['sub'] ) ) && ( $is_pro_installed || $is_installed ) ) ) {
588
  continue;
589
+ }
590
 
591
+ if ( is_multisite() ) {
592
+ $link_attr = isset( $value_plugin['install_url'] ) ? 'href="' . esc_url( $value_plugin['install_url'] ) . '" target="_blank"' : 'href="' . esc_url( network_admin_url( 'plugin-install.php?tab=plugin-information&plugin=' . $key_plugin_explode[0] . '&from=import&TB_iframe=true&width=600&height=550' ) ) . '" class="thickbox open-plugin-details-modal"';
593
+ } else {
594
+ $link_attr = isset( $value_plugin['install_url'] ) ? 'href="' . esc_url( $value_plugin['install_url'] ) . '" target="_blank"' : 'href="' . esc_url( self_admin_url( 'plugin-install.php?tab=plugin-information&plugin=' . $key_plugin_explode[0] . '&from=import&TB_iframe=true&width=600&height=550' ) ) . '" class="thickbox open-plugin-details-modal"';
595
+ }
596
 
597
+ $nothing_found = false;
598
+ ?>
599
+ <div class="bws_product_box
600
+ <?php
601
+ if ( $is_active || $is_pro_active ) {
602
+ echo esc_attr( ' bws_product_active' );}
603
+ ?>
604
+ ">
605
+ <div class="bws_product_image">
606
+ <a <?php echo wp_kses_data( $link_attr ); ?>><img src="<?php echo esc_url( $icon ); ?>"/></a>
607
+ </div>
608
+ <div class="bws_product_content">
609
+ <div class="bws_product_title"><a <?php echo wp_kses_data( $link_attr ); ?>><?php echo esc_html( $value_plugin['name'] ); ?></a></div>
610
+ <div class="bws-version">
611
+ <?php
612
+ if ( $is_pro_installed ) {
613
+ echo '<span';
614
+ if ( ! empty( $value_plugin['expired'] ) || ! empty( $value_plugin['update_availible'] ) ) {
615
+ echo ' class="bws-update-available"';
616
+ }
617
+ echo '>v ' . esc_attr( $all_plugins[ $value_plugin['pro_version'] ]['Version'] ) . '</span>';
618
+ } elseif ( $is_installed ) {
619
+ echo '<span';
620
+ if ( ! empty( $value_plugin['expired'] ) || ! empty( $value_plugin['update_availible'] ) ) {
621
+ echo ' class="bws-update-available"';
622
+ }
623
+ echo '>v ' . esc_attr( $all_plugins[ $key_plugin ]['Version'] ) . '</span>';
624
+ } else {
625
+ echo '<span>' . esc_html__( 'Not installed', 'bestwebsoft' ) . '</span>';
626
+ }
627
+
628
+ if ( ! empty( $value_plugin['expired'] ) ) {
629
+ echo ' - <a class="bws-update-now" href="https://support.bestwebsoft.com/hc/en-us/articles/202356359" target="_blank">' . esc_html__( 'Renew to get updates', 'bestwebsoft' ) . '</a>';
630
+ } elseif ( ! empty( $value_plugin['update_availible'] ) ) {
631
+ $r = $update_availible_all->response[ $value_plugin['update_availible'] ];
632
+ echo ' - <a class="bws-update-now" href="' . esc_url( wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' . $value_plugin['update_availible'] ), 'upgrade-plugin_' . $value_plugin['update_availible'] ) ) . '" class="update-link" aria-label="' . sprintf( esc_html__( 'Update to v %s', 'bestwebsoft' ), $r->new_version ) . '">' . sprintf( esc_html__( 'Update to v %s', 'bestwebsoft' ), esc_html( $r->new_version ) ) . '</a>';
633
+ }
634
+ ?>
635
+ </div>
636
+ <div class="bws_product_description">
637
+ <?php echo ( strlen( $value_plugin['description'] ) > 100 ) ? esc_html( mb_substr( $value_plugin['description'], 0, 100 ) ) . '...' : esc_html( $value_plugin['description'] ); ?>
638
+ </div>
639
+ <div class="bws_product_links">
640
+ <?php
641
+ if ( $is_active || $is_pro_active ) {
642
+ if ( $is_pro_isset ) {
643
+ if ( ! $is_pro_installed ) {
644
+ if ( ! empty( $plugins_array ) && array_key_exists( $value_plugin['pro_version'], $plugins_array ) ) {
645
+ ?>
646
+ <form method="post" action="">
647
+ <input type="submit" class="button button-secondary" value="<?php esc_html_e( 'Get Pro', 'bestwebsoft' ); ?>" />
648
+ <input type="hidden" name="bws_plugin_action_submit" value="submit" />
649
+ <input type="hidden" name="bws_install_plugin" value="<?php echo esc_attr( $value_plugin['pro_version'] ); ?>" />
650
+ <?php wp_nonce_field( plugin_basename( __FILE__ ), 'bws_license_install_nonce_name' ); ?>
651
+ </form>
652
+ <?php } else { ?>
653
+ <a class="button button-secondary bws_upgrade_button" href="<?php echo esc_url( $bws_plugins[ $key_plugin ]['purchase'] ); ?>" target="_blank"><?php esc_html_e( 'Upgrade to Pro', 'bestwebsoft' ); ?></a>
654
+ <?php
655
+ }
656
+ }
657
+ } else {
658
+ ?>
659
+ <a class="bws_donate" href="https://bestwebsoft.com/donate/" target="_blank"><?php esc_html_e( 'Donate', 'bestwebsoft' ); ?></a> <span>|</span>
660
+ <?php
661
+ }
662
 
663
+ if ( $is_pro_active ) {
664
+ ?>
665
+ <a class="bws_settings" href="<?php echo esc_url( self_admin_url( $bws_plugins[ $key_plugin ]['pro_settings'] ) ); ?>"><?php esc_html_e( 'Settings', 'bestwebsoft' ); ?></a>
666
+ <?php } else { ?>
667
+ <a class="bws_settings" href="<?php echo esc_url( self_admin_url( $bws_plugins[ $key_plugin ]['settings'] ) ); ?>"><?php esc_html_e( 'Settings', 'bestwebsoft' ); ?></a>
668
+ <?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
669
  }
670
+ } else {
671
+ if ( $is_pro_installed ) {
672
+ ?>
673
+ <a class="button button-secondary" href="<?php echo esc_url( wp_nonce_url( self_admin_url( $current_page . '&bws_activate_plugin=' . $value_plugin['pro_version'] ), 'bws_activate_plugin' . $value_plugin['pro_version'] ) ); ?>" title="<?php esc_html_e( 'Activate this plugin', 'bestwebsoft' ); ?>"><?php esc_html_e( 'Activate', 'bestwebsoft' ); ?></a>
674
+ <?php } elseif ( ! empty( $plugins_array ) && isset( $value_plugin['pro_version'] ) && array_key_exists( $value_plugin['pro_version'], $plugins_array ) ) { ?>
675
+ <form method="post" action="">
676
+ <input type="submit" class="button button-secondary" value="<?php esc_html_e( 'Get Pro', 'bestwebsoft' ); ?>" />
677
+ <input type="hidden" name="bws_plugin_action_submit" value="submit" />
678
+ <input type="hidden" name="bws_install_plugin" value="<?php echo esc_url( $value_plugin['pro_version'] ); ?>" />
679
+ <?php wp_nonce_field( plugin_basename( __FILE__ ), 'bws_license_install_nonce_name' ); ?>
680
+ </form>
681
+ <?php } elseif ( $is_installed ) { ?>
682
+ <a class="button button-secondary" href="<?php echo esc_url( wp_nonce_url( self_admin_url( $current_page . '&bws_activate_plugin=' . $key_plugin ), 'bws_activate_plugin' . $key_plugin ) ); ?>" title="<?php esc_html_e( 'Activate this plugin', 'bestwebsoft' ); ?>"><?php esc_html_e( 'Activate', 'bestwebsoft' ); ?></a>
683
+ <?php
684
+ } else {
685
+ $install_url = isset( $value_plugin['install_url'] ) ? $value_plugin['install_url'] : network_admin_url( 'plugin-install.php?tab=search&type=term&s=' . str_replace( array( ' ', '-' ), '+', str_replace( '&', '', $value_plugin['name'] ) ) . '+BestWebSoft&plugin-search-input=Search+Plugins' );
686
+ ?>
687
+ <a class="button button-secondary" href="<?php echo esc_url( $install_url ); ?>" title="<?php esc_html_e( 'Install this plugin', 'bestwebsoft' ); ?>" target="_blank"><?php esc_html_e( 'Install Now', 'bestwebsoft' ); ?></a>
688
+ <?php
689
+ }
690
+ }
691
+ ?>
692
+ </div>
693
+ </div>
694
+ <div class="clear"></div>
695
+ </div>
696
+ <?php
697
+ }
698
+ if ( $nothing_found ) {
699
+ ?>
700
+ <p class="description"><?php esc_html_e( 'Nothing found. Try another criteria.', 'bestwebsoft' ); ?></p>
 
 
701
  <?php } ?>
702
+ </div>
703
+ <div id="bws-filter-wrapper">
704
+ <div class="bws-filter">
705
+ <div class="bws-filter-title"><?php esc_html_e( 'Category', 'bestwebsoft' ); ?></div>
706
+ <ul class="bws-category">
707
+ <li>
708
+ <?php $sub_in_url = ( isset( $_GET['sub'] ) && in_array( sanitize_text_field( wp_unslash( $_GET['sub'] ) ), array( 'installed', 'not_installed' ) ) ) ? '&sub=' . sanitize_text_field( wp_unslash( $_GET['sub'] ) ) : ''; ?>
709
+ <a
710
+ <?php
711
+ if ( 'all' === $plugin_category ) {
712
+ echo ' class="bws-active"';}
713
+ ?>
714
+ href="<?php echo esc_url( self_admin_url( $current_page . $sub_in_url ) ); ?>"><?php esc_html_e( 'All', 'bestwebsoft' ); ?>
715
+ <span>(<?php echo count( $bws_plugins ); ?>)</span>
716
+ </a>
717
+ </li>
718
  <?php foreach ( $bws_plugins_category as $category_key => $category_value ) { ?>
719
+ <li>
720
+ <a
721
+ <?php
722
+ if ( $category_key === $plugin_category ) {
723
+ echo ' class="bws-active"';}
724
+ ?>
725
+ href="<?php echo esc_url( self_admin_url( $current_page . $sub_in_url . '&category=' . $category_key ) ); ?>"><?php echo esc_html( $category_value['name'] ); ?>
726
+ <span>(<?php echo intval( $category_value['count'] ); ?>)</span>
727
+ </a>
728
+ </li>
729
  <?php } ?>
730
+ </ul>
731
+ </div>
732
+ </div><!-- #bws-filter-wrapper -->
733
+ <div class="clear"></div>
734
+ <?php
735
+ }
736
+ } elseif ( 'bws_themes' === $page || 'themes' === $tab ) {
737
+ require dirname( __FILE__ ) . '/product_list.php';
738
+ ?>
739
+ <h1><?php esc_html_e( 'Themes', 'bestwebsoft' ); ?></h1>
740
+ <div id="availablethemes" class="bws-availablethemes">
741
+ <div class="theme-browser content-filterable rendered">
742
+ <div class="themes wp-clearfix">
743
+ <?php
744
+ foreach ( $themes as $key => $theme ) {
745
+ $installed_theme = wp_get_theme( $theme->slug );
746
+ ?>
747
+ <div class="theme" tabindex="0">
748
+ <div class="theme-screenshot">
749
+ <img src="<?php echo esc_url( bws_menu_url( 'icons/themes/' ) . $theme->slug . '.png' ); ?>" alt="" />
750
+ </div>
751
+ <div class="theme-author"><?php printf( esc_html__( 'By %s', 'bestwebsoft' ), 'BestWebSoft' ); ?></div>
752
+ <h3 class="theme-name"><?php echo esc_html( $theme->name ); ?></h3>
753
+ <div class="theme-actions">
754
+ <a class="button button-secondary preview install-theme-preview" href="<?php echo esc_url( $theme->href ); ?>" target="_blank"><?php esc_html_e( 'Learn More', 'bestwebsoft' ); ?></a>
755
+ </div>
756
+ <?php
757
+ if ( $installed_theme->exists() ) {
758
+ if ( $wp_version < '4.6' ) {
759
+ ?>
760
+ <div class="theme-installed"><?php esc_html_e( 'Already Installed', 'bestwebsoft' ); ?></div>
761
  <?php } else { ?>
762
+ <div class="notice notice-success notice-alt inline"><p><?php esc_html_e( 'Installed', 'bestwebsoft' ); ?></p></div>
763
+ <?php
764
+ }
765
+ }
766
+ ?>
767
+ </div>
768
  <?php } ?>
769
+ <br class="clear" />
770
+ </div>
771
+ </div>
772
+ <p><a class="bws_browse_link" href="https://bestwebsoft.com/products/wordpress/themes/" target="_blank"><?php esc_html_e( 'Browse More WordPress Themes', 'bestwebsoft' ); ?> <span class="dashicons dashicons-arrow-right-alt2"></span></a></p>
773
+ </div>
774
+ <?php } elseif ( 'bws_system_status' === $page || 'system-status' === $tab ) { ?>
775
+ <h1><?php esc_html_e( 'System status', 'bestwebsoft' ); ?></h1>
776
+ <div class="updated fade notice is-dismissible inline"
777
+ <?php
778
+ if ( ! ( isset( $_REQUEST['bwsmn_form_submit'] ) || isset( $_REQUEST['bwsmn_form_submit_custom_email'] ) ) || '' !== $error ) {
779
+ echo 'style="display:none"';}
780
+ ?>
781
+ ><p><strong><?php echo esc_html( $message ); ?></strong></p></div>
782
+ <div class="error"
783
+ <?php
784
+ if ( '' === $error ) {
785
+ echo 'style="display:none"';}
786
+ ?>
787
+ ><p><strong><?php echo esc_html( $error ); ?></strong></p></div>
788
+ <form method="post" action="">
789
+ <p>
790
+ <input type="hidden" name="bwsmn_form_submit" value="submit" />
791
+ <input type="submit" class="button-primary" value="<?php esc_html_e( 'Send to support', 'bestwebsoft' ); ?>" />
792
+ <?php wp_nonce_field( plugin_basename( __FILE__ ), 'bwsmn_nonce_submit' ); ?>
793
+ </p>
794
+ </form>
795
+ <form method="post" action="">
796
+ <p>
797
+ <input type="hidden" name="bwsmn_form_submit_custom_email" value="submit" />
798
+ <input type="submit" class="button" value="<?php esc_html_e( 'Send to custom email &#187;', 'bestwebsoft' ); ?>" />
799
+ <input type="text" maxlength="250" value="" name="bwsmn_form_email" />
800
+ <?php wp_nonce_field( plugin_basename( __FILE__ ), 'bwsmn_nonce_submit_custom_email' ); ?>
801
+ </p>
802
+ </form>
803
  <?php foreach ( $system_info as $info ) { ?>
804
+ <table class="widefat bws-system-info" cellspacing="0">
805
+ <thead>
806
+ <tr>
807
+ <th colspan="2">
808
+ <strong>
809
+ <?php
810
+ echo esc_html( $info['name'] );
811
+ if ( isset( $info['count'] ) ) {
812
+ echo ' (' . intval( $info['count'] ) . ')';
813
+ }
814
+ ?>
815
+ </strong>
816
+ </th>
817
+ </tr>
818
+ </thead>
819
+ <tbody>
820
  <?php foreach ( $info['data'] as $key => $value ) { ?>
821
+ <tr>
822
+ <td scope="row"><?php echo esc_attr( $key ); ?></td>
823
+ <td scope="row"><?php echo esc_html( $value ); ?></td>
824
+ </tr>
825
  <?php } ?>
826
+ </tbody>
827
+ </table>
828
+ <?php
829
+ }
830
+ }
831
+ ?>
832
+ </div>
833
+ </div>
834
+ <?php
835
+ }
836
  }
837
 
838
  if ( ! function_exists( 'bws_get_banner_array' ) ) {
849
  array( 'zndskhc_hide_banner_on_plugin_page', 'zendesk-help-center/zendesk-help-center.php', '1.0.0' ),
850
  array( 'gglcptch_hide_banner_on_plugin_page', 'google-captcha/google-captcha.php', '1.18' ),
851
  array( 'mltlngg_hide_banner_on_plugin_page', 'multilanguage/multilanguage.php', '1.1.1' ),
852
+ array( 'adsns_hide_banner_on_plugin_page', 'bws-adsense/bws-adsense.php', '1.36' ),
853
  array( 'vstrsnln_hide_banner_on_plugin_page', 'visitors-online/visitors-online.php', '0.2' ),
854
  array( 'cstmsrch_hide_banner_on_plugin_page', 'custom-search-plugin/custom-search-plugin.php', '1.28' ),
855
  array( 'prtfl_hide_banner_on_plugin_page', 'portfolio/portfolio.php', '2.33' ),
874
  array( 'cptch_hide_banner_on_plugin_page', 'captcha-bws/captcha-bws.php', '3.8.4' ),
875
  array( 'gllr_hide_banner_on_plugin_page', 'gallery-plugin/gallery-plugin.php', '3.9.1' ),
876
  array( 'cntctfrm_for_ctfrmtdb_hide_banner_on_plugin_page', 'contact-form-plugin/contact_form.php', '3.62' ),
877
+ array( 'bwscrrntl_hide_banner_on_plugin_page', 'bws-car-rental/bws-car-rental.php', '0.0.1' ),
878
  array( 'rtng_hide_banner_on_plugin_page', 'rating-bws/rating-bws.php', '1.0.0' ),
879
  array( 'prflxtrflds_hide_banner_on_plugin_page', 'profile-extra-fields/profile-extra-fields.php', '1.1.3' ),
880
  array( 'psttcsv_hide_banner_on_plugin_page', 'post-to-csv/post-to-csv.php', '1.3.4' ),
881
+ array( 'cstmdmnpg_hide_banner_on_plugin_page', 'custom-admin-page/custom-admin-page.php', '1.0.0' ),
882
  );
883
  }
884
  }
bws_menu/class-bws-settings.php CHANGED
@@ -1,6 +1,7 @@
1
  <?php
2
  /**
3
  * Displays the content on the plugin settings page
 
4
  * @package BestWebSoft
5
  * @since 1.9.8
6
  */
@@ -9,8 +10,8 @@ if ( ! class_exists( 'Bws_Settings_Tabs' ) ) {
9
  class Bws_Settings_Tabs {
10
  private $tabs;
11
  private $pro_plugin_is_activated = false;
12
- private $custom_code_args = array();
13
- private $bws_plugin_link = '';
14
 
15
  public $plugin_basename;
16
  public $prefix;
@@ -33,7 +34,7 @@ if ( ! class_exists( 'Bws_Settings_Tabs' ) ) {
33
  public $trial_days;
34
  public $bws_hide_pro_option_exist = true;
35
 
36
- public $forbid_view = false;
37
  public $change_permission_attr = '';
38
 
39
  public $version;
@@ -49,6 +50,7 @@ if ( ! class_exists( 'Bws_Settings_Tabs' ) ) {
49
  *
50
  * The child class should call this constructor from its own constructor to override
51
  * the default $args.
 
52
  * @access public
53
  *
54
  * @param array|string $args
@@ -56,85 +58,90 @@ if ( ! class_exists( 'Bws_Settings_Tabs' ) ) {
56
  public function __construct( $args = array() ) {
57
  global $wp_version;
58
 
59
- $args = wp_parse_args( $args, array(
60
- 'plugin_basename' => '',
61
- 'prefix' => '',
62
- 'plugins_info' => array(),
63
- 'default_options' => array(),
64
- 'options' => array(),
65
- 'is_network_options' => false,
66
- 'tabs' => array(),
67
- 'doc_link' => '',
68
- 'doc_video_link' => '',
69
- 'wp_slug' => '',
70
- 'demo_data' => false,
71
- /* if this is free version and pro exist */
72
- 'link_key' => '',
73
- 'link_pn' => '',
74
- 'trial_days' => false,
75
- 'licenses' => array()
76
- ) );
 
 
 
77
 
78
  $args['plugins_info']['Name'] = str_replace( ' by BestWebSoft', '', $args['plugins_info']['Name'] );
79
 
80
- $this->plugin_basename = $args['plugin_basename'];
81
- $this->prefix = $args['prefix'];
82
- $this->plugins_info = $args['plugins_info'];
83
- $this->options = $args['options'];
84
- $this->default_options = $args['default_options'];
85
- $this->wp_slug = $args['wp_slug'];
86
- $this->demo_data = $args['demo_data'];
87
 
88
- $this->tabs = $args['tabs'];
89
- $this->is_network_options = $args['is_network_options'];
90
 
91
- $this->doc_link = $args['doc_link'];
92
- $this->doc_video_link = $args['doc_video_link'];
93
 
94
- $this->link_key = $args['link_key'];
95
- $this->link_pn = $args['link_pn'];
96
- $this->trial_days = $args['trial_days'];
97
- $this->licenses = $args['licenses'];
98
 
99
  $this->pro_page = $this->bws_license_plugin = '';
100
  /* get $bws_plugins */
101
- require( dirname( __FILE__ ) . '/product_list.php' );
102
  if ( isset( $bws_plugins[ $this->plugin_basename ] ) ) {
103
  if ( isset( $bws_plugins[ $this->plugin_basename ]['pro_settings'] ) ) {
104
- $this->pro_page = $bws_plugins[ $this->plugin_basename ]['pro_settings'];
105
- $this->bws_license_plugin = $bws_plugins[ $this->plugin_basename ]['pro_version'];
106
- }
107
 
108
- $this->bws_plugin_link = substr( $bws_plugins[ $this->plugin_basename ]['link'],0 , strpos( $bws_plugins[ $this->plugin_basename ]['link'], '?' ) );
109
 
110
- if ( ! empty( $this->link_key ) && ! empty( $this->link_pn ) )
111
- $this->bws_plugin_link .= '?k=' . $this->link_key . '&pn=' . $this->link_pn . '&v=' . $this->plugins_info["Version"] . '&wp_v=' . $wp_version;
 
112
  }
113
 
114
  $this->hide_pro_tabs = bws_hide_premium_options_check( $this->options );
115
- $this->version = '1.0.0';
116
- $this->is_multisite = is_multisite();
117
 
118
  if ( empty( $this->pro_page ) && array_key_exists( 'license', $this->tabs ) ) {
119
- $this->is_pro = true;
120
  $this->licenses[ $this->plugins_info['TextDomain'] ] = array(
121
  'name' => $this->plugins_info['Name'],
122
  'slug' => $this->plugins_info['TextDomain'],
123
- 'basename' => $this->plugin_basename
124
  );
125
  } else {
126
  $this->licenses[ $this->plugins_info['TextDomain'] ] = array(
127
- 'name' => $this->plugins_info['Name'],
128
- 'slug' => $this->plugins_info['TextDomain'],
129
- 'pro_slug' => substr( $this->bws_license_plugin, 0, stripos( $this->bws_license_plugin, '/' ) ),
130
- 'basename' => $this->plugin_basename,
131
- 'pro_basename' => $this->bws_license_plugin
132
  );
133
  }
134
  }
135
 
136
  /**
137
  * Displays the content of the "Settings" on the plugin settings page
 
138
  * @access public
139
  * @param void
140
  * @return void
@@ -155,38 +162,41 @@ if ( ! class_exists( 'Bws_Settings_Tabs' ) ) {
155
  $this->demo_data->bws_demo_confirm();
156
  } else {
157
  bws_show_settings_notice(); ?>
158
- <form class="bws_form" method="post" action="" enctype="multipart/form-data">
159
- <div id="poststuff">
160
- <div id="post-body" class="metabox-holder columns-2">
161
- <div id="post-body-content" style="position: relative;">
162
  <?php $this->display_tabs(); ?>
163
- </div><!-- #post-body-content -->
164
- <div id="postbox-container-1" class="postbox-container">
165
- <div class="meta-box-sortables ui-sortable">
166
- <div id="submitdiv" class="postbox">
167
- <h3 class="hndle"><?php _e( 'Information', 'bestwebsoft' ); ?></h3>
168
- <div class="inside">
169
- <div class="submitbox" id="submitpost">
170
- <div id="minor-publishing">
171
- <div id="misc-publishing-actions">
172
- <?php /**
173
- * action - Display additional content for #misc-publishing-actions
174
- */
175
- do_action( __CLASS__ . '_information_postbox_top' ); ?>
176
- <?php if ( $this->is_pro ) {
 
 
 
177
  if ( isset( $bstwbsftwppdtplgns_options['wrong_license_key'][ $this->plugin_basename ] ) || empty( $bstwbsftwppdtplgns_options['time_out'] ) || ! array_key_exists( $this->plugin_basename, $bstwbsftwppdtplgns_options['time_out'] ) ) {
178
- $license_type = 'Pro';
179
  $license_status = __( 'Inactive', 'bestwebsoft' ) . ' <a href="#' . $this->prefix . '_license_tab" class="bws_trigger_tab_click">' . __( 'Learn More', 'bestwebsoft' ) . '</a>';
180
  } else {
181
  $finish = strtotime( $bstwbsftwppdtplgns_options['time_out'][ $this->plugin_basename ] );
182
- $today = strtotime( date( "m/d/Y" ) );
183
  if ( isset( $bstwbsftwppdtplgns_options['trial'][ $this->plugin_basename ] ) ) {
184
  $license_type = 'Trial Pro';
185
 
186
  if ( $finish < $today ) {
187
  $license_status = __( 'Expired', 'bestwebsoft' );
188
  } else {
189
- $daysleft = floor( ( $finish - $today ) / ( 60*60*24 ) );
190
  $license_status = sprintf( __( '%s day(-s) left', 'bestwebsoft' ), $daysleft );
191
  }
192
  $license_status .= '. <a target="_blank" href="' . esc_url( $this->plugins_info['PluginURI'] ) . '">' . __( 'Upgrade to Pro', 'bestwebsoft' ) . '</a>';
@@ -198,125 +208,157 @@ if ( ! class_exists( 'Bws_Settings_Tabs' ) ) {
198
  $license_status = __( 'Active', 'bestwebsoft' );
199
  }
200
  }
201
- } ?>
202
- <div class="misc-pub-section">
203
- <strong><?php _e( 'License', 'bestwebsoft' ); ?>:</strong> <?php echo $license_type; ?>
204
- </div>
205
- <div class="misc-pub-section">
206
- <strong><?php _e( 'Status', 'bestwebsoft' ); ?>:</strong> <?php echo $license_status; ?>
207
- </div><!-- .misc-pub-section -->
 
208
  <?php } ?>
209
- <div class="misc-pub-section">
210
- <strong><?php _e( 'Version', 'bestwebsoft' ); ?>:</strong> <?php echo $this->plugins_info['Version']; ?>
211
- </div><!-- .misc-pub-section -->
212
- <?php /**
213
- * action - Display additional content for #misc-publishing-actions
214
- */
215
- do_action( __CLASS__ . '_information_postbox_bottom' ); ?>
216
- </div>
217
- <div class="clear"></div>
218
- </div>
219
- <div id="major-publishing-actions">
220
- <div id="publishing-action">
221
- <input type="hidden" name="<?php echo $this->prefix; ?>_form_submit" value="submit" />
222
- <input id="bws-submit-button" type="submit" class="button button-primary button-large" value="<?php _e( 'Save Changes', 'bestwebsoft' ); ?>" />
 
 
223
  <?php wp_nonce_field( $this->plugin_basename, 'bws_nonce_name' ); ?>
224
- </div>
225
- <div class="clear"></div>
226
- </div>
227
- </div>
228
- </div>
229
- </div>
230
- <?php /**
231
- * action - Display custom metabox
 
232
  */
233
  do_action( __CLASS__ . '_display_metabox' );
234
 
235
- if ( function_exists( 'bws_affiliate_postbox' ) )
236
- bws_affiliate_postbox(); ?>
237
- </div>
238
- </div>
239
- <div id="postbox-container-2" class="postbox-container">
240
- <?php /**
241
- * action - Display additional content for #postbox-container-2
 
 
 
242
  */
243
- do_action( __CLASS__ . '_display_second_postbox' ); ?>
244
- <div class="submit">
245
- <input type="submit" class="button button-primary button-large" value="<?php _e( 'Save Changes', 'bestwebsoft' ); ?>" />
246
- </div>
247
- <?php if ( ! empty( $this->wp_slug ) )
248
- bws_plugin_reviews_block( $this->plugins_info['Name'], $this->wp_slug ); ?>
249
- </div>
250
- </div>
251
- </form>
252
- </div>
253
- <?php }
 
 
 
 
 
254
  }
255
 
256
  /**
257
  * Displays the Tabs
 
258
  * @access public
259
  * @param void
260
  * @return void
261
  */
262
- public function display_tabs() { ?>
263
- <div id="bws_settings_tabs_wrapper">
264
- <ul id="bws_settings_tabs">
 
265
  <?php $this->display_tabs_list(); ?>
266
- </ul>
267
  <?php $this->display_tabs_content(); ?>
268
- <div class="clear"></div>
269
- <input type="hidden" name="bws_active_tab" value="<?php if ( isset( $_REQUEST['bws_active_tab'] ) ) echo esc_attr( $_REQUEST['bws_active_tab'] ); ?>" />
270
- </div>
271
- <?php }
 
 
 
 
 
272
 
273
  /**
274
  * Displays the list of tabs
 
275
  * @access private
276
  * @return void
277
  */
278
  private function display_tabs_list() {
279
  foreach ( $this->tabs as $tab_slug => $data ) {
280
- if ( ! empty( $data['is_pro'] ) && $this->hide_pro_tabs )
281
  continue;
 
282
  $tab_class = 'bws-tab-' . $tab_slug;
283
- if ( ! empty( $data['is_pro'] ) )
284
  $tab_class .= ' bws_pro_tab';
285
- if ( ! empty( $data['class'] ) )
286
- $tab_class .= ' ' . $data['class']; ?>
287
- <li class="<?php echo $tab_class; ?>" data-slug="<?php echo $tab_slug; ?>">
288
- <a href="#<?php echo $this->prefix; ?>_<?php echo $tab_slug; ?>_tab">
289
- <span><?php echo esc_html( $data['label'] ); ?></span>
290
- </a>
291
- </li>
292
- <?php }
 
 
 
 
293
  }
294
 
295
  /**
296
  * Displays the content of tabs
 
297
  * @access private
298
  * @param string $tab_slug
299
  * @return void
300
  */
301
  public function display_tabs_content() {
302
  foreach ( $this->tabs as $tab_slug => $data ) {
303
- if ( ! empty( $data['is_pro'] ) && $this->hide_pro_tabs )
304
- continue; ?>
305
- <div class="bws_tab ui-tabs-panel ui-widget-content ui-corner-bottom" id="<?php echo esc_attr( $this->prefix . '_' . $tab_slug . '_tab' ); ?>" aria-labelledby="ui-id-2" role="tabpanel" aria-hidden="false" style="display: block;">
306
- <?php $tab_slug = str_replace( '-', '_', $tab_slug );
 
 
 
307
  if ( method_exists( $this, 'tab_' . $tab_slug ) ) {
308
  call_user_func( array( $this, 'tab_' . $tab_slug ) );
309
  do_action_ref_array( __CLASS__ . '_after_tab_' . $tab_slug, array( &$this ) );
310
- } ?>
311
- </div>
312
- <?php }
 
 
313
  }
314
 
315
  /**
316
  * Save all options from all tabs and display errors\messages
 
317
  * @access public
318
  * @param void
319
- * @return void
320
  */
321
  public function save_all_tabs_options() {
322
  $message = $notice = $error = '';
@@ -327,14 +369,18 @@ if ( ! class_exists( 'Bws_Settings_Tabs' ) ) {
327
  /* Go Pro - check license key */
328
  } elseif ( isset( $_POST['bws_license_submit'] ) && check_admin_referer( $this->plugin_basename, 'bws_nonce_name' ) ) {
329
  $result = $this->save_options_license_key();
330
- if ( ! empty( $result['empty_field_error'] ) )
331
  $error = $result['empty_field_error'];
332
- if ( ! empty( $result['error'] ) )
 
333
  $error = $result['error'];
334
- if ( ! empty( $result['message'] ) )
 
335
  $message = $result['message'];
336
- if ( ! empty( $result['notice'] ) )
 
337
  $notice = $result['notice'];
 
338
  /* check demo data */
339
  } else {
340
  $demo_result = ! empty( $this->demo_data ) ? $this->demo_data->bws_handle_demo_data() : false;
@@ -342,30 +388,30 @@ if ( ! class_exists( 'Bws_Settings_Tabs' ) ) {
342
  if ( ! empty( $demo_result ) && is_array( $demo_result ) ) {
343
  $error = $demo_result['error'];
344
  $message = $demo_result['done'];
345
- if ( ! empty( $demo_result['done'] ) && ! empty( $demo_result['options'] ) )
346
  $this->options = $demo_result['options'];
 
347
  }
348
  /* Save options */
349
- } elseif ( ! isset( $_REQUEST['bws_restore_default'] ) && ! isset( $_POST['bws_handle_demo'] ) && isset( $_REQUEST[ $this->prefix . '_form_submit'] ) && check_admin_referer( $this->plugin_basename, 'bws_nonce_name' ) ) {
350
  /* save tabs */
351
  $result = $this->save_options();
352
- if ( ! empty( $result['error'] ) )
353
  $error = $result['error'];
354
- if ( ! empty( $result['message'] ) )
 
355
  $message = $result['message'];
356
- if ( ! empty( $result['notice'] ) )
 
357
  $notice = $result['notice'];
 
358
 
359
- if ( '' == $this->change_permission_attr ) {
360
  /* save `misc` tab */
361
  $result = $this->save_options_misc();
362
- if ( ! empty( $result['notice'] ) )
363
  $notice .= $result['notice'];
364
- }
365
-
366
- if ( array_key_exists( 'custom_code', $this->tabs ) ) {
367
- /* save `custom code` tab */
368
- $this->save_options_custom_code();
369
  }
370
  }
371
  }
@@ -375,25 +421,44 @@ if ( ! class_exists( 'Bws_Settings_Tabs' ) ) {
375
 
376
  /**
377
  * Display error\message\notice
 
378
  * @access public
379
  * @param $save_results - array with error\message\notice
380
  * @return void
381
  */
382
  public function display_messages( $save_results ) {
383
  /**
384
- * action - Display custom error\message\notice
385
  */
386
- do_action( __CLASS__ . '_display_custom_messages', $save_results ); ?>
387
- <div class="updated fade inline" <?php if ( empty( $save_results['message'] ) ) echo "style=\"display:none\""; ?>><p><strong><?php echo $save_results['message']; ?></strong></p></div>
388
- <div class="updated bws-notice inline" <?php if ( empty( $save_results['notice'] ) ) echo "style=\"display:none\""; ?>><p><strong><?php echo $save_results['notice']; ?></strong></p></div>
389
- <div class="error inline" <?php if ( empty( $save_results['error'] ) ) echo "style=\"display:none\""; ?>><p><strong><?php echo $save_results['error']; ?></strong></p></div>
390
- <?php }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
391
 
392
  /**
393
  * Save plugin options to the database
 
394
  * @access public
395
  * @param ab
396
- * @return array The action results
397
  * @abstract
398
  */
399
  public function save_options() {
@@ -402,255 +467,272 @@ if ( ! class_exists( 'Bws_Settings_Tabs' ) ) {
402
 
403
  /**
404
  * Get 'custom_code' status and content
 
405
  * @access private
406
  */
407
  private function get_custom_code() {
408
- global $bstwbsftwppdtplgns_options;
409
 
410
  $this->custom_code_args = array(
411
  'is_css_active' => false,
412
- 'content_css' => '',
413
- 'css_writeable' => false,
414
  'is_php_active' => false,
415
- 'content_php' => '',
416
- 'php_writeable' => false,
417
- 'is_js_active' => false,
418
- 'content_js' => '',
419
- 'js_writeable' => false,
420
  );
421
 
422
- if ( ! $this->upload_dir )
423
  $this->upload_dir = wp_upload_dir();
 
424
 
425
  $folder = $this->upload_dir['basedir'] . '/bws-custom-code';
426
- if ( ! $this->upload_dir["error"] ) {
427
- if ( ! is_dir( $folder ) )
428
- wp_mkdir_p( $folder, 0755 );
429
-
430
- $index_file = $this->upload_dir['basedir'] . '/bws-custom-code/index.php';
431
- if ( ! file_exists( $index_file ) ) {
432
- if ( $f = fopen( $index_file, 'w+' ) )
433
- fclose( $f );
434
- }
435
- }
436
 
437
- if ( $this->is_multisite )
438
  $this->custom_code_args['blog_id'] = get_current_blog_id();
 
 
 
439
 
440
  foreach ( array( 'css', 'php', 'js' ) as $extension ) {
441
- $file = 'bws-custom-code.' . $extension;
442
  $real_file = $folder . '/' . $file;
443
-
444
- if ( file_exists( $real_file ) ) {
445
  update_recently_edited( $real_file );
446
- $this->custom_code_args["content_{$extension}"] = file_get_contents( $real_file );
447
  if ( ( $this->is_multisite && isset( $bstwbsftwppdtplgns_options['custom_code'][ $this->custom_code_args['blog_id'] ][ $file ] ) ) ||
448
- ( ! $this->is_multisite && isset( $bstwbsftwppdtplgns_options['custom_code'][ $file ] ) ) ) {
449
- $this->custom_code_args["is_{$extension}_active"] = true;
 
 
 
450
  }
451
- if ( is_writeable( $real_file ) )
452
- $this->custom_code_args["{$extension}_writeable"] = true;
453
  } else {
454
- $this->custom_code_args["{$extension}_writeable"] = true;
455
- if ( 'php' == $extension )
456
- $this->custom_code_args["content_{$extension}"] = "<?php" . "\n" . "if ( ! defined( 'ABSPATH' ) ) exit;" . "\n" . "if ( ! defined( 'BWS_GLOBAL' ) ) exit;" . "\n\n" . "/* Start your code here */" . "\n";
 
457
  }
458
  }
459
  }
460
 
461
  /**
462
  * Display 'custom_code' tab
 
463
  * @access private
464
  */
465
- private function tab_custom_code() { ?>
466
- <h3 class="bws_tab_label"><?php _e( 'Custom Code', 'bestwebsoft' ); ?></h3>
467
- <?php $this->help_phrase(); ?>
468
- <hr>
469
- <?php if ( ! current_user_can( 'edit_plugins' ) ) {
470
- echo '<p>' . __( 'You do not have sufficient permissions to edit plugins for this site.', 'bestwebsoft' ) . '</p>';
471
- return;
472
- }
473
-
474
- $list = array(
475
- 'css' => array( 'description' => __( 'These styles will be added to the header on all pages of your site.', 'bestwebsoft' ),
476
- 'learn_more_link' => 'https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_started'
477
- ),
478
- 'php' => array( 'description' => sprintf( __( 'This PHP code will be hooked to the %s action and will be printed on front end only.', 'bestwebsoft' ), '<a href="https://codex.wordpress.org/Plugin_API/Action_Reference/init" target="_blank"><code>init</code></a>' ),
479
- 'learn_more_link' => 'https://php.net/'
480
- ),
481
- 'js' => array( 'description' => __( 'These code will be added to the header on all pages of your site.', 'bestwebsoft' ),
482
- 'learn_more_link' => 'https://developer.mozilla.org/en-US/docs/Web/JavaScript'
483
- ),
484
- );
485
-
486
- if ( ! $this->custom_code_args['css_writeable'] ||
487
- ! $this->custom_code_args['php_writeable'] ||
488
- ! $this->custom_code_args['js_writeable'] ) { ?>
489
- <p><em><?php printf( __( 'You need to make this files writable before you can save your changes. See %s the Codex %s for more information.', 'bestwebsoft' ),
490
- '<a href="https://codex.wordpress.org/Changing_File_Permissions" target="_blank">',
491
- '</a>' ); ?></em></p>
492
- <?php }
493
-
494
- foreach ( $list as $extension => $extension_data ) {
495
- $name = 'js' == $extension ? 'JavaScript' : strtoupper( $extension ); ?>
496
- <p><big>
497
- <strong><?php echo $name; ?></strong>
498
- <?php if ( ! $this->custom_code_args["{$extension}_writeable"] )
499
- echo '(' . __( 'Browsing', 'bestwebsoft' ) . ')'; ?>
500
- </big></p>
501
- <p class="bws_info">
502
- <label>
503
- <input type="checkbox" name="bws_custom_<?php echo $extension; ?>_active" value="1" <?php if ( $this->custom_code_args["is_{$extension}_active"] ) echo "checked"; ?> />
504
- <?php printf( __( 'Activate custom %s code.', 'bestwebsoft' ), $name ); ?>
505
- </label>
506
- </p>
507
- <textarea cols="70" rows="25" name="bws_newcontent_<?php echo $extension; ?>" id="bws_newcontent_<?php echo $extension; ?>"><?php if ( isset( $this->custom_code_args["content_{$extension}"] ) ) echo esc_textarea( $this->custom_code_args["content_{$extension}"] ); ?></textarea>
508
- <p class="bws_info">
509
- <?php echo $extension_data['description']; ?>
510
- <br>
511
- <a href="<?php echo esc_url( $extension_data['learn_more_link'] ); ?>" target="_blank">
512
- <?php printf( __( 'Learn more about %s', 'bestwebsoft' ), $name ); ?>
513
- </a>
514
- </p>
515
- <?php }
516
- }
517
-
518
- /**
519
- * Save plugin options to the database
520
- * @access private
521
- * @return array The action results
522
- */
523
- private function save_options_custom_code() {
524
- global $bstwbsftwppdtplgns_options;
525
- $folder = $this->upload_dir['basedir'] . '/bws-custom-code';
526
-
527
- foreach ( array( 'css', 'php', 'js' ) as $extension ) {
528
- $file = 'bws-custom-code.' . $extension;
529
- $real_file = $folder . '/' . $file;
530
-
531
- if ( isset( $_POST["bws_newcontent_{$extension}"] ) &&
532
- $this->custom_code_args["{$extension}_writeable"] ) {
533
- $newcontent = trim( wp_unslash( $_POST["bws_newcontent_{$extension}"] ) );
534
- if ( 'css' == $extension )
535
- $newcontent = wp_kses( $newcontent, array( '\'', '\"' ) );
536
 
537
- if ( ! empty( $newcontent ) && isset( $_POST["bws_custom_{$extension}_active"] ) ) {
538
- $this->custom_code_args["is_{$extension}_active"] = true;
539
- if ( $this->is_multisite ) {
540
- $bstwbsftwppdtplgns_options['custom_code'][ $this->custom_code_args['blog_id'] ][ $file ] = ( 'php' == $extension ) ? $real_file : $this->upload_dir['baseurl'] . '/bws-custom-code/' . $file;
541
- } else {
542
- $bstwbsftwppdtplgns_options['custom_code'][ $file ] = ( 'php' == $extension ) ? $real_file : $this->upload_dir['baseurl'] . '/bws-custom-code/' . $file;
543
- }
544
- } else {
545
- $this->custom_code_args["is_{$extension}_active"] = false;
546
- if ( $this->is_multisite ) {
547
- if ( isset( $bstwbsftwppdtplgns_options['custom_code'][ $this->custom_code_args['blog_id'] ][ $file ] ) )
548
- unset( $bstwbsftwppdtplgns_options['custom_code'][ $this->custom_code_args['blog_id'] ][ $file ] );
549
- } else {
550
- if ( isset( $bstwbsftwppdtplgns_options['custom_code'][ $file ] ) )
551
- unset( $bstwbsftwppdtplgns_options['custom_code'][ $file ] );
552
- }
553
- }
554
- if ( $f = fopen( $real_file, 'w+' ) ) {
555
- fwrite( $f, $newcontent );
556
- fclose( $f );
557
- $this->custom_code_args["content_{$extension}"] = $newcontent;
558
- }
559
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
560
  }
561
-
562
- if ( $this->is_multisite )
563
- update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
564
- else
565
- update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
566
  }
567
 
568
  /**
569
  * Display 'misc' tab
 
570
  * @access private
571
  */
572
  private function tab_misc() {
573
- global $bstwbsftwppdtplgns_options; ?>
574
- <h3 class="bws_tab_label"><?php _e( 'Miscellaneous Settings', 'bestwebsoft' ); ?></h3>
 
575
  <?php $this->help_phrase(); ?>
576
- <hr>
577
- <?php /**
578
- * action - Display custom options on the Import / Export' tab
 
579
  */
580
  do_action( __CLASS__ . '_additional_misc_options' );
581
 
582
- if ( ! $this->forbid_view && ! empty( $this->change_permission_attr ) ) { ?>
583
- <div class="error inline bws_visible"><p><strong><?php _e( "Notice", 'bestwebsoft' ); ?>:</strong> <strong><?php printf( __( "It is prohibited to change %s settings on this site in the %s network settings.", 'bestwebsoft' ), $this->plugins_info["Name"], $this->plugins_info["Name"] ); ?></strong></p></div>
584
- <?php }
585
- if ( $this->forbid_view ) { ?>
586
- <div class="error inline bws_visible"><p><strong><?php _e( "Notice", 'bestwebsoft' ); ?>:</strong> <strong><?php printf( __( "It is prohibited to view %s settings on this site in the %s network settings.", 'bestwebsoft' ), $this->plugins_info["Name"], $this->plugins_info["Name"] ); ?></strong></p></div>
 
 
 
587
  <?php } else { ?>
588
- <table class="form-table">
589
- <?php /**
590
- * action - Display custom options on the 'misc' tab
 
591
  */
592
  do_action( __CLASS__ . '_additional_misc_options_affected' );
593
- if ( ! empty( $this->pro_page ) && $this->bws_hide_pro_option_exist ) { ?>
594
- <tr>
595
- <th scope="row"><?php _e( 'Pro Options', 'bestwebsoft' ); ?></th>
596
- <td>
597
- <label>
598
- <input <?php echo $this->change_permission_attr; ?> name="bws_hide_premium_options_submit" type="checkbox" value="1" <?php if ( ! $this->hide_pro_tabs ) echo 'checked="checked "'; ?> />
599
- <span class="bws_info"><?php _e( 'Enable to display plugin Pro options.', 'bestwebsoft' ); ?></span>
600
- </label>
601
- </td>
602
- </tr>
 
 
 
 
 
 
603
  <?php } ?>
604
- <tr>
605
- <th scope="row"><?php _e( 'Track Usage', 'bestwebsoft' ); ?></th>
606
- <td>
607
- <label>
608
- <input <?php echo $this->change_permission_attr; ?> name="bws_track_usage" type="checkbox" value="1" <?php if ( ! empty( $bstwbsftwppdtplgns_options['track_usage']['products'][ $this->plugin_basename ] ) ) echo 'checked="checked "'; ?>/>
609
- <span class="bws_info"><?php _e( 'Enable to allow tracking plugin usage anonymously in order to make it better.', 'bestwebsoft' ); ?></span>
610
- </label>
611
- </td>
612
- </tr>
613
- <tr>
614
- <th scope="row"><?php _e( 'Default Settings', 'bestwebsoft' ); ?></th>
615
- <td>
616
- <input<?php echo $this->change_permission_attr; ?> name="bws_restore_default" type="submit" class="button" value="<?php _e( 'Restore Settings', 'bestwebsoft' ); ?>" />
617
- <div class="bws_info"><?php _e( 'This will restore plugin settings to defaults.', 'bestwebsoft' ); ?></div>
618
- </td>
619
- </tr>
620
- </table>
621
- <?php }
 
 
 
 
 
 
622
  }
623
 
624
  /**
625
  * Display 'Import / Export' tab
 
626
  * @access private
627
  */
628
- public function tab_import_export() { ?>
629
- <h3 class="bws_tab_label"><?php _e( 'Import / Export', 'bestwebsoft' ); ?></h3>
 
630
  <?php $this->help_phrase(); ?>
631
- <hr>
632
- <?php /**
633
- * action - Display custom options on the Import / Export' tab
 
634
  */
635
  do_action( __CLASS__ . '_additional_import_export_options' );
636
 
637
- if ( ! $this->forbid_view && ! empty( $this->change_permission_attr ) ) { ?>
638
- <div class="error inline bws_visible"><p><strong><?php _e( "Notice", 'bestwebsoft' ); ?>:</strong> <strong><?php printf( __( "It is prohibited to change %s settings on this site in the %s network settings.", 'bestwebsoft' ), $this->plugins_info["Name"], $this->plugins_info["Name"] ); ?></strong></p></div>
639
- <?php }
640
- if ( $this->forbid_view ) { ?>
641
- <div class="error inline bws_visible"><p><strong><?php _e( "Notice", 'bestwebsoft' ); ?>:</strong> <strong><?php printf( __( "It is prohibited to view %s settings on this site in the %s network settings.", 'bestwebsoft' ), $this->plugins_info["Name"], $this->plugins_info["Name"] ); ?></strong></p></div>
 
 
 
642
  <?php } else { ?>
643
- <table class="form-table">
644
- <?php /**
645
- * action - Display custom options on the Import / Export' tab
 
646
  */
647
- do_action( __CLASS__ . '_additional_import_export_options_affected' ); ?>
648
- </table>
649
- <?php }
 
 
650
  }
651
 
652
  /**
653
  * Save plugin options to the database
 
654
  * @access private
655
  */
656
  private function save_options_misc() {
@@ -659,81 +741,88 @@ if ( ! class_exists( 'Bws_Settings_Tabs' ) ) {
659
 
660
  /* hide premium options */
661
  if ( ! empty( $this->pro_page ) ) {
662
- if ( isset( $_POST['bws_hide_premium_options'] ) ) {
663
- $hide_result = bws_hide_premium_options( $this->options );
664
  $this->hide_pro_tabs = true;
665
- $this->options = $hide_result['options'];
666
- if ( ! empty( $hide_result['message'] ) )
667
  $notice = $hide_result['message'];
668
- if ( $this->is_network_options )
 
669
  update_site_option( $this->prefix . '_options', $this->options );
670
- else
671
  update_option( $this->prefix . '_options', $this->options );
672
- } else if ( isset( $_POST['bws_hide_premium_options_submit'] ) ) {
 
673
  if ( ! empty( $this->options['hide_premium_options'] ) ) {
674
  $key = array_search( get_current_user_id(), $this->options['hide_premium_options'] );
675
- if ( false !== $key )
676
  unset( $this->options['hide_premium_options'][ $key ] );
677
- if ( $this->is_network_options )
 
678
  update_site_option( $this->prefix . '_options', $this->options );
679
- else
680
  update_option( $this->prefix . '_options', $this->options );
 
681
  }
682
  $this->hide_pro_tabs = false;
683
  } else {
684
  if ( empty( $this->options['hide_premium_options'] ) ) {
685
  $this->options['hide_premium_options'][] = get_current_user_id();
686
- if ( $this->is_network_options )
687
  update_site_option( $this->prefix . '_options', $this->options );
688
- else
689
  update_option( $this->prefix . '_options', $this->options );
 
690
  }
691
  $this->hide_pro_tabs = true;
692
  }
693
  }
694
  /* Save 'Track Usage' option */
695
- if ( isset( $_POST['bws_track_usage'] ) ) {
696
  if ( empty( $bstwbsftwppdtplgns_options['track_usage']['products'][ $this->plugin_basename ] ) ) {
697
  $bstwbsftwppdtplgns_options['track_usage']['products'][ $this->plugin_basename ] = true;
698
  $track_usage = true;
699
  }
700
  } else {
701
  if ( ! empty( $bstwbsftwppdtplgns_options['track_usage']['products'][ $this->plugin_basename ] ) ) {
702
- unset( $bstwbsftwppdtplgns_options['track_usage']['products'][ $this->plugin_basename ] ); false;
 
703
  $track_usage = false;
704
  }
705
  }
706
  if ( isset( $track_usage ) ) {
707
  $usage_id = ! empty( $bstwbsftwppdtplgns_options['track_usage']['usage_id'] ) ? $bstwbsftwppdtplgns_options['track_usage']['usage_id'] : false;
708
  /* send data */
709
- $options = array(
710
- 'timeout' => 3,
711
- 'body' => array(
712
- 'url' => get_bloginfo( 'url' ),
713
- 'wp_version' => $wp_version,
714
- 'is_active' => $track_usage,
715
- 'product' => $this->plugin_basename,
716
- 'version' => $this->plugins_info['Version'],
717
- 'usage_id' => $usage_id,
718
  ),
719
- 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
720
  );
721
  $raw_response = wp_remote_post( 'https://bestwebsoft.com/wp-content/plugins/products-statistics/track-usage/', $options );
722
 
723
- if ( ! is_wp_error( $raw_response ) && 200 == wp_remote_retrieve_response_code( $raw_response ) ) {
724
  $response = maybe_unserialize( wp_remote_retrieve_body( $raw_response ) );
725
 
726
  if ( is_array( $response ) &&
727
- ! empty( $response['usage_id'] ) &&
728
- $response['usage_id'] != $usage_id ) {
729
  $bstwbsftwppdtplgns_options['track_usage']['usage_id'] = $response['usage_id'];
730
  }
731
  }
732
 
733
- if ( $this->is_multisite )
734
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
735
- else
736
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
 
737
  }
738
 
739
  return compact( 'notice' );
@@ -743,329 +832,346 @@ if ( ! class_exists( 'Bws_Settings_Tabs' ) ) {
743
  *
744
  */
745
  public function tab_license() {
746
- global $wp_version, $bstwbsftwppdtplgns_options; ?>
747
- <h3 class="bws_tab_label"><?php _e( 'License Key', 'bestwebsoft' ); ?></h3>
 
748
  <?php $this->help_phrase(); ?>
749
- <hr>
750
  <?php
751
  foreach ( $this->licenses as $single_license ) {
752
- $pro_plugin_name = ( strpos( $single_license['name'], 'Pro' ) ) ? $single_license['name'] : $single_license['name'] . ' ' . 'Pro';
753
- if ( ! empty( $this->pro_page ) || ! empty( $single_license['pro_basename'] ) ) {
754
 
755
  if ( $this->pro_plugin_is_activated && ( empty( $single_license['pro_basename'] ) || isset( $this->bws_license_plugin ) ) ) {
756
- $url = 'https://bestwebsoft.com/wp-content/plugins/paid-products/plugins/downloads/?bws_first_download=' . $this->bws_license_plugin . '&bws_license_key=' . $bstwbsftwppdtplgns_options[ $this->bws_license_plugin ] . '&download_from=5'; ?>
 
757
  <table class="form-table">
758
- <tr>
759
- <th scope="row"><?php echo $pro_plugin_name . ' License'; ?></th>
760
- <td>
761
- <p>
762
- <strong><?php _e( 'Your Pro plugin is ready', 'bestwebsoft' ); ?></strong>
763
  <br>
764
- <?php _e( 'Your plugin has been zipped, and now is ready to download.', 'bestwebsoft' ); ?>
765
  </p>
766
  <p>
767
- <a class="button button-secondary" target="_parent" href="<?php echo esc_url( $url ); ?>"><?php _e( 'Download Now', 'bestwebsoft' ); ?></a>
768
  </p>
769
  <br>
770
  <p>
771
- <strong><?php _e( 'Need help installing the plugin?', 'bestwebsoft' ); ?></strong>
772
  <br>
773
- <a target="_blank" href="https://bestwebsoft.com/documentation/how-to-install-a-wordpress-product/how-to-install-a-wordpress-plugin/"><?php _e( 'How to install WordPress plugin from your admin Dashboard (ZIP archive)', 'bestwebsoft' ); ?></a>
774
  </p>
775
  <br>
776
  <p>
777
- <strong><?php _e( 'Get Started', 'bestwebsoft' ); ?></strong>
778
  <br>
779
- <a target="_blank" href="https://bestwebsoft.com/documentation/"><?php _e( 'Documentation', 'bestwebsoft' ); ?></a>
780
  <br>
781
- <a target="_blank" href="https://www.youtube.com/user/bestwebsoft"><?php _e( 'Video Instructions', 'bestwebsoft' ); ?></a>
782
  <br>
783
- <a target="_blank" href="https://support.bestwebsoft.com"><?php _e( 'Knowledge Base', 'bestwebsoft' ); ?></a>
784
  </p>
785
- </td>
786
- </tr>
787
- </table>
788
- <?php } else {
 
789
  $attr = $license_key = '';
790
  if ( isset( $bstwbsftwppdtplgns_options['go_pro'][ $this->bws_license_plugin ]['count'] ) &&
791
- '5' < $bstwbsftwppdtplgns_options['go_pro'][ $this->bws_license_plugin ]['count'] &&
792
- $bstwbsftwppdtplgns_options['go_pro'][ $this->bws_license_plugin ]['time'] > ( time() - ( 24 * 60 * 60 ) ) )
793
  $attr = 'disabled="disabled"';
 
794
 
795
  if ( ! empty( $single_license['pro_basename'] ) ) {
796
  $license_key = ! empty( $bstwbsftwppdtplgns_options[ $single_license['pro_basename'] ] ) ? $bstwbsftwppdtplgns_options[ $single_license['pro_basename'] ] : '';
797
- } ?>
798
- <table class="form-table">
799
- <tr>
800
- <th scope="row"><?php echo $pro_plugin_name . ' License'; ?></th>
801
- <td>
802
- <input <?php echo $attr; ?> type="text" name="bws_license_key_<?php echo ( ! empty( $single_license['pro_slug'] ) ) ? $single_license['pro_slug'] : $single_license['slug']; ?>" value="<?php echo esc_attr( $license_key ); ?>" />
803
- <input <?php echo $attr; ?> type="hidden" name="bws_license_plugin_<?php echo ( ! empty( $single_license['pro_slug'] ) ) ? $single_license['pro_slug'] : $single_license['slug']; ?>" value="<?php echo esc_attr( ( ! empty( $single_license['pro_slug'] ) ) ? $single_license['pro_slug'] : $single_license['slug'] ); ?>" />
804
- <input <?php echo $attr; ?> type="submit" class="button button-secondary" name="bws_license_submit" value="<?php _e( 'Activate', 'bestwebsoft' ); ?>" />
805
- <div class="bws_info">
806
- <?php printf( __( 'Enter your license key to activate %s and get premium plugin features.', 'bestwebsoft' ), '<a href="' . $this->bws_plugin_link . '" target="_blank" title="' . $pro_plugin_name . '">' . $pro_plugin_name . '</a>' ); ?>
807
- </div>
808
- <?php if ( '' != $attr ) { ?>
809
- <p><?php _e( "Unfortunately, you have exceeded the number of available tries per day. Please, upload the plugin manually.", 'bestwebsoft' ); ?></p>
810
- <?php }
811
- if ( $this->trial_days !== false )
812
- echo '<p>' . __( 'or', 'bestwebsoft' ) . ' <a href="' . esc_url( $this->plugins_info['PluginURI'] . 'trial/?k=' . $this->link_key . '&pn=' . $this->link_pn . '&v=' . $this->plugins_info["Version"] . '&wp_v=' . $wp_version ) . '" target="_blank">' . sprintf( __( 'Start Your Free %s-Day Trial Now', 'bestwebsoft' ), $this->trial_days ) . '</a></p>'; ?>
813
- </td>
814
- </tr>
815
- </table>
816
- <?php }
 
 
 
 
 
 
817
  } else {
818
  global $bstwbsftwppdtplgns_options;
819
- $license_key = ( isset( $bstwbsftwppdtplgns_options[ $single_license['basename'] ] ) ) ? $bstwbsftwppdtplgns_options[ $single_license['basename'] ] : ''; ?>
820
- <table class="form-table">
821
- <tr>
822
- <th scope="row"><?php echo $pro_plugin_name . ' License'; ?></th>
823
- <td>
824
- <input type="text" maxlength="100" name="bws_license_key_<?php echo $single_license['slug']; ?>" value="<?php echo esc_attr( $license_key ); ?>" />
825
- <input type="submit" class="button button-secondary" name="bws_license_submit" value="<?php _e( 'Check license key', 'bestwebsoft' ); ?>" />
826
- <div class="bws_info">
827
- <?php _e( 'If necessary, you can check if the license key is correct or reenter it in the field below.', 'bestwebsoft' ); ?>
828
- </div>
829
- </td>
830
- </tr>
831
- </table>
832
- <?php }
833
- } ?>
834
- <table class="form-table">
835
- <tr>
836
- <th scope="row"><?php _e( 'Manage License Settings', 'bestwebsoft' ); ?></th>
837
- <td>
838
- <a class="button button-secondary" href="https://bestwebsoft.com/client-area" target="_blank"><?php _e( 'Login to Client Area', 'bestwebsoft' ); ?></a>
839
- <div class="bws_info">
840
- <?php _e( 'Manage active licenses, download BWS products, and view your payment history using BestWebSoft Client Area.', 'bestwebsoft' ); ?>
841
- </div>
842
- </td>
843
- </tr>
844
- </table>
845
- <?php }
 
 
 
 
846
 
847
  /**
848
  * Save plugin options to the database
 
849
  * @access private
850
  * @param ab
851
- * @return array The action results
852
  */
853
  private function save_options_license_key() {
854
- global $wp_version, $bstwbsftwppdtplgns_options;
855
  /*$empty_field_error - added to avoid error when 1 field is empty while another field contains license key*/
856
-
857
  $error = $message = $empty_field_error = '';
858
-
859
- foreach ( $this->licenses as $single_license) {
860
- $bws_license_key = ( isset( $_POST[ ( ! empty( $single_license['pro_slug'] ) ) ? 'bws_license_key_' . $single_license['pro_slug'] : 'bws_license_key_' . $single_license['slug'] ] ) ) ? stripslashes( sanitize_text_field( $_POST[ ( ! empty( $single_license['pro_slug'] ) ) ? 'bws_license_key_' . $single_license['pro_slug'] : 'bws_license_key_' . $single_license['slug'] ] ) ) : '';
861
- if ( '' != $bws_license_key ) {
862
- if ( strlen( $bws_license_key ) != 18 ) {
863
- $error = __( 'Wrong license key', 'bestwebsoft' );
864
- } else {
865
 
866
- /* CHECK license key */
867
- if ( $this->is_pro && empty( $single_license['pro_basename'] ) ) {
868
- delete_transient( 'bws_plugins_update' );
869
- if ( ! $this->all_plugins ) {
870
- if ( ! function_exists( 'get_plugins' ) ) {
871
- require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
 
 
 
 
 
 
 
 
 
 
 
 
872
  }
873
- $this->all_plugins = get_plugins();
874
- }
875
- $current = get_site_transient( 'update_plugins' );
876
-
877
- if ( ! empty( $this->all_plugins ) && ! empty( $current ) && isset( $current->response ) && is_array( $current->response ) ) {
878
- $to_send = array();
879
- $to_send["plugins"][ $single_license['basename'] ] = $this->all_plugins[ $single_license['basename'] ];
880
- $to_send["plugins"][ $single_license['basename'] ]["bws_license_key"] = $bws_license_key;
881
- $to_send["plugins"][ $single_license['basename'] ]["bws_illegal_client"] = true;
882
- $options = array(
883
- 'timeout' => ( ( defined( 'DOING_CRON' ) && DOING_CRON ) ? 30 : 3 ),
884
- 'body' => array( 'plugins' => serialize( $to_send ) ),
885
- 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
886
- );
887
- $raw_response = wp_remote_post( 'https://bestwebsoft.com/wp-content/plugins/paid-products/plugins/pro-license-check/1.0/', $options );
888
-
889
- if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) {
890
- $error = __( 'Something went wrong. Please try again later. If the error appears again, please contact us', 'bestwebsoft' ) . ': <a href=https://support.bestwebsoft.com>BestWebSoft</a>. ' . __( 'We are sorry for inconvenience.', 'bestwebsoft' );
891
- } else {
892
- $response = maybe_unserialize( wp_remote_retrieve_body( $raw_response ) );
893
- if ( is_array( $response ) && ! empty( $response ) ) {
894
- foreach ( $response as $single_response ) {
895
- if ( "wrong_license_key" == $single_response->package ) {
896
- $error = __( 'Wrong license key.', 'bestwebsoft' );
897
- } else if ( "wrong_domain" == $single_response->package ) {
898
- $error = __( 'This license key is bound to another site.', 'bestwebsoft' );
899
- } else if ( "time_out" == $single_response->package ) {
900
- $message = __( 'This license key is valid, but Your license has expired. If you want to update our plugin in future, you should extend the license.', 'bestwebsoft' );
901
- } elseif ( "you_are_banned" == $single_response->package ) {
902
- $error = __( "Unfortunately, you have exceeded the number of available tries.", 'bestwebsoft' );
903
- } elseif ( "duplicate_domen_for_trial" == $single_response->package ) {
904
- $error = __( "Unfortunately, the Pro Trial licence was already installed to this domain. The Pro Trial license can be installed only once.", 'bestwebsoft' );
905
- }
906
- if ( empty( $error ) ) {
907
- if ( empty( $message ) ) {
908
- if ( isset( $single_response->trial ) ) {
909
- $message = __( 'The Pro Trial license key is valid.', 'bestwebsoft' );
910
- } else {
911
- $message = __( 'The license key is valid.', 'bestwebsoft' );
 
 
 
 
 
 
 
 
 
 
912
  }
913
 
914
- if ( ! empty( $single_response->time_out ) ) {
915
- $message .= ' ' . __( 'Your license will expire on', 'bestwebsoft' ) . ' ' . $single_response->time_out . '.';
916
  } else {
917
- /* lifetime */
918
- $single_response->time_out = NULL;
919
  }
920
 
921
- if ( isset( $single_response->trial ) && $this->is_trial ) {
922
- $message .= ' ' . sprintf( __( 'In order to continue using the plugin it is necessary to buy a %s license.', 'bestwebsoft' ), '<a href="' . esc_url( $this->plugins_info['PluginURI'] . '?k=' . $this->link_key . '&pn=' . $this->link_pn . '&v=' . $this->plugins_info["Version"] . '&wp_v=' . $wp_version ) . '" target="_blank" title="' . $this->plugins_info["Name"] . '">Pro</a>' );
 
 
923
  }
924
- }
925
 
926
- if ( isset( $single_response->trial ) ) {
927
- $bstwbsftwppdtplgns_options['trial'][ $single_license['basename'] ] = 1;
928
- } else {
929
- unset( $bstwbsftwppdtplgns_options['trial'][ $single_license['basename'] ] );
930
- }
931
-
932
- if ( isset( $single_response->nonprofit ) ) {
933
- $bstwbsftwppdtplgns_options['nonprofit'][ $single_license['basename'] ] = 1;
934
- } else {
935
- unset( $bstwbsftwppdtplgns_options['nonprofit'][ $single_license['basename'] ] );
936
- }
937
-
938
- if ( ! isset( $bstwbsftwppdtplgns_options[ $single_license['basename'] ] ) || $bstwbsftwppdtplgns_options[ $single_license['basename'] ] != $bws_license_key ) {
939
- $bstwbsftwppdtplgns_options[ $single_license['basename'] ] = $bws_license_key;
940
 
941
- $file = @fopen( dirname( dirname( __FILE__ ) ) . "/license_key.txt", "w+" );
942
- if ( $file ) {
943
- @fwrite( $file, $bws_license_key );
944
- @fclose( $file );
945
  }
946
- $update_option = true;
947
- }
948
 
949
- if ( isset( $bstwbsftwppdtplgns_options['wrong_license_key'][ $single_license['basename'] ] ) ) {
950
- unset( $bstwbsftwppdtplgns_options['wrong_license_key'][ $single_license['basename'] ] );
951
- $update_option = true;
952
- }
953
 
954
- if ( ! isset( $bstwbsftwppdtplgns_options['time_out'][ $single_license['basename'] ] ) || $bstwbsftwppdtplgns_options['time_out'][ $single_license['basename'] ] != $single_response->time_out ) {
955
- $bstwbsftwppdtplgns_options['time_out'][ $single_license['basename'] ] = $single_response->time_out;
956
- $update_option = true;
957
- }
958
 
959
- if ( isset( $update_option ) ) {
960
- if ( $this->is_multisite ) {
961
- update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
962
- } else {
963
- update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
 
964
  }
965
  }
966
  }
 
 
967
  }
968
- } else {
969
- $error = __( 'Something went wrong. Please try again later. If the error appears again, please contact us', 'bestwebsoft' ) . ' <a href=https://support.bestwebsoft.com>BestWebSoft</a>. ' . __( 'We are sorry for inconvenience.', 'bestwebsoft' );
970
  }
971
  }
972
- }
973
- /* Go Pro */
974
- } else {
975
-
976
- $bws_license_plugin = stripslashes( sanitize_text_field( $_POST[ ( ! empty( $single_license['pro_slug'] ) ) ? 'bws_license_plugin_' . $single_license['pro_slug'] : 'bws_license_plugin_' . $single_license['slug'] ] ) );
977
- if ( isset( $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] ) && $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['time'] > ( time() - ( 24 * 60 * 60 ) ) ) {
978
- $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] = $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] + 1;
979
  } else {
980
- $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] = 1;
981
- $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['time'] = time();
982
- }
983
-
984
- /* download Pro */
985
- if ( ! $this->all_plugins ) {
986
- if ( ! function_exists( 'get_plugins' ) ) {
987
- require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
988
  }
989
- $this->all_plugins = get_plugins();
990
- }
991
 
992
- if ( ! array_key_exists( $bws_license_plugin, $this->all_plugins ) ) {
993
- $current = get_site_transient( 'update_plugins' );
994
- if ( ! empty( $current ) && isset( $current->response ) && is_array( $current->response ) ) {
995
- $to_send = array();
996
- $to_send["plugins"][ $bws_license_plugin ] = array();
997
- $to_send["plugins"][ $bws_license_plugin ]["bws_license_key"] = $bws_license_key;
998
- $to_send["plugins"][ $bws_license_plugin ]["bws_illegal_client"] = true;
999
- $options = array(
1000
- 'timeout' => ( ( defined( 'DOING_CRON' ) && DOING_CRON ) ? 30 : 3 ),
1001
- 'body' => array( 'plugins' => serialize( $to_send ) ),
1002
- 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
1003
- );
1004
- $raw_response = wp_remote_post( 'https://bestwebsoft.com/wp-content/plugins/paid-products/plugins/pro-license-check/1.0/', $options );
1005
 
1006
- if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) {
1007
- $error = __( "Something went wrong. Please try again later. If the error appears again, please contact us", 'bestwebsoft' ) . ': <a href="https://support.bestwebsoft.com">BestWebSoft</a>. ' . __( "We are sorry for inconvenience.", 'bestwebsoft' );
1008
- } else {
1009
- $response = maybe_unserialize( wp_remote_retrieve_body( $raw_response ) );
1010
- if ( is_array( $response ) && ! empty( $response ) ) {
1011
- foreach ( $response as $single_response ) {
1012
- if ( "wrong_license_key" == $single_response->package ) {
1013
- $error = __( "Wrong license key.", 'bestwebsoft' );
1014
- } elseif ( "wrong_domain" == $single_response->package ) {
1015
- $error = __( "This license key is bound to another site.", 'bestwebsoft' );
1016
- } elseif ( "you_are_banned" == $single_response->package ) {
1017
- $error = __( "Unfortunately, you have exceeded the number of available tries per day. Please, upload the plugin manually.", 'bestwebsoft' );
1018
- } elseif ( "time_out" == $single_response->package ) {
1019
- $error = sprintf( __( "Unfortunately, Your license has expired. To continue getting top-priority support and plugin updates, you should extend it in your %s.", 'bestwebsoft' ), ' <a href="https://bestwebsoft.com/client-area">Client Area</a>' );
1020
- } elseif ( "duplicate_domen_for_trial" == $single_response->package ) {
1021
- $error = __( "Unfortunately, the Pro licence was already installed to this domain. The Pro Trial license can be installed only once.", 'bestwebsoft' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1022
  }
1023
- }
1024
- if ( empty( $error ) ) {
1025
- $bws_license_plugin = ( ! empty( $single_license['pro_basename'] ) ) ? $single_license['pro_basename'] : $single_license['basename'];
1026
 
1027
- $bstwbsftwppdtplgns_options[ $bws_license_plugin ] = $bws_license_key;
1028
- $this->pro_plugin_is_activated = true;
 
 
 
1029
  }
 
 
 
 
 
 
 
 
 
1030
  } else {
1031
- $error = __( "Something went wrong. Try again later or upload the plugin manually. We are sorry for inconvenience.", 'bestwebsoft' );
 
1032
  }
 
 
1033
  }
1034
  }
1035
- } else {
1036
- $bstwbsftwppdtplgns_options[ $bws_license_plugin ] = $bws_license_key;
1037
- /* activate Pro */
1038
- if ( ! is_plugin_active( $bws_license_plugin ) ) {
1039
- if ( $this->is_multisite && is_plugin_active_for_network( ( ! empty( $single_license['pro_basename'] ) ) ? $single_license['pro_basename'] : $single_license['basename'] ) ) {
1040
- /* if multisite and free plugin is network activated */
1041
- $network_wide = true;
1042
- } else {
1043
- /* activate on a single blog */
1044
- $network_wide = false;
1045
- }
1046
- activate_plugin( $bws_license_plugin, null, $network_wide );
1047
- $this->pro_plugin_is_activated = true;
1048
  }
1049
- }
1050
- /* add 'track_usage' for Pro version */
1051
- if ( ! empty( $bstwbsftwppdtplgns_options['track_usage'][ ( ! empty( $single_license['pro_basename'] ) ) ? $single_license['pro_basename'] : $single_license['basename'] ] ) &&
1052
- empty( $bstwbsftwppdtplgns_options['track_usage'][ $bws_license_plugin ] ) ) {
1053
- $bstwbsftwppdtplgns_options['track_usage'][ $bws_license_plugin ] = $bstwbsftwppdtplgns_options['track_usage'][ ( ! empty( $single_license['pro_basename'] ) ) ? $single_license['pro_basename'] : $single_license['basename'] ];
1054
- }
1055
 
1056
- if ( $this->is_multisite ) {
1057
- update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
1058
- } else {
1059
- update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
1060
- }
1061
 
1062
- if ( $this->pro_plugin_is_activated ) {
1063
- delete_transient( 'bws_plugins_update' );
 
1064
  }
1065
  }
 
 
1066
  }
1067
- } else {
1068
- $empty_field_error = __( "Please, enter Your license key", 'bestwebsoft' );
1069
  }
1070
  }
1071
  return compact( 'error', 'message', 'empty_field_error' );
@@ -1073,37 +1179,45 @@ if ( ! class_exists( 'Bws_Settings_Tabs' ) ) {
1073
 
1074
  /**
1075
  * Display help phrase
 
1076
  * @access public
1077
  * @param void
1078
- * @return array The action results
1079
  */
1080
  public function help_phrase() {
1081
- echo '<div class="bws_tab_description">' . __( 'Need Help?', 'bestwebsoft' ) . ' ';
1082
- if ( '' != $this->doc_link )
1083
- echo '<a href="' . esc_url( $this->doc_link ) . '" target="_blank">' . __( 'Read the Instruction', 'bestwebsoft' );
1084
- else
1085
- echo '<a href="https://support.bestwebsoft.com/hc/en-us/" target="_blank">' . __( 'Visit Help Center', 'bestwebsoft' );
1086
- if ( '' != $this->doc_video_link )
1087
- echo '</a>' . ' ' . __( 'or', 'bestwebsoft' ) . ' ' . '<a href="' . esc_url( $this->doc_video_link ) . '" target="_blank">' . __( 'Watch the Video', 'bestwebsoft' );
 
 
 
1088
  echo '</a></div>';
 
1089
  }
1090
 
1091
  public function bws_pro_block_links() {
1092
- global $wp_version; ?>
1093
- <div class="bws_pro_version_tooltip">
1094
- <a class="bws_button" href="<?php echo esc_url( $this->plugins_info['PluginURI'] ); ?>?k=<?php echo $this->link_key; ?>&amp;pn=<?php echo $this->link_pn; ?>&amp;v=<?php echo $this->plugins_info["Version"]; ?>&amp;wp_v=<?php echo $wp_version; ?>" target="_blank" title="<?php echo $this->plugins_info["Name"]; ?>"><?php _e( 'Upgrade to Pro', 'bestwebsoft' ); ?></a>
1095
- <?php if ( $this->trial_days !== false ) { ?>
1096
- <span class="bws_trial_info">
1097
- <?php _e( 'or', 'bestwebsoft' ); ?>
1098
- <a href="<?php echo esc_url( $this->plugins_info['PluginURI'] . '?k=' . $this->link_key . '&pn=' . $this->link_pn . '&v=' . $this->plugins_info["Version"] . '&wp_v=' . $wp_version ); ?>" target="_blank" title="<?php echo $this->plugins_info["Name"]; ?>"><?php _e( 'Start Your Free Trial', 'bestwebsoft' ); ?></a>
 
1099
  </span>
1100
  <?php } ?>
1101
- <div class="clear"></div>
1102
- </div>
1103
- <?php }
 
1104
 
1105
  /**
1106
  * Restore plugin options to defaults
 
1107
  * @access public
1108
  * @param void
1109
  * @return void
@@ -1119,8 +1233,8 @@ if ( ! class_exists( 'Bws_Settings_Tabs' ) ) {
1119
  */
1120
  $this->options = apply_filters( __CLASS__ . '_additional_restore_options', $this->default_options );
1121
  if ( $this->is_network_options ) {
1122
- $this->options['network_apply'] = 'default';
1123
- $this->options['network_view'] = '1';
1124
  $this->options['network_change'] = '1';
1125
  update_site_option( $this->prefix . '_options', $this->options );
1126
  } else {
@@ -1128,35 +1242,37 @@ if ( ! class_exists( 'Bws_Settings_Tabs' ) ) {
1128
  }
1129
  }
1130
 
1131
- public function add_request_feature() { ?>
 
1132
  <div id="bws_request_feature" class="widget-access-link">
1133
- <button type="button" class="button" ><?php _e( 'Request a Feature', 'bestwebsoft' ); ?></button>
1134
  </div>
1135
- <?php $modal_html = '<div class="bws-modal bws-modal-deactivation-feedback bws-modal-request-feature">
1136
- <div class="bws-modal-dialog">
1137
- <div class="bws-modal-body">
1138
- <h2>' . sprintf( __( 'How can we improve %s?', 'bestwebsoft' ), $this->plugins_info['Name'] ) . '</h2>
1139
- <div class="bws-modal-panel active">
1140
- <p>' . __( 'We look forward to hear your ideas.', 'bestwebsoft' ) . '</p>
1141
- <p>
1142
- <textarea placeholder="' . __( 'Describe your idea', 'bestwebsoft' ) . '..."></textarea>
1143
- </p>
1144
- <label class="bws-modal-anonymous-label">
1145
- <input type="checkbox" /> ' . __( 'Send website data and allow to contact me back', 'bestwebsoft' ) . '
 
1146
  </label>
1147
  </div>
1148
  </div>
1149
  <div class="bws-modal-footer">
1150
- <a href="#" class="button disabled bws-modal-button button-primary">' . __( 'Submit', 'bestwebsoft' ) . '</a>
1151
- <span class="bws-modal-processing hidden">' . __( 'Processing', 'bestwebsoft' ) . '...</span>
1152
- <span class="bws-modal-thank-you hidden">' . __( 'Thank you!', 'bestwebsoft' ) . '</span>
1153
  <div class="clear"></div>
1154
  </div>
1155
  </div>
1156
  </div>';
1157
 
1158
- $script = "(function($) {
1159
- var modalHtml = " . json_encode( $modal_html ) . ",
1160
  \$modal = $( modalHtml );
1161
 
1162
  \$modal.appendTo( $( 'body' ) );
@@ -1189,10 +1305,10 @@ if ( ! class_exists( 'Bws_Settings_Tabs' ) ) {
1189
  var is_anonymous = ( \$modal.find( '.bws-modal-anonymous-label' ).find( 'input' ).is( ':checked' ) ) ? 0 : 1;
1190
 
1191
  $.ajax({
1192
- url : ajaxurl,
1193
- method : 'POST',
1194
- data : {
1195
- 'action' : 'bws_submit_request_feature_action',
1196
  'plugin' : '" . $this->plugin_basename . "',
1197
  'info' : info,
1198
  'is_anonymous' : is_anonymous,
@@ -1246,14 +1362,13 @@ if ( ! class_exists( 'Bws_Settings_Tabs' ) ) {
1246
  })(jQuery);";
1247
 
1248
  /* add script in FOOTER */
1249
- wp_register_script( 'bws-request-feature-dialog', '', array( 'jquery' ), false, true );
1250
  wp_enqueue_script( 'bws-request-feature-dialog' );
1251
  wp_add_inline_script( 'bws-request-feature-dialog', sprintf( $script ) );
1252
  }
1253
  }
1254
  }
1255
 
1256
-
1257
  /**
1258
  * Called after the user has submitted his reason for deactivating the plugin.
1259
  *
@@ -1263,67 +1378,75 @@ if ( ! function_exists( 'bws_submit_request_feature_action' ) ) {
1263
  function bws_submit_request_feature_action() {
1264
  global $bstwbsftwppdtplgns_options, $wp_version, $bstwbsftwppdtplgns_active_plugins, $current_user;
1265
 
1266
- wp_verify_nonce( $_REQUEST['bws_ajax_nonce'], 'bws_ajax_nonce' );
1267
 
1268
- $basename = isset( $_REQUEST['plugin'] ) ? stripcslashes( sanitize_text_field( $_REQUEST['plugin'] ) ) : '';
1269
- $info = stripcslashes( sanitize_text_field( $_REQUEST['info'] ) );
1270
 
1271
- if ( empty( $info ) || empty( $basename ) ) {
1272
- exit;
1273
- }
1274
-
1275
- $info = substr( $info, 0, 255 );
1276
- $is_anonymous = isset( $_REQUEST['is_anonymous'] ) && 1 == $_REQUEST['is_anonymous'];
1277
 
1278
- $options = array(
1279
- 'product' => $basename,
1280
- 'info' => $info,
1281
- );
1282
-
1283
- if ( ! $is_anonymous ) {
1284
- if ( ! isset( $bstwbsftwppdtplgns_options ) )
1285
- $bstwbsftwppdtplgns_options = ( is_multisite() ) ? get_site_option( 'bstwbsftwppdtplgns_options' ) : get_option( 'bstwbsftwppdtplgns_options' );
1286
-
1287
- if ( ! empty( $bstwbsftwppdtplgns_options['track_usage']['usage_id'] ) ) {
1288
- $options['usage_id'] = $bstwbsftwppdtplgns_options['track_usage']['usage_id'];
1289
- } else {
1290
- $options['usage_id'] = false;
1291
- $options['url'] = get_bloginfo( 'url' );
1292
- $options['wp_version'] = $wp_version;
1293
- $options['is_active'] = false;
1294
- $options['version'] = $bstwbsftwppdtplgns_active_plugins[ $basename ]['Version'];
1295
  }
1296
 
1297
- $options['email'] = $current_user->data->user_email;
1298
- }
1299
 
1300
- /* send data */
1301
- $raw_response = wp_remote_post( 'https://bestwebsoft.com/wp-content/plugins/products-statistics/request-feature/', array(
1302
- 'method' => 'POST',
1303
- 'body' => $options,
1304
- 'timeout' => 15,
1305
- ) );
1306
 
1307
- if ( ! is_wp_error( $raw_response ) && 200 == wp_remote_retrieve_response_code( $raw_response ) ) {
1308
  if ( ! $is_anonymous ) {
1309
- $response = maybe_unserialize( wp_remote_retrieve_body( $raw_response ) );
1310
-
1311
- if ( is_array( $response ) && ! empty( $response['usage_id'] ) && $response['usage_id'] != $options['usage_id'] ) {
1312
- $bstwbsftwppdtplgns_options['track_usage']['usage_id'] = $response['usage_id'];
1313
 
1314
- if ( is_multisite() )
1315
- update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
1316
- else
1317
- update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
 
 
 
 
1318
  }
 
 
1319
  }
1320
 
1321
- echo 'done';
1322
- } else {
1323
- echo $response->get_error_code() . ': ' . $response->get_error_message();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1324
  }
1325
  exit;
1326
  }
1327
  }
1328
 
1329
- add_action( 'wp_ajax_bws_submit_request_feature_action', 'bws_submit_request_feature_action' );
1
  <?php
2
  /**
3
  * Displays the content on the plugin settings page
4
+ *
5
  * @package BestWebSoft
6
  * @since 1.9.8
7
  */
10
  class Bws_Settings_Tabs {
11
  private $tabs;
12
  private $pro_plugin_is_activated = false;
13
+ private $custom_code_args = array();
14
+ private $bws_plugin_link = '';
15
 
16
  public $plugin_basename;
17
  public $prefix;
34
  public $trial_days;
35
  public $bws_hide_pro_option_exist = true;
36
 
37
+ public $forbid_view = false;
38
  public $change_permission_attr = '';
39
 
40
  public $version;
50
  *
51
  * The child class should call this constructor from its own constructor to override
52
  * the default $args.
53
+ *
54
  * @access public
55
  *
56
  * @param array|string $args
58
  public function __construct( $args = array() ) {
59
  global $wp_version;
60
 
61
+ $args = wp_parse_args(
62
+ $args,
63
+ array(
64
+ 'plugin_basename' => '',
65
+ 'prefix' => '',
66
+ 'plugins_info' => array(),
67
+ 'default_options' => array(),
68
+ 'options' => array(),
69
+ 'is_network_options' => false,
70
+ 'tabs' => array(),
71
+ 'doc_link' => '',
72
+ 'doc_video_link' => '',
73
+ 'wp_slug' => '',
74
+ 'demo_data' => false,
75
+ /* if this is free version and pro exist */
76
+ 'link_key' => '',
77
+ 'link_pn' => '',
78
+ 'trial_days' => false,
79
+ 'licenses' => array(),
80
+ )
81
+ );
82
 
83
  $args['plugins_info']['Name'] = str_replace( ' by BestWebSoft', '', $args['plugins_info']['Name'] );
84
 
85
+ $this->plugin_basename = $args['plugin_basename'];
86
+ $this->prefix = $args['prefix'];
87
+ $this->plugins_info = $args['plugins_info'];
88
+ $this->options = $args['options'];
89
+ $this->default_options = $args['default_options'];
90
+ $this->wp_slug = $args['wp_slug'];
91
+ $this->demo_data = $args['demo_data'];
92
 
93
+ $this->tabs = $args['tabs'];
94
+ $this->is_network_options = $args['is_network_options'];
95
 
96
+ $this->doc_link = $args['doc_link'];
97
+ $this->doc_video_link = $args['doc_video_link'];
98
 
99
+ $this->link_key = $args['link_key'];
100
+ $this->link_pn = $args['link_pn'];
101
+ $this->trial_days = $args['trial_days'];
102
+ $this->licenses = $args['licenses'];
103
 
104
  $this->pro_page = $this->bws_license_plugin = '';
105
  /* get $bws_plugins */
106
+ require dirname( __FILE__ ) . '/product_list.php';
107
  if ( isset( $bws_plugins[ $this->plugin_basename ] ) ) {
108
  if ( isset( $bws_plugins[ $this->plugin_basename ]['pro_settings'] ) ) {
109
+ $this->pro_page = $bws_plugins[ $this->plugin_basename ]['pro_settings'];
110
+ $this->bws_license_plugin = $bws_plugins[ $this->plugin_basename ]['pro_version'];
111
+ }
112
 
113
+ $this->bws_plugin_link = substr( $bws_plugins[ $this->plugin_basename ]['link'], 0, strpos( $bws_plugins[ $this->plugin_basename ]['link'], '?' ) );
114
 
115
+ if ( ! empty( $this->link_key ) && ! empty( $this->link_pn ) ) {
116
+ $this->bws_plugin_link .= '?k=' . $this->link_key . '&pn=' . $this->link_pn . '&v=' . $this->plugins_info['Version'] . '&wp_v=' . $wp_version;
117
+ }
118
  }
119
 
120
  $this->hide_pro_tabs = bws_hide_premium_options_check( $this->options );
121
+ $this->version = '1.0.0';
122
+ $this->is_multisite = is_multisite();
123
 
124
  if ( empty( $this->pro_page ) && array_key_exists( 'license', $this->tabs ) ) {
125
+ $this->is_pro = true;
126
  $this->licenses[ $this->plugins_info['TextDomain'] ] = array(
127
  'name' => $this->plugins_info['Name'],
128
  'slug' => $this->plugins_info['TextDomain'],
129
+ 'basename' => $this->plugin_basename,
130
  );
131
  } else {
132
  $this->licenses[ $this->plugins_info['TextDomain'] ] = array(
133
+ 'name' => $this->plugins_info['Name'],
134
+ 'slug' => $this->plugins_info['TextDomain'],
135
+ 'pro_slug' => substr( $this->bws_license_plugin, 0, stripos( $this->bws_license_plugin, '/' ) ),
136
+ 'basename' => $this->plugin_basename,
137
+ 'pro_basename' => $this->bws_license_plugin,
138
  );
139
  }
140
  }
141
 
142
  /**
143
  * Displays the content of the "Settings" on the plugin settings page
144
+ *
145
  * @access public
146
  * @param void
147
  * @return void
162
  $this->demo_data->bws_demo_confirm();
163
  } else {
164
  bws_show_settings_notice(); ?>
165
+ <form class="bws_form" method="post" action="" enctype="multipart/form-data">
166
+ <div id="poststuff">
167
+ <div id="post-body" class="metabox-holder columns-2">
168
+ <div id="post-body-content" style="position: relative;">
169
  <?php $this->display_tabs(); ?>
170
+ </div><!-- #post-body-content -->
171
+ <div id="postbox-container-1" class="postbox-container">
172
+ <div class="meta-box-sortables ui-sortable">
173
+ <div id="submitdiv" class="postbox">
174
+ <h3 class="hndle"><?php esc_html_e( 'Information', 'bestwebsoft' ); ?></h3>
175
+ <div class="inside">
176
+ <div class="submitbox" id="submitpost">
177
+ <div id="minor-publishing">
178
+ <div id="misc-publishing-actions">
179
+ <?php
180
+ /**
181
+ * Action - Display additional content for #misc-publishing-actions
182
+ */
183
+ do_action( __CLASS__ . '_information_postbox_top' );
184
+ ?>
185
+ <?php
186
+ if ( $this->is_pro ) {
187
  if ( isset( $bstwbsftwppdtplgns_options['wrong_license_key'][ $this->plugin_basename ] ) || empty( $bstwbsftwppdtplgns_options['time_out'] ) || ! array_key_exists( $this->plugin_basename, $bstwbsftwppdtplgns_options['time_out'] ) ) {
188
+ $license_type = 'Pro';
189
  $license_status = __( 'Inactive', 'bestwebsoft' ) . ' <a href="#' . $this->prefix . '_license_tab" class="bws_trigger_tab_click">' . __( 'Learn More', 'bestwebsoft' ) . '</a>';
190
  } else {
191
  $finish = strtotime( $bstwbsftwppdtplgns_options['time_out'][ $this->plugin_basename ] );
192
+ $today = strtotime( gmdate( 'm/d/Y' ) );
193
  if ( isset( $bstwbsftwppdtplgns_options['trial'][ $this->plugin_basename ] ) ) {
194
  $license_type = 'Trial Pro';
195
 
196
  if ( $finish < $today ) {
197
  $license_status = __( 'Expired', 'bestwebsoft' );
198
  } else {
199
+ $daysleft = floor( ( $finish - $today ) / ( 60 * 60 * 24 ) );
200
  $license_status = sprintf( __( '%s day(-s) left', 'bestwebsoft' ), $daysleft );
201
  }
202
  $license_status .= '. <a target="_blank" href="' . esc_url( $this->plugins_info['PluginURI'] ) . '">' . __( 'Upgrade to Pro', 'bestwebsoft' ) . '</a>';
208
  $license_status = __( 'Active', 'bestwebsoft' );
209
  }
210
  }
211
+ }
212
+ ?>
213
+ <div class="misc-pub-section">
214
+ <strong><?php esc_html_e( 'License', 'bestwebsoft' ); ?>:</strong> <?php echo esc_attr( $license_type ); ?>
215
+ </div>
216
+ <div class="misc-pub-section">
217
+ <strong><?php esc_html_e( 'Status', 'bestwebsoft' ); ?>:</strong> <?php echo wp_kses_post( $license_status ); ?>
218
+ </div><!-- .misc-pub-section -->
219
  <?php } ?>
220
+ <div class="misc-pub-section">
221
+ <strong><?php esc_html_e( 'Version', 'bestwebsoft' ); ?>:</strong> <?php echo esc_attr( $this->plugins_info['Version'] ); ?>
222
+ </div><!-- .misc-pub-section -->
223
+ <?php
224
+ /**
225
+ * Action - Display additional content for #misc-publishing-actions
226
+ */
227
+ do_action( __CLASS__ . '_information_postbox_bottom' );
228
+ ?>
229
+ </div>
230
+ <div class="clear"></div>
231
+ </div>
232
+ <div id="major-publishing-actions">
233
+ <div id="publishing-action">
234
+ <input type="hidden" name="<?php echo esc_attr( $this->prefix ); ?>_form_submit" value="submit" />
235
+ <input id="bws-submit-button" type="submit" class="button button-primary button-large" value="<?php esc_html_e( 'Save Changes', 'bestwebsoft' ); ?>" />
236
  <?php wp_nonce_field( $this->plugin_basename, 'bws_nonce_name' ); ?>
237
+ </div>
238
+ <div class="clear"></div>
239
+ </div>
240
+ </div>
241
+ </div>
242
+ </div>
243
+ <?php
244
+ /**
245
+ * Action - Display custom metabox
246
  */
247
  do_action( __CLASS__ . '_display_metabox' );
248
 
249
+ if ( function_exists( 'bws_affiliate_postbox' ) ) {
250
+ bws_affiliate_postbox();
251
+ }
252
+ ?>
253
+ </div>
254
+ </div>
255
+ <div id="postbox-container-2" class="postbox-container">
256
+ <?php
257
+ /**
258
+ * Action - Display additional content for #postbox-container-2
259
  */
260
+ do_action( __CLASS__ . '_display_second_postbox' );
261
+ ?>
262
+ <div class="submit">
263
+ <input type="submit" class="button button-primary button-large" value="<?php esc_html_e( 'Save Changes', 'bestwebsoft' ); ?>" />
264
+ <?php wp_nonce_field( $this->plugin_basename, 'bws_nonce_name' ); ?>
265
+ </div>
266
+ <?php
267
+ if ( ! empty( $this->wp_slug ) ) {
268
+ bws_plugin_reviews_block( $this->plugins_info['Name'], $this->wp_slug );}
269
+ ?>
270
+ </div>
271
+ </div>
272
+ </form>
273
+ </div>
274
+ <?php
275
+ }
276
  }
277
 
278
  /**
279
  * Displays the Tabs
280
+ *
281
  * @access public
282
  * @param void
283
  * @return void
284
  */
285
+ public function display_tabs() {
286
+ ?>
287
+ <div id="bws_settings_tabs_wrapper">
288
+ <ul id="bws_settings_tabs">
289
  <?php $this->display_tabs_list(); ?>
290
+ </ul>
291
  <?php $this->display_tabs_content(); ?>
292
+ <div class="clear"></div>
293
+ <input type="hidden" name="bws_active_tab" value="<?php
294
+ if ( isset( $_REQUEST['bws_active_tab'] ) ) {
295
+ echo esc_attr( sanitize_text_field( wp_unslash( $_REQUEST['bws_active_tab'] ) ) );
296
+ }
297
+ ?>" />
298
+ </div>
299
+ <?php
300
+ }
301
 
302
  /**
303
  * Displays the list of tabs
304
+ *
305
  * @access private
306
  * @return void
307
  */
308
  private function display_tabs_list() {
309
  foreach ( $this->tabs as $tab_slug => $data ) {
310
+ if ( ! empty( $data['is_pro'] ) && $this->hide_pro_tabs ) {
311
  continue;
312
+ }
313
  $tab_class = 'bws-tab-' . $tab_slug;
314
+ if ( ! empty( $data['is_pro'] ) ) {
315
  $tab_class .= ' bws_pro_tab';
316
+ }
317
+ if ( ! empty( $data['class'] ) ) {
318
+ $tab_class .= ' ' . $data['class'];
319
+ }
320
+ ?>
321
+ <li class="<?php echo esc_attr( $tab_class ); ?>" data-slug="<?php echo esc_attr( $tab_slug ); ?>">
322
+ <a href="#<?php echo esc_attr( $this->prefix ); ?>_<?php echo esc_attr( $tab_slug ); ?>_tab">
323
+ <span><?php echo esc_html( $data['label'] ); ?></span>
324
+ </a>
325
+ </li>
326
+ <?php
327
+ }
328
  }
329
 
330
  /**
331
  * Displays the content of tabs
332
+ *
333
  * @access private
334
  * @param string $tab_slug
335
  * @return void
336
  */
337
  public function display_tabs_content() {
338
  foreach ( $this->tabs as $tab_slug => $data ) {
339
+ if ( ! empty( $data['is_pro'] ) && $this->hide_pro_tabs ) {
340
+ continue;
341
+ }
342
+ ?>
343
+ <div class="bws_tab ui-tabs-panel ui-widget-content ui-corner-bottom" id="<?php echo esc_attr( $this->prefix . '_' . $tab_slug . '_tab' ); ?>" aria-labelledby="ui-id-2" role="tabpanel" aria-hidden="false" style="display: block;">
344
+ <?php
345
+ $tab_slug = str_replace( '-', '_', $tab_slug );
346
  if ( method_exists( $this, 'tab_' . $tab_slug ) ) {
347
  call_user_func( array( $this, 'tab_' . $tab_slug ) );
348
  do_action_ref_array( __CLASS__ . '_after_tab_' . $tab_slug, array( &$this ) );
349
+ }
350
+ ?>
351
+ </div>
352
+ <?php
353
+ }
354
  }
355
 
356
  /**
357
  * Save all options from all tabs and display errors\messages
358
+ *
359
  * @access public
360
  * @param void
361
+ * @return array
362
  */
363
  public function save_all_tabs_options() {
364
  $message = $notice = $error = '';
369
  /* Go Pro - check license key */
370
  } elseif ( isset( $_POST['bws_license_submit'] ) && check_admin_referer( $this->plugin_basename, 'bws_nonce_name' ) ) {
371
  $result = $this->save_options_license_key();
372
+ if ( ! empty( $result['empty_field_error'] ) ) {
373
  $error = $result['empty_field_error'];
374
+ }
375
+ if ( ! empty( $result['error'] ) ) {
376
  $error = $result['error'];
377
+ }
378
+ if ( ! empty( $result['message'] ) ) {
379
  $message = $result['message'];
380
+ }
381
+ if ( ! empty( $result['notice'] ) ) {
382
  $notice = $result['notice'];
383
+ }
384
  /* check demo data */
385
  } else {
386
  $demo_result = ! empty( $this->demo_data ) ? $this->demo_data->bws_handle_demo_data() : false;
388
  if ( ! empty( $demo_result ) && is_array( $demo_result ) ) {
389
  $error = $demo_result['error'];
390
  $message = $demo_result['done'];
391
+ if ( ! empty( $demo_result['done'] ) && ! empty( $demo_result['options'] ) ) {
392
  $this->options = $demo_result['options'];
393
+ }
394
  }
395
  /* Save options */
396
+ } elseif ( ! isset( $_REQUEST['bws_restore_default'] ) && ! isset( $_POST['bws_handle_demo'] ) && isset( $_REQUEST[ $this->prefix . '_form_submit' ] ) && check_admin_referer( $this->plugin_basename, 'bws_nonce_name' ) ) {
397
  /* save tabs */
398
  $result = $this->save_options();
399
+ if ( ! empty( $result['error'] ) ) {
400
  $error = $result['error'];
401
+ }
402
+ if ( ! empty( $result['message'] ) ) {
403
  $message = $result['message'];
404
+ }
405
+ if ( ! empty( $result['notice'] ) ) {
406
  $notice = $result['notice'];
407
+ }
408
 
409
+ if ( '' === $this->change_permission_attr ) {
410
  /* save `misc` tab */
411
  $result = $this->save_options_misc();
412
+ if ( ! empty( $result['notice'] ) ) {
413
  $notice .= $result['notice'];
414
+ }
 
 
 
 
415
  }
416
  }
417
  }
421
 
422
  /**
423
  * Display error\message\notice
424
+ *
425
  * @access public
426
  * @param $save_results - array with error\message\notice
427
  * @return void
428
  */
429
  public function display_messages( $save_results ) {
430
  /**
431
+ * Action - Display custom error\message\notice
432
  */
433
+ do_action( __CLASS__ . '_display_custom_messages', $save_results );
434
+ ?>
435
+ <div class="updated fade inline"
436
+ <?php
437
+ if ( empty( $save_results['message'] ) ) {
438
+ echo 'style="display:none"';}
439
+ ?>
440
+ ><p><strong><?php echo esc_html( $save_results['message'] ); ?></strong></p></div>
441
+ <div class="updated bws-notice inline"
442
+ <?php
443
+ if ( empty( $save_results['notice'] ) ) {
444
+ echo 'style="display:none"';}
445
+ ?>
446
+ ><p><strong><?php echo esc_html( $save_results['notice'] ); ?></strong></p></div>
447
+ <div class="error inline"
448
+ <?php
449
+ if ( empty( $save_results['error'] ) ) {
450
+ echo 'style="display:none"';}
451
+ ?>
452
+ ><p><strong><?php echo esc_html( $save_results['error'] ); ?></strong></p></div>
453
+ <?php
454
+ }
455
 
456
  /**
457
  * Save plugin options to the database
458
+ *
459
  * @access public
460
  * @param ab
461
+ * @return array The Action results
462
  * @abstract
463
  */
464
  public function save_options() {
467
 
468
  /**
469
  * Get 'custom_code' status and content
470
+ *
471
  * @access private
472
  */
473
  private function get_custom_code() {
474
+ global $bstwbsftwppdtplgns_options, $wp_filesystem;
475
 
476
  $this->custom_code_args = array(
477
  'is_css_active' => false,
478
+ 'content_css' => '',
479
+ 'css_writeable' => false,
480
  'is_php_active' => false,
481
+ 'content_php' => '',
482
+ 'php_writeable' => false,
483
+ 'is_js_active' => false,
484
+ 'content_js' => '',
485
+ 'js_writeable' => false,
486
  );
487
 
488
+ if ( ! $this->upload_dir ) {
489
  $this->upload_dir = wp_upload_dir();
490
+ }
491
 
492
  $folder = $this->upload_dir['basedir'] . '/bws-custom-code';
 
 
 
 
 
 
 
 
 
 
493
 
494
+ if ( $this->is_multisite ) {
495
  $this->custom_code_args['blog_id'] = get_current_blog_id();
496
+ }
497
+
498
+ WP_Filesystem();
499
 
500
  foreach ( array( 'css', 'php', 'js' ) as $extension ) {
501
+ $file = 'bws-custom-code.' . $extension;
502
  $real_file = $folder . '/' . $file;
503
+
504
+ if ( $wp_filesystem->exists( $real_file ) ) {
505
  update_recently_edited( $real_file );
506
+ $this->custom_code_args[ "content_{$extension}" ] = $wp_filesystem->get_contents( $real_file );//file_get_contents( $real_file );
507
  if ( ( $this->is_multisite && isset( $bstwbsftwppdtplgns_options['custom_code'][ $this->custom_code_args['blog_id'] ][ $file ] ) ) ||
508
+ ( ! $this->is_multisite && isset( $bstwbsftwppdtplgns_options['custom_code'][ $file ] ) ) ) {
509
+ $this->custom_code_args[ "is_{$extension}_active" ] = true;
510
+ }
511
+ if ( is_writeable( $real_file ) ) {
512
+ $this->custom_code_args[ "{$extension}_writeable" ] = true;
513
  }
 
 
514
  } else {
515
+ $this->custom_code_args[ "{$extension}_writeable" ] = true;
516
+ if ( 'php' === $extension ) {
517
+ $this->custom_code_args[ "content_{$extension}" ] = '<?php' . "\n" . "if ( ! defined( 'ABSPATH' ) ) exit;" . "\n" . "if ( ! defined( 'BWS_GLOBAL' ) ) exit;" . "\n\n" . '/* Start your code here */' . "\n";
518
+ }
519
  }
520
  }
521
  }
522
 
523
  /**
524
  * Display 'custom_code' tab
525
+ *
526
  * @access private
527
  */
528
+ private function tab_custom_code() {
529
+ global $bstwbsftwppdtplgns_options, $wp_version;
530
+ ?>
531
+ <h3 class="bws_tab_label"><?php esc_html_e( 'Custom Code', 'bestwebsoft' ); ?></h3>
532
+ <?php
533
+ $this->help_phrase();
534
+ $bws_hide_premium = bws_hide_premium_options_check( $bstwbsftwppdtplgns_options );
535
+ ?>
536
+ <hr>
537
+ <h4><?php esc_html_e( 'The ability to add custom code is available in the Pro version. If the Pro version is not available please contact us via Help Center', 'bestwebsoft' ); ?> (<a href="<?php echo esc_url( 'https://support.bestwebsoft.com/hc/en-us/requests/new' ); ?>"><?php echo esc_url( 'https://support.bestwebsoft.com/hc/en-us/requests/new' ); ?></a>)</h4>
538
+ <?php
539
+ if ( ! $bws_hide_premium ) {
540
+ ?>
541
+ <div class="bws_pro_version_bloc pdfprnt-pro-feature">
542
+ <div class="bws_pro_version_table_bloc">
543
+ <button type="submit" name="bws_hide_premium_options" class="notice-dismiss bws_hide_premium_options" title="Close"></button>
544
+ <div class="bws_table_bg"></div>
545
+ <div class="bws_pro_version">
546
+ <?php
547
+ if ( ! current_user_can( 'edit_plugins' ) ) {
548
+ echo '<p>' . esc_html__( 'You do not have sufficient permissions to edit plugins for this site.', 'bestwebsoft' ) . '</p>';
549
+ return;
550
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
551
 
552
+ $list = array(
553
+ 'css' => array(
554
+ 'description' => __( 'These styles will be added to the header on all pages of your site.', 'bestwebsoft' ),
555
+ 'learn_more_link' => 'https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_started',
556
+ ),
557
+ 'php' => array(
558
+ 'description' => sprintf( __( 'This PHP code will be hooked to the %s Action and will be printed on front end only.', 'bestwebsoft' ), '<a href="https://codex.wordpress.org/Plugin_API/Action_Reference/init" target="_blank"><code>init</code></a>' ),
559
+ 'learn_more_link' => 'https://php.net/',
560
+ ),
561
+ 'js' => array(
562
+ 'description' => __( 'These code will be added to the header on all pages of your site.', 'bestwebsoft' ),
563
+ 'learn_more_link' => 'https://developer.mozilla.org/en-US/docs/Web/JavaScript',
564
+ ),
565
+ );
566
+
567
+ foreach ( $list as $extension => $extension_data ) {
568
+ $name = 'js' === $extension ? 'JavaScript' : strtoupper( $extension );
569
+ ?>
570
+ <p><big>
571
+ <strong><?php echo esc_html( $name ); ?></strong>
572
+ <?php
573
+ if ( ! $this->custom_code_args[ "{$extension}_writeable" ] ) {
574
+ echo '(' . esc_html__( 'Browsing', 'bestwebsoft' ) . ')';}
575
+ ?>
576
+ </big>
577
+ </p>
578
+ <p class="bws_info">
579
+ <label>
580
+ <input type="checkbox" value="1"
581
+ <?php
582
+ if ( $this->custom_code_args[ "is_{$extension}_active" ] ) {
583
+ echo 'checked';}
584
+ ?>
585
+ />
586
+ <?php printf( esc_html__( 'Activate custom %s code.', 'bestwebsoft' ), esc_html( $name ) ); ?>
587
+ </label>
588
+ </p>
589
+ <textarea cols="70" rows="25" id="bws_newcontent_<?php echo esc_attr( $extension ); ?>" disabled="disabled"><?php
590
+ if ( isset( $this->custom_code_args[ "content_{$extension}" ] ) ) {
591
+ echo esc_html( stripslashes_deep( $this->custom_code_args[ "content_{$extension}" ] ) ); }
592
+ ?></textarea>
593
+ <p class="bws_info">
594
+ <?php echo esc_html( $extension_data['description'] ); ?>
595
+ <br>
596
+ <a href="<?php echo esc_url( $extension_data['learn_more_link'] ); ?>" target="_blank">
597
+ <?php printf( esc_html__( 'Learn more about %s', 'bestwebsoft' ), esc_html__( $name ) ); ?>
598
+ </a>
599
+ </p>
600
+ <?php
601
+ }
602
+ ?>
603
+ </div>
604
+ </div>
605
+ <div class="bws_pro_version_tooltip">
606
+ <a class="bws_button" href="<?php echo esc_url( $this->plugins_info['PluginURI'] ); ?>?k=<?php echo esc_attr( $this->link_key ); ?>&amp;pn=<?php echo esc_attr( $this->link_pn ); ?>&amp;v=<?php echo esc_attr( $this->plugins_info['Version'] ); ?>&amp;wp_v=<?php echo esc_attr( $wp_version ); ?>" target="_blank" title="<?php echo $this->plugins_info["Name"]; ?>">Upgrade to Pro</a>
607
+ <div class="clear"></div>
608
+ </div>
609
+ </div>
610
+ <?php
611
+ } else {
612
+ ?>
613
+ <div class="bws_pro_version_tooltip">
614
+ <a class="bws_button" href="<?php echo esc_url( $this->plugins_info['PluginURI'] ); ?>?k=<?php echo esc_attr( $this->link_key ); ?>&amp;pn=<?php echo esc_attr( $this->link_pn ); ?>&amp;v=<?php echo esc_attr( $this->plugins_info['Version'] ); ?>&amp;wp_v=<?php echo esc_attr( $wp_version ); ?>" target="_blank" title="<?php echo $this->plugins_info["Name"]; ?>">Upgrade to Pro</a>
615
+ <div class="clear"></div>
616
+ </div>
617
+ <?php
618
  }
 
 
 
 
 
619
  }
620
 
621
  /**
622
  * Display 'misc' tab
623
+ *
624
  * @access private
625
  */
626
  private function tab_misc() {
627
+ global $bstwbsftwppdtplgns_options;
628
+ ?>
629
+ <h3 class="bws_tab_label"><?php esc_html_e( 'Miscellaneous Settings', 'bestwebsoft' ); ?></h3>
630
  <?php $this->help_phrase(); ?>
631
+ <hr>
632
+ <?php
633
+ /**
634
+ * Action - Display custom options on the Import / Export' tab
635
  */
636
  do_action( __CLASS__ . '_additional_misc_options' );
637
 
638
+ if ( ! $this->forbid_view && ! empty( $this->change_permission_attr ) ) {
639
+ ?>
640
+ <div class="error inline bws_visible"><p><strong><?php esc_html_e( 'Notice', 'bestwebsoft' ); ?>:</strong> <strong><?php printf( esc_html__( 'It is prohibited to change %1$s settings on this site in the %2$s network settings.', 'bestwebsoft' ), esc_html( $this->plugins_info['Name'] ), esc_html( $this->plugins_info['Name'] ) ); ?></strong></p></div>
641
+ <?php
642
+ }
643
+ if ( $this->forbid_view ) {
644
+ ?>
645
+ <div class="error inline bws_visible"><p><strong><?php esc_html_e( 'Notice', 'bestwebsoft' ); ?>:</strong> <strong><?php printf( esc_html__( 'It is prohibited to view %1$s settings on this site in the %2$s network settings.', 'bestwebsoft' ), esc_html( $this->plugins_info['Name'] ), esc_html( $this->plugins_info['Name'] ) ); ?></strong></p></div>
646
  <?php } else { ?>
647
+ <table class="form-table">
648
+ <?php
649
+ /**
650
+ * Action - Display custom options on the 'misc' tab
651
  */
652
  do_action( __CLASS__ . '_additional_misc_options_affected' );
653
+ if ( ! empty( $this->pro_page ) && $this->bws_hide_pro_option_exist ) {
654
+ ?>
655
+ <tr>
656
+ <th scope="row"><?php esc_html_e( 'Pro Options', 'bestwebsoft' ); ?></th>
657
+ <td>
658
+ <label>
659
+ <input <?php echo esc_attr( wp_kses_data( $this->change_permission_attr ) ); ?> name="bws_hide_premium_options_submit" type="checkbox" value="1"
660
+ <?php
661
+ if ( ! $this->hide_pro_tabs ) {
662
+ echo 'checked="checked "';}
663
+ ?>
664
+ />
665
+ <span class="bws_info"><?php esc_html_e( 'Enable to display plugin Pro options.', 'bestwebsoft' ); ?></span>
666
+ </label>
667
+ </td>
668
+ </tr>
669
  <?php } ?>
670
+ <tr>
671
+ <th scope="row"><?php esc_html_e( 'Track Usage', 'bestwebsoft' ); ?></th>
672
+ <td>
673
+ <label>
674
+ <input <?php echo esc_attr( wp_kses_data( $this->change_permission_attr ) ); ?> name="bws_track_usage" type="checkbox" value="1"
675
+ <?php
676
+ if ( ! empty( $bstwbsftwppdtplgns_options['track_usage']['products'][ $this->plugin_basename ] ) ) {
677
+ echo 'checked="checked "';}
678
+ ?>
679
+ />
680
+ <span class="bws_info"><?php esc_html_e( 'Enable to allow tracking plugin usage anonymously in order to make it better.', 'bestwebsoft' ); ?></span>
681
+ </label>
682
+ </td>
683
+ </tr>
684
+ <tr>
685
+ <th scope="row"><?php esc_html_e( 'Default Settings', 'bestwebsoft' ); ?></th>
686
+ <td>
687
+ <input<?php echo esc_attr( wp_kses_data( $this->change_permission_attr ) ); ?> name="bws_restore_default" type="submit" class="button" value="<?php esc_html_e( 'Restore Settings', 'bestwebsoft' ); ?>" />
688
+ <div class="bws_info"><?php esc_html_e( 'This will restore plugin settings to defaults.', 'bestwebsoft' ); ?></div>
689
+ </td>
690
+ </tr>
691
+ </table>
692
+ <?php
693
+ }
694
  }
695
 
696
  /**
697
  * Display 'Import / Export' tab
698
+ *
699
  * @access private
700
  */
701
+ public function tab_import_export() {
702
+ ?>
703
+ <h3 class="bws_tab_label"><?php esc_html_e( 'Import / Export', 'bestwebsoft' ); ?></h3>
704
  <?php $this->help_phrase(); ?>
705
+ <hr>
706
+ <?php
707
+ /**
708
+ * Action - Display custom options on the Import / Export' tab
709
  */
710
  do_action( __CLASS__ . '_additional_import_export_options' );
711
 
712
+ if ( ! $this->forbid_view && ! empty( $this->change_permission_attr ) ) {
713
+ ?>
714
+ <div class="error inline bws_visible"><p><strong><?php esc_html_e( 'Notice', 'bestwebsoft' ); ?>:</strong> <strong><?php printf( esc_html__( 'It is prohibited to change %1$s settings on this site in the %2$s network settings.', 'bestwebsoft' ), esc_html( $this->plugins_info['Name'] ), esc_html( $this->plugins_info['Name'] ) ); ?></strong></p></div>
715
+ <?php
716
+ }
717
+ if ( $this->forbid_view ) {
718
+ ?>
719
+ <div class="error inline bws_visible"><p><strong><?php esc_html_e( 'Notice', 'bestwebsoft' ); ?>:</strong> <strong><?php printf( esc_html__( 'It is prohibited to view %1$s settings on this site in the %2$s network settings.', 'bestwebsoft' ), esc_html( $this->plugins_info['Name'] ), esc_html( $this->plugins_info['Name'] ) ); ?></strong></p></div>
720
  <?php } else { ?>
721
+ <table class="form-table">
722
+ <?php
723
+ /**
724
+ * Action - Display custom options on the Import / Export' tab
725
  */
726
+ do_action( __CLASS__ . '_additional_import_export_options_affected' );
727
+ ?>
728
+ </table>
729
+ <?php
730
+ }
731
  }
732
 
733
  /**
734
  * Save plugin options to the database
735
+ *
736
  * @access private
737
  */
738
  private function save_options_misc() {
741
 
742
  /* hide premium options */
743
  if ( ! empty( $this->pro_page ) ) {
744
+ if ( isset( $_POST['bws_hide_premium_options'] ) && check_admin_referer( $this->plugin_basename, 'bws_nonce_name' ) ) {
745
+ $hide_result = bws_hide_premium_options( $this->options );
746
  $this->hide_pro_tabs = true;
747
+ $this->options = $hide_result['options'];
748
+ if ( ! empty( $hide_result['message'] ) ) {
749
  $notice = $hide_result['message'];
750
+ }
751
+ if ( $this->is_network_options ) {
752
  update_site_option( $this->prefix . '_options', $this->options );
753
+ } else {
754
  update_option( $this->prefix . '_options', $this->options );
755
+ }
756
+ } elseif ( isset( $_POST['bws_hide_premium_options_submit'] ) && check_admin_referer( $this->plugin_basename, 'bws_nonce_name' ) ) {
757
  if ( ! empty( $this->options['hide_premium_options'] ) ) {
758
  $key = array_search( get_current_user_id(), $this->options['hide_premium_options'] );
759
+ if ( false !== $key ) {
760
  unset( $this->options['hide_premium_options'][ $key ] );
761
+ }
762
+ if ( $this->is_network_options ) {
763
  update_site_option( $this->prefix . '_options', $this->options );
764
+ } else {
765
  update_option( $this->prefix . '_options', $this->options );
766
+ }
767
  }
768
  $this->hide_pro_tabs = false;
769
  } else {
770
  if ( empty( $this->options['hide_premium_options'] ) ) {
771
  $this->options['hide_premium_options'][] = get_current_user_id();
772
+ if ( $this->is_network_options ) {
773
  update_site_option( $this->prefix . '_options', $this->options );
774
+ } else {
775
  update_option( $this->prefix . '_options', $this->options );
776
+ }
777
  }
778
  $this->hide_pro_tabs = true;
779
  }
780
  }
781
  /* Save 'Track Usage' option */
782
+ if ( isset( $_POST['bws_track_usage'] ) && check_admin_referer( $this->plugin_basename, 'bws_nonce_name' ) ) {
783
  if ( empty( $bstwbsftwppdtplgns_options['track_usage']['products'][ $this->plugin_basename ] ) ) {
784
  $bstwbsftwppdtplgns_options['track_usage']['products'][ $this->plugin_basename ] = true;
785
  $track_usage = true;
786
  }
787
  } else {
788
  if ( ! empty( $bstwbsftwppdtplgns_options['track_usage']['products'][ $this->plugin_basename ] ) ) {
789
+ unset( $bstwbsftwppdtplgns_options['track_usage']['products'][ $this->plugin_basename ] );
790
+ false;
791
  $track_usage = false;
792
  }
793
  }
794
  if ( isset( $track_usage ) ) {
795
  $usage_id = ! empty( $bstwbsftwppdtplgns_options['track_usage']['usage_id'] ) ? $bstwbsftwppdtplgns_options['track_usage']['usage_id'] : false;
796
  /* send data */
797
+ $options = array(
798
+ 'timeout' => 3,
799
+ 'body' => array(
800
+ 'url' => get_bloginfo( 'url' ),
801
+ 'wp_version' => $wp_version,
802
+ 'is_active' => $track_usage,
803
+ 'product' => $this->plugin_basename,
804
+ 'version' => $this->plugins_info['Version'],
805
+ 'usage_id' => $usage_id,
806
  ),
807
+ 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ),
808
  );
809
  $raw_response = wp_remote_post( 'https://bestwebsoft.com/wp-content/plugins/products-statistics/track-usage/', $options );
810
 
811
+ if ( ! is_wp_error( $raw_response ) && 200 === intval( wp_remote_retrieve_response_code( $raw_response ) ) ) {
812
  $response = maybe_unserialize( wp_remote_retrieve_body( $raw_response ) );
813
 
814
  if ( is_array( $response ) &&
815
+ ! empty( $response['usage_id'] ) &&
816
+ $response['usage_id'] !== $usage_id ) {
817
  $bstwbsftwppdtplgns_options['track_usage']['usage_id'] = $response['usage_id'];
818
  }
819
  }
820
 
821
+ if ( $this->is_multisite ) {
822
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
823
+ } else {
824
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
825
+ }
826
  }
827
 
828
  return compact( 'notice' );
832
  *
833
  */
834
  public function tab_license() {
835
+ global $wp_version, $bstwbsftwppdtplgns_options;
836
+ ?>
837
+ <h3 class="bws_tab_label"><?php esc_html_e( 'License Key', 'bestwebsoft' ); ?></h3>
838
  <?php $this->help_phrase(); ?>
839
+ <hr>
840
  <?php
841
  foreach ( $this->licenses as $single_license ) {
842
+ $pro_plugin_name = ( strpos( $single_license['name'], 'Pro' ) ) ? $single_license['name'] : $single_license['name'] . ' Pro';
843
+ if ( ! empty( $this->pro_page ) || ! empty( $single_license['pro_basename'] ) ) {
844
 
845
  if ( $this->pro_plugin_is_activated && ( empty( $single_license['pro_basename'] ) || isset( $this->bws_license_plugin ) ) ) {
846
+ $url = 'https://bestwebsoft.com/wp-content/plugins/paid-products/plugins/downloads/?bws_first_download=' . $this->bws_license_plugin . '&bws_license_key=' . $bstwbsftwppdtplgns_options[ $this->bws_license_plugin ] . '&download_from=5';
847
+ ?>
848
  <table class="form-table">
849
+ <tr>
850
+ <th scope="row"><?php echo wp_kses_data( $pro_plugin_name ) . ' License'; ?></th>
851
+ <td>
852
+ <p>
853
+ <strong><?php esc_html_e( 'Your Pro plugin is ready', 'bestwebsoft' ); ?></strong>
854
  <br>
855
+ <?php esc_html_e( 'Your plugin has been zipped, and now is ready to download.', 'bestwebsoft' ); ?>
856
  </p>
857
  <p>
858
+ <a class="button button-secondary" target="_parent" href="<?php echo esc_url( $url ); ?>"><?php esc_html_e( 'Download Now', 'bestwebsoft' ); ?></a>
859
  </p>
860
  <br>
861
  <p>
862
+ <strong><?php esc_html_e( 'Need help installing the plugin?', 'bestwebsoft' ); ?></strong>
863
  <br>
864
+ <a target="_blank" href="https://bestwebsoft.com/documentation/how-to-install-a-wordpress-product/how-to-install-a-wordpress-plugin/"><?php esc_html_e( 'How to install WordPress plugin from your admin Dashboard (ZIP archive)', 'bestwebsoft' ); ?></a>
865
  </p>
866
  <br>
867
  <p>
868
+ <strong><?php esc_html_e( 'Get Started', 'bestwebsoft' ); ?></strong>
869
  <br>
870
+ <a target="_blank" href="https://bestwebsoft.com/documentation/"><?php esc_html_e( 'Documentation', 'bestwebsoft' ); ?></a>
871
  <br>
872
+ <a target="_blank" href="https://www.youtube.com/user/bestwebsoft"><?php esc_html_e( 'Video Instructions', 'bestwebsoft' ); ?></a>
873
  <br>
874
+ <a target="_blank" href="https://support.bestwebsoft.com"><?php esc_html_e( 'Knowledge Base', 'bestwebsoft' ); ?></a>
875
  </p>
876
+ </td>
877
+ </tr>
878
+ </table>
879
+ <?php
880
+ } else {
881
  $attr = $license_key = '';
882
  if ( isset( $bstwbsftwppdtplgns_options['go_pro'][ $this->bws_license_plugin ]['count'] ) &&
883
+ '5' < $bstwbsftwppdtplgns_options['go_pro'][ $this->bws_license_plugin ]['count'] &&
884
+ $bstwbsftwppdtplgns_options['go_pro'][ $this->bws_license_plugin ]['time'] > ( time() - ( 24 * 60 * 60 ) ) ) {
885
  $attr = 'disabled="disabled"';
886
+ }
887
 
888
  if ( ! empty( $single_license['pro_basename'] ) ) {
889
  $license_key = ! empty( $bstwbsftwppdtplgns_options[ $single_license['pro_basename'] ] ) ? $bstwbsftwppdtplgns_options[ $single_license['pro_basename'] ] : '';
890
+ }
891
+ ?>
892
+ <table class="form-table">
893
+ <tr>
894
+ <th scope="row"><?php echo esc_html( $pro_plugin_name ) . ' License'; ?></th>
895
+ <td>
896
+ <input <?php echo wp_kses_data( $attr ); ?> type="text" name="bws_license_key_<?php echo esc_attr( ( ! empty( $single_license['pro_slug'] ) ) ? $single_license['pro_slug'] : $single_license['slug'] ); ?>" value="<?php echo esc_attr( $license_key ); ?>" />
897
+ <input <?php echo wp_kses_data( $attr ); ?> type="hidden" name="bws_license_plugin_<?php echo esc_attr( ( ! empty( $single_license['pro_slug'] ) ) ? $single_license['pro_slug'] : $single_license['slug'] ); ?>" value="<?php echo esc_attr( ( ! empty( $single_license['pro_slug'] ) ) ? $single_license['pro_slug'] : $single_license['slug'] ); ?>" />
898
+ <input <?php echo wp_kses_data( $attr ); ?> type="submit" class="button button-secondary" name="bws_license_submit" value="<?php esc_html_e( 'Activate', 'bestwebsoft' ); ?>" />
899
+ <input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce( 'bws_license_key_nonce' ); ?>" />
900
+ <div class="bws_info">
901
+ <?php printf( esc_html__( 'Enter your license key to activate %s and get premium plugin features.', 'bestwebsoft' ), '<a href="' . esc_url( $this->bws_plugin_link ) . '" target="_blank" title="' . esc_html( $pro_plugin_name ) . '">' . esc_html( $pro_plugin_name ) . '</a>' ); ?>
902
+ </div>
903
+ <?php if ( '' !== $attr ) { ?>
904
+ <p><?php esc_html_e( 'Unfortunately, you have exceeded the number of available tries per day. Please, upload the plugin manually.', 'bestwebsoft' ); ?></p>
905
+ <?php
906
+ }
907
+ if ( false !== $this->trial_days ) {
908
+ echo '<p>' . esc_html__( 'or', 'bestwebsoft' ) . ' <a href="' . esc_url( $this->plugins_info['PluginURI'] . 'trial/?k=' . $this->link_key . '&pn=' . $this->link_pn . '&v=' . $this->plugins_info['Version'] . '&wp_v=' . $wp_version ) . '" target="_blank">' . sprintf( esc_html__( 'Start Your Free %s-Day Trial Now', 'bestwebsoft' ), esc_attr( $this->trial_days ) ) . '</a></p>';
909
+ }
910
+ ?>
911
+ </td>
912
+ </tr>
913
+ </table>
914
+ <?php
915
+ }
916
  } else {
917
  global $bstwbsftwppdtplgns_options;
918
+ $license_key = ( isset( $bstwbsftwppdtplgns_options[ $single_license['basename'] ] ) ) ? $bstwbsftwppdtplgns_options[ $single_license['basename'] ] : '';
919
+ ?>
920
+ <table class="form-table">
921
+ <tr>
922
+ <th scope="row"><?php echo esc_html( $pro_plugin_name ) . ' License'; ?></th>
923
+ <td>
924
+ <input type="text" maxlength="100" name="bws_license_key_<?php echo esc_attr( $single_license['slug'] ); ?>" value="<?php echo esc_attr( $license_key ); ?>" />
925
+ <input type="submit" class="button button-secondary" name="bws_license_submit" value="<?php esc_html_e( 'Check license key', 'bestwebsoft' ); ?>" />
926
+ <div class="bws_info">
927
+ <?php esc_html_e( 'If necessary, you can check if the license key is correct or reenter it in the field below.', 'bestwebsoft' ); ?>
928
+ </div>
929
+ </td>
930
+ </tr>
931
+ </table>
932
+ <?php
933
+ }
934
+ }
935
+ ?>
936
+ <table class="form-table">
937
+ <tr>
938
+ <th scope="row"><?php esc_html_e( 'Manage License Settings', 'bestwebsoft' ); ?></th>
939
+ <td>
940
+ <a class="button button-secondary" href="https://bestwebsoft.com/client-area" target="_blank"><?php esc_html_e( 'Login to Client Area', 'bestwebsoft' ); ?></a>
941
+ <div class="bws_info">
942
+ <?php esc_html_e( 'Manage active licenses, download BWS products, and view your payment history using BestWebSoft Client Area.', 'bestwebsoft' ); ?>
943
+ </div>
944
+ </td>
945
+ </tr>
946
+ </table>
947
+ <?php
948
+ }
949
 
950
  /**
951
  * Save plugin options to the database
952
+ *
953
  * @access private
954
  * @param ab
955
+ * @return array The Action results
956
  */
957
  private function save_options_license_key() {
958
+ global $wp_version, $bstwbsftwppdtplgns_options, $wp_filesystem;
959
  /*$empty_field_error - added to avoid error when 1 field is empty while another field contains license key*/
960
+
961
  $error = $message = $empty_field_error = '';
 
 
 
 
 
 
 
962
 
963
+ if ( ! isset( $_REQUEST['_wpnonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_REQUEST['_wpnonce'] ) ), 'bws_license_key_nonce' ) ) {
964
+ die( __( 'Security check', 'bestwebsoft' ) );
965
+ } else {
966
+
967
+ foreach ( $this->licenses as $single_license ) {
968
+ $bws_license_key = ( isset( $_POST[ ( ! empty( $single_license['pro_slug'] ) ) ? 'bws_license_key_' . $single_license['pro_slug'] : 'bws_license_key_' . $single_license['slug'] ] ) ) ? sanitize_text_field( wp_unslash( $_POST[ ( ! empty( $single_license['pro_slug'] ) ) ? 'bws_license_key_' . $single_license['pro_slug'] : 'bws_license_key_' . $single_license['slug'] ] ) ) : '';
969
+ if ( '' !== $bws_license_key ) {
970
+ if ( strlen( $bws_license_key ) !== 18 ) {
971
+ $error = __( 'Wrong license key', 'bestwebsoft' );
972
+ } else {
973
+ /* CHECK license key */
974
+ if ( $this->is_pro && empty( $single_license['pro_basename'] ) ) {
975
+ delete_transient( 'bws_plugins_update' );
976
+ if ( ! $this->all_plugins ) {
977
+ if ( ! function_exists( 'get_plugins' ) ) {
978
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
979
+ }
980
+ $this->all_plugins = get_plugins();
981
  }
982
+ $current = get_site_transient( 'update_plugins' );
983
+
984
+ if ( ! empty( $this->all_plugins ) && ! empty( $current ) && isset( $current->response ) && is_array( $current->response ) ) {
985
+ $to_send = array();
986
+ $to_send['plugins'][ $single_license['basename'] ] = $this->all_plugins[ $single_license['basename'] ];
987
+ $to_send['plugins'][ $single_license['basename'] ]['bws_license_key'] = $bws_license_key;
988
+ $to_send['plugins'][ $single_license['basename'] ]['bws_illegal_client'] = true;
989
+ $options = array(
990
+ 'timeout' => ( ( defined( 'DOING_CRON' ) && DOING_CRON ) ? 30 : 3 ),
991
+ 'body' => array( 'plugins' => serialize( $to_send ) ),
992
+ 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ),
993
+ );
994
+ $raw_response = wp_remote_post( 'https://bestwebsoft.com/wp-content/plugins/paid-products/plugins/pro-license-check/1.0/', $options );
995
+
996
+ if ( is_wp_error( $raw_response ) || 200 !== intval( wp_remote_retrieve_response_code( $raw_response ) ) ) {
997
+ $error = __( 'Something went wrong. Please try again later. If the error appears again, please contact us', 'bestwebsoft' ) . ': <a href=https://support.bestwebsoft.com>BestWebSoft</a>. ' . __( 'We are sorry for inconvenience.', 'bestwebsoft' );
998
+ } else {
999
+ $response = maybe_unserialize( wp_remote_retrieve_body( $raw_response ) );
1000
+ if ( is_array( $response ) && ! empty( $response ) ) {
1001
+ foreach ( $response as $single_response ) {
1002
+ if ( 'wrong_license_key' === $single_response->package ) {
1003
+ $error = __( 'Wrong license key.', 'bestwebsoft' );
1004
+ } elseif ( 'wrong_domain' === $single_response->package ) {
1005
+ $error = __( 'This license key is bound to another site.', 'bestwebsoft' );
1006
+ } elseif ( 'time_out' === $single_response->package ) {
1007
+ $message = __( 'This license key is valid, but Your license has expired. If you want to update our plugin in future, you should extend the license.', 'bestwebsoft' );
1008
+ } elseif ( 'you_are_banned' === $single_response->package ) {
1009
+ $error = __( 'Unfortunately, you have exceeded the number of available tries.', 'bestwebsoft' );
1010
+ } elseif ( 'duplicate_domen_for_trial' === $single_response->package ) {
1011
+ $error = __( 'Unfortunately, the Pro Trial licence was already installed to this domain. The Pro Trial license can be installed only once.', 'bestwebsoft' );
1012
+ }
1013
+ if ( empty( $error ) ) {
1014
+ if ( empty( $message ) ) {
1015
+ if ( isset( $single_response->trial ) ) {
1016
+ $message = __( 'The Pro Trial license key is valid.', 'bestwebsoft' );
1017
+ } else {
1018
+ $message = __( 'The license key is valid.', 'bestwebsoft' );
1019
+ }
1020
+
1021
+ if ( ! empty( $single_response->time_out ) ) {
1022
+ $message .= ' ' . __( 'Your license will expire on', 'bestwebsoft' ) . ' ' . $single_response->time_out . '.';
1023
+ } else {
1024
+ /* lifetime */
1025
+ $single_response->time_out = null;
1026
+ }
1027
+
1028
+ if ( isset( $single_response->trial ) && $this->is_trial ) {
1029
+ $message .= ' ' . sprintf( __( 'In order to continue using the plugin it is necessary to buy a %s license.', 'bestwebsoft' ), '<a href="' . esc_url( $this->plugins_info['PluginURI'] . '?k=' . $this->link_key . '&pn=' . $this->link_pn . '&v=' . $this->plugins_info['Version'] . '&wp_v=' . $wp_version ) . '" target="_blank" title="' . $this->plugins_info['Name'] . '">Pro</a>' );
1030
+ }
1031
  }
1032
 
1033
+ if ( isset( $single_response->trial ) ) {
1034
+ $bstwbsftwppdtplgns_options['trial'][ $single_license['basename'] ] = 1;
1035
  } else {
1036
+ unset( $bstwbsftwppdtplgns_options['trial'][ $single_license['basename'] ] );
 
1037
  }
1038
 
1039
+ if ( isset( $single_response->nonprofit ) ) {
1040
+ $bstwbsftwppdtplgns_options['nonprofit'][ $single_license['basename'] ] = 1;
1041
+ } else {
1042
+ unset( $bstwbsftwppdtplgns_options['nonprofit'][ $single_license['basename'] ] );
1043
  }
 
1044
 
1045
+ if ( ! isset( $bstwbsftwppdtplgns_options[ $single_license['basename'] ] ) || $bstwbsftwppdtplgns_options[ $single_license['basename'] ] !== $bws_license_key ) {
1046
+ $bstwbsftwppdtplgns_options[ $single_license['basename'] ] = $bws_license_key;
 
 
 
 
 
 
 
 
 
 
 
 
1047
 
1048
+ WP_Filesystem();
1049
+ if ( $wp_filesystem->put_contents( dirname( dirname( __FILE__ ) ) . '/license_key.txt', $bws_license_key, 0755 ) ) {
1050
+ $update_option = true;
1051
+ }
1052
  }
 
 
1053
 
1054
+ if ( isset( $bstwbsftwppdtplgns_options['wrong_license_key'][ $single_license['basename'] ] ) ) {
1055
+ unset( $bstwbsftwppdtplgns_options['wrong_license_key'][ $single_license['basename'] ] );
1056
+ $update_option = true;
1057
+ }
1058
 
1059
+ if ( ! isset( $bstwbsftwppdtplgns_options['time_out'][ $single_license['basename'] ] ) || $bstwbsftwppdtplgns_options['time_out'][ $single_license['basename'] ] !== $single_response->time_out ) {
1060
+ $bstwbsftwppdtplgns_options['time_out'][ $single_license['basename'] ] = $single_response->time_out;
1061
+ $update_option = true;
1062
+ }
1063
 
1064
+ if ( isset( $update_option ) ) {
1065
+ if ( $this->is_multisite ) {
1066
+ update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
1067
+ } else {
1068
+ update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
1069
+ }
1070
  }
1071
  }
1072
  }
1073
+ } else {
1074
+ $error = __( 'Something went wrong. Please try again later. If the error appears again, please contact us', 'bestwebsoft' ) . ' <a href=https://support.bestwebsoft.com>BestWebSoft</a>. ' . __( 'We are sorry for inconvenience.', 'bestwebsoft' );
1075
  }
 
 
1076
  }
1077
  }
1078
+ /* Go Pro */
 
 
 
 
 
 
1079
  } else {
1080
+ $slug = ! empty( $single_license['pro_slug'] ) ? 'bws_license_plugin_' . $single_license['pro_slug'] : 'bws_license_plugin_' . $single_license['slug'];
1081
+ $bws_license_plugin = isset( $_POST[ $slug ] ) ? sanitize_text_field( wp_unslash( $_POST[ $slug ] ) ) : '';
1082
+ if ( isset( $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] ) && $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['time'] > ( time() - ( 24 * 60 * 60 ) ) ) {
1083
+ $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] = $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] + 1;
1084
+ } else {
1085
+ $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] = 1;
1086
+ $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['time'] = time();
 
1087
  }
 
 
1088
 
1089
+ /* download Pro */
1090
+ if ( ! $this->all_plugins ) {
1091
+ if ( ! function_exists( 'get_plugins' ) ) {
1092
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
1093
+ }
1094
+ $this->all_plugins = get_plugins();
1095
+ }
 
 
 
 
 
 
1096
 
1097
+ if ( ! array_key_exists( $bws_license_plugin, $this->all_plugins ) ) {
1098
+ $current = get_site_transient( 'update_plugins' );
1099
+ if ( ! empty( $current ) && isset( $current->response ) && is_array( $current->response ) ) {
1100
+ $to_send = array();
1101
+ $to_send['plugins'][ $bws_license_plugin ] = array();
1102
+ $to_send['plugins'][ $bws_license_plugin ]['bws_license_key'] = $bws_license_key;
1103
+ $to_send['plugins'][ $bws_license_plugin ]['bws_illegal_client'] = true;
1104
+ $options = array(
1105
+ 'timeout' => ( ( defined( 'DOING_CRON' ) && DOING_CRON ) ? 30 : 3 ),
1106
+ 'body' => array( 'plugins' => serialize( $to_send ) ),
1107
+ 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ),
1108
+ );
1109
+ $raw_response = wp_remote_post( 'https://bestwebsoft.com/wp-content/plugins/paid-products/plugins/pro-license-check/1.0/', $options );
1110
+
1111
+ if ( is_wp_error( $raw_response ) || 200 !== intval( wp_remote_retrieve_response_code( $raw_response ) ) ) {
1112
+ $error = __( 'Something went wrong. Please try again later. If the error appears again, please contact us', 'bestwebsoft' ) . ': <a href="https://support.bestwebsoft.com">BestWebSoft</a>. ' . __( 'We are sorry for inconvenience.', 'bestwebsoft' );
1113
+ } else {
1114
+ $response = maybe_unserialize( wp_remote_retrieve_body( $raw_response ) );
1115
+ if ( is_array( $response ) && ! empty( $response ) ) {
1116
+ foreach ( $response as $single_response ) {
1117
+ if ( 'wrong_license_key' === $single_response->package ) {
1118
+ $error = __( 'Wrong license key.', 'bestwebsoft' );
1119
+ } elseif ( 'wrong_domain' === $single_response->package ) {
1120
+ $error = __( 'This license key is bound to another site.', 'bestwebsoft' );
1121
+ } elseif ( 'you_are_banned' === $single_response->package ) {
1122
+ $error = __( 'Unfortunately, you have exceeded the number of available tries per day. Please, upload the plugin manually.', 'bestwebsoft' );
1123
+ } elseif ( 'time_out' === $single_response->package ) {
1124
+ $error = sprintf( __( 'Unfortunately, Your license has expired. To continue getting top-priority support and plugin updates, you should extend it in your %s.', 'bestwebsoft' ), ' <a href="https://bestwebsoft.com/client-area">Client Area</a>' );
1125
+ } elseif ( 'duplicate_domen_for_trial' === $single_response->package ) {
1126
+ $error = __( 'Unfortunately, the Pro licence was already installed to this domain. The Pro Trial license can be installed only once.', 'bestwebsoft' );
1127
+ }
1128
  }
1129
+ if ( empty( $error ) ) {
1130
+ $bws_license_plugin = ( ! empty( $single_license['pro_basename'] ) ) ? $single_license['pro_basename'] : $single_license['basename'];
 
1131
 
1132
+ $bstwbsftwppdtplgns_options[ $bws_license_plugin ] = $bws_license_key;
1133
+ $this->pro_plugin_is_activated = true;
1134
+ }
1135
+ } else {
1136
+ $error = __( 'Something went wrong. Try again later or upload the plugin manually. We are sorry for inconvenience.', 'bestwebsoft' );
1137
  }
1138
+ }
1139
+ }
1140
+ } else {
1141
+ $bstwbsftwppdtplgns_options[ $bws_license_plugin ] = $bws_license_key;
1142
+ /* activate Pro */
1143
+ if ( ! is_plugin_active( $bws_license_plugin ) ) {
1144
+ if ( $this->is_multisite && is_plugin_active_for_network( ( ! empty( $single_license['pro_basename'] ) ) ? $single_license['pro_basename'] : $single_license['basename'] ) ) {
1145
+ /* if multisite and free plugin is network activated */
1146
+ $network_wide = true;
1147
  } else {
1148
+ /* activate on a single blog */
1149
+ $network_wide = false;
1150
  }
1151
+ activate_plugin( $bws_license_plugin, null, $network_wide );
1152
+ $this->pro_plugin_is_activated = true;
1153
  }
1154
  }
1155
+ /* add 'track_usage' for Pro version */
1156
+ if ( ! empty( $bstwbsftwppdtplgns_options['track_usage'][ ( ! empty( $single_license['pro_basename'] ) ) ? $single_license['pro_basename'] : $single_license['basename'] ] ) &&
1157
+ empty( $bstwbsftwppdtplgns_options['track_usage'][ $bws_license_plugin ] ) ) {
1158
+ $bstwbsftwppdtplgns_options['track_usage'][ $bws_license_plugin ] = $bstwbsftwppdtplgns_options['track_usage'][ ( ! empty( $single_license['pro_basename'] ) ) ? $single_license['pro_basename'] : $single_license['basename'] ];
 
 
 
 
 
 
 
 
 
1159
  }
 
 
 
 
 
 
1160
 
1161
+ if ( $this->is_multisite ) {
1162
+ update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
1163
+ } else {
1164
+ update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
1165
+ }
1166
 
1167
+ if ( $this->pro_plugin_is_activated ) {
1168
+ delete_transient( 'bws_plugins_update' );
1169
+ }
1170
  }
1171
  }
1172
+ } else {
1173
+ $empty_field_error = __( 'Please, enter Your license key', 'bestwebsoft' );
1174
  }
 
 
1175
  }
1176
  }
1177
  return compact( 'error', 'message', 'empty_field_error' );
1179
 
1180
  /**
1181
  * Display help phrase
1182
+ *
1183
  * @access public
1184
  * @param void
1185
+ * @return html The Action results
1186
  */
1187
  public function help_phrase() {
1188
+ /*pls */
1189
+ echo '<div class="bws_tab_description">' . esc_html__( 'Need Help?', 'bestwebsoft' ) . ' ';
1190
+ if ( '' !== $this->doc_link ) {
1191
+ echo '<a href="' . esc_url( $this->doc_link ) . '" target="_blank">' . esc_html__( 'Read the Instruction', 'bestwebsoft' );
1192
+ } else {
1193
+ echo '<a href="https://support.bestwebsoft.com/hc/en-us/" target="_blank">' . esc_html__( 'Visit Help Center', 'bestwebsoft' );
1194
+ }
1195
+ if ( '' !== $this->doc_video_link ) {
1196
+ echo '</a> ' . esc_html__( 'or', 'bestwebsoft' ) . ' <a href="' . esc_url( $this->doc_video_link ) . '" target="_blank">' . esc_html__( 'Watch the Video', 'bestwebsoft' );
1197
+ }
1198
  echo '</a></div>';
1199
+ /* pls*/
1200
  }
1201
 
1202
  public function bws_pro_block_links() {
1203
+ global $wp_version;
1204
+ ?>
1205
+ <div class="bws_pro_version_tooltip">
1206
+ <a class="bws_button" href="<?php echo esc_url( $this->plugins_info['PluginURI'] ); ?>?k=<?php echo esc_attr( $this->link_key ); ?>&amp;pn=<?php echo esc_attr( $this->link_pn ); ?>&amp;v=<?php echo esc_attr( $this->plugins_info['Version'] ); ?>&amp;wp_v=<?php echo esc_attr( $wp_version ); ?>" target="_blank" title="<?php echo esc_html( $this->plugins_info['Name'] ); ?>"><?php esc_html_e( 'Upgrade to Pro', 'bestwebsoft' ); ?></a>
1207
+ <?php if ( false !== $this->trial_days ) { ?>
1208
+ <span class="bws_trial_info">
1209
+ <?php esc_html_e( 'or', 'bestwebsoft' ); ?>
1210
+ <a href="<?php echo esc_url( $this->plugins_info['PluginURI'] . '?k=' . $this->link_key . '&pn=' . $this->link_pn . '&v=' . $this->plugins_info['Version'] . '&wp_v=' . $wp_version ); ?>" target="_blank" title="<?php echo esc_html( $this->plugins_info['Name'] ); ?>"><?php esc_html_e( 'Start Your Free Trial', 'bestwebsoft' ); ?></a>
1211
  </span>
1212
  <?php } ?>
1213
+ <div class="clear"></div>
1214
+ </div>
1215
+ <?php
1216
+ }
1217
 
1218
  /**
1219
  * Restore plugin options to defaults
1220
+ *
1221
  * @access public
1222
  * @param void
1223
  * @return void
1233
  */
1234
  $this->options = apply_filters( __CLASS__ . '_additional_restore_options', $this->default_options );
1235
  if ( $this->is_network_options ) {
1236
+ $this->options['network_apply'] = 'default';
1237
+ $this->options['network_view'] = '1';
1238
  $this->options['network_change'] = '1';
1239
  update_site_option( $this->prefix . '_options', $this->options );
1240
  } else {
1242
  }
1243
  }
1244
 
1245
+ public function add_request_feature() {
1246
+ ?>
1247
  <div id="bws_request_feature" class="widget-access-link">
1248
+ <button type="button" class="button" ><?php esc_html_e( 'Request a Feature', 'bestwebsoft' ); ?></button>
1249
  </div>
1250
+ <?php
1251
+ $modal_html = '<div class="bws-modal bws-modal-deactivation-feedback bws-modal-request-feature">
1252
+ <div class="bws-modal-dialog">
1253
+ <div class="bws-modal-body">
1254
+ <h2>' . sprintf( esc_html__( 'How can we improve %s?', 'bestwebsoft' ), $this->plugins_info['Name'] ) . '</h2>
1255
+ <div class="bws-modal-panel active">
1256
+ <p>' . esc_html__( 'We look forward to hear your ideas.', 'bestwebsoft' ) . '</p>
1257
+ <p>
1258
+ <textarea placeholder="' . esc_html__( 'Describe your idea', 'bestwebsoft' ) . '..."></textarea>
1259
+ </p>
1260
+ <label class="bws-modal-anonymous-label">
1261
+ <input type="checkbox" /> ' . esc_html__( 'Send website data and allow to contact me back', 'bestwebsoft' ) . '
1262
  </label>
1263
  </div>
1264
  </div>
1265
  <div class="bws-modal-footer">
1266
+ <a href="#" class="button disabled bws-modal-button button-primary">' . esc_html__( 'Submit', 'bestwebsoft' ) . '</a>
1267
+ <span class="bws-modal-processing hidden">' . esc_html__( 'Processing', 'bestwebsoft' ) . '...</span>
1268
+ <span class="bws-modal-thank-you hidden">' . esc_html__( 'Thank you!', 'bestwebsoft' ) . '</span>
1269
  <div class="clear"></div>
1270
  </div>
1271
  </div>
1272
  </div>';
1273
 
1274
+ $script = '(function($) {
1275
+ var modalHtml = ' . wp_json_encode( $modal_html ) . ",
1276
  \$modal = $( modalHtml );
1277
 
1278
  \$modal.appendTo( $( 'body' ) );
1305
  var is_anonymous = ( \$modal.find( '.bws-modal-anonymous-label' ).find( 'input' ).is( ':checked' ) ) ? 0 : 1;
1306
 
1307
  $.ajax({
1308
+ url : ajaxurl,
1309
+ method : 'POST',
1310
+ data : {
1311
+ 'Action' : 'bws_submit_request_feature_action',
1312
  'plugin' : '" . $this->plugin_basename . "',
1313
  'info' : info,
1314
  'is_anonymous' : is_anonymous,
1362
  })(jQuery);";
1363
 
1364
  /* add script in FOOTER */
1365
+ wp_register_script( 'bws-request-feature-dialog', '', array( 'jquery' ), '2.4.2', true );
1366
  wp_enqueue_script( 'bws-request-feature-dialog' );
1367
  wp_add_inline_script( 'bws-request-feature-dialog', sprintf( $script ) );
1368
  }
1369
  }
1370
  }
1371
 
 
1372
  /**
1373
  * Called after the user has submitted his reason for deactivating the plugin.
1374
  *
1378
  function bws_submit_request_feature_action() {
1379
  global $bstwbsftwppdtplgns_options, $wp_version, $bstwbsftwppdtplgns_active_plugins, $current_user;
1380
 
1381
+ if ( isset( $_REQUEST['bws_ajax_nonce'] ) ) {
1382
 
1383
+ wp_verify_nonce( sanitize_text_field( wp_unslash( $_REQUEST['bws_ajax_nonce'] ) ), 'bws_ajax_nonce' );
 
1384
 
1385
+ $basename = isset( $_REQUEST['plugin'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['plugin'] ) ) : '';
1386
+ $info = isset( $_REQUEST['info'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['info'] ) ) : '';
 
 
 
 
1387
 
1388
+ if ( empty( $info ) || empty( $basename ) ) {
1389
+ exit;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1390
  }
1391
 
1392
+ $info = substr( $info, 0, 255 );
1393
+ $is_anonymous = isset( $_REQUEST['is_anonymous'] ) && 1 === intval( $_REQUEST['is_anonymous'] );
1394
 
1395
+ $options = array(
1396
+ 'product' => $basename,
1397
+ 'info' => $info,
1398
+ );
 
 
1399
 
 
1400
  if ( ! $is_anonymous ) {
1401
+ if ( ! isset( $bstwbsftwppdtplgns_options ) ) {
1402
+ $bstwbsftwppdtplgns_options = ( is_multisite() ) ? get_site_option( 'bstwbsftwppdtplgns_options' ) : get_option( 'bstwbsftwppdtplgns_options' );
1403
+ }
 
1404
 
1405
+ if ( ! empty( $bstwbsftwppdtplgns_options['track_usage']['usage_id'] ) ) {
1406
+ $options['usage_id'] = $bstwbsftwppdtplgns_options['track_usage']['usage_id'];
1407
+ } else {
1408
+ $options['usage_id'] = false;
1409
+ $options['url'] = get_bloginfo( 'url' );
1410
+ $options['wp_version'] = $wp_version;
1411
+ $options['is_active'] = false;
1412
+ $options['version'] = $bstwbsftwppdtplgns_active_plugins[ $basename ]['Version'];
1413
  }
1414
+
1415
+ $options['email'] = $current_user->data->user_email;
1416
  }
1417
 
1418
+ /* send data */
1419
+ $raw_response = wp_remote_post(
1420
+ 'https://bestwebsoft.com/wp-content/plugins/products-statistics/request-feature/',
1421
+ array(
1422
+ 'method' => 'POST',
1423
+ 'body' => $options,
1424
+ 'timeout' => 15,
1425
+ )
1426
+ );
1427
+
1428
+ if ( ! is_wp_error( $raw_response ) && 200 === intval( wp_remote_retrieve_response_code( $raw_response ) ) ) {
1429
+ if ( ! $is_anonymous ) {
1430
+ $response = maybe_unserialize( wp_remote_retrieve_body( $raw_response ) );
1431
+
1432
+ if ( is_array( $response ) && ! empty( $response['usage_id'] ) && $response['usage_id'] !== $options['usage_id'] ) {
1433
+ $bstwbsftwppdtplgns_options['track_usage']['usage_id'] = $response['usage_id'];
1434
+
1435
+ if ( is_multisite() ) {
1436
+ update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
1437
+ } else {
1438
+ update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
1439
+ }
1440
+ }
1441
+ }
1442
+
1443
+ echo 'done';
1444
+ } else {
1445
+ echo wp_kses_data( $response->get_error_code() ) . ': ' . wp_kses_data( $response->get_error_message() );
1446
+ }
1447
  }
1448
  exit;
1449
  }
1450
  }
1451
 
1452
+ add_action( 'wp_ajax_bws_submit_request_feature_action', 'bws_submit_request_feature_action' );
bws_menu/css/codemirror.css CHANGED
@@ -1,63 +1,63 @@
1
  /* custom */
2
  .CodeMirror span.bws-readonly {
3
- color: #aaa;
4
  }
5
  /* BASICS */
6
 
7
  .CodeMirror {
8
- /* Set height, width, borders, and global font properties here */
9
- font-family: monospace;
10
- height: 500px;
11
- border: 1px solid #ddd;
12
  }
13
  .CodeMirror-scroll {
14
- /* Set scrolling behaviour here */
15
- overflow: auto;
16
  }
17
 
18
  /* PADDING */
19
 
20
  .CodeMirror-lines {
21
- padding: 4px 0; /* Vertical padding around content */
22
  }
23
  .CodeMirror pre {
24
- padding: 0 4px; /* Horizontal padding of content */
25
  }
26
 
27
  .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
28
- background-color: white; /* The little square between H and V scrollbars */
29
  }
30
 
31
  /* GUTTER */
32
 
33
  .CodeMirror-gutters {
34
- border-right: 1px solid #ddd;
35
- background-color: #f7f7f7;
36
- white-space: nowrap;
37
  }
38
  .CodeMirror-linenumbers {}
39
  .CodeMirror-linenumber {
40
- padding: 0 3px 0 5px;
41
- min-width: 20px;
42
- text-align: right;
43
- color: #999;
44
- -moz-box-sizing: content-box;
45
- box-sizing: content-box;
46
  }
47
 
48
  /* CURSOR */
49
 
50
  .CodeMirror div.CodeMirror-cursor {
51
- border-left: 1px solid black;
52
  }
53
  /* Shown when moving in bi-directional text */
54
  .CodeMirror div.CodeMirror-secondarycursor {
55
- border-left: 1px solid silver;
56
  }
57
  .CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor {
58
- width: auto;
59
- border: 0;
60
- background: #7e7;
61
  }
62
  /* Can style cursor different in overwrite (non-insert) mode */
63
  div.CodeMirror-overwrite div.CodeMirror-cursor {}
@@ -65,8 +65,8 @@ div.CodeMirror-overwrite div.CodeMirror-cursor {}
65
  .cm-tab { display: inline-block; }
66
 
67
  .CodeMirror-ruler {
68
- border-left: 1px solid #ccc;
69
- position: absolute;
70
  }
71
 
72
  /* DEFAULT THEME */
@@ -110,155 +110,155 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
110
  /* STOP */
111
 
112
  /* The rest of this file contains styles related to the mechanics of
113
- the editor. You probably shouldn't touch them. */
114
 
115
  .CodeMirror {
116
- line-height: 1;
117
- position: relative;
118
- overflow: hidden;
119
- background: white;
120
- color: black;
121
  }
122
 
123
  .CodeMirror-scroll {
124
- /* 30px is the magic margin used to hide the element's real scrollbars */
125
- /* See overflow: hidden in .CodeMirror */
126
- margin-bottom: -30px; margin-right: -30px;
127
- padding-bottom: 30px;
128
- height: 100%;
129
- outline: none; /* Prevent dragging from highlighting the element */
130
- position: relative;
131
- -moz-box-sizing: content-box;
132
- box-sizing: content-box;
133
  }
134
  .CodeMirror-sizer {
135
- position: relative;
136
- border-right: 30px solid transparent;
137
- -moz-box-sizing: content-box;
138
- box-sizing: content-box;
139
  }
140
 
141
  /* The fake, visible scrollbars. Used to force redraw during scrolling
142
- before actuall scrolling happens, thus preventing shaking and
143
- flickering artifacts. */
144
  .CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
145
- position: absolute;
146
- z-index: 6;
147
- display: none;
148
  }
149
  .CodeMirror-vscrollbar {
150
- right: 0; top: 0;
151
- overflow-x: hidden;
152
- overflow-y: scroll;
153
  }
154
  .CodeMirror-hscrollbar {
155
- bottom: 0; left: 0;
156
- overflow-y: hidden;
157
- overflow-x: scroll;
158
  }
159
  .CodeMirror-scrollbar-filler {
160
- right: 0; bottom: 0;
161
  }
162
  .CodeMirror-gutter-filler {
163
- left: 0; bottom: 0;
164
  }
165
 
166
  .CodeMirror-gutters {
167
- position: absolute; left: 0; top: 0;
168
- padding-bottom: 30px;
169
- z-index: 3;
170
  }
171
  .CodeMirror-gutter {
172
- white-space: normal;
173
- height: 100%;
174
- -moz-box-sizing: content-box;
175
- box-sizing: content-box;
176
- padding-bottom: 30px;
177
- margin-bottom: -32px;
178
- display: inline-block;
179
- /* Hack to make IE7 behave */
180
- *zoom:1;
181
- *display:inline;
182
  }
183
  .CodeMirror-gutter-elt {
184
- position: absolute;
185
- cursor: default;
186
- z-index: 4;
187
  }
188
 
189
  .CodeMirror-lines {
190
- cursor: text;
191
  }
192
  .CodeMirror pre {
193
- /* Reset some styles that the rest of the page might have set */
194
- -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
195
- border-width: 0;
196
- background: transparent;
197
- font-family: inherit;
198
- font-size: inherit;
199
- margin: 0;
200
- white-space: pre;
201
- word-wrap: normal;
202
- line-height: inherit;
203
- color: inherit;
204
- z-index: 2;
205
- position: relative;
206
- overflow: visible;
207
  }
208
  .CodeMirror-wrap pre {
209
- word-wrap: break-word;
210
- white-space: pre-wrap;
211
- word-break: normal;
212
  }
213
 
214
  .CodeMirror-linebackground {
215
- position: absolute;
216
- left: 0; right: 0; top: 0; bottom: 0;
217
- z-index: 0;
218
  }
219
 
220
  .CodeMirror-linewidget {
221
- position: relative;
222
- z-index: 2;
223
- overflow: auto;
224
  }
225
 
226
  .CodeMirror-widget {}
227
 
228
  .CodeMirror-wrap .CodeMirror-scroll {
229
- overflow-x: hidden;
230
  }
231
 
232
  .CodeMirror-measure {
233
- position: absolute;
234
- width: 100%;
235
- height: 0;
236
- overflow: hidden;
237
- visibility: hidden;
238
  }
239
  .CodeMirror-measure pre { position: static; }
240
 
241
  .CodeMirror div.CodeMirror-cursor {
242
- position: absolute;
243
- border-right: none;
244
- width: 0;
245
  }
246
 
247
  div.CodeMirror-cursors {
248
- visibility: hidden;
249
- position: relative;
250
- z-index: 1;
251
  }
252
  .CodeMirror-focused div.CodeMirror-cursors {
253
- visibility: visible;
254
  }
255
 
256
  .CodeMirror-selected { background: #d9d9d9; }
257
  .CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
258
 
259
  .cm-searching {
260
- background: #ffa;
261
- background: rgba(255, 255, 0, .4);
262
  }
263
 
264
  /* IE7 hack to prevent it from returning funny offsetTops on the spans */
@@ -268,8 +268,8 @@ div.CodeMirror-cursors {
268
  .cm-force-border { padding-right: .1px; }
269
 
270
  @media print {
271
- /* Hide the cursor when printing */
272
- .CodeMirror div.CodeMirror-cursors {
273
- visibility: hidden;
274
- }
275
  }
1
  /* custom */
2
  .CodeMirror span.bws-readonly {
3
+ color: #aaa;
4
  }
5
  /* BASICS */
6
 
7
  .CodeMirror {
8
+ /* Set height, width, borders, and global font properties here */
9
+ font-family: monospace;
10
+ height: 500px;
11
+ border: 1px solid #ddd;
12
  }
13
  .CodeMirror-scroll {
14
+ /* Set scrolling behaviour here */
15
+ overflow: auto;
16
  }
17
 
18
  /* PADDING */
19
 
20
  .CodeMirror-lines {
21
+ padding: 4px 0; /* Vertical padding around content */
22
  }
23
  .CodeMirror pre {
24
+ padding: 0 4px; /* Horizontal padding of content */
25
  }
26
 
27
  .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
28
+ background-color: white; /* The little square between H and V scrollbars */
29
  }
30
 
31
  /* GUTTER */
32
 
33
  .CodeMirror-gutters {
34
+ border-right: 1px solid #ddd;
35
+ background-color: #f7f7f7;
36
+ white-space: nowrap;
37
  }
38
  .CodeMirror-linenumbers {}
39
  .CodeMirror-linenumber {
40
+ padding: 0 3px 0 5px;
41
+ min-width: 20px;
42
+ text-align: right;
43
+ color: #999;
44
+ -moz-box-sizing: content-box;
45
+ box-sizing: content-box;
46
  }
47
 
48
  /* CURSOR */
49
 
50
  .CodeMirror div.CodeMirror-cursor {
51
+ border-left: 1px solid black;
52
  }
53
  /* Shown when moving in bi-directional text */
54
  .CodeMirror div.CodeMirror-secondarycursor {
55
+ border-left: 1px solid silver;
56
  }
57
  .CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor {
58
+ width: auto;
59
+ border: 0;
60
+ background: #7e7;
61
  }
62
  /* Can style cursor different in overwrite (non-insert) mode */
63
  div.CodeMirror-overwrite div.CodeMirror-cursor {}
65
  .cm-tab { display: inline-block; }
66
 
67
  .CodeMirror-ruler {
68
+ border-left: 1px solid #ccc;
69
+ position: absolute;
70
  }
71
 
72
  /* DEFAULT THEME */
110
  /* STOP */
111
 
112
  /* The rest of this file contains styles related to the mechanics of
113
+ the editor. You probably shouldn't touch them. */
114
 
115
  .CodeMirror {
116
+ line-height: 1;
117
+ position: relative;
118
+ overflow: hidden;
119
+ background: white;
120
+ color: black;
121
  }
122
 
123
  .CodeMirror-scroll {
124
+ /* 30px is the magic margin used to hide the element's real scrollbars */
125
+ /* See overflow: hidden in .CodeMirror */
126
+ margin-bottom: -30px; margin-right: -30px;
127
+ padding-bottom: 30px;
128
+ height: 100%;
129
+ outline: none; /* Prevent dragging from highlighting the element */
130
+ position: relative;
131
+ -moz-box-sizing: content-box;
132
+ box-sizing: content-box;
133
  }
134
  .CodeMirror-sizer {
135
+ position: relative;
136
+ border-right: 30px solid transparent;
137
+ -moz-box-sizing: content-box;
138
+ box-sizing: content-box;
139
  }
140
 
141
  /* The fake, visible scrollbars. Used to force redraw during scrolling
142
+ before actuall scrolling happens, thus preventing shaking and
143
+ flickering artifacts. */
144
  .CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
145
+ position: absolute;
146
+ z-index: 6;
147
+ display: none;
148
  }
149
  .CodeMirror-vscrollbar {
150
+ right: 0; top: 0;
151
+ overflow-x: hidden;
152
+ overflow-y: scroll;
153
  }
154
  .CodeMirror-hscrollbar {
155
+ bottom: 0; left: 0;
156
+ overflow-y: hidden;
157
+ overflow-x: scroll;
158
  }
159
  .CodeMirror-scrollbar-filler {
160
+ right: 0; bottom: 0;
161
  }
162
  .CodeMirror-gutter-filler {
163
+ left: 0; bottom: 0;
164
  }
165
 
166
  .CodeMirror-gutters {
167
+ position: absolute; left: 0; top: 0;
168
+ padding-bottom: 30px;
169
+ z-index: 3;
170
  }
171
  .CodeMirror-gutter {
172
+ white-space: normal;
173
+ height: 100%;
174
+ -moz-box-sizing: content-box;
175
+ box-sizing: content-box;
176
+ padding-bottom: 30px;
177
+ margin-bottom: -32px;
178
+ display: inline-block;
179
+ /* Hack to make IE7 behave */
180
+ *zoom:1;
181
+ *display:inline;
182
  }
183
  .CodeMirror-gutter-elt {
184
+ position: absolute;
185
+ cursor: default;
186
+ z-index: 4;
187
  }
188
 
189
  .CodeMirror-lines {
190
+ cursor: text;
191
  }
192
  .CodeMirror pre {
193
+ /* Reset some styles that the rest of the page might have set */
194
+ -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
195
+ border-width: 0;
196
+ background: transparent;
197
+ font-family: inherit;
198
+ font-size: inherit;
199
+ margin: 0;
200
+ white-space: pre;
201
+ word-wrap: normal;
202
+ line-height: inherit;
203
+ color: inherit;
204
+ z-index: 2;
205
+ position: relative;
206
+ overflow: visible;
207
  }
208
  .CodeMirror-wrap pre {
209
+ word-wrap: break-word;
210
+ white-space: pre-wrap;
211
+ word-break: normal;
212
  }
213
 
214
  .CodeMirror-linebackground {
215
+ position: absolute;
216
+ left: 0; right: 0; top: 0; bottom: 0;
217
+ z-index: 0;
218
  }
219
 
220
  .CodeMirror-linewidget {
221
+ position: relative;
222
+ z-index: 2;
223
+ overflow: auto;
224
  }
225
 
226
  .CodeMirror-widget {}
227
 
228
  .CodeMirror-wrap .CodeMirror-scroll {
229
+ overflow-x: hidden;
230
  }
231
 
232
  .CodeMirror-measure {
233
+ position: absolute;
234
+ width: 100%;
235
+ height: 0;
236
+ overflow: hidden;
237
+ visibility: hidden;
238
  }
239
  .CodeMirror-measure pre { position: static; }
240
 
241
  .CodeMirror div.CodeMirror-cursor {
242
+ position: absolute;
243
+ border-right: none;
244
+ width: 0;
245
  }
246
 
247
  div.CodeMirror-cursors {
248
+ visibility: hidden;
249
+ position: relative;
250
+ z-index: 1;
251
  }
252
  .CodeMirror-focused div.CodeMirror-cursors {
253
+ visibility: visible;
254
  }
255
 
256
  .CodeMirror-selected { background: #d9d9d9; }
257
  .CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
258
 
259
  .cm-searching {
260
+ background: #ffa;
261
+ background: rgba(255, 255, 0, .4);
262
  }
263
 
264
  /* IE7 hack to prevent it from returning funny offsetTops on the spans */
268
  .cm-force-border { padding-right: .1px; }
269
 
270
  @media print {
271
+ /* Hide the cursor when printing */
272
+ .CodeMirror div.CodeMirror-cursors {
273
+ visibility: hidden;
274
+ }
275
  }
bws_menu/css/general_style.css CHANGED
@@ -2,133 +2,138 @@
2
  * bwsicons fonts
3
  */
4
  @font-face {
5
- font-family: 'bwsicons';
6
- src: url('../fonts/bwsicons.eot?edecf2');
7
- src: url('../fonts/bwsicons.eot?edecf2#iefix') format('embedded-opentype'),
8
- url('../fonts/bwsicons.ttf?edecf2') format('truetype'),
9
- url('../fonts/bwsicons.woff?edecf2') format('woff'),
10
- url('../fonts/bwsicons.svg?edecf2#bwsicons') format('svg');
11
- font-weight: normal;
12
- font-style: normal;
13
  }
14
  .bwsicons {
15
- /* use !important to prevent issues with browser extensions that change fonts */
16
- font-family: 'bwsicons' !important;
17
- speak: none;
18
- font-style: normal;
19
- font-weight: normal;
20
- font-variant: normal;
21
- text-transform: none;
22
- line-height: 1;
23
- -webkit-font-smoothing: antialiased;
24
- -moz-osx-font-smoothing: grayscale;
25
  }
26
  .bwsicons-editor-code:before {
27
- content: "\e93a";
28
  }
29
  .bwsicons-shortcode:before {
30
- content: "\e93b";
31
  }
32
  .bwsicons-bws-logo:before {
33
- content: "\e93c";
34
  }
35
 
 
 
 
 
 
 
36
  /*
37
  * styles for bws_panel top level menu
38
  */
39
  #adminmenu #toplevel_page_bws_panel .wp-menu-image {
40
- font-family: 'bwsicons' !important;
41
  }
42
  #adminmenu #toplevel_page_bws_panel .wp-menu-image:before {
43
- content: "\e93c";
44
- font-family: 'bwsicons' !important;
45
  }
46
  #adminmenu #toplevel_page_bws_panel .wp-submenu li:nth-child(5) a {
47
- border-top: 1px solid #444;
48
- padding-top: 12px;
49
- margin-top: 6px;
50
  }
51
  /* general styles */
52
  .bws_info {
53
- color: #888;
54
- font-size: 13px;
55
- font-style: italic;
56
  }
57
  div.bws_info {
58
- margin-top: 7px;
59
- word-break: break-all;
60
  }
61
  .bws_info_small {
62
- font-size: 11px !important;
63
  }
64
  body:not(.rtl) div.updated.bws-notice {
65
- border-left: 4px solid #ffba00;
66
  }
67
  .rtl div.updated.bws-notice {
68
- border-right: 4px solid #ffba00;
69
  }
70
  /*
71
  * styles for rate-support div on the settings page
72
  */
73
  .bws-plugin-reviews {
74
- background: none repeat scroll 0 0 #BEE1F1;
75
- border: 1px solid #70A8C2;
76
- border-radius: 3px;
77
  }
78
  .bws-plugin-reviews-rate,
79
  .bws-plugin-reviews-support {
80
- border-right: 1px solid #70A8C2;
81
  }
82
  .bws-plugin-reviews a {
83
- text-decoration: none;
84
  }
85
  .bws-plugin-reviews-rate .dashicons {
86
- font-size: 12px;
87
- height: 13px;
88
- width: 9px;
89
- vertical-align: middle;
90
  }
91
  .bws-plugin-reviews-rate,
92
  .bws-plugin-reviews-support,
93
  .bws-plugin-reviews-donate {
94
- padding: 10px;
95
- display: block;
96
  }
97
-
98
  @media screen and (min-width: 1600px) {
99
- .bws-plugin-reviews-rate,
100
- .bws-plugin-reviews-support,
101
- .bws-plugin-reviews-donate {
102
- display: inline-block;
103
- width: 30%;
104
- }
105
  }
106
  @media screen and (max-width: 1600px) {
107
- .bws-plugin-reviews-rate,
108
- .bws-plugin-reviews-support {
109
- border-bottom: 1px solid #70A8C2;
110
- border-right: none;
111
- }
112
  }
113
  /*
114
  * styles for Go PRO tab
115
  */
116
  .bws_go_pro_tab {
117
- background-color: #2A95C5;
118
- border-color: #11688F;
119
- color: #fff;
120
- font-weight: normal;
121
- text-shadow: none;
122
  }
123
  .bws_go_pro_tab:hover {
124
- background-color: #2080AB;
125
- color: #fff;
126
- border-color: #11688F;
127
  }
128
  .bws_go_pro_tab.nav-tab-active {
129
- background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
130
- border-color: #CCCCCC #CCCCCC #F1F1F1;
131
- color: #000000;
132
  }
133
  /*
134
  * styles for pro_version settings and tooltip
@@ -137,754 +142,761 @@ td.bws_pro_version,
137
  tr.bws_pro_version,
138
  .nav-tab.bws_plugin_menu_pro_version,
139
  .nav-tab.bws_plugin_menu_pro_version:hover {
140
- background: rgba(245, 225, 119, 0.3);
141
  }
142
  td.bws_pro_version_tooltip {
143
- border: 1px solid #AAA;
144
- position: inherit;
145
  }
146
  .bws_pro_version_bloc {
147
- position: relative;
148
- border: 1px solid #dcd6b8;
149
- overflow: hidden;
150
  }
151
  .bws_table_bg {
152
- background: #f5e177;
153
- opacity: 0.3;
154
- width: 100%;
155
- height: 100%;
156
- position: absolute;
157
- z-index: 1;
158
  }
159
  .bws_network_apply_all {
160
- padding-left: 15px;
161
  }
162
  .bws_hide_premium_options {
163
- z-index: 5;
164
  }
165
  .bws_pro_version_table_bloc table.bws_pro_version {
166
- background: transparent;
167
- margin: 0;
168
- border: none;
169
- width: 100%;
170
  }
171
  table.bws_pro_version {
172
- background: #E0E0E0;
173
- border: 1px solid #AAA;
174
- margin-bottom: 5px;
175
- width: auto;
176
  }
177
  table.bws_pro_version tbody {
178
- display: block;
179
  }
180
  table.bws_pro_version th,
181
  table.bws_pro_version td {
182
- padding-left: 10px;
183
  }
184
  .bws_pro_version_tooltip {
185
- position: relative;
186
- z-index: 2;
187
- padding: 10px;
188
- font-size: 14px;
189
  }
190
  .bws_pro_version_tooltip .bws_button,
191
  .bws_pro_version_tooltip .bws_button:hover {
192
- background: #dd5738;
193
- border: none;
194
- text-decoration: none;
195
- color: #fff;
196
- padding: 7px 10px;
197
- border-radius: 3px;
198
- margin: 5px 0;
199
- font-size: 13px;
200
- line-height: 1.4em;
201
- float: left;
202
  }
203
  .bws_pro_version_tooltip .bws_info {
204
- float: left;
205
- padding-top: 10px;
206
- font-size: 14px;
207
- color: #444;
208
  }
209
  .bws_pro_version_tooltip .bws_pro_links,
210
  .bws_pro_version_tooltip .bws_pro_links .bws_button {
211
- float: right;
212
  }
213
  .bws_pro_version_tooltip .bws_trial_info {
214
- padding: 10px;
215
- display: inline-block;
216
  }
217
  div.bws_pro_version {
218
- padding: 5px 10px;
219
  }
220
  a.bws_plugin_pro_version {
221
- display: block;
222
- background: rgba(245, 225, 119, 0.3);
223
- border: 1px solid #dcd6b8;
224
- padding: 5px;
225
- text-decoration: none;
226
- color: #666;
227
  }
228
  .bws_pro_version_single_link,
229
  .bws_pro_version_single_link:hover {
230
- text-decoration: none;
231
- color: #666;
232
  }
233
  @media screen and (max-width: 768px) {
234
- .bws_pro_version_tooltip {
235
- padding: 10px;
236
- text-align: center;
237
- }
238
- .bws_pro_version_tooltip .bws_info {
239
- float: none;
240
- text-align: center;
241
- }
242
- .bws_pro_version_tooltip a {
243
- display: inline-block;
244
- line-height: 1.5;
245
- }
246
- .bws_pro_version_tooltip .bws_info a {
247
- display: block;
248
- }
249
- .bws_pro_version_tooltip .bws_button,
250
- .bws_pro_version_tooltip .bws_button:hover {
251
- margin: 10px 10px 5px;
252
- float: none;
253
- }
254
  }
255
  /*
256
  * styles for addon ads block
257
  */
258
  .bws-addon-block.postbox {
259
- border: none;
260
  }
261
  .bws-addon-block .bws_table_bg {
262
- background: #fff;
263
- opacity: 0.3;
264
  }
265
  .bws-addon-block .bws_button {
266
- display: inline-block;
267
- background: #0faa00;
268
- border: 1px solid #0b8200;
269
- text-decoration: none;
270
- color: #fff;
271
- padding: 4px 10px;
272
- border-radius: 3px;
273
- font-size: 13px;
274
- line-height: 1.4em;
275
- z-index: 2;
276
- position: relative;
277
- -webkit-box-shadow: 0 1px 0 #0c8c00;
278
- box-shadow: 0 1px 0 #0c8c00;
279
  }
280
  /*
281
  * styles for banner
282
  */
283
  .bws_banner_on_plugin_page {
284
- border: 1px solid #d4d4d4;
285
- margin: 12px 0;
286
- background: #FFF;
287
- position: relative;
288
- overflow: hidden
289
  }
290
  .bws_banner_on_plugin_page .text {
291
- color: #000;
292
- font-size: 15px;
293
- line-height: 26px;
294
- margin: 18px 18px 14px;
295
- float: left;
296
- width: auto;
297
- max-width: 80%;
298
  }
299
  .bws_banner_on_plugin_page .text span {
300
- font-size: 14px;
301
- opacity: 0.7;
302
  }
303
  div.bws_banner_on_plugin_page .button {
304
- float: right;
305
- border: none;
306
- font-size: 14px;
307
- margin: 18px 40px;
308
- padding: 12px 29px;
309
- color: #FFF;
310
- text-shadow: none;
311
- font-weight: bold;
312
- background: #0074A2;
313
- -moz-border-radius: 3px;
314
- border-radius: 3px;
315
- -webkit-border-radius: 3px;
316
- text-decoration: none;
317
- height: 50px;
318
- text-align: center;
319
- text-transform: uppercase;
320
- box-shadow: none;
321
- line-height: 26px;
322
  }
323
  .bws_banner_on_plugin_page .button:hover,
324
  .bws_banner_on_plugin_page .button:focus {
325
- background: #222;
326
- color: #FFF;
327
  }
328
  div.bws_banner_on_plugin_page .icon {
329
- float: left;
330
- margin: 12px 8px 8px 12px;
331
  }
332
  .bws_banner_on_plugin_page .icon img {
333
- max-width: 64px;
334
  }
335
  .bws_go_pro_banner .icon:before {
336
- content: 'PRO';
337
- background: #F26E50;
338
- border-radius: 4px;
339
- color: #FFF;
340
- font-size: 11px;
341
- font-weight: bold;
342
- display: block;
343
- padding: 0px 4px;
344
- margin: 0 15px -7px;
345
- position: relative;
346
  }
347
  .bws_banner_on_plugin_page .text + .icon {
348
- display: none;
349
  }
350
  .bws_banner_to_settings_joint .bws-text {
351
- color: #000;
352
- font-size: 16px;
353
- line-height: 26px;
354
- padding: 13px 14px 14px;
355
  }
356
  .bws_banner_to_settings_joint .icon span.dashicons-admin-plugins {
357
- font-size: 48px;
358
- color: #d6d6d6;
359
- width: 48px;
360
- height: 48px;
361
  }
362
  .bws_banner_on_plugin_page.bws_banner_to_settings_joint .icon {
363
- margin: 2px 16px 0 0;
364
  }
365
  .bws_banner_to_settings_joint .bws-details {
366
- background: #f2f2f2;
367
- padding: 15px 78px 21px;
368
  }
369
  .bws_banner_to_settings_joint a {
370
- text-decoration: none;
371
  }
372
  .bws_banner_to_settings_joint .bws-more-links {
373
- font-size: 14px;
374
  }
375
  .bws_banner_to_settings_joint .bws-more:after {
376
- content: "\f347";
377
- font-family: dashicons;
378
- margin: 0 5px;
379
- top: 2px;
380
- position: relative;
381
  }
382
  .bws_banner_to_settings_joint .bws-less:after {
383
- content: "\f343";
384
- font-family: dashicons;
385
- margin: 0 5px;
386
- top: 2px;
387
- position: relative;
388
  }
389
  .bws_banner_to_settings_joint .bws-details strong {
390
- font-size: 14px;
391
- line-height: 30px;
392
  }
393
  .rtl div.bws_banner_on_plugin_page .button {
394
- float: left;
395
  }
396
  .rtl .bws_pro_version_tooltip .bws_button,
397
  .rtl div.bws_banner_on_plugin_page .icon,
398
  .rtl .bws_banner_on_plugin_page .text,
399
  .rtl .bws_pro_version_tooltip .bws_info {
400
- float: right;
401
  }
402
  .rtl .bws_banner_on_plugin_page.bws_banner_to_settings_joint .icon {
403
- margin: 2px 0 0 16px;
404
  }
405
  .rtl table.bws_pro_version th,
406
  .rtl table.bws_pro_version td {
407
- padding-right: 10px;
408
  }
409
  @media screen and (max-width: 768px) {
410
- .bws_banner_on_plugin_page .text,
411
- .bws_banner_on_plugin_page .icon,
412
- .bws_banner_on_plugin_page .button_div,
413
- .bws_banner_on_plugin_page .button {
414
- float: none;
415
- text-align: center;
416
- max-width: 100%;
417
- }
418
- .bws_banner_on_plugin_page .icon {
419
- position: relative;
420
- left: 8px;
421
- }
422
  }
423
  @media screen and (max-width: 600px) {
424
- .bws_banner_to_settings_joint .bws-details {
425
- padding: 15px 20px 21px;
426
- }
427
  }
428
- /*
429
  * affiliate postbox
430
  */
431
  #bws-affiliate-postbox {
432
- background: url("../images/affiliate-background.png") no-repeat center #1a3e59;
433
- overflow: hidden;
434
- position: relative;
435
- padding: 12px;
436
- color: #ffffff;
437
- text-align: center;
438
  }
439
  #bws-affiliate-postbox .notice-dismiss:active:before,
440
  #bws-affiliate-postbox .notice-dismiss:focus:before,
441
  #bws-affiliate-postbox .notice-dismiss:hover:before {
442
- color: #fff;
443
  }
444
  #bws-affiliate-postbox h3 {
445
- color: #ffffff;
446
- font-size: 1.3em;
447
  }
448
  .bws-affiliate-get {
449
- color: #f67f48;
450
- font-size: 1.3em;
451
- font-weight: bold;
452
- margin: 10px 0 5px;
453
  }
454
  #bws-affiliate-postbox img {
455
- max-width: 65px;
456
- margin-bottom: 5px;
457
  }
458
  .bws-row {
459
- margin-top: 25px;
460
  }
461
  .bws-cell {
462
- float: left;
463
- width: 33.33%;
464
  }
465
  .bws-cell div {
466
- margin: 5px;
467
  }
468
  #bws-affiliate-postbox .button {
469
- background: #dd6930;
470
- border-color: #dd6930;
471
- color: #fff;
472
- margin-top: 5px;
473
- font-weight: bold;
474
  }
475
  #bws-affiliate-postbox .button:hover {
476
- color: rgba(255, 255, 255, 0.8);
477
  }
478
  /* display code */
479
  span.bws_code {
480
- background: none repeat scroll 0 0 rgba(0, 0, 0, 0.07);
481
- font-size: 13px;
482
- margin: 0 1px;
483
- padding: 3px 5px 2px;
484
  }
485
  /*
486
  * styles help tooltips
487
  */
488
  .bws_help_box {
489
- background-image: url("../images/tooltip_icons.png");
490
- background-repeat: no-repeat;
491
- cursor: pointer;
492
- height: 28px;
493
- position: relative;
494
- margin: 3px 5px;
495
- width: 28px;
496
- display: inline-block;
497
  }
498
  .bws_help_box:not(.dashicons) {
499
- vertical-align: middle;
500
  }
501
  .bws_help_box.dashicons-editor-help,
502
  .setting span .bws_help_box.dashicons-editor-help {
503
- background: none;
504
- color: #0074a2;
505
- height: auto;
506
- width: auto;
507
- margin: 0;
508
- padding: 0;
509
- z-index: 2;
510
- min-width: auto;
511
- float: none;
512
  }
513
  .bws_help_box.dashicons-editor-help:hover {
514
- color: #2ea2cc;
515
  }
516
  .bws_hidden_help_text {
517
- display: none;
518
  }
519
  .bws-tooltip-content {
520
- font-size: 11px;
521
- color: #fff;
522
- text-shadow: 0 0 2px #000;
523
- padding: 4px 8px;
524
- border: 1px solid rgba(255,255,255,0.25);
525
- background: rgba(25,25,25,0.92);
526
- border-radius: 3px;
527
- -webkit-border-radius: 3px;
528
- -moz-border-radius: 3px;
529
- box-shadow: 0 0 3px #555;
530
- -webkit-box-shadow: 0 0 3px #555;
531
- -moz-box-shadow: 0 0 3px #555;
532
  }
533
  .bws-tooltip-content a {
534
- color: #00a0d2;
535
  }
536
  /*
537
  * styles for Request a Feature link near screen-meta
538
  */
539
  #bws_request_feature {
540
- margin-top: 0;
541
  }
542
  #bws_request_feature button {
543
- border: 1px solid #ccd0d4;
544
- border-top: none;
545
- height: auto;
546
- margin-bottom: 0;
547
- color: #fff;
548
- border-radius: 0 0 4px 4px;
549
- background-color: #0071a1;
550
- line-height: 1.7;
551
- box-shadow: 0 0 0 transparent;
552
- transition: box-shadow .1s linear;
553
  }
554
  #bws_request_feature button:hover {
555
- background-color: #00a0d2;
556
  }
557
- /*
558
  * bws shortcode insert
559
  */
560
  .mce-toolbar .mce-btn-group .mce-btn.mce-bws_shortcode_button {
561
- background-color: #fff;
562
- border: 1px solid #e5e5e5;
563
  }
564
  #bws_shortcode_content,
565
  #bws_shortcode_select_plugin {
566
- margin-bottom: 10px;
567
  }
568
  #bws_shortcode_content * {
569
- white-space: normal;
570
  }
571
  #bws_shortcode_popup_block h4 {
572
- padding: 0;
573
- line-height: 2.5;
574
- text-transform: uppercase;
575
  }
576
  #bws_shortcode_content_bottom p {
577
- font-style: italic;
578
- color: #666;
579
  }
580
  #bws_shortcode_block {
581
- background-color: #fdfdfd;
582
- border: 1px solid #dfdfdf;
583
- overflow: auto;
584
- padding: 10px;
585
  }
586
  #bws_shortcode_display {
587
- margin: 0 auto;
588
  }
589
  #bws_shortcode_content fieldset label {
590
- margin-top: 5px;
591
- display: inline-block;
592
  }
593
  #bws_shortcode_content .title {
594
- margin-right: 5px;
595
- margin-left: 5px;
596
- line-height: 2.5;
597
  }
598
  #bws_shortcode_content .title,
599
  #bws_shortcode_content .checkbox-title {
600
- white-space: normal;
601
  }
602
  /*
603
  * styles for notices (license has expired, Illegal use notification ond other) on the /plugins.php page
604
  */
605
  .bws-plugin-update-tr .update-message {
606
- margin-top: 0 !important;
607
  }
608
  .bws-plugin-update-tr .update-message :before {
609
- content: '';
610
  }
611
  /*
612
  * Bws_Settings_Tabs
613
  */
614
  .bws_form #postbox-container-2 > div {
615
- width: calc( 100% - 162px );
616
- margin-left: 160px;
617
  }
618
  .bws_form #postbox-container-2 > div.submit {
619
- margin-bottom: 20px;
620
- padding: 0;
621
  }
622
  #bws_settings_tabs_wrapper {
623
- position: relative;
624
- max-width: 100%;
625
- min-width: 100%;
626
- width: 100%;
627
- box-sizing: border-box;
628
- font-size: 13px;
629
- border: none;
630
- padding: 0;
631
- background: none;
632
- font-family: inherit;
633
  }
634
  #bws_settings_tabs {
635
- z-index: 2;
636
- position: relative;
637
- width: 159px;
638
- float: left;
639
- background: #f5f5f5;
640
- border-top: 1px solid #ddd;
641
- border-left: 1px solid #ddd;
642
- border-bottom: 1px solid #ddd;
643
- border-right: 0;
644
- margin: 0;
645
- padding: 0;
646
- border-radius: 0;
647
- line-height: inherit;
648
  }
649
  #bws_settings_tabs .ui-state-default,
650
  #bws_settings_tabs .ui-widget-content .ui-state-default,
651
  #bws_settings_tabs .ui-widget-header .ui-state-default {
652
- border: none;
653
  }
654
  #bws_settings_tabs li {
655
- margin: 0;
656
- padding: 0;
657
- float: none;
658
- background: none;
659
- white-space: normal;
660
  }
661
  #bws_settings_tabs li a {
662
- display: block;
663
- margin: 0 20px;
664
- padding: 20px 0 20px 25px;
665
- text-decoration: none;
666
- color: #666;
667
- border-bottom: 1px solid #ddd;
668
- word-break: break-word;
669
- box-shadow: none;
670
- -webkit-box-sizing: border-box;
671
- -moz-box-sizing: border-box;
672
- box-sizing: border-box;
673
- transition: none;
674
- -webkit-transition: none;
675
- float: none;
676
  }
677
  #bws_settings_tabs li.ui-tabs-active {
678
- width: 161px;
679
  }
680
  #bws_settings_tabs li.ui-tabs-active a,
681
  #bws_settings_tabs li a:hover {
682
- width: 161px;
683
- margin: -1px 0 0 0;
684
- border-top: 1px solid #ddd;
685
- padding: 20px 21px 20px 45px;
686
- color: #000 !important;
687
- background: #fff !important;
688
  }
689
  #bws_settings_tabs li a:before {
690
- content: "\f111";
691
- font-family: 'dashicons';
692
- font-size: 20px;
693
- position: absolute;
694
- left: 20px;
695
  }
696
  #bws_settings_tabs li.bws-tab-display a:before {
697
- content: "\f163";
698
  }
699
  #bws_settings_tabs li.bws-tab-misc a:before {
700
- content: "\f107";
701
  }
702
  #bws_settings_tabs li.bws-tab-custom_code a:before {
703
- font-family: 'bwsicons';
704
- content: "\e93a";
705
  }
706
  #bws_settings_tabs li.bws-tab-license a:before {
707
- content: "\f112";
708
  }
709
  /* custom tabs */
710
  #bws_settings_tabs li.bws-tab-images a:before {
711
- content: "\f128";
712
  }
713
  #bws_settings_tabs li.bws-tab-cover a:before {
714
- content: "\f318";
715
  }
716
  #bws_settings_tabs li.bws-tab-lightbox a:before {
717
- content: "\f211";
718
  }
719
  #bws_settings_tabs li.bws-tab-social a:before {
720
- content: "\f237";
721
  }
722
  #bws_settings_tabs li.bws-tab-import-export a:before {
723
- content: "\f317";
724
  }
725
  #bws_settings_tabs li.bws-tab-errors a:before,
726
  #bws_settings_tabs li.bws-tab-messages a:before {
727
- font-family: 'bwsicons';
728
- content: "\e93d";
729
- font-size: 18px;
730
- left: 21px;
731
  }
732
  #bws_settings_tabs li.bws-tab-notifications a:before {
733
- content: "\f466";
734
  }
735
  #bws_settings_tabs li.bws-tab-reports a:before {
736
- content: "\f535";
737
  }
738
  #bws_settings_tabs li.bws-tab-output a:before {
739
- content: "\f498";
740
  }
741
 
742
  #bws_settings_tabs li:last-child a {
743
- border-bottom: none;
744
  }
745
  #bws_settings_tabs_wrapper .bws_tab {
746
- position: relative;
747
- padding: 5px 10px 15px;
748
- width: calc( 100% - 183px );
749
- float: right;
750
- border: 1px solid #ddd;
751
- background: #fff;
752
- color: #444;
753
  }
754
  .bws_tab a {
755
- color: #0073aa;
756
  }
757
  .bws_tab a:hover {
758
- color: #00a0d2;
759
  }
760
  .bws_tab input, .bws_tab select, .bws_tab textarea, .bws_tab button {
761
- font-family: inherit;
762
- font-size: inherit;
763
  }
764
  #bws_settings_tabs_wrapper .bws_tab > *:not(.bws_pro_version_bloc):not(.bws_tab_sub_label):not(hr):not(.inline) {
765
- margin-left: 10px;
766
- margin-right: 10px;
767
- width: calc( 100% - 20px );
 
 
 
768
  }
769
  #bws_settings_tabs_wrapper .bws_tab button,
770
  #bws_settings_tabs_wrapper .bws_tab input[type="submit"],
771
  #bws_settings_tabs_wrapper .bws_tab input[type="button"] {
772
- white-space: normal;
773
- height: auto;
 
 
 
 
774
  }
775
  .bws_form .postbox .hndle {
776
- cursor: inherit;
777
  }
778
  #poststuff h3.bws_tab_label {
779
- margin-bottom: 10px;
780
- padding-left: 0;
781
- padding-right: 0;
782
  }
783
  .bws_tab_sub_label {
784
- font-weight: bold;
785
- background-color: #f1f1f1;
786
- padding: 7px 10px;
787
- margin-top: 10px;
788
- font-size: 15px;
789
  }
790
  .bws_tab .form-table textarea {
791
- width: 100%;
792
  }
793
  #poststuff h3.bws_tab_label + hr {
794
- margin-top: 18px;
795
  }
796
  .bws_tab_description + hr {
797
- margin-top: 15px;
798
  }
799
  .rtl #bws_settings_tabs {
800
- float: right;
801
- border-right: 1px solid #ddd;
802
- border-left: none;
803
  }
804
  .rtl #bws_settings_tabs li a {
805
- padding: 20px 25px 20px 0;
806
  }
807
  .rtl #bws_settings_tabs li.ui-tabs-active a,
808
  .rtl #bws_settings_tabs li a:hover {
809
- padding: 20px 45px 20px 20px;
810
  }
811
  .rtl #bws_settings_tabs li a:before {
812
- right: 20px;
813
  }
814
  .rtl .bws_form #postbox-container-2 > div {
815
- margin-right: 160px;
816
- margin-left: 0;
817
  }
818
  .bws_margined_box {
819
- margin: 1em 0;
820
  }
821
  @media only screen and (max-width: 1100px) {
822
- #bws_settings_tabs {
823
- width: 59px;
824
- }
825
- #bws_settings_tabs li a {
826
- margin: 0;
827
- padding: 20px 0;
828
- width: 60px;
829
- height: 60px;
830
- }
831
- #bws_settings_tabs li.ui-tabs-active a,
832
- #bws_settings_tabs li a:hover,
833
- .rtl #bws_settings_tabs li.ui-tabs-active a,
834
- .rtl #bws_settings_tabs li a:hover {
835
- padding: 20px 0;
836
- height: 61px;
837
- }
838
- #bws_settings_tabs li.ui-tabs-active,
839
- #bws_settings_tabs li.ui-tabs-active a,
840
- #bws_settings_tabs li a:hover {
841
- width: 61px;
842
- }
843
- #bws_settings_tabs_wrapper .bws_tab {
844
- width: calc( 100% - 83px );
845
- }
846
- #bws_settings_tabs span {
847
- display: none;
848
- }
849
- .bws_form #postbox-container-2 > div {
850
- margin-left: 60px;
851
- width: calc( 100% - 62px );
852
- }
853
- .rtl .bws_form #postbox-container-2 > div {
854
- margin-right: 60px;
855
- margin-left: 0;
856
- }
857
  }
858
  @media only screen and (max-width: 850px) {
859
- .bws_form #postbox-container-2 > div,
860
- .rtl .bws_form #postbox-container-2 > div {
861
- width: calc( 100% - 2px );
862
- margin: 0;
863
- }
864
- .bws_form #postbox-container-2 .postbox {
865
- margin-bottom: 20px;
866
- }
867
- .bws_form .postbox-container div.submit {
868
- display: none;
869
- }
870
  }
871
  @media screen and (max-width: 782px) {
872
- .bws-hide-for-mobile {
873
- display: none;
874
- }
875
  }
876
  @media screen and (max-width: 440px) {
877
- #bws_settings_tabs_wrapper .bws_tab .form-table td input[type=file] {
878
- width: 182px;
879
- }
880
- #bws_settings_tabs_wrapper .bws_tab .form-table td input[type=text]:not(.small-text),
881
- #bws_settings_tabs_wrapper .bws_tab .form-table td input[type=password],
882
- #bws_settings_tabs_wrapper .bws_tab .form-table td input[type=search],
883
- #bws_settings_tabs_wrapper .bws_tab .form-table td input[type=number]:not(.small-text),
884
- #bws_settings_tabs_wrapper .bws_tab .form-table td select,
885
- #bws_settings_tabs_wrapper .bws_tab .form-table td textarea {
886
- width: 100%;
887
- padding-left: 0;
888
- padding-right: 0;
889
- }
890
- }
2
  * bwsicons fonts
3
  */
4
  @font-face {
5
+ font-family: 'bwsicons';
6
+ src: url('../fonts/bwsicons.eot?edecf2');
7
+ src: url('../fonts/bwsicons.eot?edecf2#iefix') format('embedded-opentype'),
8
+ url('../fonts/bwsicons.ttf?edecf2') format('truetype'),
9
+ url('../fonts/bwsicons.woff?edecf2') format('woff'),
10
+ url('../fonts/bwsicons.svg?edecf2#bwsicons') format('svg');
11
+ font-weight: normal;
12
+ font-style: normal;
13
  }
14
  .bwsicons {
15
+ /* use !important to prevent issues with browser extensions that change fonts */
16
+ font-family: 'bwsicons' !important;
17
+ speak: none;
18
+ font-style: normal;
19
+ font-weight: normal;
20
+ font-variant: normal;
21
+ text-transform: none;
22
+ line-height: 1;
23
+ -webkit-font-smoothing: antialiased;
24
+ -moz-osx-font-smoothing: grayscale;
25
  }
26
  .bwsicons-editor-code:before {
27
+ content: "\e93a";
28
  }
29
  .bwsicons-shortcode:before {
30
+ content: "\e93b";
31
  }
32
  .bwsicons-bws-logo:before {
33
+ content: "\e93c";
34
  }
35
 
36
+ .bws_tab .ui-accordion .ui-accordion-header.ui-state-active {
37
+ color: inherit;
38
+ }
39
+ .bws_tab .ui-accordion .ui-state-active .ui-icon {
40
+ background-color: #ccc;
41
+ }
42
  /*
43
  * styles for bws_panel top level menu
44
  */
45
  #adminmenu #toplevel_page_bws_panel .wp-menu-image {
46
+ font-family: 'bwsicons' !important;
47
  }
48
  #adminmenu #toplevel_page_bws_panel .wp-menu-image:before {
49
+ content: "\e93c";
50
+ font-family: 'bwsicons' !important;
51
  }
52
  #adminmenu #toplevel_page_bws_panel .wp-submenu li:nth-child(5) a {
53
+ border-top: 1px solid #444;
54
+ padding-top: 12px;
55
+ margin-top: 6px;
56
  }
57
  /* general styles */
58
  .bws_info {
59
+ color: #888;
60
+ font-size: 13px;
61
+ font-style: italic;
62
  }
63
  div.bws_info {
64
+ margin-top: 7px;
65
+ word-break: break-all;
66
  }
67
  .bws_info_small {
68
+ font-size: 11px !important;
69
  }
70
  body:not(.rtl) div.updated.bws-notice {
71
+ border-left: 4px solid #ffba00;
72
  }
73
  .rtl div.updated.bws-notice {
74
+ border-right: 4px solid #ffba00;
75
  }
76
  /*
77
  * styles for rate-support div on the settings page
78
  */
79
  .bws-plugin-reviews {
80
+ background: none repeat scroll 0 0 #BEE1F1;
81
+ border: 1px solid #70A8C2;
82
+ border-radius: 3px;
83
  }
84
  .bws-plugin-reviews-rate,
85
  .bws-plugin-reviews-support {
86
+ border-right: 1px solid #70A8C2;
87
  }
88
  .bws-plugin-reviews a {
89
+ text-decoration: none;
90
  }
91
  .bws-plugin-reviews-rate .dashicons {
92
+ font-size: 12px;
93
+ height: 13px;
94
+ width: 9px;
95
+ vertical-align: middle;
96
  }
97
  .bws-plugin-reviews-rate,
98
  .bws-plugin-reviews-support,
99
  .bws-plugin-reviews-donate {
100
+ padding: 10px;
101
+ display: block;
102
  }
 
103
  @media screen and (min-width: 1600px) {
104
+ .bws-plugin-reviews-rate,
105
+ .bws-plugin-reviews-support,
106
+ .bws-plugin-reviews-donate {
107
+ display: inline-block;
108
+ width: 30%;
109
+ }
110
  }
111
  @media screen and (max-width: 1600px) {
112
+ .bws-plugin-reviews-rate,
113
+ .bws-plugin-reviews-support {
114
+ border-bottom: 1px solid #70A8C2;
115
+ border-right: none;
116
+ }
117
  }
118
  /*
119
  * styles for Go PRO tab
120
  */
121
  .bws_go_pro_tab {
122
+ background-color: #2A95C5;
123
+ border-color: #11688F;
124
+ color: #fff;
125
+ font-weight: normal;
126
+ text-shadow: none;
127
  }
128
  .bws_go_pro_tab:hover {
129
+ background-color: #2080AB;
130
+ color: #fff;
131
+ border-color: #11688F;
132
  }
133
  .bws_go_pro_tab.nav-tab-active {
134
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
135
+ border-color: #CCCCCC #CCCCCC #F1F1F1;
136
+ color: #000000;
137
  }
138
  /*
139
  * styles for pro_version settings and tooltip
142
  tr.bws_pro_version,
143
  .nav-tab.bws_plugin_menu_pro_version,
144
  .nav-tab.bws_plugin_menu_pro_version:hover {
145
+ background: rgba(245, 225, 119, 0.3);
146
  }
147
  td.bws_pro_version_tooltip {
148
+ border: 1px solid #AAA;
149
+ position: inherit;
150
  }
151
  .bws_pro_version_bloc {
152
+ position: relative;
153
+ border: 1px solid #dcd6b8;
154
+ overflow: hidden;
155
  }
156
  .bws_table_bg {
157
+ background: #f5e177;
158
+ opacity: 0.3;
159
+ width: 100%;
160
+ height: 100%;
161
+ position: absolute;
162
+ z-index: 1;
163
  }
164
  .bws_network_apply_all {
165
+ padding-left: 15px;
166
  }
167
  .bws_hide_premium_options {
168
+ z-index: 5;
169
  }
170
  .bws_pro_version_table_bloc table.bws_pro_version {
171
+ background: transparent;
172
+ margin: 0;
173
+ border: none;
174
+ width: 100%;
175
  }
176
  table.bws_pro_version {
177
+ background: #E0E0E0;
178
+ border: 1px solid #AAA;
179
+ margin-bottom: 5px;
180
+ width: auto;
181
  }
182
  table.bws_pro_version tbody {
183
+ display: block;
184
  }
185
  table.bws_pro_version th,
186
  table.bws_pro_version td {
187
+ padding-left: 10px;
188
  }
189
  .bws_pro_version_tooltip {
190
+ position: relative;
191
+ z-index: 2;
192
+ padding: 10px;
193
+ font-size: 14px;
194
  }
195
  .bws_pro_version_tooltip .bws_button,
196
  .bws_pro_version_tooltip .bws_button:hover {
197
+ background: #dd5738;
198
+ border: none;
199
+ text-decoration: none;
200
+ color: #fff;
201
+ padding: 7px 10px;
202
+ border-radius: 3px;
203
+ margin: 5px 0;
204
+ font-size: 13px;
205
+ line-height: 1.4em;
206
+ float: left;
207
  }
208
  .bws_pro_version_tooltip .bws_info {
209
+ float: left;
210
+ padding-top: 10px;
211
+ font-size: 14px;
212
+ color: #444;
213
  }
214
  .bws_pro_version_tooltip .bws_pro_links,
215
  .bws_pro_version_tooltip .bws_pro_links .bws_button {
216
+ float: right;
217
  }
218
  .bws_pro_version_tooltip .bws_trial_info {
219
+ padding: 10px;
220
+ display: inline-block;
221
  }
222
  div.bws_pro_version {
223
+ padding: 5px 10px;
224
  }
225
  a.bws_plugin_pro_version {
226
+ display: block;
227
+ background: rgba(245, 225, 119, 0.3);
228
+ border: 1px solid #dcd6b8;
229
+ padding: 5px;
230
+ text-decoration: none;
231
+ color: #666;
232
  }
233
  .bws_pro_version_single_link,
234
  .bws_pro_version_single_link:hover {
235
+ text-decoration: none;
236
+ color: #666;
237
  }
238
  @media screen and (max-width: 768px) {
239
+ .bws_pro_version_tooltip {
240
+ padding: 10px;
241
+ text-align: center;
242
+ }
243
+ .bws_pro_version_tooltip .bws_info {
244
+ float: none;
245
+ text-align: center;
246
+ }
247
+ .bws_pro_version_tooltip a {
248
+ display: inline-block;
249
+ line-height: 1.5;
250
+ }
251
+ .bws_pro_version_tooltip .bws_info a {
252
+ display: block;
253
+ }
254
+ .bws_pro_version_tooltip .bws_button,
255
+ .bws_pro_version_tooltip .bws_button:hover {
256
+ margin: 10px 10px 5px;
257
+ float: none;
258
+ }
259
  }
260
  /*
261
  * styles for addon ads block
262
  */
263
  .bws-addon-block.postbox {
264
+ border: none;
265
  }
266
  .bws-addon-block .bws_table_bg {
267
+ background: #fff;
268
+ opacity: 0.3;
269
  }
270
  .bws-addon-block .bws_button {
271
+ display: inline-block;
272
+ background: #0faa00;
273
+ border: 1px solid #0b8200;
274
+ text-decoration: none;
275
+ color: #fff;
276
+ padding: 4px 10px;
277
+ border-radius: 3px;
278
+ font-size: 13px;
279
+ line-height: 1.4em;
280
+ z-index: 2;
281
+ position: relative;
282
+ -webkit-box-shadow: 0 1px 0 #0c8c00;
283
+ box-shadow: 0 1px 0 #0c8c00;
284
  }
285
  /*
286
  * styles for banner
287
  */
288
  .bws_banner_on_plugin_page {
289
+ border: 1px solid #d4d4d4;
290
+ margin: 12px 0;
291
+ background: #FFF;
292
+ position: relative;
293
+ overflow: hidden
294
  }
295
  .bws_banner_on_plugin_page .text {
296
+ color: #000;
297
+ font-size: 15px;
298
+ line-height: 26px;
299
+ margin: 18px 18px 14px;
300
+ float: left;
301
+ width: auto;
302
+ max-width: 80%;
303
  }
304
  .bws_banner_on_plugin_page .text span {
305
+ font-size: 14px;
306
+ opacity: 0.7;
307
  }
308
  div.bws_banner_on_plugin_page .button {
309
+ float: right;
310
+ border: none;
311
+ font-size: 14px;
312
+ margin: 18px 40px;
313
+ padding: 12px 29px;
314
+ color: #FFF;
315
+ text-shadow: none;
316
+ font-weight: bold;
317
+ background: #0074A2;
318
+ -moz-border-radius: 3px;
319
+ border-radius: 3px;
320
+ -webkit-border-radius: 3px;
321
+ text-decoration: none;
322
+ height: 50px;
323
+ text-align: center;
324
+ text-transform: uppercase;
325
+ box-shadow: none;
326
+ line-height: 26px;
327
  }
328
  .bws_banner_on_plugin_page .button:hover,
329
  .bws_banner_on_plugin_page .button:focus {
330
+ background: #222;
331
+ color: #FFF;
332
  }
333
  div.bws_banner_on_plugin_page .icon {
334
+ float: left;
335
+ margin: 12px 8px 8px 12px;
336
  }
337
  .bws_banner_on_plugin_page .icon img {
338
+ max-width: 64px;
339
  }
340
  .bws_go_pro_banner .icon:before {
341
+ content: 'PRO';
342
+ background: #F26E50;
343
+ border-radius: 4px;
344
+ color: #FFF;
345
+ font-size: 11px;
346
+ font-weight: bold;
347
+ display: block;
348
+ padding: 0px 4px;
349
+ margin: 0 15px -7px;
350
+ position: relative;
351
  }
352
  .bws_banner_on_plugin_page .text + .icon {
353
+ display: none;
354
  }
355
  .bws_banner_to_settings_joint .bws-text {
356
+ color: #000;
357
+ font-size: 16px;
358
+ line-height: 26px;
359
+ padding: 13px 14px 14px;
360
  }
361
  .bws_banner_to_settings_joint .icon span.dashicons-admin-plugins {
362
+ font-size: 48px;
363
+ color: #d6d6d6;
364
+ width: 48px;
365
+ height: 48px;
366
  }
367
  .bws_banner_on_plugin_page.bws_banner_to_settings_joint .icon {
368
+ margin: 2px 16px 0 0;
369
  }
370
  .bws_banner_to_settings_joint .bws-details {
371
+ background: #f2f2f2;
372
+ padding: 15px 78px 21px;
373
  }
374
  .bws_banner_to_settings_joint a {
375
+ text-decoration: none;
376
  }
377
  .bws_banner_to_settings_joint .bws-more-links {
378
+ font-size: 14px;
379
  }
380
  .bws_banner_to_settings_joint .bws-more:after {
381
+ content: "\f347";
382
+ font-family: dashicons;
383
+ margin: 0 5px;
384
+ top: 2px;
385
+ position: relative;
386
  }
387
  .bws_banner_to_settings_joint .bws-less:after {
388
+ content: "\f343";
389
+ font-family: dashicons;
390
+ margin: 0 5px;
391
+ top: 2px;
392
+ position: relative;
393
  }
394
  .bws_banner_to_settings_joint .bws-details strong {
395
+ font-size: 14px;
396
+ line-height: 30px;
397
  }
398
  .rtl div.bws_banner_on_plugin_page .button {
399
+ float: left;
400
  }
401
  .rtl .bws_pro_version_tooltip .bws_button,
402
  .rtl div.bws_banner_on_plugin_page .icon,
403
  .rtl .bws_banner_on_plugin_page .text,
404
  .rtl .bws_pro_version_tooltip .bws_info {
405
+ float: right;
406
  }
407
  .rtl .bws_banner_on_plugin_page.bws_banner_to_settings_joint .icon {
408
+ margin: 2px 0 0 16px;
409
  }
410
  .rtl table.bws_pro_version th,
411
  .rtl table.bws_pro_version td {
412
+ padding-right: 10px;
413
  }
414
  @media screen and (max-width: 768px) {
415
+ .bws_banner_on_plugin_page .text,
416
+ .bws_banner_on_plugin_page .icon,
417
+ .bws_banner_on_plugin_page .button_div,
418
+ .bws_banner_on_plugin_page .button {
419
+ float: none;
420
+ text-align: center;
421
+ max-width: 100%;
422
+ }
423
+ .bws_banner_on_plugin_page .icon {
424
+ position: relative;
425
+ left: 8px;
426
+ }
427
  }
428
  @media screen and (max-width: 600px) {
429
+ .bws_banner_to_settings_joint .bws-details {
430
+ padding: 15px 20px 21px;
431
+ }
432
  }
433
+ /*
434
  * affiliate postbox
435
  */
436
  #bws-affiliate-postbox {
437
+ background: url("../images/affiliate-background.png") no-repeat center #1a3e59;
438
+ overflow: hidden;
439
+ position: relative;
440
+ padding: 12px;
441
+ color: #ffffff;
442
+ text-align: center;
443
  }
444
  #bws-affiliate-postbox .notice-dismiss:active:before,
445
  #bws-affiliate-postbox .notice-dismiss:focus:before,
446
  #bws-affiliate-postbox .notice-dismiss:hover:before {
447
+ color: #fff;
448
  }
449
  #bws-affiliate-postbox h3 {
450
+ color: #ffffff;
451
+ font-size: 1.3em;
452
  }
453
  .bws-affiliate-get {
454
+ color: #f67f48;
455
+ font-size: 1.3em;
456
+ font-weight: bold;
457
+ margin: 10px 0 5px;
458
  }
459
  #bws-affiliate-postbox img {
460
+ max-width: 65px;
461
+ margin-bottom: 5px;
462
  }
463
  .bws-row {
464
+ margin-top: 25px;
465
  }
466
  .bws-cell {
467
+ float: left;
468
+ width: 33.33%;
469
  }
470
  .bws-cell div {
471
+ margin: 5px;
472
  }
473
  #bws-affiliate-postbox .button {
474
+ background: #dd6930;
475
+ border-color: #dd6930;
476
+ color: #fff;
477
+ margin-top: 5px;
478
+ font-weight: bold;
479
  }
480
  #bws-affiliate-postbox .button:hover {
481
+ color: rgba(255, 255, 255, 0.8);
482
  }
483
  /* display code */
484
  span.bws_code {
485
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0.07);
486
+ font-size: 13px;
487
+ margin: 0 1px;
488
+ padding: 3px 5px 2px;
489
  }
490
  /*
491
  * styles help tooltips
492
  */
493
  .bws_help_box {
494
+ background-image: url("../images/tooltip_icons.png");
495
+ background-repeat: no-repeat;
496
+ cursor: pointer;
497
+ height: 28px;
498
+ position: relative;
499
+ margin: 3px 5px;
500
+ width: 28px;
501
+ display: inline-block;
502
  }
503
  .bws_help_box:not(.dashicons) {
504
+ vertical-align: middle;
505
  }
506
  .bws_help_box.dashicons-editor-help,
507
  .setting span .bws_help_box.dashicons-editor-help {
508
+ background: none;
509
+ color: #0074a2;
510
+ height: auto;
511
+ width: auto;
512
+ margin: 0;
513
+ padding: 0;
514
+ z-index: 2;
515
+ min-width: auto;
516
+ float: none;
517
  }
518
  .bws_help_box.dashicons-editor-help:hover {
519
+ color: #2ea2cc;
520
  }
521
  .bws_hidden_help_text {
522
+ display: none;
523
  }
524
  .bws-tooltip-content {
525
+ font-size: 11px;
526
+ color: #fff;
527
+ text-shadow: 0 0 2px #000;
528
+ padding: 4px 8px;
529
+ border: 1px solid rgba(255,255,255,0.25);
530
+ background: rgba(25,25,25,0.92);
531
+ border-radius: 3px;
532
+ -webkit-border-radius: 3px;
533
+ -moz-border-radius: 3px;
534
+ box-shadow: 0 0 3px #555;
535
+ -webkit-box-shadow: 0 0 3px #555;
536
+ -moz-box-shadow: 0 0 3px #555;
537
  }
538
  .bws-tooltip-content a {
539
+ color: #00a0d2;
540
  }
541
  /*
542
  * styles for Request a Feature link near screen-meta
543
  */
544
  #bws_request_feature {
545
+ margin-top: 0;
546
  }
547
  #bws_request_feature button {
548
+ border: 1px solid #ccd0d4;
549
+ border-top: none;
550
+ height: auto;
551
+ margin-bottom: 0;
552
+ color: #fff;
553
+ border-radius: 0 0 4px 4px;
554
+ background-color: #0071a1;
555
+ line-height: 1.7;
556
+ box-shadow: 0 0 0 transparent;
557
+ transition: box-shadow .1s linear;
558
  }
559
  #bws_request_feature button:hover {
560
+ background-color: #00a0d2;
561
  }
562
+ /*
563
  * bws shortcode insert
564
  */
565
  .mce-toolbar .mce-btn-group .mce-btn.mce-bws_shortcode_button {
566
+ background-color: #fff;
567
+ border: 1px solid #e5e5e5;
568
  }
569
  #bws_shortcode_content,
570
  #bws_shortcode_select_plugin {
571
+ margin-bottom: 10px;
572
  }
573
  #bws_shortcode_content * {
574
+ white-space: normal;
575
  }
576
  #bws_shortcode_popup_block h4 {
577
+ padding: 0;
578
+ line-height: 2.5;
579
+ text-transform: uppercase;
580
  }
581
  #bws_shortcode_content_bottom p {
582
+ font-style: italic;
583
+ color: #666;
584
  }
585
  #bws_shortcode_block {
586
+ background-color: #fdfdfd;
587
+ border: 1px solid #dfdfdf;
588
+ overflow: auto;
589
+ padding: 10px;
590
  }
591
  #bws_shortcode_display {
592
+ margin: 0 auto;
593
  }
594
  #bws_shortcode_content fieldset label {
595
+ margin-top: 5px;
596
+ display: inline-block;
597
  }
598
  #bws_shortcode_content .title {
599
+ margin-right: 5px;
600
+ margin-left: 5px;
601
+ line-height: 2.5;
602
  }
603
  #bws_shortcode_content .title,
604
  #bws_shortcode_content .checkbox-title {
605
+ white-space: normal;
606
  }
607
  /*
608
  * styles for notices (license has expired, Illegal use notification ond other) on the /plugins.php page
609
  */
610
  .bws-plugin-update-tr .update-message {
611
+ margin-top: 0 !important;
612
  }
613
  .bws-plugin-update-tr .update-message :before {
614
+ content: '';
615
  }
616
  /*
617
  * Bws_Settings_Tabs
618
  */
619
  .bws_form #postbox-container-2 > div {
620
+ width: calc( 100% - 162px );
621
+ margin-left: 160px;
622
  }
623
  .bws_form #postbox-container-2 > div.submit {
624
+ margin-bottom: 20px;
625
+ padding: 0;
626
  }
627
  #bws_settings_tabs_wrapper {
628
+ position: relative;
629
+ max-width: 100%;
630
+ min-width: 100%;
631
+ width: 100%;
632
+ box-sizing: border-box;
633
+ font-size: 13px;
634
+ border: none;
635
+ padding: 0;
636
+ background: none;
637
+ font-family: inherit;
638
  }
639
  #bws_settings_tabs {
640
+ z-index: 2;
641
+ position: relative;
642
+ width: 159px;
643
+ float: left;
644
+ background: #f5f5f5;
645
+ border-top: 1px solid #ddd;
646
+ border-left: 1px solid #ddd;
647
+ border-bottom: 1px solid #ddd;
648
+ border-right: 0;
649
+ margin: 0;
650
+ padding: 0;
651
+ border-radius: 0;
652
+ line-height: inherit;
653
  }
654
  #bws_settings_tabs .ui-state-default,
655
  #bws_settings_tabs .ui-widget-content .ui-state-default,
656
  #bws_settings_tabs .ui-widget-header .ui-state-default {
657
+ border: none;
658
  }
659
  #bws_settings_tabs li {
660
+ margin: 0;
661
+ padding: 0;
662
+ float: none;
663
+ background: none;
664
+ white-space: normal;
665
  }
666
  #bws_settings_tabs li a {
667
+ display: block;
668
+ margin: 0 20px;
669
+ padding: 20px 0 20px 25px;
670
+ text-decoration: none;
671
+ color: #666;
672
+ border-bottom: 1px solid #ddd;
673
+ word-break: break-word;
674
+ box-shadow: none;
675
+ -webkit-box-sizing: border-box;
676
+ -moz-box-sizing: border-box;
677
+ box-sizing: border-box;
678
+ transition: none;
679
+ -webkit-transition: none;
680
+ float: none;
681
  }
682
  #bws_settings_tabs li.ui-tabs-active {
683
+ width: 161px;
684
  }
685
  #bws_settings_tabs li.ui-tabs-active a,
686
  #bws_settings_tabs li a:hover {
687
+ width: 161px;
688
+ margin: -1px 0 0 0;
689
+ border-top: 1px solid #ddd;
690
+ padding: 20px 21px 20px 45px;
691
+ color: #000 !important;
692
+ background: #fff !important;
693
  }
694
  #bws_settings_tabs li a:before {
695
+ content: "\f111";
696
+ font-family: 'dashicons';
697
+ font-size: 20px;
698
+ position: absolute;
699
+ left: 20px;
700
  }
701
  #bws_settings_tabs li.bws-tab-display a:before {
702
+ content: "\f163";
703
  }
704
  #bws_settings_tabs li.bws-tab-misc a:before {
705
+ content: "\f107";
706
  }
707
  #bws_settings_tabs li.bws-tab-custom_code a:before {
708
+ font-family: 'bwsicons';
709
+ content: "\e93a";
710
  }
711
  #bws_settings_tabs li.bws-tab-license a:before {
712
+ content: "\f112";
713
  }
714
  /* custom tabs */
715
  #bws_settings_tabs li.bws-tab-images a:before {
716
+ content: "\f128";
717
  }
718
  #bws_settings_tabs li.bws-tab-cover a:before {
719
+ content: "\f318";
720
  }
721
  #bws_settings_tabs li.bws-tab-lightbox a:before {
722
+ content: "\f211";
723
  }
724
  #bws_settings_tabs li.bws-tab-social a:before {
725
+ content: "\f237";
726
  }
727
  #bws_settings_tabs li.bws-tab-import-export a:before {
728
+ content: "\f317";
729
  }
730
  #bws_settings_tabs li.bws-tab-errors a:before,
731
  #bws_settings_tabs li.bws-tab-messages a:before {
732
+ font-family: 'bwsicons';
733
+ content: "\e93d";
734
+ font-size: 18px;
735
+ left: 21px;
736
  }
737
  #bws_settings_tabs li.bws-tab-notifications a:before {
738
+ content: "\f466";
739
  }
740
  #bws_settings_tabs li.bws-tab-reports a:before {
741
+ content: "\f535";
742
  }
743
  #bws_settings_tabs li.bws-tab-output a:before {
744
+ content: "\f498";
745
  }
746
 
747
  #bws_settings_tabs li:last-child a {
748
+ border-bottom: none;
749
  }
750
  #bws_settings_tabs_wrapper .bws_tab {
751
+ position: relative;
752
+ padding: 5px 10px 15px;
753
+ width: calc( 100% - 183px );
754
+ float: right;
755
+ border: 1px solid #ddd;
756
+ background: #fff;
757
+ color: #444;
758
  }
759
  .bws_tab a {
760
+ color: #0073aa;
761
  }
762
  .bws_tab a:hover {
763
+ color: #00a0d2;
764
  }
765
  .bws_tab input, .bws_tab select, .bws_tab textarea, .bws_tab button {
766
+ font-family: inherit;
767
+ font-size: inherit;
768
  }
769
  #bws_settings_tabs_wrapper .bws_tab > *:not(.bws_pro_version_bloc):not(.bws_tab_sub_label):not(hr):not(.inline) {
770
+ margin-left: 10px;
771
+ margin-right: 10px;
772
+ width: calc( 100% - 20px );
773
+ }
774
+ .bws_tab h4 {
775
+ color: red;
776
  }
777
  #bws_settings_tabs_wrapper .bws_tab button,
778
  #bws_settings_tabs_wrapper .bws_tab input[type="submit"],
779
  #bws_settings_tabs_wrapper .bws_tab input[type="button"] {
780
+ white-space: normal;
781
+ height: auto;
782
+ }
783
+ .toplevel_page_rrrlgvwr #bws_settings_tabs_wrapper .bws_tab .form-table th.th-full {
784
+ overflow-wrap: break-word;
785
+ max-width: 200px;
786
  }
787
  .bws_form .postbox .hndle {
788
+ cursor: inherit;
789
  }
790
  #poststuff h3.bws_tab_label {
791
+ margin-bottom: 10px;
792
+ padding-left: 0;
793
+ padding-right: 0;
794
  }
795
  .bws_tab_sub_label {
796
+ font-weight: bold;
797
+ background-color: #f1f1f1;
798
+ padding: 7px 10px;
799
+ margin-top: 10px;
800
+ font-size: 15px;
801
  }
802
  .bws_tab .form-table textarea {
803
+ width: 100%;
804
  }
805
  #poststuff h3.bws_tab_label + hr {
806
+ margin-top: 18px;
807
  }
808
  .bws_tab_description + hr {
809
+ margin-top: 15px;
810
  }
811
  .rtl #bws_settings_tabs {
812
+ float: right;
813
+ border-right: 1px solid #ddd;
814
+ border-left: none;
815
  }
816
  .rtl #bws_settings_tabs li a {
817
+ padding: 20px 25px 20px 0;
818
  }
819
  .rtl #bws_settings_tabs li.ui-tabs-active a,
820
  .rtl #bws_settings_tabs li a:hover {
821
+ padding: 20px 45px 20px 20px;
822
  }
823
  .rtl #bws_settings_tabs li a:before {
824
+ right: 20px;
825
  }
826
  .rtl .bws_form #postbox-container-2 > div {
827
+ margin-right: 160px;
828
+ margin-left: 0;
829
  }
830
  .bws_margined_box {
831
+ margin: 1em 0;
832
  }
833
  @media only screen and (max-width: 1100px) {
834
+ #bws_settings_tabs {
835
+ width: 59px;
836
+ }
837
+ #bws_settings_tabs li a {
838
+ margin: 0;
839
+ padding: 20px 0;
840
+ width: 60px;
841
+ height: 60px;
842
+ }
843
+ #bws_settings_tabs li.ui-tabs-active a,
844
+ #bws_settings_tabs li a:hover,
845
+ .rtl #bws_settings_tabs li.ui-tabs-active a,
846
+ .rtl #bws_settings_tabs li a:hover {
847
+ padding: 20px 0;
848
+ height: 61px;
849
+ }
850
+ #bws_settings_tabs li.ui-tabs-active,
851
+ #bws_settings_tabs li.ui-tabs-active a,
852
+ #bws_settings_tabs li a:hover {
853
+ width: 61px;
854
+ }
855
+ #bws_settings_tabs_wrapper .bws_tab {
856
+ width: calc( 100% - 83px );
857
+ }
858
+ #bws_settings_tabs span {
859
+ display: none;
860
+ }
861
+ .bws_form #postbox-container-2 > div {
862
+ margin-left: 60px;
863
+ width: calc( 100% - 62px );
864
+ }
865
+ .rtl .bws_form #postbox-container-2 > div {
866
+ margin-right: 60px;
867
+ margin-left: 0;
868
+ }
869
  }
870
  @media only screen and (max-width: 850px) {
871
+ .bws_form #postbox-container-2 > div,
872
+ .rtl .bws_form #postbox-container-2 > div {
873
+ width: calc( 100% - 2px );
874
+ margin: 0;
875
+ }
876
+ .bws_form #postbox-container-2 .postbox {
877
+ margin-bottom: 20px;
878
+ }
879
+ .bws_form .postbox-container div.submit {
880
+ display: none;
881
+ }
882
  }
883
  @media screen and (max-width: 782px) {
884
+ .bws-hide-for-mobile {
885
+ display: none;
886
+ }
887
  }
888
  @media screen and (max-width: 440px) {
889
+ #bws_settings_tabs_wrapper .bws_tab .form-table td input[type=file] {
890
+ width: 182px;
891
+ }
892
+ #bws_settings_tabs_wrapper .bws_tab .form-table td input[type=text]:not(.small-text),
893
+ #bws_settings_tabs_wrapper .bws_tab .form-table td input[type=password],
894
+ #bws_settings_tabs_wrapper .bws_tab .form-table td input[type=search],
895
+ #bws_settings_tabs_wrapper .bws_tab .form-table td input[type=number]:not(.small-text),
896
+ #bws_settings_tabs_wrapper .bws_tab .form-table td select,
897
+ #bws_settings_tabs_wrapper .bws_tab .form-table td textarea {
898
+ width: 100%;
899
+ padding-left: 0;
900
+ padding-right: 0;
901
+ }
902
+ }
bws_menu/css/jquery-ui-styles/1.9.2/jquery-ui.css CHANGED
@@ -53,8 +53,8 @@
53
  .ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }
54
  .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
55
  button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
56
- .ui-button-icons-only { width: 3.4em; }
57
- button.ui-button-icons-only { width: 3.7em; }
58
 
59
  /*button text element */
60
  .ui-button .ui-button-text { display: block; line-height: 1.4; }
@@ -92,7 +92,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
92
  .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
93
  .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
94
  .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
95
- .ui-datepicker select.ui-datepicker-month,
96
  .ui-datepicker select.ui-datepicker-year { width: 49%;}
97
  .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
98
  .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
@@ -129,13 +129,13 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
129
 
130
  /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
131
  .ui-datepicker-cover {
132
- position: absolute; /*must have*/
133
- z-index: -1; /*must have*/
134
- filter: mask(); /*must have*/
135
- top: -4px; /*must have*/
136
- left: -4px; /*must have*/
137
- width: 200px; /*must have*/
138
- height: 200px; /*must have*/
139
  }
140
  .ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; }
141
  .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
@@ -471,4 +471,4 @@ body .ui-tooltip { border-width: 2px; }
471
 
472
  /* Overlays */
473
  .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); }
474
- .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }
53
  .ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }
54
  .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
55
  button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
56
+ .ui-button-icons-only { width: 3.4em; }
57
+ button.ui-button-icons-only { width: 3.7em; }
58
 
59
  /*button text element */
60
  .ui-button .ui-button-text { display: block; line-height: 1.4; }
92
  .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
93
  .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
94
  .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
95
+ .ui-datepicker select.ui-datepicker-month,
96
  .ui-datepicker select.ui-datepicker-year { width: 49%;}
97
  .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
98
  .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
129
 
130
  /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
131
  .ui-datepicker-cover {
132
+ position: absolute; /*must have*/
133
+ z-index: -1; /*must have*/
134
+ filter: mask(); /*must have*/
135
+ top: -4px; /*must have*/
136
+ left: -4px; /*must have*/
137
+ width: 200px; /*must have*/
138
+ height: 200px; /*must have*/
139
  }
140
  .ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; }
141
  .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
471
 
472
  /* Overlays */
473
  .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); }
474
+ .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }
bws_menu/css/modal.css CHANGED
@@ -1,127 +1,127 @@
1
  .bws-modal {
2
- position: fixed;
3
- overflow: auto;
4
- height: 100%;
5
- width: 100%;
6
- top: 0;
7
- z-index: 100000;
8
- display: none;
9
- background: rgba(0, 0, 0, 0.6);
10
  }
11
  .bws-modal.active {
12
- display: block;
13
  }
14
  .bws-modal.active:before {
15
- display: block;
16
  }
17
  .bws-modal .bws-modal-dialog {
18
- background: transparent;
19
- position: absolute;
20
- left: 50%;
21
- margin-left: -298px;
22
- padding-bottom: 30px;
23
- top: -100%;
24
- z-index: 100001;
25
- width: 596px;
26
  }
27
  .bws-modal.active .bws-modal-dialog {
28
- top: 10%;
29
  }
30
  .bws-modal .bws-modal-body,
31
  .bws-modal .bws-modal-footer {
32
- border: 0;
33
- background: #fff;
34
- padding: 25px 25px 15px;
35
  }
36
  .bws-modal .bws-modal-body {
37
- border-bottom: 0;
38
  }
39
  .bws-modal .bws-modal-body p {
40
- font-size: 1.3em;
41
  }
42
  .bws-modal .bws-modal-body h2 {
43
- font-size: 1.6em;
44
- font-weight: bold;
45
- margin-top: 0;
46
  }
47
  .bws-modal .bws-modal-footer {
48
- border-top: #eeeeee solid 1px;
49
  }
50
  .bws-modal .bws-modal-footer .bws-modal-skip-link {
51
- text-decoration: none;
52
- float: right;
53
- display: inline-block;
54
- padding: 7px;
55
  }
56
  .bws-modal .bws-modal-footer .button {
57
- margin: 0 7px;
58
- float: left;
59
  }
60
  .rtl .bws-modal .bws-modal-footer .bws-modal-skip-link {
61
- float: left;
62
  }
63
  .rtl .bws-modal .bws-modal-footer .button {
64
- float: right;
65
  }
66
  .bws-modal .bws-modal-footer .button:first-child {
67
- margin: 0;
68
  }
69
  .bws-modal .bws-modal-panel>.notice.inline {
70
- margin: 0;
71
- display: none;
72
  }
73
  .bws-modal .bws-modal-panel:not(.active) {
74
- display: none;
75
  }
76
  body.has-bws-modal {
77
- overflow: hidden;
78
  }
79
  .bws-modal.bws-modal-deactivation-feedback .bws-modal-reason-input,
80
  .bws-modal.bws-modal-deactivation-feedback .bws-modal-internal-message {
81
- margin: 3px 0 3px 22px;
82
  }
83
  .bws-modal.bws-modal-deactivation-feedback .bws-modal-reason-input input,
84
  .bws-modal.bws-modal-deactivation-feedback .bws-modal-reason-input textarea,
85
  .bws-modal.bws-modal-deactivation-feedback .bws-modal-internal-message input,
86
  .bws-modal.bws-modal-deactivation-feedback .bws-modal-internal-message textarea,
87
  .bws-modal.bws-modal-request-feature textarea {
88
- width: 100%;
89
  }
90
  .bws-modal.bws-modal-deactivation-feedback li.bws-modal-reason.has-internal-message .bws-modal-internal-message {
91
- border: 1px solid #ccc;
92
- padding: 7px;
93
- display: none;
94
  }
95
  .bws-modal.bws-modal-deactivation-feedback .bws-modal-anonymous-label {
96
- padding-top: 15px;
97
  }
98
  .bws-modal.bws-modal-deactivation-feedback .bws-modal-panel {
99
- margin-top: 0 !important;
100
  }
101
 
102
  @media (max-width: 650px) {
103
- .bws-modal .bws-modal-dialog {
104
- margin-left: -50%;
105
- box-sizing: border-box;
106
- padding-left: 10px;
107
- padding-right: 10px;
108
- width: 100%;
109
- }
110
- .bws-modal .bws-modal-dialog .bws-modal-panel>h3>strong {
111
- font-size: 1.3em;
112
- }
113
- .bws-modal.bws-modal-deactivation-feedback li.bws-modal-reason li.bws-modal-reason {
114
- margin-bottom: 10px;
115
- }
116
- .bws-modal.bws-modal-deactivation-feedback li.bws-modal-reason li.bws-modal-reason .bws-modal-reason-input,
117
- .bws-modal.bws-modal-deactivation-feedback li.bws-modal-reason li.bws-modal-reason .bws-modal-internal-message {
118
- margin-left: 29px;
119
- }
120
- .bws-modal.bws-modal-deactivation-feedback li.bws-modal-reason li.bws-modal-reason label {
121
- display: table;
122
- }
123
- .bws-modal.bws-modal-deactivation-feedback li.bws-modal-reason li.bws-modal-reason label>span {
124
- display: table-cell;
125
- font-size: 1.3em;
126
- }
127
- }
1
  .bws-modal {
2
+ position: fixed;
3
+ overflow: auto;
4
+ height: 100%;
5
+ width: 100%;
6
+ top: 0;
7
+ z-index: 100000;
8
+ display: none;
9
+ background: rgba(0, 0, 0, 0.6);
10
  }
11
  .bws-modal.active {
12
+ display: block;
13
  }
14
  .bws-modal.active:before {
15
+ display: block;
16
  }
17
  .bws-modal .bws-modal-dialog {
18
+ background: transparent;
19
+ position: absolute;
20
+ left: 50%;
21
+ margin-left: -298px;
22
+ padding-bottom: 30px;
23
+ top: -100%;
24
+ z-index: 100001;
25
+ width: 596px;
26
  }
27
  .bws-modal.active .bws-modal-dialog {
28
+ top: 10%;
29
  }
30
  .bws-modal .bws-modal-body,
31
  .bws-modal .bws-modal-footer {
32
+ border: 0;
33
+ background: #fff;
34
+ padding: 25px 25px 15px;
35
  }
36
  .bws-modal .bws-modal-body {
37
+ border-bottom: 0;
38
  }
39
  .bws-modal .bws-modal-body p {
40
+ font-size: 1.3em;
41
  }
42
  .bws-modal .bws-modal-body h2 {
43
+ font-size: 1.6em;
44
+ font-weight: bold;
45
+ margin-top: 0;
46
  }
47
  .bws-modal .bws-modal-footer {
48
+ border-top: #eeeeee solid 1px;
49
  }
50
  .bws-modal .bws-modal-footer .bws-modal-skip-link {
51
+ text-decoration: none;
52
+ float: right;
53
+ display: inline-block;
54
+ padding: 7px;
55
  }
56
  .bws-modal .bws-modal-footer .button {
57
+ margin: 0 7px;
58
+ float: left;
59
  }
60
  .rtl .bws-modal .bws-modal-footer .bws-modal-skip-link {
61
+ float: left;
62
  }
63
  .rtl .bws-modal .bws-modal-footer .button {
64
+ float: right;
65
  }
66
  .bws-modal .bws-modal-footer .button:first-child {
67
+ margin: 0;
68
  }
69
  .bws-modal .bws-modal-panel>.notice.inline {
70
+ margin: 0;
71
+ display: none;
72
  }
73
  .bws-modal .bws-modal-panel:not(.active) {
74
+ display: none;
75
  }
76
  body.has-bws-modal {
77
+ overflow: hidden;
78
  }
79
  .bws-modal.bws-modal-deactivation-feedback .bws-modal-reason-input,
80
  .bws-modal.bws-modal-deactivation-feedback .bws-modal-internal-message {
81
+ margin: 3px 0 3px 22px;
82
  }
83
  .bws-modal.bws-modal-deactivation-feedback .bws-modal-reason-input input,
84
  .bws-modal.bws-modal-deactivation-feedback .bws-modal-reason-input textarea,
85
  .bws-modal.bws-modal-deactivation-feedback .bws-modal-internal-message input,
86
  .bws-modal.bws-modal-deactivation-feedback .bws-modal-internal-message textarea,
87
  .bws-modal.bws-modal-request-feature textarea {
88
+ width: 100%;
89
  }
90
  .bws-modal.bws-modal-deactivation-feedback li.bws-modal-reason.has-internal-message .bws-modal-internal-message {
91
+ border: 1px solid #ccc;
92
+ padding: 7px;
93
+ display: none;
94
  }
95
  .bws-modal.bws-modal-deactivation-feedback .bws-modal-anonymous-label {
96
+ padding-top: 15px;
97
  }
98
  .bws-modal.bws-modal-deactivation-feedback .bws-modal-panel {
99
+ margin-top: 0 !important;
100
  }
101
 
102
  @media (max-width: 650px) {
103
+ .bws-modal .bws-modal-dialog {
104
+ margin-left: -50%;
105
+ box-sizing: border-box;
106
+ padding-left: 10px;
107
+ padding-right: 10px;
108
+ width: 100%;
109
+ }
110
+ .bws-modal .bws-modal-dialog .bws-modal-panel>h3>strong {
111
+ font-size: 1.3em;
112
+ }
113
+ .bws-modal.bws-modal-deactivation-feedback li.bws-modal-reason li.bws-modal-reason {
114
+ margin-bottom: 10px;
115
+ }
116
+ .bws-modal.bws-modal-deactivation-feedback li.bws-modal-reason li.bws-modal-reason .bws-modal-reason-input,
117
+ .bws-modal.bws-modal-deactivation-feedback li.bws-modal-reason li.bws-modal-reason .bws-modal-internal-message {
118
+ margin-left: 29px;
119
+ }
120
+ .bws-modal.bws-modal-deactivation-feedback li.bws-modal-reason li.bws-modal-reason label {
121
+ display: table;
122
+ }
123
+ .bws-modal.bws-modal-deactivation-feedback li.bws-modal-reason li.bws-modal-reason label>span {
124
+ display: table-cell;
125
+ font-size: 1.3em;
126
+ }
127
+ }
bws_menu/css/style.css CHANGED
@@ -1,487 +1,487 @@
1
  a.toplevel_page_bws_panel.wp-has-current-submenu:after {
2
- display: none;
3
  }
4
  .toplevel_page_bws_panel #wpcontent,
5
  .bws-panel_page_bws_themes #wpcontent,
6
  .bws-panel_page_bws_system_status #wpcontent,
7
  body[class*="-bws-panel"] #wpcontent {
8
- padding-left: 0;
9
- padding-right: 0;
10
  }
11
  .toplevel_page_bws_panel .update-nag,
12
  .bws-panel_page_bws_themes .update-nag,
13
  .bws-panel_page_bws_system_status .update-nag,
14
  body[class*="-bws-panel"] .update-nag {
15
- display: none;
16
  }
17
  .bws-wrap-content {
18
- padding-left: 20px;
19
  }
20
  .rtl .bws-wrap-content {
21
- padding-left: 0;
22
- padding-right: 20px;
23
  }
24
- /*
25
  * panel
26
  */
27
  .bws-header {
28
- background: #0074a2;
29
- color: #8bbed2;
30
- padding: 0 17px;
31
  }
32
- .bws-title,
33
  .bws-nav-tab-wrapper,
34
  .bws-help-links-wrapper {
35
- display: inline-block;
36
  }
37
  .bws-title {
38
- text-transform: uppercase;
39
- font-weight: 600;
40
- font-size: 18px;
41
- letter-spacing: 0.1em;
42
- margin-top: 15px;
43
  }
44
  .bws-title a {
45
- color: #fff;
46
- text-decoration: none;
47
- box-shadow: none;
48
  }
49
  .bws-logo.bwsicons {
50
- font-size: 25px;
51
- color: #fff;
52
- margin: 0 3px;
53
- vertical-align: middle;
54
  }
55
  .bws-title span {
56
- color: #8bbed2;
57
- font-size: 10px;
58
- vertical-align: top;
59
  }
60
  .bws-nav-tab-wrapper {
61
- height: 100%;
62
- font-size: 15px;
63
- margin-left: 28px;
64
  }
65
  .bws-help-links-wrapper a,
66
  .bws-nav-tab-wrapper a {
67
- color: #8bbed2;
68
- text-decoration: none;
69
- display: inline-block;
70
- padding: 17px 20px 20px;
71
- box-shadow: none;
72
  }
73
  .bws-help-links-wrapper a {
74
- padding: 17px 12px 20px;
75
  }
76
  .bws-nav-tab-wrapper a.bws-nav-tab {
77
- color: #fff;
78
  }
79
  .bws-nav-tab-active {
80
- background: #005d82;
81
- color: #fff;
82
  }
83
  .bws-help-links-wrapper a:hover,
84
  .bws-nav-tab-wrapper a:hover {
85
- color: #8bbed2;
86
- background: #006894;
87
  }
88
  .bws-help-links-wrapper {
89
- float: right;
90
- font-size: 14px;
91
  }
92
  .bws-menu-item-icon {
93
- display: none;
94
- float: right;
95
- font-size: 26px;
96
- padding: 17px 11px;
97
- color: #fff;
98
  }
99
  .bws-menu-item-icon.bws-active {
100
- color: #8bbed2;
101
  }
102
  .rtl .bws-nav-tab-wrapper {
103
- margin-left: 0;
104
- margin-right: 28px;
105
  }
106
  .rtl .bws-help-links-wrapper {
107
- float: left;
108
  }
109
- /*
110
  * membership
111
  */
112
  .bws-membership-wrap {
113
- background: url("../images/membership-background.jpg") no-repeat center #fff;
114
- overflow: hidden;
115
- position: relative;
116
- margin: 20px 20px 0 20px;
117
  }
118
  .bws-membership-backround {
119
- background-color: #000;
120
- opacity: 0.8;
121
- position: absolute;
122
- height: 100%;
123
- width: 100%;
124
- z-index: 5;
125
  }
126
  .bws-membership {
127
- color: #fff;
128
- padding: 23px 22px 23px 20px;
129
- z-index: 6;
130
- position: relative;
131
  }
132
- .bws-membership-title {
133
- font-size: 18px;
134
- line-height: 30px;
135
- font-weight: 600;
136
- float: left;
137
  }
138
  .bws-membership-form {
139
- float: right;
140
  }
141
  .bws-membership-form * {
142
- vertical-align: top;
143
  }
144
  .bws_form_input_wrap {
145
- display: inline-block;
146
  }
147
  .bws-membership input[type="text"] {
148
- border-radius: 3px;
149
- border: none;
150
- font-size: 13px;
151
- padding: 8px 19px 8px 9px;
152
- text-align: left;
153
- line-height: 1;
154
  }
155
  .bws-button {
156
- background: #dd6930;
157
- color: #fff;
158
- text-align: center;
159
- display: inline-block;
160
- text-decoration: none;
161
- font-size: 13px;
162
- padding: 8px 9px;
163
- border-radius: 3px;
164
- border: none;
165
- cursor: pointer;
166
- margin: 0 6px;
167
  }
168
  .bws-membership-link {
169
- font-size: 15px;
170
- color: #999;
171
- padding: 0 8px;
172
- line-height: 27px;
173
  }
174
  .bws-membership-link a {
175
- color: #fff;
176
- text-decoration: none;
177
- border-bottom: 1px solid #999;
178
- padding: 0 3px;
179
  }
180
  .bws-membership-link a:hover {
181
- border-bottom: none;
182
  }
183
  .bws_error {
184
- color: #c5412b;
185
- margin-top: 1px;
186
- max-width: 230px;
187
  }
188
  .bws_error a {
189
- color: #fff;
190
- text-decoration: none;
191
  }
192
  .bws_input_error {
193
- border: 1px solid #c5412b !important;
194
  }
195
  /*
196
  * themes
197
  */
198
  .bws-availablethemes {
199
- margin-top: 10px;
200
  }
201
  .bws_browse_link {
202
- color: #666;
203
- font-size: 18px;
204
- text-decoration: none;
205
- background-color: #ddd;
206
- display: block;
207
- width: 100%;
208
- text-align: center;
209
- padding: 8px 0;
210
- font-weight: bold;
211
- border-radius: 5px;
212
  }
213
  .bws_browse_link .dashicons {
214
- line-height: inherit;
215
- vertical-align: text-top;
216
- font-size: 17px;
217
  }
218
  /*
219
  * system status
220
  */
221
  table.bws-system-info {
222
- margin-bottom: 15px;
223
  }
224
  table.bws-system-info td:first-child {
225
- width: 33%;
226
  }
227
  table.bws-system-info tbody tr:nth-child(odd) {
228
- background-color: #f9f9f9;
229
  }
230
  /*
231
  * PLUGINS
232
  */
233
  .bws-products {
234
- float: left;
235
- width: 1350px;
236
  }
237
  .bws-products .description {
238
- margin-top: 20px;
239
  }
240
  .bws_product_box {
241
- background: #f2f2f2;
242
- border: 1px solid #CACACA;
243
- float: left;
244
- margin: 10px 10px 0 0;
245
- width: 320px;
246
- border-radius: 3px;
247
- min-height: 180px;
248
  }
249
  .bws_product_active {
250
- background: #fff;
251
  }
252
  .bws_product_content,
253
  .bws_product_image {
254
- float: left;
255
  }
256
  .bws_product_image {
257
- padding: 20px;
258
  }
259
  .bws_product_image a {
260
- box-shadow: none;
261
  }
262
  .bws_product_image img {
263
- height: 64px;
264
  }
265
  .bws_product_content {
266
- max-width: 200px;
267
- padding: 15px 0 7px;
268
  }
269
  .bws_product_title {
270
- font-size: 15px;
271
- line-height: initial;
272
- font-weight: bolder;
273
  }
274
  .bws_product_title a {
275
- color: #444;
276
- font-weight: 600;
277
  }
278
  .bws_product_title a:hover {
279
- color: #00a0d2;
280
  }
281
  .bws-version {
282
- margin-top: 6px;
283
  }
284
  .bws-version span {
285
- color: #999;
286
- font-size: 13px;
287
  }
288
  .bws-version span.bws-update-available {
289
- color: #dd6930;
290
  }
291
  .bws-update-now {
292
- background: #eee;
293
- padding: 2px 5px;
294
  }
295
  .bws_product_description {
296
- font-size: 13px;
297
- line-height: 18px;
298
- margin: 6px 0 2px;
299
- color: #666;
300
  }
301
  .bws_product_links {
302
- margin: 15px 0;
303
  }
304
  .bws_product_links span {
305
- color: #999;
306
- vertical-align: sub;
307
- margin-right: 10px;
308
  }
309
  .bws_product_links form {
310
- display: inline-block;
311
  }
312
  .bws_product_content a {
313
- text-decoration: none;
314
- margin-right: 10px;
315
  }
316
  .bws_product_content a.bws_upgrade_button,
317
  .bws_product_content a.bws_upgrade_button:hover {
318
- background: #dd6930;
319
- border: 1px solid #c16436;
320
- color: #fff;
321
- margin-right: 12px;
322
  }
323
  a.bws_settings,
324
  a.bws_donate {
325
- vertical-align: sub;
326
  }
327
  .rtl .bws_product_box {
328
- float: right;
329
- margin: 12px 0 10px 10px;
330
  }
331
  .rtl .bws-products,
332
  .rtl .bws_product_content,
333
  .rtl .bws_product_image {
334
- float: right;
335
  }
336
  .rtl a.bws_settings {
337
- margin-right: 10px;
338
  }
339
  /* filter */
340
  #bws-filter-wrapper {
341
- display: table;
342
  }
343
  .bws-filter {
344
- width: 200px;
345
  }
346
  .bws_fixed {
347
- position: fixed;
348
- top: 40px;
349
  }
350
  .bws-filter-top {
351
- display: none;
352
- background: #e2e2e2;
353
- padding: 1px 20px;
354
- margin: 0 -12px 0 -20px;
355
  }
356
  .bws-filter-top h2 {
357
- margin: 14px 0;
358
  }
359
  .bws-toggle-indicator:before {
360
- content: "\f140";
361
- display: inline-block;
362
- font: 400 20px/1 dashicons;
363
- width: 20px;
364
- vertical-align: bottom;
365
- margin-left: -5px;
366
  }
367
  .bws-filter-top-inside {
368
- display: none;
369
- margin: 25px 0;
370
  }
371
- .bws-filter-top.bws-opened .bws-toggle-indicator:before {
372
- content: "\f142";
373
  }
374
  .bws-filter-top.bws-opened .bws-filter-top-inside {
375
- display: block;
376
  }
377
  .bws-filter-title {
378
- font-size: 14px;
379
- color: #999;
380
- margin-top: 10px;
381
  }
382
  .bws-category {
383
- margin-top: 15px;
384
  }
385
  .bws-category li {
386
- margin-bottom: 10px;
387
  }
388
  .bws-category a {
389
- text-decoration: none;
390
  }
391
  .bws-category a.bws-active {
392
- background: #0074a2;
393
- color: #fff;
394
- padding: 2px 5px;
395
- display: inline-block;
396
- border-radius: 3px;
397
  }
398
  .subsubsub span,
399
  .bws-category span {
400
- color: #999;
401
  }
402
  .bws-category a.bws-active span {
403
- color: #8bbed2;
404
  }
405
 
406
  @media screen and (max-width: 1700px) {
407
- .bws-products {
408
- width: 1020px;
409
- }
410
  }
411
  @media screen and (max-width: 1425px) {
412
- .bws-products {
413
- width: 700px;
414
- }
415
  }
416
  @media screen and (max-width: 1120px) {
417
- .bws-products {
418
- width: 370px;
419
- }
420
- .bws-membership-title,
421
- .bws-membership-form {
422
- float: none;
423
- text-align: center;
424
- }
425
- .bws-membership-title {
426
- margin-bottom: 10px;
427
- }
428
  }
429
  @media screen and (max-width: 782px) {
430
- .bws-header {
431
- padding: 0 0 4px;
432
- }
433
- .bws-title {
434
- margin-left: 11px;
435
- }
436
- .bws-menu-item-icon {
437
- display: block;
438
- }
439
- .bws-nav-tab-wrapper,
440
- .bws-help-links-wrapper {
441
- margin: 0;
442
- width: 100%;
443
- float: none;
444
- display: none;
445
- }
446
- .bws-nav-tab-wrapper a,
447
- .bws-help-links-wrapper a {
448
- width: 100%;
449
- padding: 17px 20px 20px;
450
- }
451
- .bws-membership * {
452
- text-align: center;
453
- }
454
- .bws-membership-title,
455
- .bws-membership-link {
456
- margin-bottom: 10px;
457
- display: block;
458
- }
459
- .bws-membership .bws-button,
460
- .bws_form_input_wrap,
461
- .bws-membership input[type="text"] {
462
- width: 100%;
463
- margin: 0;
464
- }
465
- .bws-membership .bws-button {
466
- margin-top: 8px;
467
- }
468
- .bws-filter {
469
- display: none;
470
- }
471
- .bws-filter-top {
472
- display: block;
473
- }
474
- .bws-products {
475
- float: none;
476
- width: 100%;
477
- }
478
  }
479
  @media screen and (max-width: 370px) {
480
- .bws_product_box {
481
- width: auto;
482
- }
483
- .bws_product_content {
484
- max-width: 160px;
485
- padding-right: 10px;
486
- }
487
- }
1
  a.toplevel_page_bws_panel.wp-has-current-submenu:after {
2
+ display: none;
3
  }
4
  .toplevel_page_bws_panel #wpcontent,
5
  .bws-panel_page_bws_themes #wpcontent,
6
  .bws-panel_page_bws_system_status #wpcontent,
7
  body[class*="-bws-panel"] #wpcontent {
8
+ padding-left: 0;
9
+ padding-right: 0;
10
  }
11
  .toplevel_page_bws_panel .update-nag,
12
  .bws-panel_page_bws_themes .update-nag,
13
  .bws-panel_page_bws_system_status .update-nag,
14
  body[class*="-bws-panel"] .update-nag {
15
+ display: none;
16
  }
17
  .bws-wrap-content {
18
+ padding-left: 20px;
19
  }
20
  .rtl .bws-wrap-content {
21
+ padding-left: 0;
22
+ padding-right: 20px;
23
  }
24
+ /*
25
  * panel
26
  */
27
  .bws-header {
28
+ background: #0074a2;
29
+ color: #8bbed2;
30
+ padding: 0 17px;
31
  }
32
+ .bws-title,
33
  .bws-nav-tab-wrapper,
34
  .bws-help-links-wrapper {
35
+ display: inline-block;
36
  }
37
  .bws-title {
38
+ text-transform: uppercase;
39
+ font-weight: 600;
40
+ font-size: 18px;
41
+ letter-spacing: 0.1em;
42
+ margin-top: 15px;
43
  }
44
  .bws-title a {
45
+ color: #fff;
46
+ text-decoration: none;
47
+ box-shadow: none;
48
  }
49
  .bws-logo.bwsicons {
50
+ font-size: 25px;
51
+ color: #fff;
52
+ margin: 0 3px;
53
+ vertical-align: middle;
54
  }
55
  .bws-title span {
56
+ color: #8bbed2;
57
+ font-size: 10px;
58
+ vertical-align: top;
59
  }
60
  .bws-nav-tab-wrapper {
61
+ height: 100%;
62
+ font-size: 15px;
63
+ margin-left: 28px;
64
  }
65
  .bws-help-links-wrapper a,
66
  .bws-nav-tab-wrapper a {
67
+ color: #8bbed2;
68
+ text-decoration: none;
69
+ display: inline-block;
70
+ padding: 17px 20px 20px;
71
+ box-shadow: none;
72
  }
73
  .bws-help-links-wrapper a {
74
+ padding: 17px 12px 20px;
75
  }
76
  .bws-nav-tab-wrapper a.bws-nav-tab {
77
+ color: #fff;
78
  }
79
  .bws-nav-tab-active {
80
+ background: #005d82;
81
+ color: #fff;
82
  }
83
  .bws-help-links-wrapper a:hover,
84
  .bws-nav-tab-wrapper a:hover {
85
+ color: #8bbed2;
86
+ background: #006894;
87
  }
88
  .bws-help-links-wrapper {
89
+ float: right;
90
+ font-size: 14px;
91
  }
92
  .bws-menu-item-icon {
93
+ display: none;
94
+ float: right;
95
+ font-size: 26px;
96
+ padding: 17px 11px;
97
+ color: #fff;
98
  }
99
  .bws-menu-item-icon.bws-active {
100
+ color: #8bbed2;
101
  }
102
  .rtl .bws-nav-tab-wrapper {
103
+ margin-left: 0;
104
+ margin-right: 28px;
105
  }
106
  .rtl .bws-help-links-wrapper {
107
+ float: left;
108
  }
109
+ /*
110
  * membership
111
  */
112
  .bws-membership-wrap {
113
+ background: url("../images/membership-background.jpg") no-repeat center #fff;
114
+ overflow: hidden;
115
+ position: relative;
116
+ margin: 20px 20px 0 20px;
117
  }
118
  .bws-membership-backround {
119
+ background-color: #000;
120
+ opacity: 0.8;
121
+ position: absolute;
122
+ height: 100%;
123
+ width: 100%;
124
+ z-index: 5;
125
  }
126
  .bws-membership {
127
+ color: #fff;
128
+ padding: 23px 22px 23px 20px;
129
+ z-index: 6;
130
+ position: relative;
131
  }
132
+ .bws-membership-title {
133
+ font-size: 18px;
134
+ line-height: 30px;
135
+ font-weight: 600;
136
+ float: left;
137
  }
138
  .bws-membership-form {
139
+ float: right;
140
  }
141
  .bws-membership-form * {
142
+ vertical-align: top;
143
  }
144
  .bws_form_input_wrap {
145
+ display: inline-block;
146
  }
147
  .bws-membership input[type="text"] {
148
+ border-radius: 3px;
149
+ border: none;
150
+ font-size: 13px;
151
+ padding: 8px 19px 8px 9px;
152
+ text-align: left;
153
+ line-height: 1;
154
  }
155
  .bws-button {
156
+ background: #dd6930;
157
+ color: #fff;
158
+ text-align: center;
159
+ display: inline-block;
160
+ text-decoration: none;
161
+ font-size: 13px;
162
+ padding: 8px 9px;
163
+ border-radius: 3px;
164
+ border: none;
165
+ cursor: pointer;
166
+ margin: 0 6px;
167
  }
168
  .bws-membership-link {
169
+ font-size: 15px;
170
+ color: #999;
171
+ padding: 0 8px;
172
+ line-height: 27px;
173
  }
174
  .bws-membership-link a {
175
+ color: #fff;
176
+ text-decoration: none;
177
+ border-bottom: 1px solid #999;
178
+ padding: 0 3px;
179
  }
180
  .bws-membership-link a:hover {
181
+ border-bottom: none;
182
  }
183
  .bws_error {
184
+ color: #c5412b;
185
+ margin-top: 1px;
186
+ max-width: 230px;
187
  }
188
  .bws_error a {
189
+ color: #fff;
190
+ text-decoration: none;
191
  }
192
  .bws_input_error {
193
+ border: 1px solid #c5412b !important;
194
  }
195
  /*
196
  * themes
197
  */
198
  .bws-availablethemes {
199
+ margin-top: 10px;
200
  }
201
  .bws_browse_link {
202
+ color: #666;
203
+ font-size: 18px;
204
+ text-decoration: none;
205
+ background-color: #ddd;
206
+ display: block;
207
+ width: 100%;
208
+ text-align: center;
209
+ padding: 8px 0;
210
+ font-weight: bold;
211
+ border-radius: 5px;
212
  }
213
  .bws_browse_link .dashicons {
214
+ line-height: inherit;
215
+ vertical-align: text-top;
216
+ font-size: 17px;
217
  }
218
  /*
219
  * system status
220
  */
221
  table.bws-system-info {
222
+ margin-bottom: 15px;
223
  }
224
  table.bws-system-info td:first-child {
225
+ width: 33%;
226
  }
227
  table.bws-system-info tbody tr:nth-child(odd) {
228
+ background-color: #f9f9f9;
229
  }
230
  /*
231
  * PLUGINS
232
  */
233
  .bws-products {
234
+ float: left;
235
+ width: 1350px;
236
  }
237
  .bws-products .description {
238
+ margin-top: 20px;
239
  }
240
  .bws_product_box {
241
+ background: #f2f2f2;
242
+ border: 1px solid #CACACA;
243
+ float: left;
244
+ margin: 10px 10px 0 0;
245
+ width: 320px;
246
+ border-radius: 3px;
247
+ min-height: 180px;
248
  }
249
  .bws_product_active {
250
+ background: #fff;
251
  }
252
  .bws_product_content,
253
  .bws_product_image {
254
+ float: left;
255
  }
256
  .bws_product_image {
257
+ padding: 20px;
258
  }
259
  .bws_product_image a {
260
+ box-shadow: none;
261
  }
262
  .bws_product_image img {
263
+ height: 64px;
264
  }
265
  .bws_product_content {
266
+ max-width: 200px;
267
+ padding: 15px 0 7px;
268
  }
269
  .bws_product_title {
270
+ font-size: 15px;
271
+ line-height: initial;
272
+ font-weight: bolder;
273
  }
274
  .bws_product_title a {
275
+ color: #444;
276
+ font-weight: 600;
277
  }
278
  .bws_product_title a:hover {
279
+ color: #00a0d2;
280
  }
281
  .bws-version {
282
+ margin-top: 6px;
283
  }
284
  .bws-version span {
285
+ color: #999;
286
+ font-size: 13px;
287
  }
288
  .bws-version span.bws-update-available {
289
+ color: #dd6930;
290
  }
291
  .bws-update-now {
292
+ background: #eee;
293
+ padding: 2px 5px;
294
  }
295
  .bws_product_description {
296
+ font-size: 13px;
297
+ line-height: 18px;
298
+ margin: 6px 0 2px;
299
+ color: #666;
300
  }
301
  .bws_product_links {
302
+ margin: 15px 0;
303
  }
304
  .bws_product_links span {
305
+ color: #999;
306
+ vertical-align: sub;
307
+ margin-right: 10px;
308
  }
309
  .bws_product_links form {
310
+ display: inline-block;
311
  }
312
  .bws_product_content a {
313
+ text-decoration: none;
314
+ margin-right: 10px;
315
  }
316
  .bws_product_content a.bws_upgrade_button,
317
  .bws_product_content a.bws_upgrade_button:hover {
318
+ background: #dd6930;
319
+ border: 1px solid #c16436;
320
+ color: #fff;
321
+ margin-right: 12px;
322
  }
323
  a.bws_settings,
324
  a.bws_donate {
325
+ vertical-align: sub;
326
  }
327
  .rtl .bws_product_box {
328
+ float: right;
329
+ margin: 12px 0 10px 10px;
330
  }
331
  .rtl .bws-products,
332
  .rtl .bws_product_content,
333
  .rtl .bws_product_image {
334
+ float: right;
335
  }
336
  .rtl a.bws_settings {
337
+ margin-right: 10px;
338
  }
339
  /* filter */
340
  #bws-filter-wrapper {
341
+ display: table;
342
  }
343
  .bws-filter {
344
+ width: 200px;
345
  }
346
  .bws_fixed {
347
+ position: fixed;
348
+ top: 40px;
349
  }
350
  .bws-filter-top {
351
+ display: none;
352
+ background: #e2e2e2;
353
+ padding: 1px 20px;
354
+ margin: 0 -12px 0 -20px;
355
  }
356
  .bws-filter-top h2 {
357
+ margin: 14px 0;
358
  }
359
  .bws-toggle-indicator:before {
360
+ content: "\f140";
361
+ display: inline-block;
362
+ font: 400 20px/1 dashicons;
363
+ width: 20px;
364
+ vertical-align: bottom;
365
+ margin-left: -5px;
366
  }
367
  .bws-filter-top-inside {
368
+ display: none;
369
+ margin: 25px 0;
370
  }
371
+ .bws-filter-top.bws-opened .bws-toggle-indicator:before {
372
+ content: "\f142";
373
  }
374
  .bws-filter-top.bws-opened .bws-filter-top-inside {
375
+ display: block;
376
  }
377
  .bws-filter-title {
378
+ font-size: 14px;
379
+ color: #999;
380
+ margin-top: 10px;
381
  }
382
  .bws-category {
383
+ margin-top: 15px;
384
  }
385
  .bws-category li {
386
+ margin-bottom: 10px;
387
  }
388
  .bws-category a {
389
+ text-decoration: none;
390
  }
391
  .bws-category a.bws-active {
392
+ background: #0074a2;
393
+ color: #fff;
394
+ padding: 2px 5px;
395
+ display: inline-block;
396
+ border-radius: 3px;
397
  }
398
  .subsubsub span,
399
  .bws-category span {
400
+ color: #999;
401
  }
402
  .bws-category a.bws-active span {
403
+ color: #8bbed2;
404
  }
405
 
406
  @media screen and (max-width: 1700px) {
407
+ .bws-products {
408
+ width: 1020px;
409
+ }
410
  }
411
  @media screen and (max-width: 1425px) {
412
+ .bws-products {
413
+ width: 700px;
414
+ }
415
  }
416
  @media screen and (max-width: 1120px) {
417
+ .bws-products {
418
+ width: 370px;
419
+ }
420
+ .bws-membership-title,
421
+ .bws-membership-form {
422
+ float: none;
423
+ text-align: center;
424
+ }
425
+ .bws-membership-title {
426
+ margin-bottom: 10px;
427
+ }
428
  }
429
  @media screen and (max-width: 782px) {
430
+ .bws-header {
431
+ padding: 0 0 4px;
432
+ }
433
+ .bws-title {
434
+ margin-left: 11px;
435
+ }
436
+ .bws-menu-item-icon {
437
+ display: block;
438
+ }
439
+ .bws-nav-tab-wrapper,
440
+ .bws-help-links-wrapper {
441
+ margin: 0;
442
+ width: 100%;
443
+ float: none;
444
+ display: none;
445
+ }
446
+ .bws-nav-tab-wrapper a,
447
+ .bws-help-links-wrapper a {
448
+ width: 100%;
449
+ padding: 17px 20px 20px;
450
+ }
451
+ .bws-membership * {
452
+ text-align: center;
453
+ }
454
+ .bws-membership-title,
455
+ .bws-membership-link {
456
+ margin-bottom: 10px;
457
+ display: block;
458
+ }
459
+ .bws-membership .bws-button,
460
+ .bws_form_input_wrap,
461
+ .bws-membership input[type="text"] {
462
+ width: 100%;
463
+ margin: 0;
464
+ }
465
+ .bws-membership .bws-button {
466
+ margin-top: 8px;
467
+ }
468
+ .bws-filter {
469
+ display: none;
470
+ }
471
+ .bws-filter-top {
472
+ display: block;
473
+ }
474
+ .bws-products {
475
+ float: none;
476
+ width: 100%;
477
+ }
478
  }
479
  @media screen and (max-width: 370px) {
480
+ .bws_product_box {
481
+ width: auto;
482
+ }
483
+ .bws_product_content {
484
+ max-width: 160px;
485
+ padding-right: 10px;
486
+ }
487
+ }
bws_menu/deactivation-form.php CHANGED
@@ -1,11 +1,13 @@
1
  <?php
2
  /**
3
  * Displays the content of the dialog box when the user clicks on the "Deactivate" link on the plugin settings page
 
4
  * @package BestWebSoft
5
  * @since 2.1.3
6
  */
7
- if ( ! defined( 'ABSPATH' ) )
8
  exit;
 
9
 
10
  /**
11
  * Displays a confirmation and feedback dialog box when the user clicks on the "Deactivate" link on the plugins
@@ -16,8 +18,9 @@ if ( ! defined( 'ABSPATH' ) )
16
  if ( ! function_exists( 'bws_add_deactivation_feedback_dialog_box' ) ) {
17
  function bws_add_deactivation_feedback_dialog_box() {
18
  global $bstwbsftwppdtplgns_active_plugins;
19
- if ( empty( $bstwbsftwppdtplgns_active_plugins ) )
20
- return;
 
21
 
22
  $contact_support_template = __( 'Need help? We are ready to answer your questions.', 'bestwebsoft' ) . ' <a href="https://support.bestwebsoft.com/hc/en-us/requests/new" target="_blank">' . __( 'Contact Support', 'bestwebsoft' ) . '</a>';
23
 
@@ -26,65 +29,65 @@ if ( ! function_exists( 'bws_add_deactivation_feedback_dialog_box' ) ) {
26
  'id' => 'NOT_WORKING',
27
  'text' => __( 'The plugin is not working', 'bestwebsoft' ),
28
  'input_type' => 'textarea',
29
- 'input_placeholder' => esc_attr__( "Kindly share what didn't work so we can fix it in future updates...", 'bestwebsoft' )
30
  ),
31
  array(
32
  'id' => 'DIDNT_WORK_AS_EXPECTED',
33
  'text' => __( "The plugin didn't work as expected", 'bestwebsoft' ),
34
  'input_type' => 'textarea',
35
- 'input_placeholder' => esc_attr__( 'What did you expect?', 'bestwebsoft' )
36
  ),
37
  array(
38
  'id' => 'SUDDENLY_STOPPED_WORKING',
39
  'text' => __( 'The plugin suddenly stopped working', 'bestwebsoft' ),
40
  'input_type' => '',
41
  'input_placeholder' => '',
42
- 'internal_message' => $contact_support_template
43
  ),
44
  array(
45
  'id' => 'BROKE_MY_SITE',
46
  'text' => __( 'The plugin broke my site', 'bestwebsoft' ),
47
  'input_type' => '',
48
  'input_placeholder' => '',
49
- 'internal_message' => $contact_support_template
50
  ),
51
  array(
52
  'id' => 'COULDNT_MAKE_IT_WORK',
53
  'text' => __( "I couldn't understand how to get it work", 'bestwebsoft' ),
54
  'input_type' => '',
55
  'input_placeholder' => '',
56
- 'internal_message' => $contact_support_template
57
  ),
58
  array(
59
  'id' => 'FOUND_A_BETTER_PLUGIN',
60
  'text' => __( 'I found a better plugin', 'bestwebsoft' ),
61
  'input_type' => 'textfield',
62
- 'input_placeholder' => esc_attr__( "What's the plugin name?", 'bestwebsoft' )
63
  ),
64
  array(
65
  'id' => 'GREAT_BUT_NEED_SPECIFIC_FEATURE',
66
  'text' => __( "The plugin is great, but I need specific feature that you don't support", 'bestwebsoft' ),
67
  'input_type' => 'textarea',
68
- 'input_placeholder' => esc_attr__( 'What feature?', 'bestwebsoft' )
69
  ),
70
  array(
71
  'id' => 'NO_LONGER_NEEDED',
72
  'text' => __( 'I no longer need the plugin', 'bestwebsoft' ),
73
  'input_type' => '',
74
- 'input_placeholder' => ''
75
  ),
76
  array(
77
  'id' => 'TEMPORARY_DEACTIVATION',
78
  'text' => __( "It's a temporary deactivation, I'm just debugging an issue", 'bestwebsoft' ),
79
  'input_type' => '',
80
- 'input_placeholder' => ''
81
  ),
82
  array(
83
  'id' => 'OTHER',
84
  'text' => __( 'Other', 'bestwebsoft' ),
85
  'input_type' => 'textfield',
86
- 'input_placeholder' => ''
87
- )
88
  );
89
 
90
  $modal_html = '<div class="bws-modal bws-modal-deactivation-feedback">
@@ -92,13 +95,13 @@ if ( ! function_exists( 'bws_add_deactivation_feedback_dialog_box' ) ) {
92
  <div class="bws-modal-body">
93
  <h2>' . __( 'Quick Feedback', 'bestwebsoft' ) . '</h2>
94
  <div class="bws-modal-panel active">
95
- <p>' . __( 'If you have a moment, please let us know why you are deactivating', 'bestwebsoft' ) . ":</p><ul>";
96
 
97
  foreach ( $reasons as $reason ) {
98
  $list_item_classes = 'bws-modal-reason' . ( ! empty( $reason['input_type'] ) ? ' has-input' : '' );
99
 
100
  if ( ! empty( $reason['internal_message'] ) ) {
101
- $list_item_classes .= ' has-internal-message';
102
  $reason_internal_message = $reason['internal_message'];
103
  } else {
104
  $reason_internal_message = '';
@@ -134,11 +137,11 @@ if ( ! function_exists( 'bws_add_deactivation_feedback_dialog_box' ) ) {
134
 
135
  foreach ( $bstwbsftwppdtplgns_active_plugins as $basename => $plugin_data ) {
136
 
137
- $slug = dirname( $basename );
138
  $plugin_id = sanitize_title( $plugin_data['Name'] );
139
 
140
  $script .= "(function($) {
141
- var modalHtml = " . json_encode( $modal_html ) . ",
142
  \$modal = $( modalHtml ),
143
  \$deactivateLink = $( '#the-list .active[data-plugin=\"" . $basename . "\"] .deactivate a' ),
144
  \$anonymousFeedback = \$modal.find( '.bws-modal-anonymous-label' ),
@@ -269,7 +272,7 @@ if ( ! function_exists( 'bws_add_deactivation_feedback_dialog_box' ) ) {
269
  _parent.find( 'input, textarea' ).attr( 'placeholder', _parent.data( 'input-placeholder' ) ).focus();
270
 
271
  if ( BwsModalIsReasonSelected( 'OTHER' ) ) {
272
- \$modal.find( '.message' ).text( '" . __( 'Please tell us the reason so we can improve it.', 'bestwebsoft' ) . "' ).show();
273
  }
274
  }
275
  });
@@ -338,7 +341,7 @@ if ( ! function_exists( 'bws_add_deactivation_feedback_dialog_box' ) ) {
338
  /* add script in FOOTER */
339
  wp_register_script( 'bws-deactivation-feedback-dialog-boxes', '', array( 'jquery' ), false, true );
340
  wp_enqueue_script( 'bws-deactivation-feedback-dialog-boxes' );
341
- wp_add_inline_script( 'bws-deactivation-feedback-dialog-boxes', $script );
342
  }
343
  }
344
 
@@ -351,71 +354,79 @@ if ( ! function_exists( 'bws_submit_uninstall_reason_action' ) ) {
351
  function bws_submit_uninstall_reason_action() {
352
  global $bstwbsftwppdtplgns_options, $wp_version, $bstwbsftwppdtplgns_active_plugins, $current_user;
353
 
354
- wp_verify_nonce( $_REQUEST['bws_ajax_nonce'], 'bws_ajax_nonce' );
355
-
356
- $reason_id = isset( $_REQUEST['reason_id'] ) ? stripcslashes( sanitize_text_field( $_REQUEST['reason_id'] ) ) : '';
357
- $basename = isset( $_REQUEST['plugin'] ) ? stripcslashes( sanitize_text_field( $_REQUEST['plugin'] ) ) : '';
358
-
359
- if ( empty( $reason_id ) || empty( $basename ) ) {
360
- exit;
361
- }
362
 
363
- $reason_info = isset( $_REQUEST['reason_info'] ) ? stripcslashes( sanitize_text_field( $_REQUEST['reason_info'] ) ) : '';
364
- if ( ! empty( $reason_info ) ) {
365
- $reason_info = substr( $reason_info, 0, 255 );
366
- }
367
- $is_anonymous = isset( $_REQUEST['is_anonymous'] ) && 1 == $_REQUEST['is_anonymous'];
368
 
369
- $options = array(
370
- 'product' => $basename,
371
- 'reason_id' => $reason_id,
372
- 'reason_info' => $reason_info,
373
- );
374
 
375
- if ( ! $is_anonymous ) {
376
- if ( ! isset( $bstwbsftwppdtplgns_options ) )
377
- $bstwbsftwppdtplgns_options = ( is_multisite() ) ? get_site_option( 'bstwbsftwppdtplgns_options' ) : get_option( 'bstwbsftwppdtplgns_options' );
378
-
379
- if ( ! empty( $bstwbsftwppdtplgns_options['track_usage']['usage_id'] ) ) {
380
- $options['usage_id'] = $bstwbsftwppdtplgns_options['track_usage']['usage_id'];
381
- } else {
382
- $options['usage_id'] = false;
383
- $options['url'] = get_bloginfo( 'url' );
384
- $options['wp_version'] = $wp_version;
385
- $options['is_active'] = false;
386
- $options['version'] = $bstwbsftwppdtplgns_active_plugins[ $basename ]['Version'];
387
  }
388
 
389
- $options['email'] = $current_user->data->user_email;
390
- }
 
 
 
391
 
392
- /* send data */
393
- $raw_response = wp_remote_post( 'https://bestwebsoft.com/wp-content/plugins/products-statistics/deactivation-feedback/', array(
394
- 'method' => 'POST',
395
- 'body' => $options,
396
- 'timeout' => 15,
397
- ) );
398
 
399
- if ( ! is_wp_error( $raw_response ) && 200 == wp_remote_retrieve_response_code( $raw_response ) ) {
400
  if ( ! $is_anonymous ) {
401
- $response = maybe_unserialize( wp_remote_retrieve_body( $raw_response ) );
 
 
402
 
403
- if ( is_array( $response ) && ! empty( $response['usage_id'] ) && $response['usage_id'] != $options['usage_id'] ) {
404
- $bstwbsftwppdtplgns_options['track_usage']['usage_id'] = $response['usage_id'];
 
 
 
 
 
 
 
405
 
406
- if ( is_multisite() )
407
- update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
408
- else
409
- update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
410
  }
411
- }
412
 
413
- echo 'done';
414
- } else {
415
- echo $response->get_error_code() . ': ' . $response->get_error_message();
 
416
  }
417
  exit;
418
  }
419
  }
420
 
421
- add_action( 'wp_ajax_bws_submit_uninstall_reason_action', 'bws_submit_uninstall_reason_action' );
1
  <?php
2
  /**
3
  * Displays the content of the dialog box when the user clicks on the "Deactivate" link on the plugin settings page
4
+ *
5
  * @package BestWebSoft
6
  * @since 2.1.3
7
  */
8
+ if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
10
+ }
11
 
12
  /**
13
  * Displays a confirmation and feedback dialog box when the user clicks on the "Deactivate" link on the plugins
18
  if ( ! function_exists( 'bws_add_deactivation_feedback_dialog_box' ) ) {
19
  function bws_add_deactivation_feedback_dialog_box() {
20
  global $bstwbsftwppdtplgns_active_plugins;
21
+ if ( empty( $bstwbsftwppdtplgns_active_plugins ) ) {
22
+ return;
23
+ }
24
 
25
  $contact_support_template = __( 'Need help? We are ready to answer your questions.', 'bestwebsoft' ) . ' <a href="https://support.bestwebsoft.com/hc/en-us/requests/new" target="_blank">' . __( 'Contact Support', 'bestwebsoft' ) . '</a>';
26
 
29
  'id' => 'NOT_WORKING',
30
  'text' => __( 'The plugin is not working', 'bestwebsoft' ),
31
  'input_type' => 'textarea',
32
+ 'input_placeholder' => __( "Kindly share what didn't work so we can fix it in future updates...", 'bestwebsoft' ),
33
  ),
34
  array(
35
  'id' => 'DIDNT_WORK_AS_EXPECTED',
36
  'text' => __( "The plugin didn't work as expected", 'bestwebsoft' ),
37
  'input_type' => 'textarea',
38
+ 'input_placeholder' => __( 'What did you expect?', 'bestwebsoft' ),
39
  ),
40
  array(
41
  'id' => 'SUDDENLY_STOPPED_WORKING',
42
  'text' => __( 'The plugin suddenly stopped working', 'bestwebsoft' ),
43
  'input_type' => '',
44
  'input_placeholder' => '',
45
+ 'internal_message' => $contact_support_template,
46
  ),
47
  array(
48
  'id' => 'BROKE_MY_SITE',
49
  'text' => __( 'The plugin broke my site', 'bestwebsoft' ),
50
  'input_type' => '',
51
  'input_placeholder' => '',
52
+ 'internal_message' => $contact_support_template,
53
  ),
54
  array(
55
  'id' => 'COULDNT_MAKE_IT_WORK',
56
  'text' => __( "I couldn't understand how to get it work", 'bestwebsoft' ),
57
  'input_type' => '',
58
  'input_placeholder' => '',
59
+ 'internal_message' => $contact_support_template,
60
  ),
61
  array(
62
  'id' => 'FOUND_A_BETTER_PLUGIN',
63
  'text' => __( 'I found a better plugin', 'bestwebsoft' ),
64
  'input_type' => 'textfield',
65
+ 'input_placeholder' => __( "What's the plugin name?", 'bestwebsoft' ),
66
  ),
67
  array(
68
  'id' => 'GREAT_BUT_NEED_SPECIFIC_FEATURE',
69
  'text' => __( "The plugin is great, but I need specific feature that you don't support", 'bestwebsoft' ),
70
  'input_type' => 'textarea',
71
+ 'input_placeholder' => __( 'What feature?', 'bestwebsoft' ),
72
  ),
73
  array(
74
  'id' => 'NO_LONGER_NEEDED',
75
  'text' => __( 'I no longer need the plugin', 'bestwebsoft' ),
76
  'input_type' => '',
77
+ 'input_placeholder' => '',
78
  ),
79
  array(
80
  'id' => 'TEMPORARY_DEACTIVATION',
81
  'text' => __( "It's a temporary deactivation, I'm just debugging an issue", 'bestwebsoft' ),
82
  'input_type' => '',
83
+ 'input_placeholder' => '',
84
  ),
85
  array(
86
  'id' => 'OTHER',
87
  'text' => __( 'Other', 'bestwebsoft' ),
88
  'input_type' => 'textfield',
89
+ 'input_placeholder' => '',
90
+ ),
91
  );
92
 
93
  $modal_html = '<div class="bws-modal bws-modal-deactivation-feedback">
95
  <div class="bws-modal-body">
96
  <h2>' . __( 'Quick Feedback', 'bestwebsoft' ) . '</h2>
97
  <div class="bws-modal-panel active">
98
+ <p>' . __( 'If you have a moment, please let us know why you are deactivating', 'bestwebsoft' ) . ':</p><ul>';
99
 
100
  foreach ( $reasons as $reason ) {
101
  $list_item_classes = 'bws-modal-reason' . ( ! empty( $reason['input_type'] ) ? ' has-input' : '' );
102
 
103
  if ( ! empty( $reason['internal_message'] ) ) {
104
+ $list_item_classes .= ' has-internal-message';
105
  $reason_internal_message = $reason['internal_message'];
106
  } else {
107
  $reason_internal_message = '';
137
 
138
  foreach ( $bstwbsftwppdtplgns_active_plugins as $basename => $plugin_data ) {
139
 
140
+ $slug = dirname( $basename );
141
  $plugin_id = sanitize_title( $plugin_data['Name'] );
142
 
143
  $script .= "(function($) {
144
+ var modalHtml = " . wp_json_encode( $modal_html ) . ",
145
  \$modal = $( modalHtml ),
146
  \$deactivateLink = $( '#the-list .active[data-plugin=\"" . $basename . "\"] .deactivate a' ),
147
  \$anonymousFeedback = \$modal.find( '.bws-modal-anonymous-label' ),
272
  _parent.find( 'input, textarea' ).attr( 'placeholder', _parent.data( 'input-placeholder' ) ).focus();
273
 
274
  if ( BwsModalIsReasonSelected( 'OTHER' ) ) {
275
+ \$modal.find( '.message' ).text( '" . esc_html__( 'Please tell us the reason so we can improve it.', 'bestwebsoft' ) . "' ).show();
276
  }
277
  }
278
  });
341
  /* add script in FOOTER */
342
  wp_register_script( 'bws-deactivation-feedback-dialog-boxes', '', array( 'jquery' ), false, true );
343
  wp_enqueue_script( 'bws-deactivation-feedback-dialog-boxes' );
344
+ wp_add_inline_script( 'bws-deactivation-feedback-dialog-boxes', $script );
345
  }
346
  }
347
 
354
  function bws_submit_uninstall_reason_action() {
355
  global $bstwbsftwppdtplgns_options, $wp_version, $bstwbsftwppdtplgns_active_plugins, $current_user;
356
 
357
+ if ( isset( $_REQUEST['bws_ajax_nonce'] ) ) {
 
 
 
 
 
 
 
358
 
359
+ wp_verify_nonce( sanitize_text_field( wp_unslash( $_REQUEST['bws_ajax_nonce'] ) ), 'bws_ajax_nonce' );
 
 
 
 
360
 
361
+ $reason_id = isset( $_REQUEST['reason_id'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['reason_id'] ) ) : '';
362
+ $basename = isset( $_REQUEST['plugin'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['plugin'] ) ) : '';
 
 
 
363
 
364
+ if ( empty( $reason_id ) || empty( $basename ) ) {
365
+ exit;
 
 
 
 
 
 
 
 
 
 
366
  }
367
 
368
+ $reason_info = isset( $_REQUEST['reason_info'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['reason_info'] ) ) : '';
369
+ if ( ! empty( $reason_info ) ) {
370
+ $reason_info = substr( $reason_info, 0, 255 );
371
+ }
372
+ $is_anonymous = isset( $_REQUEST['is_anonymous'] ) && 1 === intval( $_REQUEST['is_anonymous'] );
373
 
374
+ $options = array(
375
+ 'product' => $basename,
376
+ 'reason_id' => $reason_id,
377
+ 'reason_info' => $reason_info,
378
+ );
 
379
 
 
380
  if ( ! $is_anonymous ) {
381
+ if ( ! isset( $bstwbsftwppdtplgns_options ) ) {
382
+ $bstwbsftwppdtplgns_options = ( is_multisite() ) ? get_site_option( 'bstwbsftwppdtplgns_options' ) : get_option( 'bstwbsftwppdtplgns_options' );
383
+ }
384
 
385
+ if ( ! empty( $bstwbsftwppdtplgns_options['track_usage']['usage_id'] ) ) {
386
+ $options['usage_id'] = $bstwbsftwppdtplgns_options['track_usage']['usage_id'];
387
+ } else {
388
+ $options['usage_id'] = false;
389
+ $options['url'] = get_bloginfo( 'url' );
390
+ $options['wp_version'] = $wp_version;
391
+ $options['is_active'] = false;
392
+ $options['version'] = $bstwbsftwppdtplgns_active_plugins[ $basename ]['Version'];
393
+ }
394
 
395
+ $options['email'] = $current_user->data->user_email;
396
+ }
397
+
398
+ /* send data */
399
+ $raw_response = wp_remote_post(
400
+ 'https://bestwebsoft.com/wp-content/plugins/products-statistics/deactivation-feedback/',
401
+ array(
402
+ 'method' => 'POST',
403
+ 'body' => $options,
404
+ 'timeout' => 15,
405
+ )
406
+ );
407
+
408
+ if ( ! is_wp_error( $raw_response ) && 200 === intval( wp_remote_retrieve_response_code( $raw_response ) ) ) {
409
+ if ( ! $is_anonymous ) {
410
+ $response = maybe_unserialize( wp_remote_retrieve_body( $raw_response ) );
411
+
412
+ if ( is_array( $response ) && ! empty( $response['usage_id'] ) && $response['usage_id'] !== $options['usage_id'] ) {
413
+ $bstwbsftwppdtplgns_options['track_usage']['usage_id'] = $response['usage_id'];
414
+
415
+ if ( is_multisite() ) {
416
+ update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
417
+ } else {
418
+ update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
419
+ }
420
+ }
421
  }
 
422
 
423
+ echo 'done';
424
+ } else {
425
+ echo wp_kses_data( $response->get_error_code() ) . ': ' . wp_kses_data( $response->get_error_message() );
426
+ }
427
  }
428
  exit;
429
  }
430
  }
431
 
432
+ add_action( 'wp_ajax_bws_submit_uninstall_reason_action', 'bws_submit_uninstall_reason_action' );
bws_menu/deprecated.php CHANGED
@@ -1,21 +1,22 @@
1
  <?php
2
- /*
3
- * Deprecated functions for BestWebSoft plugins
4
- */
5
 
6
  /**
7
- * Function add BWS Plugins page
8
- * @deprecated 1.9.8 (15.12.2016)
9
- * @return void
10
- */
11
- if ( ! function_exists ( 'bws_general_menu' ) ) {
 
12
  function bws_general_menu() {
13
  global $menu, $bws_general_menu_exist;
14
 
15
  if ( ! $bws_general_menu_exist ) {
16
  /* we check also menu exist in global array as in old plugins $bws_general_menu_exist variable not exist */
17
  foreach ( $menu as $value_menu ) {
18
- if ( 'bws_panel' == $value_menu[2] ) {
19
  $bws_general_menu_exist = true;
20
  return;
21
  }
@@ -23,9 +24,9 @@ if ( ! function_exists ( 'bws_general_menu' ) ) {
23
 
24
  add_menu_page( 'BWS Panel', 'BWS Panel', 'manage_options', 'bws_panel', 'bws_add_menu_render', 'none', '1001' );
25
 
26
- add_submenu_page( 'bws_panel', __( 'Plugins', 'bestwebsoft' ), __( 'Plugins', 'bestwebsoft' ), 'manage_options', 'bws_panel', 'bws_add_menu_render' );
27
- add_submenu_page( 'bws_panel', __( 'Themes', 'bestwebsoft' ), __( 'Themes', 'bestwebsoft' ), 'manage_options', 'bws_themes', 'bws_add_menu_render' );
28
- add_submenu_page( 'bws_panel', __( 'System Status', 'bestwebsoft' ), __( 'System Status', 'bestwebsoft' ), 'manage_options', 'bws_system_status', 'bws_add_menu_render' );
29
 
30
  $bws_general_menu_exist = true;
31
  }
@@ -33,235 +34,271 @@ if ( ! function_exists ( 'bws_general_menu' ) ) {
33
  }
34
 
35
  /**
36
- * Function process submit on the `Go Pro` tab
37
- * @deprecated 1.9.8 (15.12.2016)
38
- * @todo Remove function after 01.01.2021
39
- */
 
40
  if ( ! function_exists( 'bws_go_pro_tab_check' ) ) {
41
  function bws_go_pro_tab_check( $plugin_basename, $plugin_options_name = false, $is_network_option = false ) {
42
  global $bstwbsftwppdtplgns_options;
43
- if ( ! isset( $bstwbsftwppdtplgns_options ) )
44
  $bstwbsftwppdtplgns_options = ( function_exists( 'is_multisite' ) && is_multisite() ) ? get_site_option( 'bstwbsftwppdtplgns_options' ) : get_option( 'bstwbsftwppdtplgns_options' );
 
45
  if ( ! isset( $bstwbsftwppdtplgns_options['deprecated_function']['bws_go_pro_tab_check'] ) ) {
46
  $get_debug_backtrace = debug_backtrace();
47
- $file = ( ! empty( $get_debug_backtrace[0]['file'] ) ) ? $get_debug_backtrace[0]['file'] : '';
48
  $bstwbsftwppdtplgns_options['deprecated_function']['bws_go_pro_tab_check'] = array(
49
- 'file' => $file
50
  );
51
- if ( is_multisite() )
52
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
53
- else
54
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
 
55
  }
56
  }
57
  }
58
 
59
  /**
60
- * Function display 'Custom code' tab
61
- *
62
- * @deprecated 1.9.8 (15.12.2016)
63
- * @todo Remove function after 01.01.2021
64
- */
65
  if ( ! function_exists( 'bws_custom_code_tab' ) ) {
66
  function bws_custom_code_tab() {
67
  global $bstwbsftwppdtplgns_options;
68
- if ( ! isset( $bstwbsftwppdtplgns_options ) )
69
  $bstwbsftwppdtplgns_options = ( function_exists( 'is_multisite' ) && is_multisite() ) ? get_site_option( 'bstwbsftwppdtplgns_options' ) : get_option( 'bstwbsftwppdtplgns_options' );
 
70
  if ( ! isset( $bstwbsftwppdtplgns_options['deprecated_function']['bws_custom_code_tab'] ) ) {
71
  $get_debug_backtrace = debug_backtrace();
72
- $file = ( ! empty( $get_debug_backtrace[0]['file'] ) ) ? $get_debug_backtrace[0]['file'] : '';
73
  $bstwbsftwppdtplgns_options['deprecated_function']['bws_custom_code_tab'] = array(
74
- 'file' => $file
75
  );
76
- if ( is_multisite() )
77
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
78
- else
79
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
 
80
  }
81
  }
82
  }
83
 
84
  /**
85
- * Function check license key for Pro plugins version
86
- * @deprecated 1.9.8 (15.12.2016)
87
- * @todo Remove function after 01.01.2021
88
- */
 
89
  if ( ! function_exists( 'bws_check_pro_license' ) ) {
90
  function bws_check_pro_license( $plugin_basename, $trial_plugin = false ) {
91
  global $bstwbsftwppdtplgns_options;
92
- if ( ! isset( $bstwbsftwppdtplgns_options ) )
93
  $bstwbsftwppdtplgns_options = ( function_exists( 'is_multisite' ) && is_multisite() ) ? get_site_option( 'bstwbsftwppdtplgns_options' ) : get_option( 'bstwbsftwppdtplgns_options' );
 
94
  if ( ! isset( $bstwbsftwppdtplgns_options['deprecated_function']['bws_custom_code_tab'] ) ) {
95
  $get_debug_backtrace = debug_backtrace();
96
- $file = ( ! empty( $get_debug_backtrace[0]['file'] ) ) ? $get_debug_backtrace[0]['file'] : '';
97
  $bstwbsftwppdtplgns_options['deprecated_function']['bws_custom_code_tab'] = array(
98
- 'file' => $file
99
  );
100
- if ( is_multisite() )
101
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
102
- else
103
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
 
104
  }
105
  }
106
  }
107
 
108
  /**
109
- * Function display block for checking license key for Pro plugins version
110
- * @deprecated 1.9.8 (15.12.2016)
111
- * @todo add notice and remove functional after 01.01.2018. Remove function after 01.01.2019
112
- */
113
- if ( ! function_exists ( 'bws_check_pro_license_form' ) ) {
 
114
  function bws_check_pro_license_form( $plugin_basename ) {
115
  global $bstwbsftwppdtplgns_options;
116
  $license_key = ( isset( $bstwbsftwppdtplgns_options[ $plugin_basename ] ) ) ? $bstwbsftwppdtplgns_options[ $plugin_basename ] : ''; ?>
117
  <div class="clear"></div>
118
  <form method="post" action="">
119
- <p><?php echo _e( 'If necessary, you can check if the license key is correct or reenter it in the field below. You can find your license key on your personal page - Client Area - on our website', 'bestwebsoft' ) . ' <a href="https://bestwebsoft.com/client-area">https://bestwebsoft.com/client-area</a> ' . __( '(your username is the email address specified during the purchase). If necessary, please submit "Lost your password?" request.', 'bestwebsoft' ); ?></p>
120
  <p>
121
  <input type="text" maxlength="100" name="bws_license_key" value="<?php echo esc_attr( $license_key ); ?>" />
122
  <input type="hidden" name="bws_license_submit" value="submit" />
123
- <input type="submit" class="button" value="<?php _e( 'Check license key', 'bestwebsoft' ) ?>" />
124
  <?php wp_nonce_field( $plugin_basename, 'bws_license_nonce_name' ); ?>
125
  </p>
126
  </form>
127
- <?php }
 
128
  }
129
 
130
  /**
131
- * Function process submit on the `Go Pro` tab for TRIAL
132
- * @deprecated 1.9.8 (15.12.2016)
133
- * @todo add notice and remove functional after 01.01.2018. Remove function after 01.01.2019
134
- */
 
135
  if ( ! function_exists( 'bws_go_pro_from_trial_tab' ) ) {
136
  function bws_go_pro_from_trial_tab( $plugin_info, $plugin_basename, $page, $link_slug, $link_key, $link_pn, $trial_license_is_set = true ) {
137
  global $wp_version, $bstwbsftwppdtplgns_options;
138
- $bws_license_key = ( isset( $_POST['bws_license_key'] ) ) ? sanitize_text_field( $_POST['bws_license_key'] ) : "";
139
- if ( $trial_license_is_set ) { ?>
 
140
  <form method="post" action="">
141
  <p>
142
- <?php printf( __( 'In order to continue using the plugin it is necessary to buy a %s license.', 'bestwebsoft' ), '<a href="https://bestwebsoft.com/products/wordpress/plugins/' . $link_slug . '/?k=' . $link_key . '&amp;pn=' . $link_pn . '&amp;v=' . $plugin_info["Version"] . '&amp;wp_v=' . $wp_version .'" target="_blank" title="' . $plugin_info["Name"] . '">Pro</a>' ); ?> <?php _e( 'After that, you can activate it by entering your license key.', 'bestwebsoft' ); ?>
143
  <br />
144
  <span class="bws_info">
145
- <?php _e( 'License key can be found in the', 'bestwebsoft' ); ?>
146
  <a href="https://bestwebsoft.com/wp-login.php">Client Area</a>
147
- <?php _e( '(your username is the email address specified during the purchase).', 'bestwebsoft' ); ?>
148
  </span>
149
  </p>
150
- <?php if ( isset( $bstwbsftwppdtplgns_options['go_pro'][ $plugin_basename ]['count'] ) &&
 
151
  '5' < $bstwbsftwppdtplgns_options['go_pro'][ $plugin_basename ]['count'] &&
152
- $bstwbsftwppdtplgns_options['go_pro'][ $plugin_basename ]['time'] > ( time() - ( 24 * 60 * 60 ) ) ) { ?>
 
153
  <p>
154
  <input disabled="disabled" type="text" name="bws_license_key" value="" />
155
- <input disabled="disabled" type="submit" class="button-primary" value="<?php _e( 'Activate', 'bestwebsoft' ); ?>" />
156
  </p>
157
- <p><?php _e( "Unfortunately, you have exceeded the number of available tries per day.", 'bestwebsoft' ); ?></p>
158
  <?php } else { ?>
159
  <p>
160
  <input type="text" maxlength="100" name="bws_license_key" value="" />
161
  <input type="hidden" name="bws_license_plugin" value="<?php echo esc_attr( $plugin_basename ); ?>" />
162
  <input type="hidden" name="bws_license_submit" value="submit" />
163
- <input type="submit" class="button-primary" value="<?php _e( 'Activate', 'bestwebsoft' ); ?>" />
164
  <?php wp_nonce_field( $plugin_basename, 'bws_license_nonce_name' ); ?>
165
  </p>
166
  <?php } ?>
167
  </form>
168
- <?php } else {
169
- $page_url = esc_url( self_admin_url( 'admin.php?page=' . $page ) ); ?>
170
- <p><?php _e( "Congratulations! The Pro license of the plugin is activated successfully.", 'bestwebsoft' ); ?></p>
 
 
171
  <p>
172
- <?php _e( "Please, go to", 'bestwebsoft' ); ?> <a href="<?php echo $page_url; ?>"><?php _e( 'the setting page', 'bestwebsoft' ); ?></a>
173
  </p>
174
- <?php }
 
175
  }
176
  }
177
 
178
 
179
  /**
180
- * Function display block for restoring default product settings
181
- * @deprecated 1.9.8 (15.12.2016)
182
- * @todo add notice and remove functional after 01.01.2018. Remove function after 01.01.2019
183
- */
184
- if ( ! function_exists ( 'bws_form_restore_default_settings' ) ) {
185
- function bws_form_restore_default_settings( $plugin_basename, $change_permission_attr = '' ) { ?>
 
 
186
  <form method="post" action="">
187
- <p><?php _e( 'Restore all plugin settings to defaults', 'bestwebsoft' ); ?></p>
188
  <p>
189
- <input <?php echo $change_permission_attr; ?> type="submit" class="button" value="<?php _e( 'Restore settings', 'bestwebsoft' ); ?>" />
190
  </p>
191
  <input type="hidden" name="bws_restore_default" value="submit" />
192
  <?php wp_nonce_field( $plugin_basename, 'bws_settings_nonce_name' ); ?>
193
  </form>
194
- <?php }
 
195
  }
196
 
197
  /**
198
- * Function display GO PRO tab
199
- * @deprecated 1.9.8 (15.12.2016)
200
- * @todo add notice and remove functional after 01.01.2018. Remove function after 01.01.2019
201
- */
 
202
  if ( ! function_exists( 'bws_go_pro_tab_show' ) ) {
203
  function bws_go_pro_tab_show( $bws_hide_premium_options_check, $plugin_info, $plugin_basename, $page, $pro_page, $bws_license_plugin, $link_slug, $link_key, $link_pn, $pro_plugin_is_activated = false, $trial_days_number = false ) {
204
  global $wp_version, $bstwbsftwppdtplgns_options;
205
- $bws_license_key = ( isset( $_POST['bws_license_key'] ) ) ? sanitize_text_field( $_POST['bws_license_key'] ) : "";
206
- if ( $pro_plugin_is_activated ) {
207
- $page_url = esc_url( self_admin_url( 'admin.php?page=' . $pro_page ) ); ?>
208
- <p><?php _e( "Congratulations! Pro version of the plugin is installed and activated successfully.", 'bestwebsoft' ); ?></p>
 
209
  <p>
210
- <?php _e( "Please, go to", 'bestwebsoft' ); ?> <a href="<?php echo $page_url; ?>"><?php _e( 'the setting page', 'bestwebsoft' ); ?></a>
211
  </p>
212
- <?php } else {
213
- if ( $bws_hide_premium_options_check ) { ?>
 
 
214
  <form method="post" action="">
215
  <p>
216
  <input type="hidden" name="bws_hide_premium_options_submit" value="submit" />
217
- <input type="submit" class="button" value="<?php _e( 'Show Pro features', 'bestwebsoft' ); ?>" />
218
  <?php wp_nonce_field( $plugin_basename, 'bws_license_nonce_name' ); ?>
219
  </p>
220
  </form>
221
  <?php } ?>
222
  <form method="post" action="">
223
  <p>
224
- <?php _e( 'Enter your license key to install and activate', 'bestwebsoft' ); ?>
225
- <a href="<?php echo esc_url( 'https://bestwebsoft.com/products/wordpress/plugins/' . $link_slug . '/?k=' . $link_key . '&pn=' . $link_pn . '&v=' . $plugin_info["Version"] . '&wp_v=' . $wp_version ); ?>" target="_blank" title="<?php echo $plugin_info["Name"]; ?> Pro">Pro</a>
226
- <?php _e( 'version of the plugin.', 'bestwebsoft' ); ?><br />
227
  <span class="bws_info">
228
- <?php _e( 'License key can be found in the', 'bestwebsoft' ); ?>
229
  <a href="https://bestwebsoft.com/wp-login.php">Client Area</a>
230
- <?php _e( '(your username is the email address specified during the purchase).', 'bestwebsoft' ); ?>
231
  </span>
232
  </p>
233
- <?php if ( $trial_days_number !== false )
234
- $trial_days_number = __( 'or', 'bestwebsoft' ) . ' <a href="https://bestwebsoft.com/products/wordpress/plugins/' . $link_slug . '/trial/" target="_blank">' . sprintf( __( 'Start Your Free %s-Day Trial Now', 'bestwebsoft' ), $trial_days_number ) . '</a>';
 
 
235
  if ( isset( $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] ) &&
236
  '5' < $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] &&
237
- $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['time'] > ( time() - ( 24 * 60 * 60 ) ) ) { ?>
 
238
  <p>
239
  <input disabled="disabled" type="text" name="bws_license_key" value="<?php echo esc_attr( $bws_license_key ); ?>" />
240
- <input disabled="disabled" type="submit" class="button-primary" value="<?php _e( 'Activate', 'bestwebsoft' ); ?>" />
241
- <?php if ( $trial_days_number !== false ) echo $trial_days_number; ?>
 
 
 
 
242
  </p>
243
- <p><?php _e( "Unfortunately, you have exceeded the number of available tries per day. Please, upload the plugin manually.", 'bestwebsoft' ); ?></p>
244
  <?php } else { ?>
245
  <p>
246
  <input type="text" maxlength="100" name="bws_license_key" value="<?php echo esc_attr( $bws_license_key ); ?>" />
247
  <input type="hidden" name="bws_license_plugin" value="<?php echo esc_attr( $bws_license_plugin ); ?>" />
248
  <input type="hidden" name="bws_license_submit" value="submit" />
249
- <input type="submit" class="button-primary" value="<?php _e( 'Activate', 'bestwebsoft' ); ?>" />
250
- <?php if ( $trial_days_number !== false )
251
- echo $trial_days_number;
252
- wp_nonce_field( $plugin_basename, 'bws_license_nonce_name' ); ?>
 
 
 
253
  </p>
254
  <?php } ?>
255
  </form>
256
- <?php }
 
257
  }
258
  }
259
 
260
  /**
261
- * Function display GO PRO Banner (inline in 'admin_notices' action )
262
- * @deprecated 2.2.5 (29.11.2019)
263
- * @todo Remove notice after 01.12.2021
264
- */
 
265
  if ( ! function_exists( 'bws_plugin_banner' ) ) {
266
  function bws_plugin_banner( $plugin_info, $this_banner_prefix, $link_slug, $link_key, $link_pn, $banner_url_or_slug ) {
267
  /* the function is not longer use, but we need to store it */
@@ -269,12 +306,13 @@ if ( ! function_exists( 'bws_plugin_banner' ) ) {
269
  }
270
 
271
  /**
272
- * Function display timeout PRO Banner (inline in 'admin_notices' action )
273
- * @deprecated 2.2.5 (29.11.2019)
274
- * @todo Remove notice after 01.12.2021
275
- */
276
- if ( ! function_exists ( 'bws_plugin_banner_timeout' ) ) {
 
277
  function bws_plugin_banner_timeout( $plugin_key, $plugin_prefix, $plugin_name, $banner_url_or_slug = false ) {
278
  /* the function is not longer use, but we need to store it */
279
  }
280
- }
1
  <?php
2
+ /**
3
+ * Deprecated functions for BestWebSoft plugins
4
+ */
5
 
6
  /**
7
+ * Function add BWS Plugins page
8
+ *
9
+ * @deprecated 1.9.8 (15.12.2016)
10
+ * @return void
11
+ */
12
+ if ( ! function_exists( 'bws_general_menu' ) ) {
13
  function bws_general_menu() {
14
  global $menu, $bws_general_menu_exist;
15
 
16
  if ( ! $bws_general_menu_exist ) {
17
  /* we check also menu exist in global array as in old plugins $bws_general_menu_exist variable not exist */
18
  foreach ( $menu as $value_menu ) {
19
+ if ( 'bws_panel' === $value_menu[2] ) {
20
  $bws_general_menu_exist = true;
21
  return;
22
  }
24
 
25
  add_menu_page( 'BWS Panel', 'BWS Panel', 'manage_options', 'bws_panel', 'bws_add_menu_render', 'none', '1001' );
26
 
27
+ add_submenu_page( 'bws_panel', esc_html__( 'Plugins', 'bestwebsoft' ), esc_html__( 'Plugins', 'bestwebsoft' ), 'manage_options', 'bws_panel', 'bws_add_menu_render' );
28
+ add_submenu_page( 'bws_panel', esc_html__( 'Themes', 'bestwebsoft' ), esc_html__( 'Themes', 'bestwebsoft' ), 'manage_options', 'bws_themes', 'bws_add_menu_render' );
29
+ add_submenu_page( 'bws_panel', esc_html__( 'System Status', 'bestwebsoft' ), esc_html__( 'System Status', 'bestwebsoft' ), 'manage_options', 'bws_system_status', 'bws_add_menu_render' );
30
 
31
  $bws_general_menu_exist = true;
32
  }
34
  }
35
 
36
  /**
37
+ * Function process submit on the `Go Pro` tab
38
+ *
39
+ * @deprecated 1.9.8 (15.12.2016)
40
+ * @todo Remove function after 01.01.2021
41
+ */
42
  if ( ! function_exists( 'bws_go_pro_tab_check' ) ) {
43
  function bws_go_pro_tab_check( $plugin_basename, $plugin_options_name = false, $is_network_option = false ) {
44
  global $bstwbsftwppdtplgns_options;
45
+ if ( ! isset( $bstwbsftwppdtplgns_options ) ) {
46
  $bstwbsftwppdtplgns_options = ( function_exists( 'is_multisite' ) && is_multisite() ) ? get_site_option( 'bstwbsftwppdtplgns_options' ) : get_option( 'bstwbsftwppdtplgns_options' );
47
+ }
48
  if ( ! isset( $bstwbsftwppdtplgns_options['deprecated_function']['bws_go_pro_tab_check'] ) ) {
49
  $get_debug_backtrace = debug_backtrace();
50
+ $file = ( ! empty( $get_debug_backtrace[0]['file'] ) ) ? $get_debug_backtrace[0]['file'] : '';
51
  $bstwbsftwppdtplgns_options['deprecated_function']['bws_go_pro_tab_check'] = array(
52
+ 'file' => $file,
53
  );
54
+ if ( is_multisite() ) {
55
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
56
+ } else {
57
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
58
+ }
59
  }
60
  }
61
  }
62
 
63
  /**
64
+ * Function display 'Custom code' tab
65
+ *
66
+ * @deprecated 1.9.8 (15.12.2016)
67
+ * @todo Remove function after 01.01.2021
68
+ */
69
  if ( ! function_exists( 'bws_custom_code_tab' ) ) {
70
  function bws_custom_code_tab() {
71
  global $bstwbsftwppdtplgns_options;
72
+ if ( ! isset( $bstwbsftwppdtplgns_options ) ) {
73
  $bstwbsftwppdtplgns_options = ( function_exists( 'is_multisite' ) && is_multisite() ) ? get_site_option( 'bstwbsftwppdtplgns_options' ) : get_option( 'bstwbsftwppdtplgns_options' );
74
+ }
75
  if ( ! isset( $bstwbsftwppdtplgns_options['deprecated_function']['bws_custom_code_tab'] ) ) {
76
  $get_debug_backtrace = debug_backtrace();
77
+ $file = ( ! empty( $get_debug_backtrace[0]['file'] ) ) ? $get_debug_backtrace[0]['file'] : '';
78
  $bstwbsftwppdtplgns_options['deprecated_function']['bws_custom_code_tab'] = array(
79
+ 'file' => $file,
80
  );
81
+ if ( is_multisite() ) {
82
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
83
+ } else {
84
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
85
+ }
86
  }
87
  }
88
  }
89
 
90
  /**
91
+ * Function check license key for Pro plugins version
92
+ *
93
+ * @deprecated 1.9.8 (15.12.2016)
94
+ * @todo Remove function after 01.01.2021
95
+ */
96
  if ( ! function_exists( 'bws_check_pro_license' ) ) {
97
  function bws_check_pro_license( $plugin_basename, $trial_plugin = false ) {
98
  global $bstwbsftwppdtplgns_options;
99
+ if ( ! isset( $bstwbsftwppdtplgns_options ) ) {
100
  $bstwbsftwppdtplgns_options = ( function_exists( 'is_multisite' ) && is_multisite() ) ? get_site_option( 'bstwbsftwppdtplgns_options' ) : get_option( 'bstwbsftwppdtplgns_options' );
101
+ }
102
  if ( ! isset( $bstwbsftwppdtplgns_options['deprecated_function']['bws_custom_code_tab'] ) ) {
103
  $get_debug_backtrace = debug_backtrace();
104
+ $file = ( ! empty( $get_debug_backtrace[0]['file'] ) ) ? $get_debug_backtrace[0]['file'] : '';
105
  $bstwbsftwppdtplgns_options['deprecated_function']['bws_custom_code_tab'] = array(
106
+ 'file' => $file,
107
  );
108
+ if ( is_multisite() ) {
109
  update_site_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
110
+ } else {
111
  update_option( 'bstwbsftwppdtplgns_options', $bstwbsftwppdtplgns_options );
112
+ }
113
  }
114
  }
115
  }
116
 
117
  /**
118
+ * Function display block for checking license key for Pro plugins version
119
+ *
120
+ * @deprecated 1.9.8 (15.12.2016)
121
+ * @todo add notice and remove functional after 01.01.2018. Remove function after 01.01.2019
122
+ */
123
+ if ( ! function_exists( 'bws_check_pro_license_form' ) ) {
124
  function bws_check_pro_license_form( $plugin_basename ) {
125
  global $bstwbsftwppdtplgns_options;
126
  $license_key = ( isset( $bstwbsftwppdtplgns_options[ $plugin_basename ] ) ) ? $bstwbsftwppdtplgns_options[ $plugin_basename ] : ''; ?>
127
  <div class="clear"></div>
128
  <form method="post" action="">
129
+ <p><?php echo esc_html_e( 'If necessary, you can check if the license key is correct or reenter it in the field below. You can find your license key on your personal page - Client Area - on our website', 'bestwebsoft' ) . ' <a href="https://bestwebsoft.com/client-area">https://bestwebsoft.com/client-area</a> ' . esc_html__( '(your username is the email address specified during the purchase). If necessary, please submit "Lost your password?" request.', 'bestwebsoft' ); ?></p>
130
  <p>
131
  <input type="text" maxlength="100" name="bws_license_key" value="<?php echo esc_attr( $license_key ); ?>" />
132
  <input type="hidden" name="bws_license_submit" value="submit" />
133
+ <input type="submit" class="button" value="<?php esc_html_e( 'Check license key', 'bestwebsoft' ); ?>" />
134
  <?php wp_nonce_field( $plugin_basename, 'bws_license_nonce_name' ); ?>
135
  </p>
136
  </form>
137
+ <?php
138
+ }
139
  }
140
 
141
  /**
142
+ * Function process submit on the `Go Pro` tab for TRIAL
143
+ *
144
+ * @deprecated 1.9.8 (15.12.2016)
145
+ * @todo add notice and remove functional after 01.01.2018. Remove function after 01.01.2019
146
+ */
147
  if ( ! function_exists( 'bws_go_pro_from_trial_tab' ) ) {
148
  function bws_go_pro_from_trial_tab( $plugin_info, $plugin_basename, $page, $link_slug, $link_key, $link_pn, $trial_license_is_set = true ) {
149
  global $wp_version, $bstwbsftwppdtplgns_options;
150
+ $bws_license_key = ( isset( $_POST['bws_license_key'] ) ) ? sanitize_text_field( wp_unslash( $_POST['bws_license_key'] ) ) : '';
151
+ if ( $trial_license_is_set ) {
152
+ ?>
153
  <form method="post" action="">
154
  <p>
155
+ <?php printf( esc_html__( 'In order to continue using the plugin it is necessary to buy a %s license.', 'bestwebsoft' ), esc_html( '<a href="https://bestwebsoft.com/products/wordpress/plugins/' . $link_slug . '/?k=' . $link_key . '&amp;pn=' . $link_pn . '&amp;v=' . $plugin_info['Version'] . '&amp;wp_v=' . $wp_version . '" target="_blank" title="' . $plugin_info['Name'] . '">Pro</a>' ) ); ?> <?php esc_html_e( 'After that, you can activate it by entering your license key.', 'bestwebsoft' ); ?>
156
  <br />
157
  <span class="bws_info">
158
+ <?php esc_html_e( 'License key can be found in the', 'bestwebsoft' ); ?>
159
  <a href="https://bestwebsoft.com/wp-login.php">Client Area</a>
160
+ <?php esc_html_e( '(your username is the email address specified during the purchase).', 'bestwebsoft' ); ?>
161
  </span>
162
  </p>
163
+ <?php
164
+ if ( isset( $bstwbsftwppdtplgns_options['go_pro'][ $plugin_basename ]['count'] ) &&
165
  '5' < $bstwbsftwppdtplgns_options['go_pro'][ $plugin_basename ]['count'] &&
166
+ $bstwbsftwppdtplgns_options['go_pro'][ $plugin_basename ]['time'] > ( time() - ( 24 * 60 * 60 ) ) ) {
167
+ ?>
168
  <p>
169
  <input disabled="disabled" type="text" name="bws_license_key" value="" />
170
+ <input disabled="disabled" type="submit" class="button-primary" value="<?php esc_html_e( 'Activate', 'bestwebsoft' ); ?>" />
171
  </p>
172
+ <p><?php esc_html_e( 'Unfortunately, you have exceeded the number of available tries per day.', 'bestwebsoft' ); ?></p>
173
  <?php } else { ?>
174
  <p>
175
  <input type="text" maxlength="100" name="bws_license_key" value="" />
176
  <input type="hidden" name="bws_license_plugin" value="<?php echo esc_attr( $plugin_basename ); ?>" />
177
  <input type="hidden" name="bws_license_submit" value="submit" />
178
+ <input type="submit" class="button-primary" value="<?php esc_html_e( 'Activate', 'bestwebsoft' ); ?>" />
179
  <?php wp_nonce_field( $plugin_basename, 'bws_license_nonce_name' ); ?>
180
  </p>
181
  <?php } ?>
182
  </form>
183
+ <?php
184
+ } else {
185
+ $page_url = esc_url( self_admin_url( 'admin.php?page=' . $page ) );
186
+ ?>
187
+ <p><?php esc_html_e( 'Congratulations! The Pro license of the plugin is activated successfully.', 'bestwebsoft' ); ?></p>
188
  <p>
189
+ <?php esc_html_e( 'Please, go to', 'bestwebsoft' ); ?> <a href="<?php echo esc_url( $page_url ); ?>"><?php esc_html_e( 'the setting page', 'bestwebsoft' ); ?></a>
190
  </p>
191
+ <?php
192
+ }
193
  }
194
  }
195
 
196
 
197
  /**
198
+ * Function display block for restoring default product settings
199
+ *
200
+ * @deprecated 1.9.8 (15.12.2016)
201
+ * @todo add notice and remove functional after 01.01.2018. Remove function after 01.01.2019
202
+ */
203
+ if ( ! function_exists( 'bws_form_restore_default_settings' ) ) {
204
+ function bws_form_restore_default_settings( $plugin_basename, $change_permission_attr = '' ) {
205
+ ?>
206
  <form method="post" action="">
207
+ <p><?php esc_html_e( 'Restore all plugin settings to defaults', 'bestwebsoft' ); ?></p>
208
  <p>
209
+ <input <?php echo esc_html( $change_permission_attr ); ?> type="submit" class="button" value="<?php esc_html_e( 'Restore settings', 'bestwebsoft' ); ?>" />
210
  </p>
211
  <input type="hidden" name="bws_restore_default" value="submit" />
212
  <?php wp_nonce_field( $plugin_basename, 'bws_settings_nonce_name' ); ?>
213
  </form>
214
+ <?php
215
+ }
216
  }
217
 
218
  /**
219
+ * Function display GO PRO tab
220
+ *
221
+ * @deprecated 1.9.8 (15.12.2016)
222
+ * @todo add notice and remove functional after 01.01.2018. Remove function after 01.01.2019
223
+ */
224
  if ( ! function_exists( 'bws_go_pro_tab_show' ) ) {
225
  function bws_go_pro_tab_show( $bws_hide_premium_options_check, $plugin_info, $plugin_basename, $page, $pro_page, $bws_license_plugin, $link_slug, $link_key, $link_pn, $pro_plugin_is_activated = false, $trial_days_number = false ) {
226
  global $wp_version, $bstwbsftwppdtplgns_options;
227
+ $bws_license_key = ( isset( $_POST['bws_license_key'] ) ) ? sanitize_text_field( wp_unslash( $_POST['bws_license_key'] ) ) : '';
228
+ if ( $pro_plugin_is_activated ) {
229
+ $page_url = esc_url( self_admin_url( 'admin.php?page=' . $pro_page ) );
230
+ ?>
231
+ <p><?php esc_html_e( 'Congratulations! Pro version of the plugin is installed and activated successfully.', 'bestwebsoft' ); ?></p>
232
  <p>
233
+ <?php esc_html_e( 'Please, go to', 'bestwebsoft' ); ?> <a href="<?php echo esc_url( $page_url ); ?>"><?php esc_html_e( 'the setting page', 'bestwebsoft' ); ?></a>
234
  </p>
235
+ <?php
236
+ } else {
237
+ if ( $bws_hide_premium_options_check ) {
238
+ ?>
239
  <form method="post" action="">
240
  <p>
241
  <input type="hidden" name="bws_hide_premium_options_submit" value="submit" />
242
+ <input type="submit" class="button" value="<?php esc_html_e( 'Show Pro features', 'bestwebsoft' ); ?>" />
243
  <?php wp_nonce_field( $plugin_basename, 'bws_license_nonce_name' ); ?>
244
  </p>
245
  </form>
246
  <?php } ?>
247
  <form method="post" action="">
248
  <p>
249
+ <?php esc_html_e( 'Enter your license key to install and activate', 'bestwebsoft' ); ?>
250
+ <a href="<?php echo esc_url( 'https://bestwebsoft.com/products/wordpress/plugins/' . $link_slug . '/?k=' . $link_key . '&pn=' . $link_pn . '&v=' . $plugin_info['Version'] . '&wp_v=' . $wp_version ); ?>" target="_blank" title="<?php echo esc_html( $plugin_info['Name'] ); ?> Pro">Pro</a>
251
+ <?php esc_html_e( 'version of the plugin.', 'bestwebsoft' ); ?><br />
252
  <span class="bws_info">
253
+ <?php esc_html_e( 'License key can be found in the', 'bestwebsoft' ); ?>
254
  <a href="https://bestwebsoft.com/wp-login.php">Client Area</a>
255
+ <?php esc_html_e( '(your username is the email address specified during the purchase).', 'bestwebsoft' ); ?>
256
  </span>
257
  </p>
258
+ <?php
259
+ if ( false !== $trial_days_number ) {
260
+ $trial_days_number = esc_html__( 'or', 'bestwebsoft' ) . ' <a href="https://bestwebsoft.com/products/wordpress/plugins/' . esc_attr( $link_slug ) . '/trial/" target="_blank">' . esc_html( sprintf( esc_html__( 'Start Your Free %s-Day Trial Now', 'bestwebsoft' ), $trial_days_number ) ) . '</a>';
261
+ }
262
  if ( isset( $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] ) &&
263
  '5' < $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['count'] &&
264
+ $bstwbsftwppdtplgns_options['go_pro'][ $bws_license_plugin ]['time'] > ( time() - ( 24 * 60 * 60 ) ) ) {
265
+ ?>
266
  <p>
267
  <input disabled="disabled" type="text" name="bws_license_key" value="<?php echo esc_attr( $bws_license_key ); ?>" />
268
+ <input disabled="disabled" type="submit" class="button-primary" value="<?php esc_html_e( 'Activate', 'bestwebsoft' ); ?>" />
269
+ <?php
270
+ if ( false !== $trial_days_number ) {
271
+ echo esc_html( $trial_days_number );
272
+ }
273
+ ?>
274
  </p>
275
+ <p><?php esc_html_e( 'Unfortunately, you have exceeded the number of available tries per day. Please, upload the plugin manually.', 'bestwebsoft' ); ?></p>
276
  <?php } else { ?>
277
  <p>
278
  <input type="text" maxlength="100" name="bws_license_key" value="<?php echo esc_attr( $bws_license_key ); ?>" />
279
  <input type="hidden" name="bws_license_plugin" value="<?php echo esc_attr( $bws_license_plugin ); ?>" />
280
  <input type="hidden" name="bws_license_submit" value="submit" />
281
+ <input type="submit" class="button-primary" value="<?php esc_html_e( 'Activate', 'bestwebsoft' ); ?>" />
282
+ <?php
283
+ if ( false !== $trial_days_number ) {
284
+ echo esc_html( $trial_days_number );
285
+ }
286
+ wp_nonce_field( $plugin_basename, 'bws_license_nonce_name' );
287
+ ?>
288
  </p>
289
  <?php } ?>
290
  </form>
291
+ <?php
292
+ }
293
  }
294
  }
295
 
296
  /**
297
+ * Function display GO PRO Banner (inline in 'admin_notices' action )
298
+ *
299
+ * @deprecated 2.2.5 (29.11.2019)
300
+ * @todo Remove notice after 01.12.2021
301
+ */
302
  if ( ! function_exists( 'bws_plugin_banner' ) ) {
303
  function bws_plugin_banner( $plugin_info, $this_banner_prefix, $link_slug, $link_key, $link_pn, $banner_url_or_slug ) {
304
  /* the function is not longer use, but we need to store it */
306
  }
307
 
308
  /**
309
+ * Function display timeout PRO Banner (inline in 'admin_notices' action )
310
+ *
311
+ * @deprecated 2.2.5 (29.11.2019)
312
+ * @todo Remove notice after 01.12.2021
313
+ */
314
+ if ( ! function_exists( 'bws_plugin_banner_timeout' ) ) {
315
  function bws_plugin_banner_timeout( $plugin_key, $plugin_prefix, $plugin_name, $banner_url_or_slug = false ) {
316
  /* the function is not longer use, but we need to store it */
317
  }
318
+ }
bws_menu/js/bws_menu.js CHANGED
@@ -1,47 +1,58 @@
1
  (function($) {
2
  "use strict";
3
- $(document).ready( function() {
4
- var product = $( '.bws_product_box' ),
5
- max = 0;
6
- $( product ).each( function () {
7
- if ( $( this ).height() > max )
8
- max = $( this ).height();
9
- });
10
- $( '.bws_product_box' ).css( 'height', max + 'px' );
 
 
 
 
11
 
12
- if ( $( '.bws-filter' ).length ) {
13
- var prvPos = $( '.bws-filter' ).offset().top;
14
- var maxPos = prvPos + $( '.bws-products' ).outerHeight() - $( '.bws-filter' ).outerHeight();
15
 
16
- $( window ).scroll( function() {
17
- if ( $( window ).width() > 580 ) {
18
- var scrPos = Number( $( document ).scrollTop() ) + 40;
19
- if ( scrPos > maxPos ) {
20
- $( '.bws-filter' ).removeClass( 'bws_fixed' );
21
- } else if ( scrPos > prvPos ) {
22
- $( '.bws-filter' ).addClass( 'bws_fixed' );
23
- } else {
24
- $( '.bws-filter' ).removeClass( 'bws_fixed' );
 
 
 
25
  }
26
- }
27
- });
28
- }
29
- $( '.bws-menu-item-icon' ).click( function() {
30
- if ( $( this ).hasClass( 'bws-active' ) ) {
31
- $( this ).removeClass( 'bws-active' );
32
- $( '.bws-nav-tab-wrapper, .bws-help-links-wrapper' ).hide();
33
- } else {
34
- $( this ).addClass( 'bws-active' );
35
- $( '.bws-nav-tab-wrapper, .bws-help-links-wrapper' ).css( 'display', 'inline-block' );
36
  }
37
- });
38
- $( '.bws-filter-top h2' ).click( function() {
39
- if ( $( '.bws-filter-top' ).hasClass( 'bws-opened' ) ) {
40
- $( '.bws-filter-top' ).removeClass( 'bws-opened' );
41
- } else {
42
- $( '.bws-filter-top' ).addClass( 'bws-opened' );
43
- }
44
- });
45
-
46
- });
47
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  (function($) {
2
  "use strict";
3
+ $( document ).ready(
4
+ function() {
5
+ var product = $( '.bws_product_box' ),
6
+ max = 0;
7
+ $( product ).each(
8
+ function () {
9
+ if ( $( this ).height() > max ) {
10
+ max = $( this ).height();
11
+ }
12
+ }
13
+ );
14
+ $( '.bws_product_box' ).css( 'height', max + 'px' );
15
 
16
+ if ( $( '.bws-filter' ).length ) {
17
+ var prvPos = $( '.bws-filter' ).offset().top;
18
+ var maxPos = prvPos + $( '.bws-products' ).outerHeight() - $( '.bws-filter' ).outerHeight();
19
 
20
+ $( window ).scroll(
21
+ function() {
22
+ if ( $( window ).width() > 580 ) {
23
+ var scrPos = Number( $( document ).scrollTop() ) + 40;
24
+ if ( scrPos > maxPos ) {
25
+ $( '.bws-filter' ).removeClass( 'bws_fixed' );
26
+ } else if ( scrPos > prvPos ) {
27
+ $( '.bws-filter' ).addClass( 'bws_fixed' );
28
+ } else {
29
+ $( '.bws-filter' ).removeClass( 'bws_fixed' );
30
+ }
31
+ }
32
  }
33
+ );
 
 
 
 
 
 
 
 
 
34
  }
35
+ $( '.bws-menu-item-icon' ).click(
36
+ function() {
37
+ if ( $( this ).hasClass( 'bws-active' ) ) {
38
+ $( this ).removeClass( 'bws-active' );
39
+ $( '.bws-nav-tab-wrapper, .bws-help-links-wrapper' ).hide();
40
+ } else {
41
+ $( this ).addClass( 'bws-active' );
42
+ $( '.bws-nav-tab-wrapper, .bws-help-links-wrapper' ).css( 'display', 'inline-block' );
43
+ }
44
+ }
45
+ );
46
+ $( '.bws-filter-top h2' ).click(
47
+ function() {
48
+ if ( $( '.bws-filter-top' ).hasClass( 'bws-opened' ) ) {
49
+ $( '.bws-filter-top' ).removeClass( 'bws-opened' );
50
+ } else {
51
+ $( '.bws-filter-top' ).addClass( 'bws-opened' );
52
+ }
53
+ }
54
+ );
55
+
56
+ }
57
+ );
58
+ })( jQuery );
bws_menu/js/bws_tooltip.js CHANGED
@@ -1,91 +1,110 @@
1
  /**
2
  * BWS tooltip function
3
- *
4
  */
5
  (function($) {
6
  "use strict";
7
- $(document).ready( function() {
8
- jQuery.bwsTooltip = function( pointer_options ) {
9
- var pointer_buttons = pointer_options['buttons'];
10
- /* extend pointer options - add close button */
11
- pointer_options = $.extend( pointer_options, {
12
- buttons: function(event, t) {
13
- var button = '';
14
- /* check and add dismiss-type buttons */
15
- for ( var but in pointer_buttons ) {
16
- if ( typeof pointer_buttons[ but ]['type'] != 'undefined' && pointer_buttons[ but ]['type'] == 'dismiss' && typeof pointer_buttons[ but ]['text'] != 'undefined' && pointer_buttons[ but ]['text'] != '' ) {
17
- button += '<a style="margin:0px 5px 2px;" class="button-secondary">' + pointer_buttons[ but ]['text'] + '</a>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  }
19
  }
20
- button = jQuery( button );
21
- button.on('click.pointer', function () {
22
- t.element.pointer('close');
23
- });
24
- return button;
25
- },
26
- /* add ajax dismiss functionality */
27
- close : $.proxy(function () {
28
- if ( pointer_options['actions']['onload'] == true ) {
29
- $.post( ajaxurl, this );
 
 
 
 
30
  }
31
- }, {
32
- pointer: pointer_options['tooltip_id'],
33
- action: 'dismiss-wp-pointer'
34
- })
35
- });
36
- /* function to display pointer */
37
- function displayPointer( cssSelector ) {
38
- cssSelector.pointer( pointer_options ).pointer({
39
- pointerClass: 'wp-pointer ' + pointer_options["tooltip_id"],
40
- content: pointer_options['content'],
41
- position: {
42
- edge: pointer_options['position']['edge'],
43
- align: pointer_options['position']['align'],
44
- },
45
- }).pointer('open');
46
- /* display buttons that are not type of dismiss */
47
- for ( var but in pointer_buttons ) {
48
- if ( typeof pointer_buttons[ but ]['type'] != 'undefined' && pointer_buttons[ but ]['type'] != 'dismiss' && typeof pointer_buttons[ but ]['text'] != 'undefined' && pointer_buttons[ but ]['text'] != '' ) {
49
- $( '.' + pointer_options['tooltip_id'] + ' .button-secondary').first().before( '<a class="button-primary" style="margin-right: 5px;" ' +
50
- ( ( pointer_buttons[ but ]['type'] == 'link' && typeof pointer_buttons[ but ]['link'] != 'undefined' && pointer_buttons[ but ]['link'] != '') ? 'target="_blank" href="' + pointer_buttons[ but ]['link'] + '"' : '' )
51
- + '>' + pointer_buttons[ but ]['text'] + '</a>' );
52
- };
53
- }
54
- /* adjust position of pointer */
55
- var topPos,
56
- leftPos,
57
- pointerZindex;
58
- topPos = parseInt( $( "." + pointer_options["tooltip_id"] ).css("top") ) + parseInt( pointer_options['position']['pos-top'] );
59
- leftPos = parseInt( $( "." + pointer_options["tooltip_id"] ).css("left") ) + parseInt( pointer_options['position']['pos-left'] );
60
- if ( pointer_options['position']['align'] == 'left' ) {
61
- leftPos += cssSelector.outerWidth()/2;
62
- };
63
- $( "." + pointer_options["tooltip_id"] ).css({ "top": topPos + "px", "left": leftPos + "px" });
64
- /* adjust z-index if need */
65
- pointerZindex = parseInt( $( "." + pointer_options["tooltip_id"] ).css("z-index") );
66
- if ( pointerZindex != pointer_options['position']['zindex'] ) {
67
- $( "." + pointer_options["tooltip_id"] ).css({ "z-index": pointer_options['position']['zindex'] });
68
- }
69
- }
70
 
71
- /* display pointer for the first time */
72
- if ( pointer_options['actions']['onload'] ) {
73
- if ( pointer_options['set_timeout'] > 0 ) {
74
- var settime = parseInt( pointer_options['set_timeout'] );
75
- setTimeout( function() {
76
- displayPointer( $( pointer_options['css_selector'] ) );
77
- }, settime );
78
- } else {
79
- displayPointer( $( pointer_options['css_selector'] ) );
80
- }
81
- }
82
-
83
- /* display pointer when clicked on selector */
84
- if ( pointer_options['actions']['click'] ) {
85
- $( pointer_options['css_selector'] ).click( function () {
86
- displayPointer( $( this ) );
87
- });
88
- }
89
- };
90
- })
91
- })(jQuery);
1
  /**
2
  * BWS tooltip function
 
3
  */
4
  (function($) {
5
  "use strict";
6
+ $( document ).ready(
7
+ function() {
8
+ jQuery.bwsTooltip = function( pointer_options ) {
9
+ var pointer_buttons = pointer_options['buttons'];
10
+ /* extend pointer options - add close button */
11
+ pointer_options = $.extend(
12
+ pointer_options,
13
+ {
14
+ buttons: function(event, t) {
15
+ var button = '';
16
+ /* check and add dismiss-type buttons */
17
+ for ( var but in pointer_buttons ) {
18
+ if ( typeof pointer_buttons[ but ]['type'] != 'undefined' && pointer_buttons[ but ]['type'] == 'dismiss' && typeof pointer_buttons[ but ]['text'] != 'undefined' && pointer_buttons[ but ]['text'] != '' ) {
19
+ button += '<a style="margin:0px 5px 2px;" class="button-secondary">' + pointer_buttons[ but ]['text'] + '</a>';
20
+ }
21
+ }
22
+ button = jQuery( button );
23
+ button.on(
24
+ 'click.pointer',
25
+ function () {
26
+ t.element.pointer( 'close' );
27
+ }
28
+ );
29
+ return button;
30
+ },
31
+ /* add ajax dismiss functionality */
32
+ close : $.proxy(
33
+ function () {
34
+ if ( pointer_options['actions']['onload'] == true ) {
35
+ $.post( ajaxurl, this );
36
+ }
37
+ },
38
+ {
39
+ pointer: pointer_options['tooltip_id'],
40
+ action: 'dismiss-wp-pointer'
41
+ }
42
+ )
43
+ }
44
+ );
45
+ /* function to display pointer */
46
+ function displayPointer( cssSelector ) {
47
+ cssSelector.pointer( pointer_options ).pointer(
48
+ {
49
+ pointerClass: 'wp-pointer ' + pointer_options["tooltip_id"],
50
+ content: pointer_options['content'],
51
+ position: {
52
+ edge: pointer_options['position']['edge'],
53
+ align: pointer_options['position']['align'],
54
+ },
55
+ }
56
+ ).pointer( 'open' );
57
+ /* display buttons that are not type of dismiss */
58
+ for ( var but in pointer_buttons ) {
59
+ if ( typeof pointer_buttons[ but ]['type'] != 'undefined' && pointer_buttons[ but ]['type'] != 'dismiss' && typeof pointer_buttons[ but ]['text'] != 'undefined' && pointer_buttons[ but ]['text'] != '' ) {
60
+ $( '.' + pointer_options['tooltip_id'] + ' .button-secondary' ).first().before(
61
+ '<a class="button-primary" style="margin-right: 5px;" ' +
62
+ ( ( pointer_buttons[ but ]['type'] == 'link' && typeof pointer_buttons[ but ]['link'] != 'undefined' && pointer_buttons[ but ]['link'] != '') ? 'target="_blank" href="' + pointer_buttons[ but ]['link'] + '"' : '' )
63
+ + '>' + pointer_buttons[ but ]['text'] + '</a>'
64
+ );
65
+ };
66
+ }
67
+ /* adjust position of pointer */
68
+ var topPos,
69
+ leftPos,
70
+ pointerZindex;
71
+ topPos = parseInt( $( "." + pointer_options["tooltip_id"] ).css( "top" ) ) + parseInt( pointer_options['position']['pos-top'] );
72
+ leftPos = parseInt( $( "." + pointer_options["tooltip_id"] ).css( "left" ) ) + parseInt( pointer_options['position']['pos-left'] );
73
+ if ( pointer_options['position']['align'] == 'left' ) {
74
+ leftPos += cssSelector.outerWidth() / 2;
75
+ };
76
+ $( "." + pointer_options["tooltip_id"] ).css( { "top": topPos + "px", "left": leftPos + "px" } );
77
+ /* adjust z-index if need */
78
+ pointerZindex = parseInt( $( "." + pointer_options["tooltip_id"] ).css( "z-index" ) );
79
+ if ( pointerZindex != pointer_options['position']['zindex'] ) {
80
+ $( "." + pointer_options["tooltip_id"] ).css( { "z-index": pointer_options['position']['zindex'] } );
81
  }
82
  }
83
+
84
+ /* display pointer for the first time */
85
+ if ( pointer_options['actions']['onload'] ) {
86
+ if ( pointer_options['set_timeout'] > 0 ) {
87
+ var settime = parseInt( pointer_options['set_timeout'] );
88
+ setTimeout(
89
+ function() {
90
+ displayPointer( $( pointer_options['css_selector'] ) );
91
+ },
92
+ settime
93
+ );
94
+ } else {
95
+ displayPointer( $( pointer_options['css_selector'] ) );
96
+ }
97
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
 
99
+ /* display pointer when clicked on selector */
100
+ if ( pointer_options['actions']['click'] ) {
101
+ $( pointer_options['css_selector'] ).click(
102
+ function () {
103
+ displayPointer( $( this ) );
104
+ }
105
+ );
106
+ }
107
+ };
108
+ }
109
+ )
110
+ })( jQuery );
 
 
 
 
 
 
 
 
 
bws_menu/js/c_o_o_k_i_e.js CHANGED
@@ -1,96 +1,96 @@
1
- /**
2
- * Cookie plugin
3
- *
4
- * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
5
- * Dual licensed under the MIT and GPL licenses:
6
- * http://www.opensource.org/licenses/mit-license.php
7
- * http://www.gnu.org/licenses/gpl.html
8
- *
9
- */
10
-
11
- /**
12
- * Create a cookie with the given name and value and other optional parameters.
13
- *
14
- * @example $.cookie('the_cookie', 'the_value');
15
- * @desc Set the value of a cookie.
16
- * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
17
- * @desc Create a cookie with all available options.
18
- * @example $.cookie('the_cookie', 'the_value');
19
- * @desc Create a session cookie.
20
- * @example $.cookie('the_cookie', null);
21
- * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
22
- * used when the cookie was set.
23
- *
24
- * @param String name The name of the cookie.
25
- * @param String value The value of the cookie.
26
- * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
27
- * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
28
- * If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
29
- * If set to null or omitted, the cookie will be a session cookie and will not be retained
30
- * when the the browser exits.
31
- * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
32
- * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
33
- * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
34
- * require a secure protocol (like HTTPS).
35
- * @type undefined
36
- *
37
- * @name $.cookie
38
- * @cat Plugins/Cookie
39
- * @author Klaus Hartl/klaus.hartl@stilbuero.de
40
- */
41
-
42
- /**
43
- * Get the value of a cookie with the given name.
44
- *
45
- * @example $.cookie('the_cookie');
46
- * @desc Get the value of a cookie.
47
- *
48
- * @param String name The name of the cookie.
49
- * @return The value of the cookie.
50
- * @type String
51
- *
52
- * @name $.cookie
53
- * @cat Plugins/Cookie
54
- * @author Klaus Hartl/klaus.hartl@stilbuero.de
55
- */
56
- jQuery.cookie = function(name, value, options) {
57
- if (typeof value != 'undefined') { // name and value given, set cookie
58
- options = options || {};
59
- if (value === null) {
60
- value = '';
61
- options.expires = -1;
62
- }
63
- var expires = '';
64
- if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
65
- var date;
66
- if (typeof options.expires == 'number') {
67
- date = new Date();
68
- date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
69
- } else {
70
- date = options.expires;
71
- }
72
- expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
73
- }
74
- // CAUTION: Needed to parenthesize options.path and options.domain
75
- // in the following expressions, otherwise they evaluate to undefined
76
- // in the packed version for some reason...
77
- var path = options.path ? '; path=' + (options.path) : '';
78
- var domain = options.domain ? '; domain=' + (options.domain) : '';
79
- var secure = options.secure ? '; secure' : '';
80
- document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
81
- } else { // only name given, get cookie
82
- var cookieValue = null;
83
- if (document.cookie && document.cookie != '') {
84
- var cookies = document.cookie.split(';');
85
- for (var i = 0; i < cookies.length; i++) {
86
- var cookie = jQuery.trim(cookies[i]);
87
- // Does this cookie string begin with the name we want?
88
- if (cookie.substring(0, name.length + 1) == (name + '=')) {
89
- cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
90
- break;
91
- }
92
- }
93
- }
94
- return cookieValue;
95
- }
96
- };
1
+ /**
2
+ * Cookie plugin
3
+ *
4
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
5
+ * Dual licensed under the MIT and GPL licenses:
6
+ * http://www.opensource.org/licenses/mit-license.php
7
+ * http://www.gnu.org/licenses/gpl.html
8
+ */
9
+
10
+ /**
11
+ * Create a cookie with the given name and value and other optional parameters.
12
+ *
13
+ * @example $.cookie('the_cookie', 'the_value');
14
+ * @desc Set the value of a cookie.
15
+ * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
16
+ * @desc Create a cookie with all available options.
17
+ * @example $.cookie('the_cookie', 'the_value');
18
+ * @desc Create a session cookie.
19
+ * @example $.cookie('the_cookie', null);
20
+ * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
21
+ * used when the cookie was set.
22
+ *
23
+ * @param String name The name of the cookie.
24
+ * @param String value The value of the cookie.
25
+ * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
26
+ * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
27
+ * If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
28
+ * If set to null or omitted, the cookie will be a session cookie and will not be retained
29
+ * when the the browser exits.
30
+ * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
31
+ * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
32
+ * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
33
+ * require a secure protocol (like HTTPS).
34
+ * @type undefined
35
+ *
36
+ * @name $.cookie
37
+ * @cat Plugins/Cookie
38
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
39
+ */
40
+
41
+ /**
42
+ * Get the value of a cookie with the given name.
43
+ *
44
+ * @example $.cookie('the_cookie');
45
+ * @desc Get the value of a cookie.
46
+ *
47
+ * @param String name The name of the cookie.
48
+ * @return The value of the cookie.
49
+ * @type String
50
+ *
51
+ * @name $.cookie
52
+ * @cat Plugins/Cookie
53
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
54
+ */
55
+ jQuery.cookie = function(name, value, options) {
56
+ if (typeof value != 'undefined') { /* name and value given, set cookie */
57
+ options = options || {};
58
+ if (value === null) {
59
+ value = '';
60
+ options.expires = -1;
61
+ }
62
+ var expires = '';
63
+ if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
64
+ var date;
65
+ if (typeof options.expires == 'number') {
66
+ date = new Date();
67
+ date.setTime( date.getTime() + (options.expires * 24 * 60 * 60 * 1000) );
68
+ } else {
69
+ date = options.expires;
70
+ }
71
+ expires = '; expires=' + date.toUTCString(); /* use expires attribute, max-age is not supported by IE */
72
+ }
73
+ /** CAUTION: Needed to parenthesize options.path and options.domain
74
+ * in the following expressions, otherwise they evaluate to undefined
75
+ * in the packed version for some reason...
76
+ */
77
+ var path = options.path ? '; path=' + (options.path) : '';
78
+ var domain = options.domain ? '; domain=' + (options.domain) : '';
79
+ var secure = options.secure ? '; secure' : '';
80
+ document.cookie = [name, '=', encodeURIComponent( value ), expires, path, domain, secure].join( '' );
81
+ } else { /* only name given, get cookie */
82
+ var cookieValue = null;
83
+ if (document.cookie && document.cookie != '') {
84
+ var cookies = document.cookie.split( ';' );
85
+ for (var i = 0; i < cookies.length; i++) {
86
+ var cookie = jQuery.trim( cookies[i] );
87
+ /* Does this cookie string begin with the name we want? */
88
+ if (cookie.substring( 0, name.length + 1 ) == (name + '=')) {
89
+ cookieValue = decodeURIComponent( cookie.substring( name.length + 1 ) );
90
+ break;
91
+ }
92
+ }
93
+ }
94
+ return cookieValue;
95
+ }
96
+ };
bws_menu/js/general_script.js CHANGED
@@ -3,183 +3,229 @@ function bws_show_settings_notice() {
3
  (function($) {
4
  $( '.updated.fade:not(.bws_visible), .error:not(.bws_visible)' ).css( 'display', 'none' );
5
  $( '#bws_save_settings_notice' ).css( 'display', 'block' );
6
- })(jQuery);
7
  }
8
 
9
  (function($) {
10
  "use strict";
11
- $( document ).ready( function() {
12
- /**
13
- * add notice about changing on the settings page
14
- */
15
- $( '.bws_form input, .bws_form textarea, .bws_form select' ).on( "change paste select", function() {
16
- if ( $( this ).attr( 'type' ) != 'submit' && ! $( this ).hasClass( 'bws_no_bind_notice' ) ) {
17
- bws_show_settings_notice();
18
- };
19
- });
20
- $( '.bws_save_anchor' ).on( "click", function( event ) {
21
- event.preventDefault();
22
- $( '.bws_form #bws-submit-button' ).click();
23
- });
 
 
 
 
 
 
 
24
 
25
- /* custom code */
26
 
27
- if ( 'function' == typeof wp.CodeMirror || 'function' == typeof CodeMirror ) {
28
- var CodeMirrorFunc = ( typeof wp.CodeMirror != 'undefined' ) ? wp.CodeMirror : CodeMirror;
29
- if ( $( '#bws_newcontent_css' ).length > 0 ) {
30
- var editor = CodeMirrorFunc.fromTextArea( document.getElementById( 'bws_newcontent_css' ), {
31
- mode: "css",
32
- theme: "default",
33
- styleActiveLine: true,
34
- matchBrackets: true,
35
- lineNumbers: true,
36
- addModeClass: 'bws_newcontent_css'
37
- });
38
- }
39
-
40
- if ( $( '#bws_newcontent_php' ).length > 0 ) {
41
- var editor = CodeMirrorFunc.fromTextArea( document.getElementById( "bws_newcontent_php" ), {
42
- mode: 'text/x-php',
43
- styleActiveLine: true,
44
- matchBrackets: true,
45
- lineNumbers: true,
46
- });
47
- /* disable lines */
48
- editor.markText( {ch:0,line:0}, {ch:0,line:5}, { readOnly: true, className: 'bws-readonly' } );
49
- }
50
 
51
- if ( $( '#bws_newcontent_js' ).length > 0 ) {
52
- var editor = CodeMirrorFunc.fromTextArea( document.getElementById( "bws_newcontent_js" ), {
53
- mode: 'javascript',
54
- styleActiveLine: true,
55
- matchBrackets: true,
56
- lineNumbers: true,
57
- });
58
- }
59
- }
 
 
 
 
 
60
 
61
- /* banner to settings */
62
- $( '.bws_banner_to_settings_joint .bws-details' ).addClass( 'hidden' ).removeClass( 'hide-if-js' );
63
- $( '.bws_banner_to_settings_joint .bws-more-links' ).on( "click", function( event ) {
64
- event.preventDefault();
65
- if ( $( '.bws_banner_to_settings_joint .bws-less' ).hasClass( 'hidden' ) ) {
66
- $( '.bws_banner_to_settings_joint .bws-less, .bws_banner_to_settings_joint .bws-details' ).removeClass( 'hidden' );
67
- $( '.bws_banner_to_settings_joint .bws-more' ).addClass( 'hidden' );
68
- } else {
69
- $( '.bws_banner_to_settings_joint .bws-less, .bws_banner_to_settings_joint .bws-details' ).addClass( 'hidden' );
70
- $( '.bws_banner_to_settings_joint .bws-more' ).removeClass( 'hidden' );
 
 
71
  }
72
- });
73
 
74
- /* help tooltips */
75
- if ( $( '.bws_help_box' ).length > 0 ) {
76
- if ( $( 'body' ).hasClass( 'rtl' ) ) {
77
- var current_position = { my: "right top+15", at: "right bottom" };
78
- } else {
79
- var current_position = { my: "left top+15", at: "left bottom" };
80
- }
81
- $( document ).tooltip( {
82
- items: $( '.bws_help_box' ),
83
- content: function() {
84
- return $( this ).find( '.bws_hidden_help_text' ).html()
85
- },
86
- show: null, /* show immediately */
87
- tooltipClass: "bws-tooltip-content",
88
- position: current_position,
89
- open: function( event, ui ) {
90
- if ( typeof( event.originalEvent ) === 'undefined' ) {
91
- return false;
92
  }
93
- if ( $( event.originalEvent.target ).hasClass( 'bws-auto-width' ) ) {
94
- ui.tooltip.css( "max-width", "inherit" );
95
- }
96
- var $id = $( ui.tooltip ).attr( 'id' );
97
- /* close any lingering tooltips */
98
- $( 'div.ui-tooltip' ).not( '#' + $id ).remove();
99
- },
100
- close: function( event, ui ) {
101
- ui.tooltip.hover( function() {
102
- $( this ).stop( true ).fadeTo( 200, 1 );
103
- },
104
- function() {
105
- $( this ).fadeOut( '200', function() {
106
- $( this ).remove();
107
- });
108
- });
109
  }
110
- });
111
- }
112
 
113
- /**
114
- * Handle the styling of the "Settings" tab on the plugin settings page
115
- */
116
- var tabs = $( '#bws_settings_tabs_wrapper' );
117
- if ( tabs.length ) {
118
- var current_tab_field = $( 'input[name="bws_active_tab"]' ),
119
- prevent_tabs_change = false,
120
- active_tab = current_tab_field.val();
121
- if ( '' == active_tab ) {
122
- var active_tab_index = 0;
123
- } else {
124
- var active_tab_index = $( '#bws_settings_tabs li[data-slug=' + active_tab + ']' ).index();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
  }
126
 
127
- $( '.bws_tab' ).css( 'min-height', $( '#bws_settings_tabs' ).css( 'height' ) );
128
-
129
- /* jQuery tabs initialization */
130
- tabs.tabs({
131
- active: active_tab_index
132
- }).on( "tabsactivate", function( event, ui ) {
133
- if ( ! prevent_tabs_change ) {
134
- active_tab = ui.newTab.data( 'slug' );
135
- current_tab_field.val( active_tab );
136
- }
137
- prevent_tabs_change = false;
138
- });
139
- $( '.bws_trigger_tab_click' ).on( 'click', function () {
140
- $( '#bws_settings_tabs a[href="' + $( this ).attr( 'href' ) + '"]' ).click();
141
- });
142
- }
143
- /**
144
- * Hide content for options on the plugin settings page
145
- */
146
- var options = $( '.bws_option_affect' );
147
- if ( options.length ) {
148
- options.each( function() {
149
- var element = $( this );
150
- if ( element.is( ':selected' ) || element.is( ':checked' ) ) {
151
- $( element.data( 'affect-show' ) ).show();
152
- $( element.data( 'affect-hide' ) ).hide();
153
  } else {
154
- $( element.data( 'affect-show' ) ).hide();
155
- $( element.data( 'affect-hide' ) ).show();
156
  }
157
- if ( element.is( 'option' ) ) {
158
- element.parent().on( 'change', function() {
159
- var affect_hide = element.data( 'affect-hide' ),
160
- affect_show = element.data( 'affect-show' );
161
- if ( element.is( ':selected' ) ) {
162
- $( affect_show ).show();
163
- $( affect_hide ).hide();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
164
  } else {
165
- $( affect_show ).hide();
166
- $( affect_hide ).show();
167
  }
168
- });
169
- } else {
170
- element.on( 'change', function() {
171
- var affect_hide = element.data( 'affect-hide' ),
172
- affect_show = element.data( 'affect-show' );
173
- if ( element.is( ':selected' ) || element.is( ':checked' ) ) {
174
- $( affect_show ).show();
175
- $( affect_hide ).hide();
 
 
 
 
 
 
 
176
  } else {
177
- $( affect_show ).hide();
178
- $( affect_hide ).show();
 
 
 
 
 
 
 
 
 
 
 
 
179
  }
180
- });
181
- }
182
- });
183
  }
184
- });
185
- })(jQuery);
3
  (function($) {
4
  $( '.updated.fade:not(.bws_visible), .error:not(.bws_visible)' ).css( 'display', 'none' );
5
  $( '#bws_save_settings_notice' ).css( 'display', 'block' );
6
+ })( jQuery );
7
  }
8
 
9
  (function($) {
10
  "use strict";
11
+ $( document ).ready(
12
+ function() {
13
+ /**
14
+ * add notice about changing on the settings page
15
+ */
16
+ $( '.bws_form input, .bws_form textarea, .bws_form select' ).on(
17
+ "change paste select",
18
+ function() {
19
+ if ( $( this ).attr( 'type' ) != 'submit' && ! $( this ).hasClass( 'bws_no_bind_notice' ) ) {
20
+ bws_show_settings_notice();
21
+ };
22
+ }
23
+ );
24
+ $( '.bws_save_anchor' ).on(
25
+ "click",
26
+ function( event ) {
27
+ event.preventDefault();
28
+ $( '.bws_form #bws-submit-button' ).click();
29
+ }
30
+ );
31
 
32
+ /* custom code */
33
 
34
+ if ( 'function' == typeof wp.CodeMirror || 'function' == typeof CodeMirror ) {
35
+ var CodeMirrorFunc = ( typeof wp.CodeMirror != 'undefined' ) ? wp.CodeMirror : CodeMirror;
36
+ if ( $( '#bws_newcontent_css' ).length > 0 ) {
37
+ var editor = CodeMirrorFunc.fromTextArea(
38
+ document.getElementById( 'bws_newcontent_css' ),
39
+ {
40
+ mode: "css",
41
+ theme: "default",
42
+ styleActiveLine: true,
43
+ matchBrackets: true,
44
+ lineNumbers: true,
45
+ addModeClass: 'bws_newcontent_css',
46
+ readOnly: 'nocursor'
47
+ }
48
+ );
49
+ }
 
 
 
 
 
 
 
50
 
51
+ if ( $( '#bws_newcontent_php' ).length > 0 ) {
52
+ var editor = CodeMirrorFunc.fromTextArea(
53
+ document.getElementById( "bws_newcontent_php" ),
54
+ {
55
+ mode: 'text/x-php',
56
+ styleActiveLine: true,
57
+ matchBrackets: true,
58
+ lineNumbers: true,
59
+ readOnly: 'nocursor'
60
+ }
61
+ );
62
+ /* disable lines */
63
+ editor.markText( {ch:0,line:0}, {ch:0,line:5}, { readOnly: true, className: 'bws-readonly' } );
64
+ }
65
 
66
+ if ( $( '#bws_newcontent_js' ).length > 0 ) {
67
+ var editor = CodeMirrorFunc.fromTextArea(
68
+ document.getElementById( "bws_newcontent_js" ),
69
+ {
70
+ mode: 'javascript',
71
+ styleActiveLine: true,
72
+ matchBrackets: true,
73
+ lineNumbers: true,
74
+ readOnly: 'nocursor'
75
+ }
76
+ );
77
+ }
78
  }
 
79
 
80
+ /* banner to settings */
81
+ $( '.bws_banner_to_settings_joint .bws-details' ).addClass( 'hidden' ).removeClass( 'hide-if-js' );
82
+ $( '.bws_banner_to_settings_joint .bws-more-links' ).on(
83
+ "click",
84
+ function( event ) {
85
+ event.preventDefault();
86
+ if ( $( '.bws_banner_to_settings_joint .bws-less' ).hasClass( 'hidden' ) ) {
87
+ $( '.bws_banner_to_settings_joint .bws-less, .bws_banner_to_settings_joint .bws-details' ).removeClass( 'hidden' );
88
+ $( '.bws_banner_to_settings_joint .bws-more' ).addClass( 'hidden' );
89
+ } else {
90
+ $( '.bws_banner_to_settings_joint .bws-less, .bws_banner_to_settings_joint .bws-details' ).addClass( 'hidden' );
91
+ $( '.bws_banner_to_settings_joint .bws-more' ).removeClass( 'hidden' );
 
 
 
 
 
 
92
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
  }
94
+ );
 
95
 
96
+ /* help tooltips */
97
+ if ( $( '.bws_help_box' ).length > 0 ) {
98
+ if ( $( 'body' ).hasClass( 'rtl' ) ) {
99
+ var current_position = { my: "right top+15", at: "right bottom" };
100
+ } else {
101
+ var current_position = { my: "left top+15", at: "left bottom" };
102
+ }
103
+ $( document ).tooltip(
104
+ {
105
+ items: $( '.bws_help_box' ),
106
+ content: function() {
107
+ return $( this ).find( '.bws_hidden_help_text' ).html()
108
+ },
109
+ show: null, /* show immediately */
110
+ tooltipClass: "bws-tooltip-content",
111
+ position: current_position,
112
+ open: function( event, ui ) {
113
+ if ( typeof( event.originalEvent ) === 'undefined' ) {
114
+ return false;
115
+ }
116
+ if ( $( event.originalEvent.target ).hasClass( 'bws-auto-width' ) ) {
117
+ ui.tooltip.css( "max-width", "inherit" );
118
+ }
119
+ var $id = $( ui.tooltip ).attr( 'id' );
120
+ /* close any lingering tooltips */
121
+ $( 'div.ui-tooltip' ).not( '#' + $id ).remove();
122
+ },
123
+ close: function( event, ui ) {
124
+ ui.tooltip.hover(
125
+ function() {
126
+ $( this ).stop( true ).fadeTo( 200, 1 );
127
+ },
128
+ function() {
129
+ $( this ).fadeOut(
130
+ '200',
131
+ function() {
132
+ $( this ).remove();
133
+ }
134
+ );
135
+ }
136
+ );
137
+ }
138
+ }
139
+ );
140
  }
141
 
142
+ /**
143
+ * Handle the styling of the "Settings" tab on the plugin settings page
144
+ */
145
+ var tabs = $( '#bws_settings_tabs_wrapper' );
146
+ if ( tabs.length ) {
147
+ var current_tab_field = $( 'input[name="bws_active_tab"]' ),
148
+ prevent_tabs_change = false,
149
+ active_tab = current_tab_field.val();
150
+ if ( '' == active_tab ) {
151
+ var active_tab_index = 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
  } else {
153
+ var active_tab_index = $( '#bws_settings_tabs li[data-slug=' + active_tab + ']' ).index();
 
154
  }
155
+
156
+ $( '.bws_tab' ).css( 'min-height', $( '#bws_settings_tabs' ).css( 'height' ) );
157
+
158
+ /* jQuery tabs initialization */
159
+ tabs.tabs(
160
+ {
161
+ active: active_tab_index
162
+ }
163
+ ).on(
164
+ "tabsactivate",
165
+ function( event, ui ) {
166
+ if ( ! prevent_tabs_change ) {
167
+ active_tab = ui.newTab.data( 'slug' );
168
+ current_tab_field.val( active_tab );
169
+ }
170
+ prevent_tabs_change = false;
171
+ }
172
+ );
173
+ $( '.bws_trigger_tab_click' ).on(
174
+ 'click',
175
+ function () {
176
+ $( '#bws_settings_tabs a[href="' + $( this ).attr( 'href' ) + '"]' ).click();
177
+ }
178
+ );
179
+ }
180
+ /**
181
+ * Hide content for options on the plugin settings page
182
+ */
183
+ var options = $( '.bws_option_affect' );
184
+ if ( options.length ) {
185
+ options.each(
186
+ function() {
187
+ var element = $( this );
188
+ if ( element.is( ':selected' ) || element.is( ':checked' ) ) {
189
+ $( element.data( 'affect-show' ) ).show();
190
+ $( element.data( 'affect-hide' ) ).hide();
191
  } else {
192
+ $( element.data( 'affect-show' ) ).hide();
193
+ $( element.data( 'affect-hide' ) ).show();
194
  }
195
+ if ( element.is( 'option' ) ) {
196
+ element.parent().on(
197
+ 'change',
198
+ function() {
199
+ var affect_hide = element.data( 'affect-hide' ),
200
+ affect_show = element.data( 'affect-show' );
201
+ if ( element.is( ':selected' ) ) {
202
+ $( affect_show ).show();
203
+ $( affect_hide ).hide();
204
+ } else {
205
+ $( affect_show ).hide();
206
+ $( affect_hide ).show();
207
+ }
208
+ }
209
+ );
210
  } else {
211
+ element.on(
212
+ 'change',
213
+ function() {
214
+ var affect_hide = element.data( 'affect-hide' ),
215
+ affect_show = element.data( 'affect-show' );
216
+ if ( element.is( ':selected' ) || element.is( ':checked' ) ) {
217
+ $( affect_show ).show();
218
+ $( affect_hide ).hide();
219
+ } else {
220
+ $( affect_show ).hide();
221
+ $( affect_hide ).show();
222
+ }
223
+ }
224
+ );
225
  }
226
+ }
227
+ );
228
+ }
229
  }
230
+ );
231
+ })( jQuery );
bws_menu/js/shortcode-button.js CHANGED
@@ -1,118 +1,132 @@
1
  (function($) {
2
- "use strict";
3
- if ( typeof bws_shortcode_button != 'undefined' ) {
4
- var win;
5
 
6
- tinymce.create( 'tinymce.plugins.BWSButton', {
7
- /**
8
- * Initializes the plugin, this will be executed after the plugin has been created.
9
- * This call is done before the editor instance has finished it's initialization so use the onInit event
10
- * of the editor instance to intercept that event.
11
- *
12
- * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
13
- * @param {string} url Absolute URL to where the plugin is located.
14
- */
15
- init : function( ed, url ) {
16
- ed.addButton( 'add_bws_shortcode', {
17
- title : bws_shortcode_button.title,
18
- classes: 'bws_shortcode_button widget btn',
19
- icon: 'icon bwsicons bwsicons-shortcode',
20
- text: bws_shortcode_button.label,
21
- onclick: function() {
 
 
 
 
22
 
23
- win = ed.windowManager.open( {
24
- width: 400,
25
- height: 400,
26
- inline: true,
27
- title: bws_shortcode_button.title,
28
- body: {
29
- id : 'bws-shortcode-content',
30
- type: 'container',
31
- classes: 'bws-shortcode',
32
- html: $( '#bws_shortcode_popup' ).html()
33
- },
34
- buttons: [{
35
- text: 'Insert',
36
- classes: 'button-primary primary bws_shortcode_insert',
37
- onclick: function( e ) {
38
- var shortcode = $( '.mce-container-body #bws_shortcode_display' ).text();
39
- if ( '' != shortcode ) {
40
- /* insert shortcode to tinymce */
41
- ed.insertContent( shortcode );
42
- }
43
- ed.windowManager.close();
44
- },
45
- },
46
- {
47
- text: 'Cancel',
48
- onclick: 'close'
49
- }],
50
-
51
- });
52
- var current_object = '.mce-container-body';
53
- var select_count = $( current_object + ' select#bws_shortcode_select option').length;
54
- if ( 1 == select_count ) {
55
- $( current_object + ' #bws_shortcode_select_plugin' ).hide();
56
- }
57
 
58
- var plugin = $( current_object + ' #bws_shortcode_select option:selected' ).val();
59
- $( current_object + ' #bws_shortcode_content > div' ).hide();
60
- $( current_object + ' #bws_shortcode_content > #' + plugin ).show();
 
 
 
 
61
 
62
- if ( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).length > 0 ) {
63
- $( current_object + ' #bws_shortcode_display' ).text( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).val() );
64
- }
65
 
66
- $( current_object + ' #bws_shortcode_select' ).on( 'change',function() {
67
- var plugin = $( current_object + ' #bws_shortcode_select option:selected' ).val();
68
- $( current_object + ' #bws_shortcode_content > div' ).hide();
69
- $( current_object + ' #bws_shortcode_content > #' + plugin ).show();
70
- if ( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).length > 0 ) {
71
- $( current_object + ' #bws_shortcode_display' ).text( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).val() );
72
- } else {
73
- $( current_object + ' #bws_shortcode_display' ).text( '' );
74
- }
75
- });
76
 
77
- $.each( bws_shortcode_button.function_name, function( index, value ) {
78
- eval( value + '();' );
79
- });
80
- }
81
- });
82
- },
83
-
84
- /**
85
- * Creates control instances based in the incomming name. This method is normally not
86
- * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons
87
- * but you sometimes need to create more complex controls like listboxes, split buttons etc then this
88
- * method can be used to create those.
89
- *
90
- * @param {String} n Name of the control to create.
91
- * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.
92
- * @return {tinymce.ui.Control} New control instance or null if no control was created.
93
- */
94
- createControl : function(n, cm) {
95
- return null;
96
- },
97
-
98
- /**
99
- * Returns information about the plugin as a name/value array.
100
- * The current keys are longname, author, authorurl, infourl and version.
101
- *
102
- * @return {Object} Name/value array containing information about the plugin.
103
- */
104
- getInfo : function() {
105
- return {
106
- longname : 'BWS Shortcode Buttons',
107
- author : 'BWS',
108
- authorurl : 'https://bestwebsoft.com',
109
- infourl : '',
110
- version : "0.1"
111
- };
112
- }
113
- });
114
-
115
- /* Register plugin */
116
- tinymce.PluginManager.add( 'add_bws_shortcode', tinymce.plugins.BWSButton );
117
- }
118
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  (function($) {
2
+ "use strict";
3
+ if ( typeof bws_shortcode_button != 'undefined' ) {
4
+ var win;
5
 
6
+ tinymce.create(
7
+ 'tinymce.plugins.BWSButton',
8
+ {
9
+ /**
10
+ * Initializes the plugin, this will be executed after the plugin has been created.
11
+ * This call is done before the editor instance has finished it's initialization so use the onInit event
12
+ * of the editor instance to intercept that event.
13
+ *
14
+ * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
15
+ * @param {string} url Absolute URL to where the plugin is located.
16
+ */
17
+ init : function( ed, url ) {
18
+ ed.addButton(
19
+ 'add_bws_shortcode',
20
+ {
21
+ title : bws_shortcode_button.title,
22
+ classes: 'bws_shortcode_button widget btn',
23
+ icon: 'icon bwsicons bwsicons-shortcode',
24
+ text: bws_shortcode_button.label,
25
+ onclick: function() {
26
 
27
+ win = ed.windowManager.open(
28
+ {
29
+ width: 400,
30
+ height: 400,
31
+ inline: true,
32
+ title: bws_shortcode_button.title,
33
+ body: {
34
+ id : 'bws-shortcode-content',
35
+ type: 'container',
36
+ classes: 'bws-shortcode',
37
+ html: $( '#bws_shortcode_popup' ).html()
38
+ },
39
+ buttons: [{
40
+ text: 'Insert',
41
+ classes: 'button-primary primary bws_shortcode_insert',
42
+ onclick: function( e ) {
43
+ var shortcode = $( '.mce-container-body #bws_shortcode_display' ).text();
44
+ if ( '' != shortcode ) {
45
+ /* insert shortcode to tinymce */
46
+ ed.insertContent( shortcode );
47
+ }
48
+ ed.windowManager.close();
49
+ },
50
+ },
51
+ {
52
+ text: 'Cancel',
53
+ onclick: 'close'
54
+ }],
 
 
 
 
 
 
55
 
56
+ }
57
+ );
58
+ var current_object = '.mce-container-body';
59
+ var select_count = $( current_object + ' select#bws_shortcode_select option' ).length;
60
+ if ( 1 == select_count ) {
61
+ $( current_object + ' #bws_shortcode_select_plugin' ).hide();
62
+ }
63
 
64
+ var plugin = $( current_object + ' #bws_shortcode_select option:selected' ).val();
65
+ $( current_object + ' #bws_shortcode_content > div' ).hide();
66
+ $( current_object + ' #bws_shortcode_content > #' + plugin ).show();
67
 
68
+ if ( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).length > 0 ) {
69
+ $( current_object + ' #bws_shortcode_display' ).text( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).val() );
70
+ }
 
 
 
 
 
 
 
71
 
72
+ $( current_object + ' #bws_shortcode_select' ).on(
73
+ 'change',
74
+ function() {
75
+ var plugin = $( current_object + ' #bws_shortcode_select option:selected' ).val();
76
+ $( current_object + ' #bws_shortcode_content > div' ).hide();
77
+ $( current_object + ' #bws_shortcode_content > #' + plugin ).show();
78
+ if ( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).length > 0 ) {
79
+ $( current_object + ' #bws_shortcode_display' ).text( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).val() );
80
+ } else {
81
+ $( current_object + ' #bws_shortcode_display' ).text( '' );
82
+ }
83
+ }
84
+ );
85
+
86
+ $.each(
87
+ bws_shortcode_button.function_name,
88
+ function( index, value ) {
89
+ eval( value + '();' );
90
+ }
91
+ );
92
+ }
93
+ }
94
+ );
95
+ },
96
+
97
+ /**
98
+ * Creates control instances based in the incomming name. This method is normally not
99
+ * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons
100
+ * but you sometimes need to create more complex controls like listboxes, split buttons etc then this
101
+ * method can be used to create those.
102
+ *
103
+ * @param {String} n Name of the control to create.
104
+ * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.
105
+ * @return {tinymce.ui.Control} New control instance or null if no control was created.
106
+ */
107
+ createControl : function(n, cm) {
108
+ return null;
109
+ },
110
+
111
+ /**
112
+ * Returns information about the plugin as a name/value array.
113
+ * The current keys are longname, author, authorurl, infourl and version.
114
+ *
115
+ * @return {Object} Name/value array containing information about the plugin.
116
+ */
117
+ getInfo : function() {
118
+ return {
119
+ longname : 'BWS Shortcode Buttons',
120
+ author : 'BWS',
121
+ authorurl : 'https://bestwebsoft.com',
122
+ infourl : '',
123
+ version : "0.1"
124
+ };
125
+ }
126
+ }
127
+ );
128
+
129
+ /* Register plugin */
130
+ tinymce.PluginManager.add( 'add_bws_shortcode', tinymce.plugins.BWSButton );
131
+ }
132
+ })( jQuery );
bws_menu/languages/bestwebsoft-ru_RU.mo CHANGED
Binary file
bws_menu/languages/bestwebsoft-ru_RU.po CHANGED
@@ -2,28 +2,28 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: bestwebsoft\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2021-02-15 10:55+0200\n"
6
- "PO-Revision-Date: 2021-02-15 10:55+0200\n"
7
  "Last-Translator: bestwebsoft.com <plugins@bestwebsoft.com>\n"
8
  "Language-Team: bestwebsoft.com <https://support.bestwebsoft.com>\n"
9
  "Language: ru\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
 
 
13
  "X-Poedit-KeywordsList: __;_e;esc_attr_e;printf;esc_html__;esc_html_e\n"
14
  "X-Poedit-Basepath: ..\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
- "X-Generator: Poedit 2.4.2\n"
17
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
18
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
19
  "X-Poedit-SearchPath-0: .\n"
20
  "X-Poedit-SearchPathExcluded-0: js\n"
21
 
22
- #: bws_functions.php:73 bws_functions.php:239
23
  msgid "requires"
24
  msgstr "требует"
25
 
26
- #: bws_functions.php:75
27
  msgid ""
28
  "or higher, that is why it has been deactivated! Please upgrade WordPress and "
29
  "try again."
@@ -31,48 +31,48 @@ msgstr ""
31
  "или выше, поэтому он был деактивирован! Пожалуйста, обновите WordPress и "
32
  "попробуйте еще раз."
33
 
34
- #: bws_functions.php:76
35
  msgid "Back to the WordPress"
36
  msgstr "Вернуться к WordPress на"
37
 
38
- #: bws_functions.php:78
39
  msgid "Plugins page"
40
  msgstr "Страницу плагинов"
41
 
42
- #: bws_functions.php:92
43
  msgid "Like the plugin?"
44
  msgstr "Понравился плагин?"
45
 
46
- #: bws_functions.php:93
47
  #, php-format
48
  msgid "%s reviews"
49
  msgstr "%s отзывы"
50
 
51
- #: bws_functions.php:94
52
  msgid "Rate it"
53
  msgstr "Оценить"
54
 
55
- #: bws_functions.php:103
56
  msgid "Need help?"
57
  msgstr "Нужна помощь?"
58
 
59
- #: bws_functions.php:104 bws_functions.php:949 class-bws-settings.php:1082
60
  msgid "Visit Help Center"
61
  msgstr "Перейти в Help Center"
62
 
63
- #: bws_functions.php:107
64
  msgid "Want to support the plugin?"
65
  msgstr "Хотите поддержать плагин?"
66
 
67
- #: bws_functions.php:108 bws_menu.php:529
68
  msgid "Donate"
69
  msgstr "Пожертвовать"
70
 
71
- #: bws_functions.php:128
72
  msgid "WARNING: Illegal use notification"
73
  msgstr "ВНИМАНИЕ: уведомление о незаконном использовании"
74
 
75
- #: bws_functions.php:128
76
  msgid ""
77
  "You can use one license of the Pro plugin for one domain only. Please check "
78
  "and edit your license or domain if necessary using your personal Client "
@@ -84,12 +84,12 @@ msgstr ""
84
  "используя Ваш личный Client Area. Мы настоятельно рекомендуем вам решить "
85
  "проблему в течение 24 часов, в противном случае плагин будет деактивирован."
86
 
87
- #: bws_functions.php:128 bws_functions.php:208 bws_menu.php:600
88
- #: class-bws-settings.php:179
89
  msgid "Learn More"
90
  msgstr "Подробнее"
91
 
92
- #: bws_functions.php:145
93
  msgid ""
94
  "Notice: Your Pro Trial license has expired. To continue using the plugin, "
95
  "you should buy a Pro license"
@@ -97,7 +97,7 @@ msgstr ""
97
  "Внимание: Срок действия Pro Trial версии истек. Чтобы продолжить "
98
  "пользоваться плагином, пожалуйста, приобретите Pro лицензию"
99
 
100
- #: bws_functions.php:147
101
  msgid ""
102
  "Your license has expired. To continue getting top-priority support and "
103
  "plugin updates, you should extend it."
@@ -106,54 +106,54 @@ msgstr ""
106
  "плагин в дальнейшем и иметь приоритетную тех.поддержку, то вам нужно "
107
  "продлить лицензию."
108
 
109
- #: bws_functions.php:147 bws_functions.php:226
110
  msgid "Learn more"
111
  msgstr "Подробнее"
112
 
113
- #: bws_functions.php:165
114
  #, php-format
115
  msgid "Notice: You are using the Pro Trial license of %s plugin."
116
  msgstr "Внимание: Вы используете Pro Trial версию плагина %s."
117
 
118
- #: bws_functions.php:167
119
  msgid "Notice: You are using the Pro Trial license of plugin."
120
  msgstr "Внимание: Вы используете Pro Trial версию плагина."
121
 
122
- #: bws_functions.php:170
123
  msgid "The Pro Trial license will expire on"
124
  msgstr "Ваша лицензия Pro Trial версии плагина истекает"
125
 
126
- #: bws_functions.php:199 bws_functions.php:222 bws_functions.php:266
127
- #: bws_functions.php:276 bws_functions.php:475
128
  msgid "Close notice"
129
  msgstr "Закрыть"
130
 
131
- #: bws_functions.php:204
132
  msgid "It’s time to upgrade your"
133
  msgstr "Настало время обновить Ваш"
134
 
135
- #: bws_functions.php:204
136
  msgid "to"
137
  msgstr "до"
138
 
139
- #: bws_functions.php:204
140
  msgid "version!"
141
  msgstr "версии!"
142
 
143
- #: bws_functions.php:205
144
  msgid "Extend standard plugin functionality with new great options."
145
  msgstr "Расширяет возможности стандартного функционала плагина."
146
 
147
- #: bws_functions.php:226
148
  #, php-format
149
  msgid ""
150
- "Your license key for %s expires on %s and you won't be granted TOP-PRIORITY "
151
- "SUPPORT or UPDATES."
152
  msgstr ""
153
- "Ваш лицензионный ключ для %s истекает %s и вы не будете получать "
154
  "приоритетную тех.поддержку или обновления."
155
 
156
- #: bws_functions.php:241
157
  msgid ""
158
  "or higher! We do not guarantee that our plugin will work correctly. Please "
159
  "upgrade to WordPress latest version."
@@ -161,63 +161,63 @@ msgstr ""
161
  "или выше! Мы не гарантируем, что наш плагин будет работать корректно. "
162
  "Пожалуйста, обновите WordPress до последней версии."
163
 
164
- #: bws_functions.php:237
165
  #, php-format
166
  msgid "<strong>%s</strong> %s <strong>WordPress %s</strong> %s"
167
- msgstr ""
168
 
169
- #: bws_functions.php:256
170
  #, php-format
171
  msgid "Thank you for installing %s plugin!"
172
  msgstr "Спасибо, что установили %s плагин!"
173
 
174
- #: bws_functions.php:258
175
  msgid "Let's get started"
176
  msgstr "Давайте начнем"
177
 
178
- #: bws_functions.php:259 bws_functions.php:292 bws_menu.php:533
179
- #: bws_menu.php:535
180
  msgid "Settings"
181
  msgstr "Настройки"
182
 
183
- #: bws_functions.php:261 bws_menu.php:327 class-bws-settings.php:809
184
- #: class-bws-settings.php:1084 class-bws-settings.php:1094 deprecated.php:234
185
  msgid "or"
186
  msgstr "или"
187
 
188
- #: bws_functions.php:262 bws_functions.php:294
189
  msgid "Add New"
190
  msgstr "Добавить"
191
 
192
- #: bws_functions.php:281
193
  msgid "Thank you for installing plugins by BestWebSoft!"
194
  msgstr "Спасибо за установку плагинов компании BestWebSoft!"
195
 
196
- #: bws_functions.php:283
197
  msgid "More Details"
198
  msgstr "Детали"
199
 
200
- #: bws_functions.php:284
201
  msgid "Less Details"
202
  msgstr "Скрыть детали"
203
 
204
- #: bws_functions.php:312
205
  msgid "Deprecated function(-s) is used on the site here:"
206
  msgstr "Устаревшие функции используются на сайте здесь:"
207
 
208
- #: bws_functions.php:326
209
  msgid ""
210
  "This function(-s) will be removed over time. Please update the product(-s)."
211
  msgstr ""
212
  "Эти функции будет удалены через некоторое время. Пожалуйста, обновите "
213
  "продукт."
214
 
215
- #: bws_functions.php:470
216
  #, php-format
217
  msgid "Thank you for choosing %s plugin!"
218
  msgstr "Спасибо за выбор плагина %s!"
219
 
220
- #: bws_functions.php:471
221
  msgid ""
222
  "If you have a feature, suggestion or idea you'd like to see in the plugin, "
223
  "we'd love to hear about it!"
@@ -226,24 +226,53 @@ msgstr ""
226
  "функционала плагина, пожалуйста, присылайте их нам! Мы вседа открыты для "
227
  "новых идей!"
228
 
229
- #: bws_functions.php:472
230
  msgid "Suggest a Feature"
231
  msgstr "Предложить функционал"
232
 
233
- #: bws_functions.php:488 class-bws-settings.php:580 class-bws-settings.php:583
234
- #: class-bws-settings.php:635 class-bws-settings.php:638
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
235
  msgid "Notice"
236
  msgstr "Внимание"
237
 
238
- #: bws_functions.php:488
239
  msgid "The plugin's settings have been changed."
240
  msgstr "Настройки плагина были изменены"
241
 
242
- #: bws_functions.php:489 class-bws-settings.php:222 class-bws-settings.php:242
243
  msgid "Save Changes"
244
  msgstr "Сохранить изменения"
245
 
246
- #: bws_functions.php:503
247
  msgid ""
248
  "You can always look at premium options by checking the \"Pro Options\" in "
249
  "the \"Misc\" tab."
@@ -251,70 +280,70 @@ msgstr ""
251
  "Вы всегда можете просмотреть премиум опции нажав на кнопку \"Pro опции\" на "
252
  "вкладке \"Разное\"."
253
 
254
- #: bws_functions.php:679
255
  msgid "Add shortcode"
256
  msgstr "Добавить шорткод"
257
 
258
- #: bws_functions.php:679
259
  msgid "Add BestWebSoft plugins' shortcodes using this button."
260
  msgstr "Добавьте шорткоды BestWebSoft плагинов с помощью этой кнопки."
261
 
262
- #: bws_functions.php:765
263
  msgid "Close"
264
  msgstr "Закрыть"
265
 
266
- #: bws_functions.php:851
267
  msgid "Are you sure you want to restore default settings?"
268
  msgstr ""
269
  "Вы уверены что хотите восстановить все настройки плагина к настройкам по "
270
  "умолчанию?"
271
 
272
- #: bws_functions.php:854
273
  msgid "Yes, restore all settings"
274
  msgstr "Да, восстановить все настройки"
275
 
276
- #: bws_functions.php:855
277
  msgid "No, go back to the settings page"
278
  msgstr "Нет, вернуться на страницу настроек"
279
 
280
- #: bws_functions.php:897
281
  msgid "Plugin"
282
  msgstr "Плагин"
283
 
284
- #: bws_functions.php:906
285
  msgid "Shortcode settings"
286
  msgstr "Настройки шорткода"
287
 
288
- #: bws_functions.php:911
289
  msgid "The shortcode will be inserted"
290
  msgstr "Будет вставлен шорткод"
291
 
292
- #: bws_functions.php:954
293
  msgid "FAQ"
294
  msgstr "FAQ"
295
 
296
- #: bws_functions.php:960
297
  msgid "For more information:"
298
  msgstr "Для дополнительной информации:"
299
 
300
- #: bws_functions.php:961 bws_menu.php:401 class-bws-settings.php:776
301
  msgid "Documentation"
302
  msgstr "Документация"
303
 
304
- #: bws_functions.php:962 bws_menu.php:403 class-bws-settings.php:778
305
  msgid "Video Instructions"
306
  msgstr "Видео инструкции"
307
 
308
- #: bws_functions.php:963
309
  msgid "Submit a Request"
310
  msgstr "Отправить запрос"
311
 
312
- #: bws_menu.php:101 class-bws-settings.php:860
313
  msgid "Wrong license key"
314
  msgstr "Неправильный лицензионный ключ"
315
 
316
- #: bws_menu.php:122 class-bws-settings.php:887 class-bws-settings.php:966
317
- #: class-bws-settings.php:1004
318
  msgid ""
319
  "Something went wrong. Please try again later. If the error appears again, "
320
  "please contact us"
@@ -322,31 +351,31 @@ msgstr ""
322
  "Что-то пошло не так. Повторите попытку позже. Если ошибка появится снова, "
323
  "пожалуйста, свяжитесь с нами"
324
 
325
- #: bws_menu.php:122 class-bws-settings.php:887 class-bws-settings.php:966
326
- #: class-bws-settings.php:1004
327
  msgid "We are sorry for inconvenience."
328
  msgstr "Приносим извинения за неудобства."
329
 
330
- #: bws_menu.php:129 class-bws-settings.php:893 class-bws-settings.php:1010
331
  msgid "Wrong license key."
332
  msgstr "Неправильный лицензионный ключ."
333
 
334
- #: bws_menu.php:131
335
  msgid ""
336
  "This license key is bound to another site. Change it via personal Client "
337
  "Area."
338
  msgstr ""
339
  "Этот лицензионный ключ привязан к другому сайту. Измените это в Client Area."
340
 
341
- #: bws_menu.php:131
342
  msgid "Log in"
343
  msgstr "Авторизоваться"
344
 
345
- #: bws_menu.php:133 bws_menu.php:333 deprecated.php:157
346
  msgid "Unfortunately, you have exceeded the number of available tries per day."
347
  msgstr "К сожалению, вы превысили количество доступных попыток."
348
 
349
- #: bws_menu.php:135
350
  #, php-format
351
  msgid ""
352
  "Unfortunately, Your license has expired. To continue getting top-priority "
@@ -356,7 +385,7 @@ msgstr ""
356
  "обновлений и приоритетной тех.поддержки, вам необходимо продлить лицензию в "
357
  "вашей %s"
358
 
359
- #: bws_menu.php:137 class-bws-settings.php:1018
360
  msgid ""
361
  "Unfortunately, the Pro licence was already installed to this domain. The Pro "
362
  "Trial license can be installed only once."
@@ -364,19 +393,19 @@ msgstr ""
364
  "К сожалению, Pro лицензия уже была установлена на этом доменен. Pro Trial "
365
  "лицензия может быть установлена только один раз."
366
 
367
- #: bws_menu.php:143 class-bws-settings.php:908
368
  msgid "The license key is valid."
369
  msgstr "Лицензионный ключ действителен."
370
 
371
- #: bws_menu.php:145 class-bws-settings.php:912
372
  msgid "Your license will expire on"
373
  msgstr "Ваша лицензия истечет"
374
 
375
- #: bws_menu.php:147
376
  msgid "Congratulations! Pro Membership license is activated successfully."
377
  msgstr "Поздравляем! Pro Membership лицензия успешно активирована."
378
 
379
- #: bws_menu.php:154 class-bws-settings.php:1028
380
  msgid ""
381
  "Something went wrong. Try again later or upload the plugin manually. We are "
382
  "sorry for inconvenience."
@@ -384,214 +413,214 @@ msgstr ""
384
  "Что-то пошло не так. Повторите попытку позже или загрузите плагин вручную. "
385
  "Приносим извинения за неудобства."
386
 
387
- #: bws_menu.php:164
388
  msgid "Please enter your license key."
389
  msgstr "Пожалуйста, введите Ваш лицензионный ключ."
390
 
391
- #: bws_menu.php:175
392
  msgid "Not set"
393
  msgstr "Не задан"
394
 
395
- #: bws_menu.php:177
396
  msgid "On"
397
  msgstr "Вкл"
398
 
399
- #: bws_menu.php:177
400
  msgid "Off"
401
  msgstr "Выкл"
402
 
403
- #: bws_menu.php:178 bws_menu.php:179 bws_menu.php:180 bws_menu.php:181
404
- #: bws_menu.php:182 bws_menu.php:183 bws_menu.php:192
405
  msgid "N/A"
406
  msgstr "Неизвестно"
407
 
408
- #: bws_menu.php:183
409
  msgid "Mb"
410
  msgstr "Мб"
411
 
412
- #: bws_menu.php:184 bws_menu.php:185 bws_menu.php:186 bws_menu.php:190
413
  msgid "Yes"
414
  msgstr "Да"
415
 
416
- #: bws_menu.php:184 bws_menu.php:185 bws_menu.php:186 bws_menu.php:190
417
  msgid "No"
418
  msgstr "Нет"
419
 
420
- #: bws_menu.php:197
421
  msgid "WordPress Environment"
422
  msgstr "WordPress Системная среда"
423
 
424
- #: bws_menu.php:199
425
  msgid "Home URL"
426
  msgstr "Основной адрес сайта"
427
 
428
- #: bws_menu.php:200
429
  msgid "Website URL"
430
  msgstr "Адрес сайта"
431
 
432
- #: bws_menu.php:201
433
  msgid "WP Version"
434
  msgstr "Версия WordPress"
435
 
436
- #: bws_menu.php:202
437
  msgid "WP Multisite"
438
  msgstr "Мультисайт"
439
 
440
- #: bws_menu.php:203
441
  msgid "WP Memory Limit"
442
  msgstr "Лимит памяти WordPress"
443
 
444
- #: bws_menu.php:204
445
  msgid "Active Theme"
446
  msgstr "Текущая тема"
447
 
448
- #: bws_menu.php:204 bws_menu.php:249 bws_menu.php:252
449
  #, php-format
450
  msgid "by %s"
451
  msgstr "%s"
452
 
453
- #: bws_menu.php:208
454
  msgid "Server Environment"
455
  msgstr "Системная среда сервера"
456
 
457
- #: bws_menu.php:210
458
  msgid "Operating System"
459
  msgstr "Операционная система"
460
 
461
- #: bws_menu.php:211
462
  msgid "Server"
463
  msgstr "Тип сервера"
464
 
465
- #: bws_menu.php:212
466
  msgid "PHP Version"
467
  msgstr "Версия PHP"
468
 
469
- #: bws_menu.php:213
470
  msgid "PHP Allow URL fopen"
471
  msgstr "PHP Allow URL fopen"
472
 
473
- #: bws_menu.php:214
474
  msgid "PHP Memory Limit"
475
  msgstr "Лимит памяти"
476
 
477
- #: bws_menu.php:215
478
  msgid "Memory Usage"
479
  msgstr "Использование памяти"
480
 
481
- #: bws_menu.php:216
482
  msgid "PHP Max Upload Size"
483
  msgstr "Макс. размер загружаемого файла"
484
 
485
- #: bws_menu.php:217
486
  msgid "PHP Max Post Size"
487
  msgstr "Макс. размер записи"
488
 
489
- #: bws_menu.php:218
490
  msgid "PHP Max Script Execute Time"
491
  msgstr "Макс. время выполнения сценария"
492
 
493
- #: bws_menu.php:219
494
  msgid "PHP Exif support"
495
  msgstr "Поддержка PHP Exif"
496
 
497
- #: bws_menu.php:220
498
  msgid "PHP IPTC support"
499
  msgstr "Поддержка PHP IPTC"
500
 
501
- #: bws_menu.php:221
502
  msgid "PHP XML support"
503
  msgstr "Поддержка PHP XML"
504
 
505
- #: bws_menu.php:227
506
  msgid "Database"
507
  msgstr "База данных"
508
 
509
- #: bws_menu.php:229
510
  msgid "WP DB version"
511
  msgstr "Версия базы данных WordPress"
512
 
513
- #: bws_menu.php:230
514
  msgid "MySQL version"
515
  msgstr "Версия MYSQL"
516
 
517
- #: bws_menu.php:231
518
  msgid "SQL Mode"
519
  msgstr "Режим SQL"
520
 
521
- #: bws_menu.php:235
522
  msgid "Active Plugins"
523
  msgstr "Активированные плагины"
524
 
525
- #: bws_menu.php:240
526
  msgid "Inactive Plugins"
527
  msgstr "Неактивированные плагины"
528
 
529
- #: bws_menu.php:261
530
  msgid "Please enter a valid email address."
531
  msgstr "Пожалуйста, введите валидный емайл."
532
 
533
- #: bws_menu.php:263
534
  #, php-format
535
  msgid "Email with system info is sent to %s."
536
  msgstr "Емейл с системной информацией отправлен на %s."
537
 
538
- #: bws_menu.php:267
539
  msgid "Thank you for contacting us."
540
  msgstr "Спасибо что связались с нами."
541
 
542
- #: bws_menu.php:290
543
  msgid "Sorry, email message could not be delivered."
544
  msgstr "Извините, ваш емейл не может быть отправлен."
545
 
546
- #: bws_menu.php:306 bws_menu.php:310 bws_menu.php:359 deprecated.php:26
547
  msgid "Plugins"
548
  msgstr "Плагины"
549
 
550
- #: bws_menu.php:307 bws_menu.php:311 bws_menu.php:587 deprecated.php:27
551
  msgid "Themes"
552
  msgstr "Темы"
553
 
554
- #: bws_menu.php:308 bws_menu.php:312 bws_menu.php:617
555
  msgid "System status"
556
  msgstr "Системная информация"
557
 
558
- #: bws_menu.php:316
559
  msgid "Support"
560
  msgstr "Тех. поддержка"
561
 
562
- #: bws_menu.php:317
563
  msgid "Manage purchased licenses & subscriptions"
564
  msgstr "Управление купленными лицензиями и подписками"
565
 
566
- #: bws_menu.php:325
567
  #, php-format
568
  msgid "Get Access to %s+ Premium Plugins"
569
  msgstr "Получить доступ к %s+ премиум плагинам"
570
 
571
- #: bws_menu.php:327
572
  msgid "Subscribe to Pro Membership"
573
  msgstr "Подписаться на Pro Membership"
574
 
575
- #: bws_menu.php:335 bws_menu.php:346 class-bws-settings.php:822
576
- #: deprecated.php:123
577
  msgid "Check license key"
578
  msgstr "Проверка лицензионного ключа"
579
 
580
- #: bws_menu.php:338
581
  msgid "Enter your license key"
582
  msgstr "Ваш лицензионный ключ"
583
 
584
- #: bws_menu.php:344 bws_menu.php:539 bws_menu.php:548
585
- #: class-bws-settings.php:801 deprecated.php:155 deprecated.php:163
586
- #: deprecated.php:240 deprecated.php:249
587
  msgid "Activate"
588
  msgstr "Активировать"
589
 
590
- #: bws_menu.php:360
591
  msgid "Upload Plugin"
592
  msgstr "Добавить новый"
593
 
594
- #: bws_menu.php:364
595
  #, php-format
596
  msgid ""
597
  "The plugin generated %d characters of <strong>unexpected output</strong> "
@@ -604,7 +633,7 @@ msgstr ""
604
  "проблемы с RSS-лентами или другие неполадки, попробуйте деактивировать или "
605
  "удалить этот плагин."
606
 
607
- #: bws_menu.php:366
608
  msgid ""
609
  "Plugin could not be activated because it triggered a <strong>fatal error</"
610
  "strong>."
@@ -612,51 +641,51 @@ msgstr ""
612
  "Плагин не может быть активирован, поскольку он вызвал <strong>фатальную "
613
  "ошибку</strong>."
614
 
615
- #: bws_menu.php:369
616
  msgid "Plugin <strong>activated</strong>."
617
  msgstr "Плагин <strong>активировано</strong>."
618
 
619
- #: bws_menu.php:383
620
  msgid "Download Pro Plugin"
621
  msgstr "Загрузить Pro плагина"
622
 
623
- #: bws_menu.php:385 class-bws-settings.php:759
624
  msgid "Your Pro plugin is ready"
625
  msgstr "Ваш Pro плагин готов"
626
 
627
- #: bws_menu.php:387 class-bws-settings.php:761
628
  msgid "Your plugin has been zipped, and now is ready to download."
629
  msgstr "Ваш плагин заархивирован, и готов к загрузке."
630
 
631
- #: bws_menu.php:390 class-bws-settings.php:764
632
  msgid "Download Now"
633
  msgstr "Загрузить сейчас"
634
 
635
- #: bws_menu.php:394 class-bws-settings.php:768
636
  msgid "Need help installing the plugin?"
637
  msgstr "Нужна помощь в установке плагина?"
638
 
639
- #: bws_menu.php:396 class-bws-settings.php:770
640
  msgid "How to install WordPress plugin from your admin Dashboard (ZIP archive)"
641
  msgstr "Как установить WordPress плагин с админ панели (ZIP архив)"
642
 
643
- #: bws_menu.php:399 class-bws-settings.php:774
644
  msgid "Get Started"
645
  msgstr "Начать "
646
 
647
- #: bws_menu.php:405 class-bws-settings.php:780
648
  msgid "Knowledge Base"
649
  msgstr "База Знаний"
650
 
651
- #: bws_menu.php:408
652
  msgid "Licenses & Domains"
653
  msgstr "Лицензии & Домены"
654
 
655
- #: bws_menu.php:411
656
  msgid "Client Area"
657
  msgstr "Client Area"
658
 
659
- #: bws_menu.php:410
660
  #, php-format
661
  msgid ""
662
  "Manage your license(-s) and change domain names using the %s at BestWebSoft."
@@ -664,249 +693,250 @@ msgstr ""
664
  "Управляйте своей лицензией(-ами) и меняйте доменные имена, используя %s на "
665
  "BestWebSoft."
666
 
667
- #: bws_menu.php:413
668
  msgid "Return to BestWebSoft Panel"
669
  msgstr "Возврат к BestWebSoft Panel"
670
 
671
- #: bws_menu.php:420 bws_menu.php:440 bws_menu.php:569
672
  msgid "All"
673
  msgstr "Все"
674
 
675
- #: bws_menu.php:423 bws_menu.php:606
676
  msgid "Installed"
677
  msgstr "Установленные"
678
 
679
- #: bws_menu.php:426
680
  msgid "Not Installed"
681
  msgstr "Не установленные"
682
 
683
- #: bws_menu.php:433
684
  msgid "Filter results"
685
  msgstr "Фильтр результатов"
686
 
687
- #: bws_menu.php:436 bws_menu.php:565
688
  msgid "Category"
689
  msgstr "Категория"
690
 
691
- #: bws_menu.php:500
692
  msgid "Not installed"
693
  msgstr "Не установлен"
694
 
695
- #: bws_menu.php:504
696
  msgid "Renew to get updates"
697
  msgstr "Продлить для обновления"
698
 
699
- #: bws_menu.php:507
700
  #, php-format
701
  msgid "Update to v %s"
702
  msgstr "Обновить до версии %s"
703
 
704
- #: bws_menu.php:519 bws_menu.php:542
705
  msgid "Get Pro"
706
  msgstr "Получить Pro"
707
 
708
- #: bws_menu.php:525 class-bws-settings.php:192 class-bws-settings.php:1091
709
  msgid "Upgrade to Pro"
710
  msgstr "Обновить до Pro"
711
 
712
- #: bws_menu.php:539 bws_menu.php:548
713
  msgid "Activate this plugin"
714
  msgstr "Активировать плагин"
715
 
716
- #: bws_menu.php:551
717
  msgid "Install this plugin"
718
  msgstr "Установить этот плагин"
719
 
720
- #: bws_menu.php:551
721
  msgid "Install Now"
722
  msgstr "Установить"
723
 
724
- #: bws_menu.php:560
725
  msgid "Nothing found. Try another criteria."
726
  msgstr "Ничего не найдено. Попробуйте другие критерии."
727
 
728
- #: bws_menu.php:597
729
  #, php-format
730
  msgid "By %s"
731
  msgstr "%s"
732
 
733
- #: bws_menu.php:604
734
  msgid "Already Installed"
735
  msgstr "Уже установлена"
736
 
737
- #: bws_menu.php:614
738
  msgid "Browse More WordPress Themes"
739
  msgstr "Обзор WordPress тем"
740
 
741
- #: bws_menu.php:623
742
  msgid "Send to support"
743
  msgstr "Отправить в тех. поддержку"
744
 
745
- #: bws_menu.php:630
746
  msgid "Send to custom email &#187;"
747
  msgstr "Отправить на емейл &#187;"
748
 
749
- #: class-bws-settings.php:167
750
  msgid "Information"
751
  msgstr "Информация"
752
 
753
- #: class-bws-settings.php:179
754
  msgid "Inactive"
755
  msgstr "Неактивна"
756
 
757
- #: class-bws-settings.php:187
758
  msgid "Expired"
759
  msgstr "Истекла"
760
 
761
- #: class-bws-settings.php:190
762
  #, php-format
763
  msgid "%s day(-s) left"
764
  msgstr "%s дней осталось"
765
 
766
- #: class-bws-settings.php:196
767
  #, php-format
768
  msgid "Expired on %s"
769
  msgstr "Истекает %s"
770
 
771
- #: class-bws-settings.php:196
772
  msgid "Renew Now"
773
  msgstr "Возобновить сейчас"
774
 
775
- #: class-bws-settings.php:198
776
  msgid "Active"
777
  msgstr "Активна"
778
 
779
- #: class-bws-settings.php:203
780
  msgid "License"
781
  msgstr "Лицензия"
782
 
783
- #: class-bws-settings.php:206
784
  msgid "Status"
785
  msgstr "Статус"
786
 
787
- #: class-bws-settings.php:210
788
  msgid "Version"
789
  msgstr "Версия"
790
 
791
- #: class-bws-settings.php:323
792
  msgid "All plugin settings were restored."
793
  msgstr "Все настройки плагина были восстановлены."
794
 
795
- #: class-bws-settings.php:463
796
  msgid "Custom Code"
797
  msgstr "Пользовательский код"
798
 
799
- #: class-bws-settings.php:467
 
 
 
 
 
 
 
 
800
  msgid "You do not have sufficient permissions to edit plugins for this site."
801
  msgstr ""
802
  "У вас недостаточно полномочий, чтобы редактировать плагины на этом сайте."
803
 
804
- #: class-bws-settings.php:472
805
  msgid "These styles will be added to the header on all pages of your site."
806
  msgstr "Эти стили будут добавлены в хедер на всех страницах вашего сайта."
807
 
808
- #: class-bws-settings.php:475
809
  #, php-format
810
  msgid ""
811
- "This PHP code will be hooked to the %s action and will be printed on front "
812
  "end only."
813
  msgstr ""
814
  "Этот PHP код будет прикреплен к %s аction и будет добавлен только во "
815
  "фронтенде."
816
 
817
- #: class-bws-settings.php:478
818
  msgid "These code will be added to the header on all pages of your site."
819
  msgstr "Этот код будет добавлен в хедер на всех страницах вашего сайта."
820
 
821
- #: class-bws-settings.php:486
822
- #, php-format
823
- msgid ""
824
- "You need to make this files writable before you can save your changes. See "
825
- "%s the Codex %s for more information."
826
- msgstr ""
827
- "Чтобы сохранить изменения, нужно сделать этот файл доступным для записи. "
828
- "Дополнительную информацию можно получить в %s Кодексе %s."
829
-
830
- #: class-bws-settings.php:496
831
  msgid "Browsing"
832
  msgstr "Просмотр"
833
 
834
- #: class-bws-settings.php:501
835
  #, php-format
836
  msgid "Activate custom %s code."
837
  msgstr "Активировать пользовательский %s код."
838
 
839
- #: class-bws-settings.php:509
840
  #, php-format
841
  msgid "Learn more about %s"
842
  msgstr "Подробнее о %s"
843
 
844
- #: class-bws-settings.php:571
845
  msgid "Miscellaneous Settings"
846
  msgstr "Прочие настройки"
847
 
848
- #: class-bws-settings.php:580 class-bws-settings.php:635
849
  #, php-format
850
  msgid ""
851
- "It is prohibited to change %s settings on this site in the %s network "
852
  "settings."
853
  msgstr ""
854
- "Cетевыми настройками %s запрещается изменять настройки %s на этом сайте."
855
 
856
- #: class-bws-settings.php:583 class-bws-settings.php:638
857
  #, php-format
858
  msgid ""
859
- "It is prohibited to view %s settings on this site in the %s network settings."
 
860
  msgstr ""
861
- "Cетевыми настройками %s запрещается просматривать настройки %s на этом сайте."
 
862
 
863
- #: class-bws-settings.php:592
864
  msgid "Pro Options"
865
  msgstr "Pro опции"
866
 
867
- #: class-bws-settings.php:596
868
  msgid "Enable to display plugin Pro options."
869
  msgstr "Включите для отображения Pro опций плагина."
870
 
871
- #: class-bws-settings.php:602
872
  msgid "Track Usage"
873
  msgstr "Собирать статистику"
874
 
875
- #: class-bws-settings.php:606
876
  msgid ""
877
  "Enable to allow tracking plugin usage anonymously in order to make it better."
878
  msgstr ""
879
  "Включить, чтобы разрешить анонимно отслеживать использование и сделать "
880
  "плагин лучше."
881
 
882
- #: class-bws-settings.php:611
883
  msgid "Default Settings"
884
  msgstr "Настройки по умолчанию"
885
 
886
- #: class-bws-settings.php:613
887
  msgid "Restore Settings"
888
  msgstr "Восстановить настройки"
889
 
890
- #: class-bws-settings.php:614
891
  msgid "This will restore plugin settings to defaults."
892
  msgstr "Восстановить все настройки плагина к настройкам по умолчанию."
893
 
894
- #: class-bws-settings.php:626
895
  msgid "Import / Export"
896
  msgstr "Импорт / Экспорт"
897
 
898
- #: class-bws-settings.php:744
899
  msgid "License Key"
900
  msgstr "Лицензионный ключ"
901
 
902
- #: class-bws-settings.php:803
903
  #, php-format
904
  msgid "Enter your license key to activate %s and get premium plugin features."
905
  msgstr ""
906
  "Введите лицензионный ключ для активации %s и получения дополнительных "
907
  "возможностей плагина."
908
 
909
- #: class-bws-settings.php:806 class-bws-settings.php:1014 deprecated.php:243
910
  msgid ""
911
  "Unfortunately, you have exceeded the number of available tries per day. "
912
  "Please, upload the plugin manually."
@@ -914,12 +944,12 @@ msgstr ""
914
  "К сожалению, вы превысили количество доступных попыток в день. Пожалуйста, "
915
  "загрузите плагин вручную."
916
 
917
- #: class-bws-settings.php:809 deprecated.php:234
918
  #, php-format
919
  msgid "Start Your Free %s-Day Trial Now"
920
  msgstr "Попробуйте %s-дневную Trial версию бесплатно"
921
 
922
- #: class-bws-settings.php:824
923
  msgid ""
924
  "If necessary, you can check if the license key is correct or reenter it in "
925
  "the field below."
@@ -927,15 +957,15 @@ msgstr ""
927
  "При необходимости вы можете проверить валидность лицензионного ключа или "
928
  "повторно ввести его в поле выше."
929
 
930
- #: class-bws-settings.php:833
931
  msgid "Manage License Settings"
932
  msgstr "Управление настройками лицензий"
933
 
934
- #: class-bws-settings.php:835
935
  msgid "Login to Client Area"
936
  msgstr "Зайти в Client Area"
937
 
938
- #: class-bws-settings.php:837
939
  msgid ""
940
  "Manage active licenses, download BWS products, and view your payment history "
941
  "using BestWebSoft Client Area."
@@ -943,11 +973,15 @@ msgstr ""
943
  "Управляй активными лицензиями, загружай BWS продукты, а также просматривай "
944
  "историю платежей с помощью BestWebSoft Client Area."
945
 
946
- #: class-bws-settings.php:895 class-bws-settings.php:1012
 
 
 
 
947
  msgid "This license key is bound to another site."
948
  msgstr "Этот лицензионный ключ привязан к другому сайту."
949
 
950
- #: class-bws-settings.php:897
951
  msgid ""
952
  "This license key is valid, but Your license has expired. If you want to "
953
  "update our plugin in future, you should extend the license."
@@ -955,11 +989,11 @@ msgstr ""
955
  "Лицензионный ключ принят, но срок действия лицензии истек. Если вы хотите "
956
  "обновлять плагин в будущем, вы должны продлить лицензию."
957
 
958
- #: class-bws-settings.php:899
959
  msgid "Unfortunately, you have exceeded the number of available tries."
960
  msgstr "К сожалению, вы превысили количество доступных попыток."
961
 
962
- #: class-bws-settings.php:901
963
  msgid ""
964
  "Unfortunately, the Pro Trial licence was already installed to this domain. "
965
  "The Pro Trial license can be installed only once."
@@ -967,18 +1001,18 @@ msgstr ""
967
  "К сожалению, Pro Trial версия плагина уже устанавливалась на этот домен. Pro "
968
  "Trial версию можно устанавливать лишь один раз."
969
 
970
- #: class-bws-settings.php:906
971
  msgid "The Pro Trial license key is valid."
972
  msgstr "Ключ Pro Trial версии действителен."
973
 
974
- #: class-bws-settings.php:919 deprecated.php:142
975
  #, php-format
976
  msgid ""
977
  "In order to continue using the plugin it is necessary to buy a %s license."
978
  msgstr ""
979
  "Чтобы продолжить пользоваться плагином, необходимо приобрести %s лицензию."
980
 
981
- #: class-bws-settings.php:1016
982
  #, php-format
983
  msgid ""
984
  "Unfortunately, Your license has expired. To continue getting top-priority "
@@ -988,136 +1022,154 @@ msgstr ""
988
  "обновлений и приоритетной тех.поддержки, вам необходимо продлить лицензию в "
989
  "вашей %s."
990
 
991
- #: class-bws-settings.php:1065
992
  msgid "Please, enter Your license key"
993
  msgstr "Пожалуйста, введите ваш лицензионный ключ"
994
 
995
- #: class-bws-settings.php:1078
996
  msgid "Need Help?"
997
  msgstr "Нужна помощь?"
998
 
999
- #: class-bws-settings.php:1080
1000
  msgid "Read the Instruction"
1001
  msgstr "Читать инструкцию"
1002
 
1003
- #: class-bws-settings.php:1084
1004
  msgid "Watch the Video"
1005
  msgstr "Смотреть видео"
1006
 
1007
- #: class-bws-settings.php:1095
1008
  msgid "Start Your Free Trial"
1009
  msgstr "Использовать бесплатную Trial версию"
1010
 
1011
- #: class-bws-settings.php:1130
1012
  msgid "Request a Feature"
1013
  msgstr "Предложить функционал"
1014
 
1015
- #: class-bws-settings.php:1135
1016
  #, php-format
1017
  msgid "How can we improve %s?"
1018
  msgstr "Как нам улучшить %s?"
1019
 
1020
- #: class-bws-settings.php:1137
1021
  msgid "We look forward to hear your ideas."
1022
  msgstr "Мы с нетерпением ждем ваших идей."
1023
 
1024
- #: class-bws-settings.php:1139
1025
  msgid "Describe your idea"
1026
  msgstr "Опишите свою идею"
1027
 
1028
- #: class-bws-settings.php:1142 deactivation-form.php:120
1029
  msgid "Send website data and allow to contact me back"
1030
  msgstr "Отправить данные сайта и позволить связаться со мной"
1031
 
1032
- #: class-bws-settings.php:1147
1033
  msgid "Submit"
1034
  msgstr "Отправить"
1035
 
1036
- #: class-bws-settings.php:1148 deactivation-form.php:127
1037
  msgid "Processing"
1038
  msgstr "Обработка"
1039
 
1040
- #: class-bws-settings.php:1149
1041
  msgid "Thank you!"
1042
  msgstr "Спасибо!"
1043
 
1044
- #: deactivation-form.php:22
1045
  msgid "Need help? We are ready to answer your questions."
1046
  msgstr "Нужна помощь? Мы готовы ответить на ваши вопросы."
1047
 
1048
- #: deactivation-form.php:22
1049
  msgid "Contact Support"
1050
  msgstr "Связаться с тех. поддержкой"
1051
 
1052
- #: deactivation-form.php:27
1053
  msgid "The plugin is not working"
1054
  msgstr "Плагин не работает"
1055
 
1056
- #: deactivation-form.php:33
 
 
 
 
 
 
1057
  msgid "The plugin didn't work as expected"
1058
  msgstr "Плагин не работает, как ожидалось"
1059
 
1060
- #: deactivation-form.php:39
 
 
 
 
1061
  msgid "The plugin suddenly stopped working"
1062
  msgstr "Плагин внезапно перестал работать"
1063
 
1064
- #: deactivation-form.php:46
1065
  msgid "The plugin broke my site"
1066
  msgstr "Плагин сломал мой сайт"
1067
 
1068
- #: deactivation-form.php:53
1069
  msgid "I couldn't understand how to get it work"
1070
  msgstr "Я не могу понять, как заставить его работать"
1071
 
1072
- #: deactivation-form.php:60
1073
  msgid "I found a better plugin"
1074
  msgstr "Я нашел плагин лучше"
1075
 
1076
- #: deactivation-form.php:66
 
 
 
 
1077
  msgid "The plugin is great, but I need specific feature that you don't support"
1078
  msgstr ""
1079
  "Плагин замечательный, но мне нужен определенный функционал, которого у вас "
1080
  "нет"
1081
 
1082
- #: deactivation-form.php:72
 
 
 
 
1083
  msgid "I no longer need the plugin"
1084
  msgstr "Мне больше не нужен плагин"
1085
 
1086
- #: deactivation-form.php:78
1087
  msgid "It's a temporary deactivation, I'm just debugging an issue"
1088
  msgstr "Это временная деактивация, я просто отлаживаю проблему"
1089
 
1090
- #: deactivation-form.php:84
1091
  msgid "Other"
1092
  msgstr "Другое"
1093
 
1094
- #: deactivation-form.php:93
1095
  msgid "Quick Feedback"
1096
  msgstr "Быстрый отзыв"
1097
 
1098
- #: deactivation-form.php:95
1099
  msgid "If you have a moment, please let us know why you are deactivating"
1100
  msgstr ""
1101
  "Если у вас есть время, пожалуйста, сообщите нам, почему вы деактивируете "
1102
  "плагин"
1103
 
1104
- #: deactivation-form.php:125
1105
  msgid "Submit and Deactivate"
1106
  msgstr "Отправить и Деактивировать"
1107
 
1108
- #: deactivation-form.php:126
1109
  msgid "Skip and Deactivate"
1110
  msgstr "Пропустить и Деактивировать"
1111
 
1112
- #: deactivation-form.php:272
1113
  msgid "Please tell us the reason so we can improve it."
1114
  msgstr "Пожалуйста, сообщите нам причину, чтобы мы могли улучшить плагин."
1115
 
1116
- #: deprecated.php:28
1117
  msgid "System Status"
1118
  msgstr "Системная информация"
1119
 
1120
- #: deprecated.php:119
1121
  msgid ""
1122
  "If necessary, you can check if the license key is correct or reenter it in "
1123
  "the field below. You can find your license key on your personal page - "
@@ -1127,7 +1179,7 @@ msgstr ""
1127
  "повторно ввести его в поле ниже. Вы можете найти ваш лицензионный ключ на "
1128
  "своей личной странице - Client Area - на нашем сайте"
1129
 
1130
- #: deprecated.php:119
1131
  msgid ""
1132
  "(your username is the email address specified during the purchase). If "
1133
  "necessary, please submit \"Lost your password?\" request."
@@ -1135,106 +1187,106 @@ msgstr ""
1135
  "(ваше имя пользователя - это емейл, указанный при покупке). При "
1136
  "необходимости нажмите \"Забыли пароль?\"."
1137
 
1138
- #: deprecated.php:142
1139
  msgid "After that, you can activate it by entering your license key."
1140
  msgstr "После этого вы сможете активировать его введя лицензионный ключ."
1141
 
1142
- #: deprecated.php:145 deprecated.php:228
1143
  msgid "License key can be found in the"
1144
  msgstr "Лицензионный ключ можно найти в"
1145
 
1146
- #: deprecated.php:147 deprecated.php:230
1147
  msgid "(your username is the email address specified during the purchase)."
1148
  msgstr "(ваше имя пользователя - это емейл, указанный при покупке)."
1149
 
1150
- #: deprecated.php:170
1151
  msgid ""
1152
  "Congratulations! The Pro license of the plugin is activated successfully."
1153
  msgstr "Поздравляем! Pro версия плагина успешно активирована."
1154
 
1155
- #: deprecated.php:172 deprecated.php:210
1156
  msgid "Please, go to"
1157
  msgstr "Пожалуйста, перейдите на"
1158
 
1159
- #: deprecated.php:172 deprecated.php:210
1160
  msgid "the setting page"
1161
  msgstr "страницу настроек"
1162
 
1163
- #: deprecated.php:187
1164
  msgid "Restore all plugin settings to defaults"
1165
  msgstr "Восстановить все настройки плагина к настройкам по умолчанию"
1166
 
1167
- #: deprecated.php:189
1168
  msgid "Restore settings"
1169
  msgstr "Восстановить настройки"
1170
 
1171
- #: deprecated.php:208
1172
  msgid ""
1173
  "Congratulations! Pro version of the plugin is installed and activated "
1174
  "successfully."
1175
  msgstr "Поздравляем! Pro версия плагина успешно загружена и активирована."
1176
 
1177
- #: deprecated.php:217
1178
  msgid "Show Pro features"
1179
  msgstr "Показать Pro опции"
1180
 
1181
- #: deprecated.php:224
1182
  msgid "Enter your license key to install and activate"
1183
  msgstr "Введите лицензионный ключ для установки и активации"
1184
 
1185
- #: deprecated.php:226
1186
  msgid "version of the plugin."
1187
  msgstr "версия плагина."
1188
 
1189
- #: product_list.php:8
1190
  msgid "Admin Tools"
1191
  msgstr "Инструменты"
1192
 
1193
- #: product_list.php:9
1194
  msgid "Content"
1195
  msgstr "Контент"
1196
 
1197
- #: product_list.php:10
1198
  msgid "eCommerce"
1199
  msgstr "Коммерция"
1200
 
1201
- #: product_list.php:11
1202
  msgid "Marketing"
1203
  msgstr "Маркетинг"
1204
 
1205
- #: product_list.php:12
1206
  msgid "Navigation"
1207
  msgstr "Навигация"
1208
 
1209
- #: product_list.php:13
1210
  msgid "Recommended"
1211
  msgstr "Рекомендованные"
1212
 
1213
- #: product_list.php:14
1214
  msgid "Security"
1215
  msgstr "Безопасность"
1216
 
1217
- #: product_list.php:15
1218
  msgid "SEO"
1219
  msgstr "Поисковая оптимизация"
1220
 
1221
- #: product_list.php:16
1222
  msgid "SMM"
1223
  msgstr "СММ"
1224
 
1225
- #: product_list.php:23
1226
  msgid "Give a birth for your bike rental and booking WordPress website."
1227
  msgstr "Создайте прокат и бронирование велосипедов на сайте WordPress."
1228
 
1229
- #: product_list.php:35
1230
  msgid "Best secure captcha plugin to protect your WordPress forms."
1231
  msgstr "Лучший плагин капчи, который защитит формы вашего сайта WordPress."
1232
 
1233
- #: product_list.php:45
1234
  msgid "Create your own rental website for car renting and booking."
1235
  msgstr "Создайте свой собственный сайт проката и резервирования автомобилей."
1236
 
1237
- #: product_list.php:57
1238
  msgid ""
1239
  "Add columns with custom content to WordPress website pages, posts, widgets, "
1240
  "etc."
@@ -1242,7 +1294,7 @@ msgstr ""
1242
  "Добавляйте столбцы с пользовательским контентом в ваш WordPress сайт на "
1243
  "страницы, посты, виджеты, и т.д."
1244
 
1245
- #: product_list.php:64
1246
  msgid ""
1247
  "Allow customers to reach you using secure contact form plugin any website "
1248
  "must have."
@@ -1250,37 +1302,37 @@ msgstr ""
1250
  "Предоставьте возможность клиентам осуществлять связь с вами через безопасный "
1251
  "плагин контактной формы, который должен иметь любой сайт."
1252
 
1253
- #: product_list.php:74
1254
  msgid "Add unlimited number of contact forms to WordPress website."
1255
  msgstr ""
1256
  "Добавляйте неограниченное количество контактных форм на ваш сайт WordPress."
1257
 
1258
- #: product_list.php:84
1259
  msgid "Save and manage Contact Form messages. Never lose important data."
1260
  msgstr ""
1261
  "Сохраняйте и управляйте сообщениями плагина Contact Form. Никогда не теряйте "
1262
  "важные данные."
1263
 
1264
- #: product_list.php:94
1265
  msgid "Add unlimited custom pages to WordPress admin dashboard."
1266
  msgstr ""
1267
  "Добавляйте неограниченное количество пользовательских страниц в панели "
1268
  "администратора WordPress."
1269
 
1270
- #: product_list.php:104
1271
  msgid ""
1272
  "Add custom post types and taxonomies to WordPress website search results."
1273
  msgstr ""
1274
  "Добавляйте пользовательские типы постов и таксономии в результаты поиска на "
1275
  "вашем сайте WordPress."
1276
 
1277
- #: product_list.php:114
1278
  msgid "Add PayPal and 2CO donate buttons to receive charity payments."
1279
  msgstr ""
1280
  "Добавляйте кнопки PayPal и 2CO, чтобы получать пожертвования и "
1281
  "благотворительные взносы."
1282
 
1283
- #: product_list.php:121
1284
  msgid ""
1285
  "Get latest error log messages to diagnose website problems. Define and fix "
1286
  "issues faster."
@@ -1288,7 +1340,7 @@ msgstr ""
1288
  "Получайте последние сообщения из журнала ошибок для диагностики проблем "
1289
  "сайта. Быстрее выявляйте и устраняйте проблемы."
1290
 
1291
- #: product_list.php:128
1292
  msgid ""
1293
  "Add Facebook Follow, Like, and Share buttons to WordPress posts, pages, and "
1294
  "widgets."
@@ -1296,7 +1348,7 @@ msgstr ""
1296
  "Добавляйте кнопки Facebook \"Подписаться\", \"Нравится\" и \"Поделиться\" в "
1297
  "посты, страницы и виджеты сайта WordPress."
1298
 
1299
- #: product_list.php:138
1300
  msgid ""
1301
  "Add beautiful galleries, albums & images to your WordPress website in a few "
1302
  "clicks."
@@ -1304,7 +1356,7 @@ msgstr ""
1304
  "Добавляйте живописные галереи, альбомы, изображения и категории галереи на "
1305
  "ваш сайт WordPress всего в несколько кликов."
1306
 
1307
- #: product_list.php:148
1308
  msgid ""
1309
  "Stronger security solution which protects your WordPress website from hacks "
1310
  "and unauthorized login attempts."
@@ -1312,7 +1364,7 @@ msgstr ""
1312
  "Мощнейшее решение для безопасности, которое защищает ваш сайт WordPress от "
1313
  "взломов и неавторизованных попыток входа в систему."
1314
 
1315
- #: product_list.php:158
1316
  msgid ""
1317
  "Add Adsense ads to WordPress website pages, posts, custom posts, search "
1318
  "results, categories, tags, and widgets."
@@ -1320,23 +1372,23 @@ msgstr ""
1320
  "Добавляйте рекламу сервиса Adsense на страницы, посты, пользовательские "
1321
  "посты, результаты поиска, категории, теги и виджеты сайта WordPress."
1322
 
1323
- #: product_list.php:168
1324
  msgid "Add Google Analytics code to WordPress website and track basic stats."
1325
  msgstr ""
1326
  "Добавляйте код Google Analytics на ваш сайт WordPress и отслеживайте базовую "
1327
  "статистику сайта."
1328
 
1329
- #: product_list.php:178
1330
  msgid "Protect WordPress website forms from spam entries with reCaptcha."
1331
  msgstr "Защищайте формы вашего сайта WordPress от спама с помощью reCaptcha."
1332
 
1333
- #: product_list.php:188
1334
  msgid "Add customized Google maps to WordPress posts, pages and widgets."
1335
  msgstr ""
1336
  "Добавляйте пользовательские карты Google в посты, страницы и виджеты "
1337
  "WordPress."
1338
 
1339
- #: product_list.php:198
1340
  msgid ""
1341
  "Generate and add XML sitemap to WordPress website. Help search engines index "
1342
  "your blog."
@@ -1344,7 +1396,7 @@ msgstr ""
1344
  "Создавайте и добавляйте файлы XML sitemap на ваш сайт WordPress. Помогите "
1345
  "поисковым системам проиндексировать ваш блог."
1346
 
1347
- #: product_list.php:208
1348
  msgid ""
1349
  "Replace external WordPress website links with Google shortlinks and track "
1350
  "click stats."
@@ -1352,7 +1404,7 @@ msgstr ""
1352
  "Замените внешние ссылки сайта WordPress на короткие ссылки Google и "
1353
  "отслеживайте статистику кликов."
1354
 
1355
- #: product_list.php:215
1356
  msgid ""
1357
  "Protect WordPress website – allow and deny access for certain IP addresses, "
1358
  "hostnames, etc."
@@ -1360,7 +1412,7 @@ msgstr ""
1360
  "Защитите свой сайт WordPress - предоставляйте и запрещайте доступ с "
1361
  "определенных IP-адресов, имен хостов и т.д."
1362
 
1363
- #: product_list.php:225
1364
  msgid ""
1365
  "Create your personal job board and listing WordPress website. Search jobs, "
1366
  "submit CV/resumes, choose candidates."
@@ -1369,7 +1421,7 @@ msgstr ""
1369
  "WordPress. Осуществляйте поиск вакансий, подачу резюме/CV кандидата, выбор "
1370
  "кандидатов."
1371
 
1372
- #: product_list.php:232
1373
  msgid ""
1374
  "Protect WordPress website against brute force attacks. Limit rate of login "
1375
  "attempts."
@@ -1377,7 +1429,7 @@ msgstr ""
1377
  "Защищайте свой сайт WordPress от брутфорс-атак. Ограничивайте количество "
1378
  "попыток ввода логина."
1379
 
1380
- #: product_list.php:242
1381
  msgid ""
1382
  "Add LinkedIn Share and Follow buttons to WordPress posts, pages and widgets. "
1383
  "5 plugins included – profile, insider, etc."
@@ -1386,7 +1438,7 @@ msgstr ""
1386
  "страницам и виджетам WordPress. 5 плагинов включено - Профиль, Инсайдер и т."
1387
  "д."
1388
 
1389
- #: product_list.php:252
1390
  msgid ""
1391
  "Translate WordPress website content to other languages manually. Create "
1392
  "multilingual pages, posts, widgets, menus, etc."
@@ -1394,7 +1446,7 @@ msgstr ""
1394
  "Переводите содержимое сайта WordPress на другие языки вручную. Создавайте "
1395
  "многоязычные страницы, посты, виджеты, меню и т.д."
1396
 
1397
- #: product_list.php:262
1398
  msgid ""
1399
  "Add customizable pagination to WordPress website. Split long content to "
1400
  "multiple pages for better navigation."
@@ -1402,7 +1454,7 @@ msgstr ""
1402
  "Добавляйте настраиваемую пагинацию на ваш сайт WordPress. Разбивайте "
1403
  "объемный контент на несколько страниц для лучшей навигации."
1404
 
1405
- #: product_list.php:272
1406
  msgid ""
1407
  "Generate PDF files and print WordPress posts/pages. Customize document "
1408
  "header/footer styles and appearance."
@@ -1410,7 +1462,7 @@ msgstr ""
1410
  "Создавайте PDF-файлы и печатайте посты/страницы сайта WordPress. "
1411
  "Настраивайте стили хедера/футера документа и его внешний вид."
1412
 
1413
- #: product_list.php:282
1414
  msgid ""
1415
  "Add Pinterest Follow, Pin It buttons and profile widgets (Pin, Board, "
1416
  "Profile) to WordPress posts, pages and widgets."
@@ -1418,7 +1470,7 @@ msgstr ""
1418
  "Добавляйте кнопки Pinterest \"Подписаться\", \"Сохранить\" и виджеты профиля "
1419
  "(Пин, Доска, Профиль) к постам, страницам и виджетам WordPress."
1420
 
1421
- #: product_list.php:292
1422
  msgid ""
1423
  "Create your personal portfolio WordPress website. Manage and showcase past "
1424
  "projects to get more clients."
@@ -1426,13 +1478,13 @@ msgstr ""
1426
  "Создавайте и добавляйте портфолио на свой сайт WordPress. Управляйте и "
1427
  "демонстрируйте прошлые проекты, чтобы привлечь больше клиентов."
1428
 
1429
- #: product_list.php:302
1430
  msgid "Export WordPress posts to CSV file format easily. Configure data order."
1431
  msgstr ""
1432
  "С легкостью экспортируйте посты WordPress в файлы формата CSV. Настраивайте "
1433
  "порядок отображения данных."
1434
 
1435
- #: product_list.php:312
1436
  msgid ""
1437
  "Add extra fields to default WordPress user profile. The easiest way to "
1438
  "create and manage additional custom values."
@@ -1440,7 +1492,7 @@ msgstr ""
1440
  "Добавляйте пользовательские поля в стандартный профиль WordPress. Самый "
1441
  "простой способ создания и управления дополнительными полями."
1442
 
1443
- #: product_list.php:322
1444
  msgid ""
1445
  "Add and display HTML advertisement banner on WordPress website. Customize "
1446
  "bar styles and appearance."
@@ -1448,7 +1500,7 @@ msgstr ""
1448
  "Добавляйте и отображайте баннерную HTML рекламу на сайте WordPress. "
1449
  "Настраивайте стили и внешний вид баннера."
1450
 
1451
- #: product_list.php:332
1452
  msgid ""
1453
  "Add customizable quotes and tips blocks to WordPress posts, pages and "
1454
  "widgets."
@@ -1456,7 +1508,7 @@ msgstr ""
1456
  "Добавляйте настраиваемые цитаты и подсказки к постам, страницам и виджетам "
1457
  "WordPress."
1458
 
1459
- #: product_list.php:339
1460
  msgid ""
1461
  "Add rating plugin to your WordPress website to receive feedback from your "
1462
  "customers."
@@ -1464,7 +1516,7 @@ msgstr ""
1464
  "Добавляйте систему оценивания и рейтинга на ваш сайт WordPress и получайте "
1465
  "отзывы от ваших клиентов."
1466
 
1467
- #: product_list.php:349
1468
  msgid ""
1469
  "Create your personal real estate WordPress website. Sell, rent and buy "
1470
  "properties. Add, search and browse listings easily."
@@ -1473,7 +1525,7 @@ msgstr ""
1473
  "Продавайте, арендуйте и покупайте недвижимость. Легко добавляйте, находите и "
1474
  "просматривайте листинги."
1475
 
1476
- #: product_list.php:359
1477
  msgid ""
1478
  "Add related, featured, latest, and popular posts to your WordPress website. "
1479
  "Connect your blog readers with a relevant content."
@@ -1481,7 +1533,7 @@ msgstr ""
1481
  "Добавляйте похожие, избранные, последние и популярные посты на ваш сайт "
1482
  "WordPress. Предоставляйте своим читателям контент схожей тематики."
1483
 
1484
- #: product_list.php:366
1485
  msgid ""
1486
  "Send bulk email messages to WordPress users. Custom templates, advanced "
1487
  "settings and detailed reports."
@@ -1489,7 +1541,7 @@ msgstr ""
1489
  "Осуществляйте массовую рассылку писем пользователям WordPress. "
1490
  "Пользовательские шаблоны, дополнительные настройки и подробные отчеты."
1491
 
1492
- #: product_list.php:376
1493
  msgid ""
1494
  "The best responsive slider plugin for your WordPress website. Create "
1495
  "beautifully animated slides just in a few clicks."
@@ -1497,7 +1549,7 @@ msgstr ""
1497
  "Самый лучший адаптивный слайдер для вашего сайта WordPress. Создавайте "
1498
  "красиво анимированные слайды всего в несколько кликов."
1499
 
1500
- #: product_list.php:383
1501
  msgid ""
1502
  "Configure SMTP server to receive email messages from WordPress to Gmail, "
1503
  "Yahoo, Hotmail and other services."
@@ -1506,7 +1558,7 @@ msgstr ""
1506
  "WordPress на такие почтовые службы, как Gmail, Yahoo, Hotmail и многие "
1507
  "другие."
1508
 
1509
- #: product_list.php:390
1510
  msgid ""
1511
  "Add social media buttons and widgets to WordPress posts, pages and widgets. "
1512
  "FB, Twitter, Pinterest, LinkedIn."
@@ -1514,7 +1566,7 @@ msgstr ""
1514
  "Добавляйте кнопки и виджеты социальных сетей к постам, страницам и виджетам "
1515
  "WordPress. FB, Twitter, Pinterest, LinkedIn."
1516
 
1517
- #: product_list.php:400
1518
  msgid ""
1519
  "Add social media login, registration, and commenting to your WordPress "
1520
  "website."
@@ -1522,7 +1574,7 @@ msgstr ""
1522
  "Добавляйте на свой сайт WordPress возможность входа, регистрации и "
1523
  "комментирования с использованием существующих аккаунтов социальных сетей."
1524
 
1525
- #: product_list.php:407
1526
  msgid ""
1527
  "Add email newsletter sign up form to WordPress posts, pages and widgets. "
1528
  "Collect data and subscribe your users."
@@ -1530,7 +1582,7 @@ msgstr ""
1530
  "Добавляйте форму подписки на новостную рассылку в посты, страницы и виджеты "
1531
  "WordPress. Собирайте данные и осуществляйте подписку пользователей."
1532
 
1533
- #: product_list.php:417
1534
  msgid ""
1535
  "Add testimonials and feedbacks from your customers to WordPress website "
1536
  "posts, pages, and widgets."
@@ -1538,7 +1590,7 @@ msgstr ""
1538
  "Добавляйте рекомендации и отзывы ваших клиентов в посты, страницы и виджеты "
1539
  "сайта WordPress."
1540
 
1541
- #: product_list.php:424
1542
  msgid ""
1543
  "Best timesheet plugin for WordPress. Track employee time, streamline "
1544
  "attendance and generate reports."
@@ -1546,7 +1598,7 @@ msgstr ""
1546
  "Лучший плагин учёта рабочего времени на сайте WordPress. Отслеживайте время "
1547
  "работы сотрудников, оптимизируйте график работы в офисе и создавайте отчеты."
1548
 
1549
- #: product_list.php:434
1550
  msgid ""
1551
  "Add Twitter Follow, Tweet, Hashtag, and Mention buttons to WordPress posts "
1552
  "and pages."
@@ -1554,7 +1606,7 @@ msgstr ""
1554
  "Добавляйте кнопки Твиттера \"Читать\", \"Твитнуть\", \"Метка\" и \"Упомянуть"
1555
  "\" к постам и страницам WordPress. "
1556
 
1557
- #: product_list.php:444
1558
  msgid ""
1559
  "Automatically check and update WordPress website core with all installed "
1560
  "plugins and themes to the latest versions."
@@ -1562,7 +1614,7 @@ msgstr ""
1562
  "Выполняйте автоматическую проверку и обновление ядра WordPress до последних "
1563
  "версий со всеми установленными плагинами и темами."
1564
 
1565
- #: product_list.php:454
1566
  msgid ""
1567
  "Powerful user role management plugin for WordPress website. Create, edit, "
1568
  "copy, and delete user roles."
@@ -1570,7 +1622,7 @@ msgstr ""
1570
  "Эффективный плагин управления ролями пользователей для сайта WordPress. "
1571
  "Создавайте, редактируйте, копируйте и удаляйте роли пользователей."
1572
 
1573
- #: product_list.php:464
1574
  msgid ""
1575
  "Display live count of online visitors who are currently browsing your "
1576
  "WordPress website."
@@ -1578,7 +1630,7 @@ msgstr ""
1578
  "Ведите подсчет количества посетителей, которые в настоящее время "
1579
  "просматривают ваш сайт WordPress."
1580
 
1581
- #: product_list.php:474
1582
  msgid ""
1583
  "Backup and export Zendesk Help Center content automatically to your "
1584
  "WordPress website database."
@@ -1586,6 +1638,14 @@ msgstr ""
1586
  "Делайте автоматическое резервное копирование и экспорт содержимого Zendesk "
1587
  "Help Center в базу данных вашего сайта WordPress."
1588
 
 
 
 
 
 
 
 
 
1589
  #~ msgid "Create your personal car rental/booking and reservation website."
1590
  #~ msgstr ""
1591
  #~ "Создайте свой собственный сайт проката и резервирования автомобилей."
@@ -1625,20 +1685,6 @@ msgstr ""
1625
  #~ "Папка загрузки не доступна для записи. Пожалуйста, загрузите плагин "
1626
  #~ "вручную."
1627
 
1628
- #~ msgid "Kindly share what didn't work so we can fix it in future updates..."
1629
- #~ msgstr ""
1630
- #~ "Пожалуйста, сообщите, что не работает, чтобы мы смогли исправить это в "
1631
- #~ "будущих обновлениях..."
1632
-
1633
- #~ msgid "What did you expect?"
1634
- #~ msgstr "Что именно вы ожидали?"
1635
-
1636
- #~ msgid "What's the plugin name?"
1637
- #~ msgstr "Какое название плагина?"
1638
-
1639
- #~ msgid "What feature?"
1640
- #~ msgstr "Какой функционал?"
1641
-
1642
  #~ msgid "Please, enter your license key"
1643
  #~ msgstr "Пожалуйста, введите Ваш лицензионный ключ"
1644
 
2
  msgstr ""
3
  "Project-Id-Version: bestwebsoft\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2022-04-21 14:18+0300\n"
6
+ "PO-Revision-Date: 2022-04-21 14:21+0300\n"
7
  "Last-Translator: bestwebsoft.com <plugins@bestwebsoft.com>\n"
8
  "Language-Team: bestwebsoft.com <https://support.bestwebsoft.com>\n"
9
  "Language: ru\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
14
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
15
  "X-Poedit-KeywordsList: __;_e;esc_attr_e;printf;esc_html__;esc_html_e\n"
16
  "X-Poedit-Basepath: ..\n"
17
  "X-Poedit-SourceCharset: UTF-8\n"
18
+ "X-Generator: Poedit 3.0.1\n"
 
 
19
  "X-Poedit-SearchPath-0: .\n"
20
  "X-Poedit-SearchPathExcluded-0: js\n"
21
 
22
+ #: bws_functions.php:85 bws_functions.php:283
23
  msgid "requires"
24
  msgstr "требует"
25
 
26
+ #: bws_functions.php:87
27
  msgid ""
28
  "or higher, that is why it has been deactivated! Please upgrade WordPress and "
29
  "try again."
31
  "или выше, поэтому он был деактивирован! Пожалуйста, обновите WordPress и "
32
  "попробуйте еще раз."
33
 
34
+ #: bws_functions.php:88
35
  msgid "Back to the WordPress"
36
  msgstr "Вернуться к WordPress на"
37
 
38
+ #: bws_functions.php:90
39
  msgid "Plugins page"
40
  msgstr "Страницу плагинов"
41
 
42
+ #: bws_functions.php:112
43
  msgid "Like the plugin?"
44
  msgstr "Понравился плагин?"
45
 
46
+ #: bws_functions.php:113
47
  #, php-format
48
  msgid "%s reviews"
49
  msgstr "%s отзывы"
50
 
51
+ #: bws_functions.php:114
52
  msgid "Rate it"
53
  msgstr "Оценить"
54
 
55
+ #: bws_functions.php:123
56
  msgid "Need help?"
57
  msgstr "Нужна помощь?"
58
 
59
+ #: bws_functions.php:124 bws_functions.php:1186 class-bws-settings.php:1193
60
  msgid "Visit Help Center"
61
  msgstr "Перейти в Help Center"
62
 
63
+ #: bws_functions.php:127
64
  msgid "Want to support the plugin?"
65
  msgstr "Хотите поддержать плагин?"
66
 
67
+ #: bws_functions.php:128 bws_menu.php:651
68
  msgid "Donate"
69
  msgstr "Пожертвовать"
70
 
71
+ #: bws_functions.php:155
72
  msgid "WARNING: Illegal use notification"
73
  msgstr "ВНИМАНИЕ: уведомление о незаконном использовании"
74
 
75
+ #: bws_functions.php:155
76
  msgid ""
77
  "You can use one license of the Pro plugin for one domain only. Please check "
78
  "and edit your license or domain if necessary using your personal Client "
84
  "используя Ваш личный Client Area. Мы настоятельно рекомендуем вам решить "
85
  "проблему в течение 24 часов, в противном случае плагин будет деактивирован."
86
 
87
+ #: bws_functions.php:155 bws_functions.php:247 bws_menu.php:746
88
+ #: class-bws-settings.php:189
89
  msgid "Learn More"
90
  msgstr "Подробнее"
91
 
92
+ #: bws_functions.php:174
93
  msgid ""
94
  "Notice: Your Pro Trial license has expired. To continue using the plugin, "
95
  "you should buy a Pro license"
97
  "Внимание: Срок действия Pro Trial версии истек. Чтобы продолжить "
98
  "пользоваться плагином, пожалуйста, приобретите Pro лицензию"
99
 
100
+ #: bws_functions.php:176
101
  msgid ""
102
  "Your license has expired. To continue getting top-priority support and "
103
  "plugin updates, you should extend it."
106
  "плагин в дальнейшем и иметь приоритетную тех.поддержку, то вам нужно "
107
  "продлить лицензию."
108
 
109
+ #: bws_functions.php:176 bws_functions.php:267
110
  msgid "Learn more"
111
  msgstr "Подробнее"
112
 
113
+ #: bws_functions.php:196
114
  #, php-format
115
  msgid "Notice: You are using the Pro Trial license of %s plugin."
116
  msgstr "Внимание: Вы используете Pro Trial версию плагина %s."
117
 
118
+ #: bws_functions.php:198
119
  msgid "Notice: You are using the Pro Trial license of plugin."
120
  msgstr "Внимание: Вы используете Pro Trial версию плагина."
121
 
122
+ #: bws_functions.php:201
123
  msgid "The Pro Trial license will expire on"
124
  msgstr "Ваша лицензия Pro Trial версии плагина истекает"
125
 
126
+ #: bws_functions.php:238 bws_functions.php:263 bws_functions.php:313
127
+ #: bws_functions.php:323 bws_functions.php:560 bws_functions.php:593
128
  msgid "Close notice"
129
  msgstr "Закрыть"
130
 
131
+ #: bws_functions.php:243
132
  msgid "It’s time to upgrade your"
133
  msgstr "Настало время обновить Ваш"
134
 
135
+ #: bws_functions.php:243
136
  msgid "to"
137
  msgstr "до"
138
 
139
+ #: bws_functions.php:243
140
  msgid "version!"
141
  msgstr "версии!"
142
 
143
+ #: bws_functions.php:244
144
  msgid "Extend standard plugin functionality with new great options."
145
  msgstr "Расширяет возможности стандартного функционала плагина."
146
 
147
+ #: bws_functions.php:267
148
  #, php-format
149
  msgid ""
150
+ "Your license key for %1$s expires on %2$s and you won't be granted TOP-"
151
+ "PRIORITY SUPPORT or UPDATES."
152
  msgstr ""
153
+ "Ваш лицензионный ключ для %1$s истекает %2$s и вы не будете получать "
154
  "приоритетную тех.поддержку или обновления."
155
 
156
+ #: bws_functions.php:285
157
  msgid ""
158
  "or higher! We do not guarantee that our plugin will work correctly. Please "
159
  "upgrade to WordPress latest version."
161
  "или выше! Мы не гарантируем, что наш плагин будет работать корректно. "
162
  "Пожалуйста, обновите WordPress до последней версии."
163
 
164
+ #: bws_functions.php:281
165
  #, php-format
166
  msgid "<strong>%s</strong> %s <strong>WordPress %s</strong> %s"
167
+ msgstr "<strong>%s</strong> %s <strong>WordPress %s</strong> %s"
168
 
169
+ #: bws_functions.php:303
170
  #, php-format
171
  msgid "Thank you for installing %s plugin!"
172
  msgstr "Спасибо, что установили %s плагин!"
173
 
174
+ #: bws_functions.php:305
175
  msgid "Let's get started"
176
  msgstr "Давайте начнем"
177
 
178
+ #: bws_functions.php:306 bws_functions.php:339 bws_menu.php:657
179
+ #: bws_menu.php:659
180
  msgid "Settings"
181
  msgstr "Настройки"
182
 
183
+ #: bws_functions.php:308 bws_menu.php:377 class-bws-settings.php:908
184
+ #: class-bws-settings.php:1196 class-bws-settings.php:1209 deprecated.php:260
185
  msgid "or"
186
  msgstr "или"
187
 
188
+ #: bws_functions.php:309 bws_functions.php:341
189
  msgid "Add New"
190
  msgstr "Добавить"
191
 
192
+ #: bws_functions.php:328
193
  msgid "Thank you for installing plugins by BestWebSoft!"
194
  msgstr "Спасибо за установку плагинов компании BestWebSoft!"
195
 
196
+ #: bws_functions.php:330
197
  msgid "More Details"
198
  msgstr "Детали"
199
 
200
+ #: bws_functions.php:331
201
  msgid "Less Details"
202
  msgstr "Скрыть детали"
203
 
204
+ #: bws_functions.php:362
205
  msgid "Deprecated function(-s) is used on the site here:"
206
  msgstr "Устаревшие функции используются на сайте здесь:"
207
 
208
+ #: bws_functions.php:380
209
  msgid ""
210
  "This function(-s) will be removed over time. Please update the product(-s)."
211
  msgstr ""
212
  "Эти функции будет удалены через некоторое время. Пожалуйста, обновите "
213
  "продукт."
214
 
215
+ #: bws_functions.php:555
216
  #, php-format
217
  msgid "Thank you for choosing %s plugin!"
218
  msgstr "Спасибо за выбор плагина %s!"
219
 
220
+ #: bws_functions.php:556
221
  msgid ""
222
  "If you have a feature, suggestion or idea you'd like to see in the plugin, "
223
  "we'd love to hear about it!"
226
  "функционала плагина, пожалуйста, присылайте их нам! Мы вседа открыты для "
227
  "новых идей!"
228
 
229
+ #: bws_functions.php:557
230
  msgid "Suggest a Feature"
231
  msgstr "Предложить функционал"
232
 
233
+ #: bws_functions.php:598
234
+ msgid "Affiliate Program"
235
+ msgstr "Партнерская программа"
236
+
237
+ #: bws_functions.php:599
238
+ #, php-format
239
+ msgid "Get %s"
240
+ msgstr "Получить %s"
241
+
242
+ #: bws_functions.php:600
243
+ msgid "from each BestWebSoft plugin and theme sale you refer"
244
+ msgstr "с каждой продажи плагина и темы BestWebSoft, которую вы направляете"
245
+
246
+ #: bws_functions.php:604
247
+ msgid "Join affiliate program"
248
+ msgstr "Присоединяйтесь к партнерской программе"
249
+
250
+ #: bws_functions.php:608
251
+ msgid "Promote and sell products"
252
+ msgstr "Promote and sell products"
253
+
254
+ #: bws_functions.php:612
255
+ msgid "Get commission!"
256
+ msgstr "Get commission!"
257
+
258
+ #: bws_functions.php:617
259
+ msgid "Start Now"
260
+ msgstr "Начинай сейчас"
261
+
262
+ #: bws_functions.php:634 class-bws-settings.php:640 class-bws-settings.php:645
263
+ #: class-bws-settings.php:714 class-bws-settings.php:719
264
  msgid "Notice"
265
  msgstr "Внимание"
266
 
267
+ #: bws_functions.php:634
268
  msgid "The plugin's settings have been changed."
269
  msgstr "Настройки плагина были изменены"
270
 
271
+ #: bws_functions.php:635 class-bws-settings.php:235 class-bws-settings.php:263
272
  msgid "Save Changes"
273
  msgstr "Сохранить изменения"
274
 
275
+ #: bws_functions.php:656
276
  msgid ""
277
  "You can always look at premium options by checking the \"Pro Options\" in "
278
  "the \"Misc\" tab."
280
  "Вы всегда можете просмотреть премиум опции нажав на кнопку \"Pro опции\" на "
281
  "вкладке \"Разное\"."
282
 
283
+ #: bws_functions.php:857
284
  msgid "Add shortcode"
285
  msgstr "Добавить шорткод"
286
 
287
+ #: bws_functions.php:857
288
  msgid "Add BestWebSoft plugins' shortcodes using this button."
289
  msgstr "Добавьте шорткоды BestWebSoft плагинов с помощью этой кнопки."
290
 
291
+ #: bws_functions.php:967
292
  msgid "Close"
293
  msgstr "Закрыть"
294
 
295
+ #: bws_functions.php:1059
296
  msgid "Are you sure you want to restore default settings?"
297
  msgstr ""
298
  "Вы уверены что хотите восстановить все настройки плагина к настройкам по "
299
  "умолчанию?"
300
 
301
+ #: bws_functions.php:1062
302
  msgid "Yes, restore all settings"
303
  msgstr "Да, восстановить все настройки"
304
 
305
+ #: bws_functions.php:1063
306
  msgid "No, go back to the settings page"
307
  msgstr "Нет, вернуться на страницу настроек"
308
 
309
+ #: bws_functions.php:1125
310
  msgid "Plugin"
311
  msgstr "Плагин"
312
 
313
+ #: bws_functions.php:1134
314
  msgid "Shortcode settings"
315
  msgstr "Настройки шорткода"
316
 
317
+ #: bws_functions.php:1139
318
  msgid "The shortcode will be inserted"
319
  msgstr "Будет вставлен шорткод"
320
 
321
+ #: bws_functions.php:1191
322
  msgid "FAQ"
323
  msgstr "FAQ"
324
 
325
+ #: bws_functions.php:1197
326
  msgid "For more information:"
327
  msgstr "Для дополнительной информации:"
328
 
329
+ #: bws_functions.php:1198 bws_menu.php:475 class-bws-settings.php:870
330
  msgid "Documentation"
331
  msgstr "Документация"
332
 
333
+ #: bws_functions.php:1199 bws_menu.php:477 class-bws-settings.php:872
334
  msgid "Video Instructions"
335
  msgstr "Видео инструкции"
336
 
337
+ #: bws_functions.php:1200
338
  msgid "Submit a Request"
339
  msgstr "Отправить запрос"
340
 
341
+ #: bws_menu.php:105 class-bws-settings.php:971
342
  msgid "Wrong license key"
343
  msgstr "Неправильный лицензионный ключ"
344
 
345
+ #: bws_menu.php:127 class-bws-settings.php:997 class-bws-settings.php:1074
346
+ #: class-bws-settings.php:1112
347
  msgid ""
348
  "Something went wrong. Please try again later. If the error appears again, "
349
  "please contact us"
351
  "Что-то пошло не так. Повторите попытку позже. Если ошибка появится снова, "
352
  "пожалуйста, свяжитесь с нами"
353
 
354
+ #: bws_menu.php:127 class-bws-settings.php:997 class-bws-settings.php:1074
355
+ #: class-bws-settings.php:1112
356
  msgid "We are sorry for inconvenience."
357
  msgstr "Приносим извинения за неудобства."
358
 
359
+ #: bws_menu.php:134 class-bws-settings.php:1003 class-bws-settings.php:1118
360
  msgid "Wrong license key."
361
  msgstr "Неправильный лицензионный ключ."
362
 
363
+ #: bws_menu.php:136
364
  msgid ""
365
  "This license key is bound to another site. Change it via personal Client "
366
  "Area."
367
  msgstr ""
368
  "Этот лицензионный ключ привязан к другому сайту. Измените это в Client Area."
369
 
370
+ #: bws_menu.php:136
371
  msgid "Log in"
372
  msgstr "Авторизоваться"
373
 
374
+ #: bws_menu.php:138 bws_menu.php:385 deprecated.php:172
375
  msgid "Unfortunately, you have exceeded the number of available tries per day."
376
  msgstr "К сожалению, вы превысили количество доступных попыток."
377
 
378
+ #: bws_menu.php:140
379
  #, php-format
380
  msgid ""
381
  "Unfortunately, Your license has expired. To continue getting top-priority "
385
  "обновлений и приоритетной тех.поддержки, вам необходимо продлить лицензию в "
386
  "вашей %s"
387
 
388
+ #: bws_menu.php:142 class-bws-settings.php:1126
389
  msgid ""
390
  "Unfortunately, the Pro licence was already installed to this domain. The Pro "
391
  "Trial license can be installed only once."
393
  "К сожалению, Pro лицензия уже была установлена на этом доменен. Pro Trial "
394
  "лицензия может быть установлена только один раз."
395
 
396
+ #: bws_menu.php:148 class-bws-settings.php:1018
397
  msgid "The license key is valid."
398
  msgstr "Лицензионный ключ действителен."
399
 
400
+ #: bws_menu.php:150 class-bws-settings.php:1022
401
  msgid "Your license will expire on"
402
  msgstr "Ваша лицензия истечет"
403
 
404
+ #: bws_menu.php:153
405
  msgid "Congratulations! Pro Membership license is activated successfully."
406
  msgstr "Поздравляем! Pro Membership лицензия успешно активирована."
407
 
408
+ #: bws_menu.php:160 class-bws-settings.php:1136
409
  msgid ""
410
  "Something went wrong. Try again later or upload the plugin manually. We are "
411
  "sorry for inconvenience."
413
  "Что-то пошло не так. Повторите попытку позже или загрузите плагин вручную. "
414
  "Приносим извинения за неудобства."
415
 
416
+ #: bws_menu.php:171
417
  msgid "Please enter your license key."
418
  msgstr "Пожалуйста, введите Ваш лицензионный ключ."
419
 
420
+ #: bws_menu.php:183
421
  msgid "Not set"
422
  msgstr "Не задан"
423
 
424
+ #: bws_menu.php:186
425
  msgid "On"
426
  msgstr "Вкл"
427
 
428
+ #: bws_menu.php:186
429
  msgid "Off"
430
  msgstr "Выкл"
431
 
432
+ #: bws_menu.php:187 bws_menu.php:188 bws_menu.php:189 bws_menu.php:190
433
+ #: bws_menu.php:191 bws_menu.php:192 bws_menu.php:201
434
  msgid "N/A"
435
  msgstr "Неизвестно"
436
 
437
+ #: bws_menu.php:192
438
  msgid "Mb"
439
  msgstr "Мб"
440
 
441
+ #: bws_menu.php:193 bws_menu.php:194 bws_menu.php:195 bws_menu.php:199
442
  msgid "Yes"
443
  msgstr "Да"
444
 
445
+ #: bws_menu.php:193 bws_menu.php:194 bws_menu.php:195 bws_menu.php:199
446
  msgid "No"
447
  msgstr "Нет"
448
 
449
+ #: bws_menu.php:206
450
  msgid "WordPress Environment"
451
  msgstr "WordPress Системная среда"
452
 
453
+ #: bws_menu.php:208
454
  msgid "Home URL"
455
  msgstr "Основной адрес сайта"
456
 
457
+ #: bws_menu.php:209
458
  msgid "Website URL"
459
  msgstr "Адрес сайта"
460
 
461
+ #: bws_menu.php:210
462
  msgid "WP Version"
463
  msgstr "Версия WordPress"
464
 
465
+ #: bws_menu.php:211
466
  msgid "WP Multisite"
467
  msgstr "Мультисайт"
468
 
469
+ #: bws_menu.php:212
470
  msgid "WP Memory Limit"
471
  msgstr "Лимит памяти WordPress"
472
 
473
+ #: bws_menu.php:213
474
  msgid "Active Theme"
475
  msgstr "Текущая тема"
476
 
477
+ #: bws_menu.php:213 bws_menu.php:258 bws_menu.php:261
478
  #, php-format
479
  msgid "by %s"
480
  msgstr "%s"
481
 
482
+ #: bws_menu.php:217
483
  msgid "Server Environment"
484
  msgstr "Системная среда сервера"
485
 
486
+ #: bws_menu.php:219
487
  msgid "Operating System"
488
  msgstr "Операционная система"
489
 
490
+ #: bws_menu.php:220
491
  msgid "Server"
492
  msgstr "Тип сервера"
493
 
494
+ #: bws_menu.php:221
495
  msgid "PHP Version"
496
  msgstr "Версия PHP"
497
 
498
+ #: bws_menu.php:222
499
  msgid "PHP Allow URL fopen"
500
  msgstr "PHP Allow URL fopen"
501
 
502
+ #: bws_menu.php:223
503
  msgid "PHP Memory Limit"
504
  msgstr "Лимит памяти"
505
 
506
+ #: bws_menu.php:224
507
  msgid "Memory Usage"
508
  msgstr "Использование памяти"
509
 
510
+ #: bws_menu.php:225
511
  msgid "PHP Max Upload Size"
512
  msgstr "Макс. размер загружаемого файла"
513
 
514
+ #: bws_menu.php:226
515
  msgid "PHP Max Post Size"
516
  msgstr "Макс. размер записи"
517
 
518
+ #: bws_menu.php:227
519
  msgid "PHP Max Script Execute Time"
520
  msgstr "Макс. время выполнения сценария"
521
 
522
+ #: bws_menu.php:228
523
  msgid "PHP Exif support"
524
  msgstr "Поддержка PHP Exif"
525
 
526
+ #: bws_menu.php:229
527
  msgid "PHP IPTC support"
528
  msgstr "Поддержка PHP IPTC"
529
 
530
+ #: bws_menu.php:230
531
  msgid "PHP XML support"
532
  msgstr "Поддержка PHP XML"
533
 
534
+ #: bws_menu.php:236
535
  msgid "Database"
536
  msgstr "База данных"
537
 
538
+ #: bws_menu.php:238
539
  msgid "WP DB version"
540
  msgstr "Версия базы данных WordPress"
541
 
542
+ #: bws_menu.php:239
543
  msgid "MySQL version"
544
  msgstr "Версия MYSQL"
545
 
546
+ #: bws_menu.php:240
547
  msgid "SQL Mode"
548
  msgstr "Режим SQL"
549
 
550
+ #: bws_menu.php:244
551
  msgid "Active Plugins"
552
  msgstr "Активированные плагины"
553
 
554
+ #: bws_menu.php:249
555
  msgid "Inactive Plugins"
556
  msgstr "Неактивированные плагины"
557
 
558
+ #: bws_menu.php:270
559
  msgid "Please enter a valid email address."
560
  msgstr "Пожалуйста, введите валидный емайл."
561
 
562
+ #: bws_menu.php:272
563
  #, php-format
564
  msgid "Email with system info is sent to %s."
565
  msgstr "Емейл с системной информацией отправлен на %s."
566
 
567
+ #: bws_menu.php:276
568
  msgid "Thank you for contacting us."
569
  msgstr "Спасибо что связались с нами."
570
 
571
+ #: bws_menu.php:300
572
  msgid "Sorry, email message could not be delivered."
573
  msgstr "Извините, ваш емейл не может быть отправлен."
574
 
575
+ #: bws_menu.php:321 bws_menu.php:342 bws_menu.php:427 deprecated.php:27
576
  msgid "Plugins"
577
  msgstr "Плагины"
578
 
579
+ #: bws_menu.php:329 bws_menu.php:350 bws_menu.php:731 deprecated.php:28
580
  msgid "Themes"
581
  msgstr "Темы"
582
 
583
+ #: bws_menu.php:334 bws_menu.php:358 bws_menu.php:767
584
  msgid "System status"
585
  msgstr "Системная информация"
586
 
587
+ #: bws_menu.php:365
588
  msgid "Support"
589
  msgstr "Тех. поддержка"
590
 
591
+ #: bws_menu.php:366
592
  msgid "Manage purchased licenses & subscriptions"
593
  msgstr "Управление купленными лицензиями и подписками"
594
 
595
+ #: bws_menu.php:375
596
  #, php-format
597
  msgid "Get Access to %s+ Premium Plugins"
598
  msgstr "Получить доступ к %s+ премиум плагинам"
599
 
600
+ #: bws_menu.php:377
601
  msgid "Subscribe to Pro Membership"
602
  msgstr "Подписаться на Pro Membership"
603
 
604
+ #: bws_menu.php:387 bws_menu.php:408 class-bws-settings.php:925
605
+ #: deprecated.php:133
606
  msgid "Check license key"
607
  msgstr "Проверка лицензионного ключа"
608
 
609
+ #: bws_menu.php:395
610
  msgid "Enter your license key"
611
  msgstr "Ваш лицензионный ключ"
612
 
613
+ #: bws_menu.php:406 bws_menu.php:665 bws_menu.php:674
614
+ #: class-bws-settings.php:898 deprecated.php:170 deprecated.php:178
615
+ #: deprecated.php:268 deprecated.php:281
616
  msgid "Activate"
617
  msgstr "Активировать"
618
 
619
+ #: bws_menu.php:428
620
  msgid "Upload Plugin"
621
  msgstr "Добавить новый"
622
 
623
+ #: bws_menu.php:433
624
  #, php-format
625
  msgid ""
626
  "The plugin generated %d characters of <strong>unexpected output</strong> "
633
  "проблемы с RSS-лентами или другие неполадки, попробуйте деактивировать или "
634
  "удалить этот плагин."
635
 
636
+ #: bws_menu.php:435
637
  msgid ""
638
  "Plugin could not be activated because it triggered a <strong>fatal error</"
639
  "strong>."
641
  "Плагин не может быть активирован, поскольку он вызвал <strong>фатальную "
642
  "ошибку</strong>."
643
 
644
+ #: bws_menu.php:440
645
  msgid "Plugin <strong>activated</strong>."
646
  msgstr "Плагин <strong>активировано</strong>."
647
 
648
+ #: bws_menu.php:457
649
  msgid "Download Pro Plugin"
650
  msgstr "Загрузить Pro плагина"
651
 
652
+ #: bws_menu.php:459 class-bws-settings.php:853
653
  msgid "Your Pro plugin is ready"
654
  msgstr "Ваш Pro плагин готов"
655
 
656
+ #: bws_menu.php:461 class-bws-settings.php:855
657
  msgid "Your plugin has been zipped, and now is ready to download."
658
  msgstr "Ваш плагин заархивирован, и готов к загрузке."
659
 
660
+ #: bws_menu.php:464 class-bws-settings.php:858
661
  msgid "Download Now"
662
  msgstr "Загрузить сейчас"
663
 
664
+ #: bws_menu.php:468 class-bws-settings.php:862
665
  msgid "Need help installing the plugin?"
666
  msgstr "Нужна помощь в установке плагина?"
667
 
668
+ #: bws_menu.php:470 class-bws-settings.php:864
669
  msgid "How to install WordPress plugin from your admin Dashboard (ZIP archive)"
670
  msgstr "Как установить WordPress плагин с админ панели (ZIP архив)"
671
 
672
+ #: bws_menu.php:473 class-bws-settings.php:868
673
  msgid "Get Started"
674
  msgstr "Начать "
675
 
676
+ #: bws_menu.php:479 class-bws-settings.php:874
677
  msgid "Knowledge Base"
678
  msgstr "База Знаний"
679
 
680
+ #: bws_menu.php:482
681
  msgid "Licenses & Domains"
682
  msgstr "Лицензии & Домены"
683
 
684
+ #: bws_menu.php:487
685
  msgid "Client Area"
686
  msgstr "Client Area"
687
 
688
+ #: bws_menu.php:486
689
  #, php-format
690
  msgid ""
691
  "Manage your license(-s) and change domain names using the %s at BestWebSoft."
693
  "Управляйте своей лицензией(-ами) и меняйте доменные имена, используя %s на "
694
  "BestWebSoft."
695
 
696
+ #: bws_menu.php:491
697
  msgid "Return to BestWebSoft Panel"
698
  msgstr "Возврат к BestWebSoft Panel"
699
 
700
+ #: bws_menu.php:506 bws_menu.php:541 bws_menu.php:706
701
  msgid "All"
702
  msgstr "Все"
703
 
704
+ #: bws_menu.php:514 bws_menu.php:754
705
  msgid "Installed"
706
  msgstr "Установленные"
707
 
708
+ #: bws_menu.php:522
709
  msgid "Not Installed"
710
  msgstr "Не установленные"
711
 
712
+ #: bws_menu.php:529
713
  msgid "Filter results"
714
  msgstr "Фильтр результатов"
715
 
716
+ #: bws_menu.php:532 bws_menu.php:697
717
  msgid "Category"
718
  msgstr "Категория"
719
 
720
+ #: bws_menu.php:617
721
  msgid "Not installed"
722
  msgstr "Не установлен"
723
 
724
+ #: bws_menu.php:621
725
  msgid "Renew to get updates"
726
  msgstr "Продлить для обновления"
727
 
728
+ #: bws_menu.php:624
729
  #, php-format
730
  msgid "Update to v %s"
731
  msgstr "Обновить до версии %s"
732
 
733
+ #: bws_menu.php:639 bws_menu.php:668
734
  msgid "Get Pro"
735
  msgstr "Получить Pro"
736
 
737
+ #: bws_menu.php:645 class-bws-settings.php:202 class-bws-settings.php:1206
738
  msgid "Upgrade to Pro"
739
  msgstr "Обновить до Pro"
740
 
741
+ #: bws_menu.php:665 bws_menu.php:674
742
  msgid "Activate this plugin"
743
  msgstr "Активировать плагин"
744
 
745
+ #: bws_menu.php:679
746
  msgid "Install this plugin"
747
  msgstr "Установить этот плагин"
748
 
749
+ #: bws_menu.php:679
750
  msgid "Install Now"
751
  msgstr "Установить"
752
 
753
+ #: bws_menu.php:692
754
  msgid "Nothing found. Try another criteria."
755
  msgstr "Ничего не найдено. Попробуйте другие критерии."
756
 
757
+ #: bws_menu.php:743
758
  #, php-format
759
  msgid "By %s"
760
  msgstr "%s"
761
 
762
+ #: bws_menu.php:752
763
  msgid "Already Installed"
764
  msgstr "Уже установлена"
765
 
766
+ #: bws_menu.php:764
767
  msgid "Browse More WordPress Themes"
768
  msgstr "Обзор WordPress тем"
769
 
770
+ #: bws_menu.php:783
771
  msgid "Send to support"
772
  msgstr "Отправить в тех. поддержку"
773
 
774
+ #: bws_menu.php:790
775
  msgid "Send to custom email &#187;"
776
  msgstr "Отправить на емейл &#187;"
777
 
778
+ #: class-bws-settings.php:174
779
  msgid "Information"
780
  msgstr "Информация"
781
 
782
+ #: class-bws-settings.php:189
783
  msgid "Inactive"
784
  msgstr "Неактивна"
785
 
786
+ #: class-bws-settings.php:197
787
  msgid "Expired"
788
  msgstr "Истекла"
789
 
790
+ #: class-bws-settings.php:200
791
  #, php-format
792
  msgid "%s day(-s) left"
793
  msgstr "%s дней осталось"
794
 
795
+ #: class-bws-settings.php:206
796
  #, php-format
797
  msgid "Expired on %s"
798
  msgstr "Истекает %s"
799
 
800
+ #: class-bws-settings.php:206
801
  msgid "Renew Now"
802
  msgstr "Возобновить сейчас"
803
 
804
+ #: class-bws-settings.php:208
805
  msgid "Active"
806
  msgstr "Активна"
807
 
808
+ #: class-bws-settings.php:214
809
  msgid "License"
810
  msgstr "Лицензия"
811
 
812
+ #: class-bws-settings.php:217
813
  msgid "Status"
814
  msgstr "Статус"
815
 
816
+ #: class-bws-settings.php:221
817
  msgid "Version"
818
  msgstr "Версия"
819
 
820
+ #: class-bws-settings.php:368
821
  msgid "All plugin settings were restored."
822
  msgstr "Все настройки плагина были восстановлены."
823
 
824
+ #: class-bws-settings.php:531
825
  msgid "Custom Code"
826
  msgstr "Пользовательский код"
827
 
828
+ #: class-bws-settings.php:537
829
+ msgid ""
830
+ "The ability to add custom code is available in the Pro version. If the Pro "
831
+ "version is not available please contact us via Help Center"
832
+ msgstr ""
833
+ "Возможность добавления пользовательского кода доступна в версии Pro. Если "
834
+ "версия Pro недоступна, свяжитесь с нами через Справочный центр."
835
+
836
+ #: class-bws-settings.php:548
837
  msgid "You do not have sufficient permissions to edit plugins for this site."
838
  msgstr ""
839
  "У вас недостаточно полномочий, чтобы редактировать плагины на этом сайте."
840
 
841
+ #: class-bws-settings.php:554
842
  msgid "These styles will be added to the header on all pages of your site."
843
  msgstr "Эти стили будут добавлены в хедер на всех страницах вашего сайта."
844
 
845
+ #: class-bws-settings.php:558
846
  #, php-format
847
  msgid ""
848
+ "This PHP code will be hooked to the %s Action and will be printed on front "
849
  "end only."
850
  msgstr ""
851
  "Этот PHP код будет прикреплен к %s аction и будет добавлен только во "
852
  "фронтенде."
853
 
854
+ #: class-bws-settings.php:562
855
  msgid "These code will be added to the header on all pages of your site."
856
  msgstr "Этот код будет добавлен в хедер на всех страницах вашего сайта."
857
 
858
+ #: class-bws-settings.php:574
 
 
 
 
 
 
 
 
 
859
  msgid "Browsing"
860
  msgstr "Просмотр"
861
 
862
+ #: class-bws-settings.php:586
863
  #, php-format
864
  msgid "Activate custom %s code."
865
  msgstr "Активировать пользовательский %s код."
866
 
867
+ #: class-bws-settings.php:597
868
  #, php-format
869
  msgid "Learn more about %s"
870
  msgstr "Подробнее о %s"
871
 
872
+ #: class-bws-settings.php:629
873
  msgid "Miscellaneous Settings"
874
  msgstr "Прочие настройки"
875
 
876
+ #: class-bws-settings.php:640 class-bws-settings.php:714
877
  #, php-format
878
  msgid ""
879
+ "It is prohibited to change %1$s settings on this site in the %2$s network "
880
  "settings."
881
  msgstr ""
882
+ "Cетевыми настройками %1$s запрещается изменять настройки %2$s на этом сайте."
883
 
884
+ #: class-bws-settings.php:645 class-bws-settings.php:719
885
  #, php-format
886
  msgid ""
887
+ "It is prohibited to view %1$s settings on this site in the %2$s network "
888
+ "settings."
889
  msgstr ""
890
+ "Cетевыми настройками %1$s запрещается просматривать настройки %2$s на этом "
891
+ "сайте."
892
 
893
+ #: class-bws-settings.php:656
894
  msgid "Pro Options"
895
  msgstr "Pro опции"
896
 
897
+ #: class-bws-settings.php:665
898
  msgid "Enable to display plugin Pro options."
899
  msgstr "Включите для отображения Pro опций плагина."
900
 
901
+ #: class-bws-settings.php:671
902
  msgid "Track Usage"
903
  msgstr "Собирать статистику"
904
 
905
+ #: class-bws-settings.php:680
906
  msgid ""
907
  "Enable to allow tracking plugin usage anonymously in order to make it better."
908
  msgstr ""
909
  "Включить, чтобы разрешить анонимно отслеживать использование и сделать "
910
  "плагин лучше."
911
 
912
+ #: class-bws-settings.php:685
913
  msgid "Default Settings"
914
  msgstr "Настройки по умолчанию"
915
 
916
+ #: class-bws-settings.php:687
917
  msgid "Restore Settings"
918
  msgstr "Восстановить настройки"
919
 
920
+ #: class-bws-settings.php:688
921
  msgid "This will restore plugin settings to defaults."
922
  msgstr "Восстановить все настройки плагина к настройкам по умолчанию."
923
 
924
+ #: class-bws-settings.php:703
925
  msgid "Import / Export"
926
  msgstr "Импорт / Экспорт"
927
 
928
+ #: class-bws-settings.php:837
929
  msgid "License Key"
930
  msgstr "Лицензионный ключ"
931
 
932
+ #: class-bws-settings.php:901
933
  #, php-format
934
  msgid "Enter your license key to activate %s and get premium plugin features."
935
  msgstr ""
936
  "Введите лицензионный ключ для активации %s и получения дополнительных "
937
  "возможностей плагина."
938
 
939
+ #: class-bws-settings.php:904 class-bws-settings.php:1122 deprecated.php:275
940
  msgid ""
941
  "Unfortunately, you have exceeded the number of available tries per day. "
942
  "Please, upload the plugin manually."
944
  "К сожалению, вы превысили количество доступных попыток в день. Пожалуйста, "
945
  "загрузите плагин вручную."
946
 
947
+ #: class-bws-settings.php:908 deprecated.php:260
948
  #, php-format
949
  msgid "Start Your Free %s-Day Trial Now"
950
  msgstr "Попробуйте %s-дневную Trial версию бесплатно"
951
 
952
+ #: class-bws-settings.php:927
953
  msgid ""
954
  "If necessary, you can check if the license key is correct or reenter it in "
955
  "the field below."
957
  "При необходимости вы можете проверить валидность лицензионного ключа или "
958
  "повторно ввести его в поле выше."
959
 
960
+ #: class-bws-settings.php:938
961
  msgid "Manage License Settings"
962
  msgstr "Управление настройками лицензий"
963
 
964
+ #: class-bws-settings.php:940
965
  msgid "Login to Client Area"
966
  msgstr "Зайти в Client Area"
967
 
968
+ #: class-bws-settings.php:942
969
  msgid ""
970
  "Manage active licenses, download BWS products, and view your payment history "
971
  "using BestWebSoft Client Area."
973
  "Управляй активными лицензиями, загружай BWS продукты, а также просматривай "
974
  "историю платежей с помощью BestWebSoft Client Area."
975
 
976
+ #: class-bws-settings.php:964
977
+ msgid "Security check"
978
+ msgstr "Проверка безопасности"
979
+
980
+ #: class-bws-settings.php:1005 class-bws-settings.php:1120
981
  msgid "This license key is bound to another site."
982
  msgstr "Этот лицензионный ключ привязан к другому сайту."
983
 
984
+ #: class-bws-settings.php:1007
985
  msgid ""
986
  "This license key is valid, but Your license has expired. If you want to "
987
  "update our plugin in future, you should extend the license."
989
  "Лицензионный ключ принят, но срок действия лицензии истек. Если вы хотите "
990
  "обновлять плагин в будущем, вы должны продлить лицензию."
991
 
992
+ #: class-bws-settings.php:1009
993
  msgid "Unfortunately, you have exceeded the number of available tries."
994
  msgstr "К сожалению, вы превысили количество доступных попыток."
995
 
996
+ #: class-bws-settings.php:1011
997
  msgid ""
998
  "Unfortunately, the Pro Trial licence was already installed to this domain. "
999
  "The Pro Trial license can be installed only once."
1001
  "К сожалению, Pro Trial версия плагина уже устанавливалась на этот домен. Pro "
1002
  "Trial версию можно устанавливать лишь один раз."
1003
 
1004
+ #: class-bws-settings.php:1016
1005
  msgid "The Pro Trial license key is valid."
1006
  msgstr "Ключ Pro Trial версии действителен."
1007
 
1008
+ #: class-bws-settings.php:1029 deprecated.php:155
1009
  #, php-format
1010
  msgid ""
1011
  "In order to continue using the plugin it is necessary to buy a %s license."
1012
  msgstr ""
1013
  "Чтобы продолжить пользоваться плагином, необходимо приобрести %s лицензию."
1014
 
1015
+ #: class-bws-settings.php:1124
1016
  #, php-format
1017
  msgid ""
1018
  "Unfortunately, Your license has expired. To continue getting top-priority "
1022
  "обновлений и приоритетной тех.поддержки, вам необходимо продлить лицензию в "
1023
  "вашей %s."
1024
 
1025
+ #: class-bws-settings.php:1173
1026
  msgid "Please, enter Your license key"
1027
  msgstr "Пожалуйста, введите ваш лицензионный ключ"
1028
 
1029
+ #: class-bws-settings.php:1189
1030
  msgid "Need Help?"
1031
  msgstr "Нужна помощь?"
1032
 
1033
+ #: class-bws-settings.php:1191
1034
  msgid "Read the Instruction"
1035
  msgstr "Читать инструкцию"
1036
 
1037
+ #: class-bws-settings.php:1196
1038
  msgid "Watch the Video"
1039
  msgstr "Смотреть видео"
1040
 
1041
+ #: class-bws-settings.php:1210
1042
  msgid "Start Your Free Trial"
1043
  msgstr "Использовать бесплатную Trial версию"
1044
 
1045
+ #: class-bws-settings.php:1248
1046
  msgid "Request a Feature"
1047
  msgstr "Предложить функционал"
1048
 
1049
+ #: class-bws-settings.php:1254
1050
  #, php-format
1051
  msgid "How can we improve %s?"
1052
  msgstr "Как нам улучшить %s?"
1053
 
1054
+ #: class-bws-settings.php:1256
1055
  msgid "We look forward to hear your ideas."
1056
  msgstr "Мы с нетерпением ждем ваших идей."
1057
 
1058
+ #: class-bws-settings.php:1258
1059
  msgid "Describe your idea"
1060
  msgstr "Опишите свою идею"
1061
 
1062
+ #: class-bws-settings.php:1261 deactivation-form.php:123
1063
  msgid "Send website data and allow to contact me back"
1064
  msgstr "Отправить данные сайта и позволить связаться со мной"
1065
 
1066
+ #: class-bws-settings.php:1266
1067
  msgid "Submit"
1068
  msgstr "Отправить"
1069
 
1070
+ #: class-bws-settings.php:1267 deactivation-form.php:130
1071
  msgid "Processing"
1072
  msgstr "Обработка"
1073
 
1074
+ #: class-bws-settings.php:1268
1075
  msgid "Thank you!"
1076
  msgstr "Спасибо!"
1077
 
1078
+ #: deactivation-form.php:25
1079
  msgid "Need help? We are ready to answer your questions."
1080
  msgstr "Нужна помощь? Мы готовы ответить на ваши вопросы."
1081
 
1082
+ #: deactivation-form.php:25
1083
  msgid "Contact Support"
1084
  msgstr "Связаться с тех. поддержкой"
1085
 
1086
+ #: deactivation-form.php:30
1087
  msgid "The plugin is not working"
1088
  msgstr "Плагин не работает"
1089
 
1090
+ #: deactivation-form.php:32
1091
+ msgid "Kindly share what didn't work so we can fix it in future updates..."
1092
+ msgstr ""
1093
+ "Пожалуйста, сообщите, что не работает, чтобы мы смогли исправить это в "
1094
+ "будущих обновлениях..."
1095
+
1096
+ #: deactivation-form.php:36
1097
  msgid "The plugin didn't work as expected"
1098
  msgstr "Плагин не работает, как ожидалось"
1099
 
1100
+ #: deactivation-form.php:38
1101
+ msgid "What did you expect?"
1102
+ msgstr "Что именно вы ожидали?"
1103
+
1104
+ #: deactivation-form.php:42
1105
  msgid "The plugin suddenly stopped working"
1106
  msgstr "Плагин внезапно перестал работать"
1107
 
1108
+ #: deactivation-form.php:49
1109
  msgid "The plugin broke my site"
1110
  msgstr "Плагин сломал мой сайт"
1111
 
1112
+ #: deactivation-form.php:56
1113
  msgid "I couldn't understand how to get it work"
1114
  msgstr "Я не могу понять, как заставить его работать"
1115
 
1116
+ #: deactivation-form.php:63
1117
  msgid "I found a better plugin"
1118
  msgstr "Я нашел плагин лучше"
1119
 
1120
+ #: deactivation-form.php:65
1121
+ msgid "What's the plugin name?"
1122
+ msgstr "Какое название плагина?"
1123
+
1124
+ #: deactivation-form.php:69
1125
  msgid "The plugin is great, but I need specific feature that you don't support"
1126
  msgstr ""
1127
  "Плагин замечательный, но мне нужен определенный функционал, которого у вас "
1128
  "нет"
1129
 
1130
+ #: deactivation-form.php:71
1131
+ msgid "What feature?"
1132
+ msgstr "Какой функционал?"
1133
+
1134
+ #: deactivation-form.php:75
1135
  msgid "I no longer need the plugin"
1136
  msgstr "Мне больше не нужен плагин"
1137
 
1138
+ #: deactivation-form.php:81
1139
  msgid "It's a temporary deactivation, I'm just debugging an issue"
1140
  msgstr "Это временная деактивация, я просто отлаживаю проблему"
1141
 
1142
+ #: deactivation-form.php:87
1143
  msgid "Other"
1144
  msgstr "Другое"
1145
 
1146
+ #: deactivation-form.php:96
1147
  msgid "Quick Feedback"
1148
  msgstr "Быстрый отзыв"
1149
 
1150
+ #: deactivation-form.php:98
1151
  msgid "If you have a moment, please let us know why you are deactivating"
1152
  msgstr ""
1153
  "Если у вас есть время, пожалуйста, сообщите нам, почему вы деактивируете "
1154
  "плагин"
1155
 
1156
+ #: deactivation-form.php:128
1157
  msgid "Submit and Deactivate"
1158
  msgstr "Отправить и Деактивировать"
1159
 
1160
+ #: deactivation-form.php:129
1161
  msgid "Skip and Deactivate"
1162
  msgstr "Пропустить и Деактивировать"
1163
 
1164
+ #: deactivation-form.php:275
1165
  msgid "Please tell us the reason so we can improve it."
1166
  msgstr "Пожалуйста, сообщите нам причину, чтобы мы могли улучшить плагин."
1167
 
1168
+ #: deprecated.php:29
1169
  msgid "System Status"
1170
  msgstr "Системная информация"
1171
 
1172
+ #: deprecated.php:129
1173
  msgid ""
1174
  "If necessary, you can check if the license key is correct or reenter it in "
1175
  "the field below. You can find your license key on your personal page - "
1179
  "повторно ввести его в поле ниже. Вы можете найти ваш лицензионный ключ на "
1180
  "своей личной странице - Client Area - на нашем сайте"
1181
 
1182
+ #: deprecated.php:129
1183
  msgid ""
1184
  "(your username is the email address specified during the purchase). If "
1185
  "necessary, please submit \"Lost your password?\" request."
1187
  "(ваше имя пользователя - это емейл, указанный при покупке). При "
1188
  "необходимости нажмите \"Забыли пароль?\"."
1189
 
1190
+ #: deprecated.php:155
1191
  msgid "After that, you can activate it by entering your license key."
1192
  msgstr "После этого вы сможете активировать его введя лицензионный ключ."
1193
 
1194
+ #: deprecated.php:158 deprecated.php:253
1195
  msgid "License key can be found in the"
1196
  msgstr "Лицензионный ключ можно найти в"
1197
 
1198
+ #: deprecated.php:160 deprecated.php:255
1199
  msgid "(your username is the email address specified during the purchase)."
1200
  msgstr "(ваше имя пользователя - это емейл, указанный при покупке)."
1201
 
1202
+ #: deprecated.php:187
1203
  msgid ""
1204
  "Congratulations! The Pro license of the plugin is activated successfully."
1205
  msgstr "Поздравляем! Pro версия плагина успешно активирована."
1206
 
1207
+ #: deprecated.php:189 deprecated.php:233
1208
  msgid "Please, go to"
1209
  msgstr "Пожалуйста, перейдите на"
1210
 
1211
+ #: deprecated.php:189 deprecated.php:233
1212
  msgid "the setting page"
1213
  msgstr "страницу настроек"
1214
 
1215
+ #: deprecated.php:207
1216
  msgid "Restore all plugin settings to defaults"
1217
  msgstr "Восстановить все настройки плагина к настройкам по умолчанию"
1218
 
1219
+ #: deprecated.php:209
1220
  msgid "Restore settings"
1221
  msgstr "Восстановить настройки"
1222
 
1223
+ #: deprecated.php:231
1224
  msgid ""
1225
  "Congratulations! Pro version of the plugin is installed and activated "
1226
  "successfully."
1227
  msgstr "Поздравляем! Pro версия плагина успешно загружена и активирована."
1228
 
1229
+ #: deprecated.php:242
1230
  msgid "Show Pro features"
1231
  msgstr "Показать Pro опции"
1232
 
1233
+ #: deprecated.php:249
1234
  msgid "Enter your license key to install and activate"
1235
  msgstr "Введите лицензионный ключ для установки и активации"
1236
 
1237
+ #: deprecated.php:251
1238
  msgid "version of the plugin."
1239
  msgstr "версия плагина."
1240
 
1241
+ #: product_list.php:9
1242
  msgid "Admin Tools"
1243
  msgstr "Инструменты"
1244
 
1245
+ #: product_list.php:10
1246
  msgid "Content"
1247
  msgstr "Контент"
1248
 
1249
+ #: product_list.php:11
1250
  msgid "eCommerce"
1251
  msgstr "Коммерция"
1252
 
1253
+ #: product_list.php:12
1254
  msgid "Marketing"
1255
  msgstr "Маркетинг"
1256
 
1257
+ #: product_list.php:13
1258
  msgid "Navigation"
1259
  msgstr "Навигация"
1260
 
1261
+ #: product_list.php:14
1262
  msgid "Recommended"
1263
  msgstr "Рекомендованные"
1264
 
1265
+ #: product_list.php:15
1266
  msgid "Security"
1267
  msgstr "Безопасность"
1268
 
1269
+ #: product_list.php:16
1270
  msgid "SEO"
1271
  msgstr "Поисковая оптимизация"
1272
 
1273
+ #: product_list.php:17
1274
  msgid "SMM"
1275
  msgstr "СММ"
1276
 
1277
+ #: product_list.php:24
1278
  msgid "Give a birth for your bike rental and booking WordPress website."
1279
  msgstr "Создайте прокат и бронирование велосипедов на сайте WordPress."
1280
 
1281
+ #: product_list.php:36
1282
  msgid "Best secure captcha plugin to protect your WordPress forms."
1283
  msgstr "Лучший плагин капчи, который защитит формы вашего сайта WordPress."
1284
 
1285
+ #: product_list.php:46
1286
  msgid "Create your own rental website for car renting and booking."
1287
  msgstr "Создайте свой собственный сайт проката и резервирования автомобилей."
1288
 
1289
+ #: product_list.php:58
1290
  msgid ""
1291
  "Add columns with custom content to WordPress website pages, posts, widgets, "
1292
  "etc."
1294
  "Добавляйте столбцы с пользовательским контентом в ваш WordPress сайт на "
1295
  "страницы, посты, виджеты, и т.д."
1296
 
1297
+ #: product_list.php:65
1298
  msgid ""
1299
  "Allow customers to reach you using secure contact form plugin any website "
1300
  "must have."
1302
  "Предоставьте возможность клиентам осуществлять связь с вами через безопасный "
1303
  "плагин контактной формы, который должен иметь любой сайт."
1304
 
1305
+ #: product_list.php:75
1306
  msgid "Add unlimited number of contact forms to WordPress website."
1307
  msgstr ""
1308
  "Добавляйте неограниченное количество контактных форм на ваш сайт WordPress."
1309
 
1310
+ #: product_list.php:85
1311
  msgid "Save and manage Contact Form messages. Never lose important data."
1312
  msgstr ""
1313
  "Сохраняйте и управляйте сообщениями плагина Contact Form. Никогда не теряйте "
1314
  "важные данные."
1315
 
1316
+ #: product_list.php:95
1317
  msgid "Add unlimited custom pages to WordPress admin dashboard."
1318
  msgstr ""
1319
  "Добавляйте неограниченное количество пользовательских страниц в панели "
1320
  "администратора WordPress."
1321
 
1322
+ #: product_list.php:105
1323
  msgid ""
1324
  "Add custom post types and taxonomies to WordPress website search results."
1325
  msgstr ""
1326
  "Добавляйте пользовательские типы постов и таксономии в результаты поиска на "
1327
  "вашем сайте WordPress."
1328
 
1329
+ #: product_list.php:115
1330
  msgid "Add PayPal and 2CO donate buttons to receive charity payments."
1331
  msgstr ""
1332
  "Добавляйте кнопки PayPal и 2CO, чтобы получать пожертвования и "
1333
  "благотворительные взносы."
1334
 
1335
+ #: product_list.php:122
1336
  msgid ""
1337
  "Get latest error log messages to diagnose website problems. Define and fix "
1338
  "issues faster."
1340
  "Получайте последние сообщения из журнала ошибок для диагностики проблем "
1341
  "сайта. Быстрее выявляйте и устраняйте проблемы."
1342
 
1343
+ #: product_list.php:129
1344
  msgid ""
1345
  "Add Facebook Follow, Like, and Share buttons to WordPress posts, pages, and "
1346
  "widgets."
1348
  "Добавляйте кнопки Facebook \"Подписаться\", \"Нравится\" и \"Поделиться\" в "
1349
  "посты, страницы и виджеты сайта WordPress."
1350
 
1351
+ #: product_list.php:139
1352
  msgid ""
1353
  "Add beautiful galleries, albums & images to your WordPress website in a few "
1354
  "clicks."
1356
  "Добавляйте живописные галереи, альбомы, изображения и категории галереи на "
1357
  "ваш сайт WordPress всего в несколько кликов."
1358
 
1359
+ #: product_list.php:149
1360
  msgid ""
1361
  "Stronger security solution which protects your WordPress website from hacks "
1362
  "and unauthorized login attempts."
1364
  "Мощнейшее решение для безопасности, которое защищает ваш сайт WordPress от "
1365
  "взломов и неавторизованных попыток входа в систему."
1366
 
1367
+ #: product_list.php:159
1368
  msgid ""
1369
  "Add Adsense ads to WordPress website pages, posts, custom posts, search "
1370
  "results, categories, tags, and widgets."
1372
  "Добавляйте рекламу сервиса Adsense на страницы, посты, пользовательские "
1373
  "посты, результаты поиска, категории, теги и виджеты сайта WordPress."
1374
 
1375
+ #: product_list.php:169
1376
  msgid "Add Google Analytics code to WordPress website and track basic stats."
1377
  msgstr ""
1378
  "Добавляйте код Google Analytics на ваш сайт WordPress и отслеживайте базовую "
1379
  "статистику сайта."
1380
 
1381
+ #: product_list.php:179
1382
  msgid "Protect WordPress website forms from spam entries with reCaptcha."
1383
  msgstr "Защищайте формы вашего сайта WordPress от спама с помощью reCaptcha."
1384
 
1385
+ #: product_list.php:189
1386
  msgid "Add customized Google maps to WordPress posts, pages and widgets."
1387
  msgstr ""
1388
  "Добавляйте пользовательские карты Google в посты, страницы и виджеты "
1389
  "WordPress."
1390
 
1391
+ #: product_list.php:199
1392
  msgid ""
1393
  "Generate and add XML sitemap to WordPress website. Help search engines index "
1394
  "your blog."
1396
  "Создавайте и добавляйте файлы XML sitemap на ваш сайт WordPress. Помогите "
1397
  "поисковым системам проиндексировать ваш блог."
1398
 
1399
+ #: product_list.php:209
1400
  msgid ""
1401
  "Replace external WordPress website links with Google shortlinks and track "
1402
  "click stats."
1404
  "Замените внешние ссылки сайта WordPress на короткие ссылки Google и "
1405
  "отслеживайте статистику кликов."
1406
 
1407
+ #: product_list.php:216
1408
  msgid ""
1409
  "Protect WordPress website – allow and deny access for certain IP addresses, "
1410
  "hostnames, etc."
1412
  "Защитите свой сайт WordPress - предоставляйте и запрещайте доступ с "
1413
  "определенных IP-адресов, имен хостов и т.д."
1414
 
1415
+ #: product_list.php:226
1416
  msgid ""
1417
  "Create your personal job board and listing WordPress website. Search jobs, "
1418
  "submit CV/resumes, choose candidates."
1421
  "WordPress. Осуществляйте поиск вакансий, подачу резюме/CV кандидата, выбор "
1422
  "кандидатов."
1423
 
1424
+ #: product_list.php:233
1425
  msgid ""
1426
  "Protect WordPress website against brute force attacks. Limit rate of login "
1427
  "attempts."
1429
  "Защищайте свой сайт WordPress от брутфорс-атак. Ограничивайте количество "
1430
  "попыток ввода логина."
1431
 
1432
+ #: product_list.php:243
1433
  msgid ""
1434
  "Add LinkedIn Share and Follow buttons to WordPress posts, pages and widgets. "
1435
  "5 plugins included – profile, insider, etc."
1438
  "страницам и виджетам WordPress. 5 плагинов включено - Профиль, Инсайдер и т."
1439
  "д."
1440
 
1441
+ #: product_list.php:253
1442
  msgid ""
1443
  "Translate WordPress website content to other languages manually. Create "
1444
  "multilingual pages, posts, widgets, menus, etc."
1446
  "Переводите содержимое сайта WordPress на другие языки вручную. Создавайте "
1447
  "многоязычные страницы, посты, виджеты, меню и т.д."
1448
 
1449
+ #: product_list.php:263
1450
  msgid ""
1451
  "Add customizable pagination to WordPress website. Split long content to "
1452
  "multiple pages for better navigation."
1454
  "Добавляйте настраиваемую пагинацию на ваш сайт WordPress. Разбивайте "
1455
  "объемный контент на несколько страниц для лучшей навигации."
1456
 
1457
+ #: product_list.php:273
1458
  msgid ""
1459
  "Generate PDF files and print WordPress posts/pages. Customize document "
1460
  "header/footer styles and appearance."
1462
  "Создавайте PDF-файлы и печатайте посты/страницы сайта WordPress. "
1463
  "Настраивайте стили хедера/футера документа и его внешний вид."
1464
 
1465
+ #: product_list.php:283
1466
  msgid ""
1467
  "Add Pinterest Follow, Pin It buttons and profile widgets (Pin, Board, "
1468
  "Profile) to WordPress posts, pages and widgets."
1470
  "Добавляйте кнопки Pinterest \"Подписаться\", \"Сохранить\" и виджеты профиля "
1471
  "(Пин, Доска, Профиль) к постам, страницам и виджетам WordPress."
1472
 
1473
+ #: product_list.php:293
1474
  msgid ""
1475
  "Create your personal portfolio WordPress website. Manage and showcase past "
1476
  "projects to get more clients."
1478
  "Создавайте и добавляйте портфолио на свой сайт WordPress. Управляйте и "
1479
  "демонстрируйте прошлые проекты, чтобы привлечь больше клиентов."
1480
 
1481
+ #: product_list.php:303
1482
  msgid "Export WordPress posts to CSV file format easily. Configure data order."
1483
  msgstr ""
1484
  "С легкостью экспортируйте посты WordPress в файлы формата CSV. Настраивайте "
1485
  "порядок отображения данных."
1486
 
1487
+ #: product_list.php:313
1488
  msgid ""
1489
  "Add extra fields to default WordPress user profile. The easiest way to "
1490
  "create and manage additional custom values."
1492
  "Добавляйте пользовательские поля в стандартный профиль WordPress. Самый "
1493
  "простой способ создания и управления дополнительными полями."
1494
 
1495
+ #: product_list.php:323
1496
  msgid ""
1497
  "Add and display HTML advertisement banner on WordPress website. Customize "
1498
  "bar styles and appearance."
1500
  "Добавляйте и отображайте баннерную HTML рекламу на сайте WordPress. "
1501
  "Настраивайте стили и внешний вид баннера."
1502
 
1503
+ #: product_list.php:333
1504
  msgid ""
1505
  "Add customizable quotes and tips blocks to WordPress posts, pages and "
1506
  "widgets."
1508
  "Добавляйте настраиваемые цитаты и подсказки к постам, страницам и виджетам "
1509
  "WordPress."
1510
 
1511
+ #: product_list.php:340
1512
  msgid ""
1513
  "Add rating plugin to your WordPress website to receive feedback from your "
1514
  "customers."
1516
  "Добавляйте систему оценивания и рейтинга на ваш сайт WordPress и получайте "
1517
  "отзывы от ваших клиентов."
1518
 
1519
+ #: product_list.php:350
1520
  msgid ""
1521
  "Create your personal real estate WordPress website. Sell, rent and buy "
1522
  "properties. Add, search and browse listings easily."
1525
  "Продавайте, арендуйте и покупайте недвижимость. Легко добавляйте, находите и "
1526
  "просматривайте листинги."
1527
 
1528
+ #: product_list.php:360
1529
  msgid ""
1530
  "Add related, featured, latest, and popular posts to your WordPress website. "
1531
  "Connect your blog readers with a relevant content."
1533
  "Добавляйте похожие, избранные, последние и популярные посты на ваш сайт "
1534
  "WordPress. Предоставляйте своим читателям контент схожей тематики."
1535
 
1536
+ #: product_list.php:367
1537
  msgid ""
1538
  "Send bulk email messages to WordPress users. Custom templates, advanced "
1539
  "settings and detailed reports."
1541
  "Осуществляйте массовую рассылку писем пользователям WordPress. "
1542
  "Пользовательские шаблоны, дополнительные настройки и подробные отчеты."
1543
 
1544
+ #: product_list.php:377
1545
  msgid ""
1546
  "The best responsive slider plugin for your WordPress website. Create "
1547
  "beautifully animated slides just in a few clicks."
1549
  "Самый лучший адаптивный слайдер для вашего сайта WordPress. Создавайте "
1550
  "красиво анимированные слайды всего в несколько кликов."
1551
 
1552
+ #: product_list.php:384
1553
  msgid ""
1554
  "Configure SMTP server to receive email messages from WordPress to Gmail, "
1555
  "Yahoo, Hotmail and other services."
1558
  "WordPress на такие почтовые службы, как Gmail, Yahoo, Hotmail и многие "
1559
  "другие."
1560
 
1561
+ #: product_list.php:391
1562
  msgid ""
1563
  "Add social media buttons and widgets to WordPress posts, pages and widgets. "
1564
  "FB, Twitter, Pinterest, LinkedIn."
1566
  "Добавляйте кнопки и виджеты социальных сетей к постам, страницам и виджетам "
1567
  "WordPress. FB, Twitter, Pinterest, LinkedIn."
1568
 
1569
+ #: product_list.php:401
1570
  msgid ""
1571
  "Add social media login, registration, and commenting to your WordPress "
1572
  "website."
1574
  "Добавляйте на свой сайт WordPress возможность входа, регистрации и "
1575
  "комментирования с использованием существующих аккаунтов социальных сетей."
1576
 
1577
+ #: product_list.php:408
1578
  msgid ""
1579
  "Add email newsletter sign up form to WordPress posts, pages and widgets. "
1580
  "Collect data and subscribe your users."
1582
  "Добавляйте форму подписки на новостную рассылку в посты, страницы и виджеты "
1583
  "WordPress. Собирайте данные и осуществляйте подписку пользователей."
1584
 
1585
+ #: product_list.php:418
1586
  msgid ""
1587
  "Add testimonials and feedbacks from your customers to WordPress website "
1588
  "posts, pages, and widgets."
1590
  "Добавляйте рекомендации и отзывы ваших клиентов в посты, страницы и виджеты "
1591
  "сайта WordPress."
1592
 
1593
+ #: product_list.php:425
1594
  msgid ""
1595
  "Best timesheet plugin for WordPress. Track employee time, streamline "
1596
  "attendance and generate reports."
1598
  "Лучший плагин учёта рабочего времени на сайте WordPress. Отслеживайте время "
1599
  "работы сотрудников, оптимизируйте график работы в офисе и создавайте отчеты."
1600
 
1601
+ #: product_list.php:435
1602
  msgid ""
1603
  "Add Twitter Follow, Tweet, Hashtag, and Mention buttons to WordPress posts "
1604
  "and pages."
1606
  "Добавляйте кнопки Твиттера \"Читать\", \"Твитнуть\", \"Метка\" и \"Упомянуть"
1607
  "\" к постам и страницам WordPress. "
1608
 
1609
+ #: product_list.php:445
1610
  msgid ""
1611
  "Automatically check and update WordPress website core with all installed "
1612
  "plugins and themes to the latest versions."
1614
  "Выполняйте автоматическую проверку и обновление ядра WordPress до последних "
1615
  "версий со всеми установленными плагинами и темами."
1616
 
1617
+ #: product_list.php:455
1618
  msgid ""
1619
  "Powerful user role management plugin for WordPress website. Create, edit, "
1620
  "copy, and delete user roles."
1622
  "Эффективный плагин управления ролями пользователей для сайта WordPress. "
1623
  "Создавайте, редактируйте, копируйте и удаляйте роли пользователей."
1624
 
1625
+ #: product_list.php:465
1626
  msgid ""
1627
  "Display live count of online visitors who are currently browsing your "
1628
  "WordPress website."
1630
  "Ведите подсчет количества посетителей, которые в настоящее время "
1631
  "просматривают ваш сайт WordPress."
1632
 
1633
+ #: product_list.php:475
1634
  msgid ""
1635
  "Backup and export Zendesk Help Center content automatically to your "
1636
  "WordPress website database."
1638
  "Делайте автоматическое резервное копирование и экспорт содержимого Zendesk "
1639
  "Help Center в базу данных вашего сайта WordPress."
1640
 
1641
+ #, php-format
1642
+ #~ msgid ""
1643
+ #~ "You need to make this files writable before you can save your changes. "
1644
+ #~ "See %s the Codex %s for more information."
1645
+ #~ msgstr ""
1646
+ #~ "Чтобы сохранить изменения, нужно сделать этот файл доступным для записи. "
1647
+ #~ "Дополнительную информацию можно получить в %s Кодексе %s."
1648
+
1649
  #~ msgid "Create your personal car rental/booking and reservation website."
1650
  #~ msgstr ""
1651
  #~ "Создайте свой собственный сайт проката и резервирования автомобилей."
1685
  #~ "Папка загрузки не доступна для записи. Пожалуйста, загрузите плагин "
1686
  #~ "вручную."
1687
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1688
  #~ msgid "Please, enter your license key"
1689
  #~ msgstr "Пожалуйста, введите Ваш лицензионный ключ"
1690
 
bws_menu/languages/bestwebsoft-uk.mo CHANGED
Binary file
bws_menu/languages/bestwebsoft-uk.po CHANGED
@@ -2,34 +2,34 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: bestwebsoft\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2021-02-15 10:56+0200\n"
6
- "PO-Revision-Date: 2021-02-15 10:56+0200\n"
7
  "Last-Translator: bestwebsoft.com <plugins@bestwebsoft.com>\n"
8
  "Language-Team: bestwebsoft.com <https://support.bestwebsoft.com>\n"
9
  "Language: uk\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
 
 
13
  "X-Poedit-KeywordsList: __;_e;esc_attr_e;sprintf;printf;esc_html__;"
14
  "esc_html_e\n"
15
  "X-Poedit-Basepath: ..\n"
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
- "X-Generator: Poedit 2.4.2\n"
18
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
19
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
20
  "X-Poedit-SearchPath-0: .\n"
21
  "X-Poedit-SearchPathExcluded-0: js\n"
22
 
23
- #: bws_functions.php:50
24
  #, php-format
25
  msgid "%s/%s"
26
- msgstr ""
27
 
28
- #: bws_functions.php:73 bws_functions.php:239
29
  msgid "requires"
30
  msgstr "потребує"
31
 
32
- #: bws_functions.php:75
33
  msgid ""
34
  "or higher, that is why it has been deactivated! Please upgrade WordPress and "
35
  "try again."
@@ -37,55 +37,57 @@ msgstr ""
37
  "чи вище, тому його було деактивовано! Будь ласка оновіть WordPress та "
38
  "спробуйте ще раз."
39
 
40
- #: bws_functions.php:76
41
  msgid "Back to the WordPress"
42
  msgstr "Повернутися на WordPress на"
43
 
44
- #: bws_functions.php:78
45
  msgid "Plugins page"
46
  msgstr "Сторінку Плагінів"
47
 
48
- #: bws_functions.php:71
49
  #, php-format
50
  msgid ""
51
  "<strong>%s</strong> %s <strong>WordPress %s</strong> %s <br /><br />%s <a "
52
  "href='%s'>%s</a>."
53
  msgstr ""
 
 
54
 
55
- #: bws_functions.php:92
56
  msgid "Like the plugin?"
57
  msgstr "Сподобався плагін?"
58
 
59
- #: bws_functions.php:93
60
  #, php-format
61
  msgid "%s reviews"
62
  msgstr "%s відгуки"
63
 
64
- #: bws_functions.php:94
65
  msgid "Rate it"
66
  msgstr "Оцінити"
67
 
68
- #: bws_functions.php:103
69
  msgid "Need help?"
70
  msgstr "Потрібна допомога?"
71
 
72
- #: bws_functions.php:104 bws_functions.php:949 class-bws-settings.php:1082
73
  msgid "Visit Help Center"
74
  msgstr "Перейти до Help Center"
75
 
76
- #: bws_functions.php:107
77
  msgid "Want to support the plugin?"
78
  msgstr "Хочете підтримати плагін?"
79
 
80
- #: bws_functions.php:108 bws_menu.php:529
81
  msgid "Donate"
82
  msgstr "Пожертвувати"
83
 
84
- #: bws_functions.php:128
85
  msgid "WARNING: Illegal use notification"
86
  msgstr "УВАГА: виявлено несанкціоноване використання плагіну"
87
 
88
- #: bws_functions.php:128
89
  msgid ""
90
  "You can use one license of the Pro plugin for one domain only. Please check "
91
  "and edit your license or domain if necessary using your personal Client "
@@ -97,12 +99,12 @@ msgstr ""
97
  "вкладці Client Area. Ми настійливо рекомендуємо Вам вирішити це питання "
98
  "протягом 24 годин, інакше плагін буде деактивовано."
99
 
100
- #: bws_functions.php:128 bws_functions.php:208 bws_menu.php:600
101
- #: class-bws-settings.php:179
102
  msgid "Learn More"
103
  msgstr "Дізнатись більше"
104
 
105
- #: bws_functions.php:145
106
  msgid ""
107
  "Notice: Your Pro Trial license has expired. To continue using the plugin, "
108
  "you should buy a Pro license"
@@ -110,7 +112,7 @@ msgstr ""
110
  "Увага: Термін дії Pro Trial версії плагіну скінчився. Щоб продовжити "
111
  "користуватись плагіном, будь ласка, придбайте Pro ліцензію"
112
 
113
- #: bws_functions.php:147
114
  msgid ""
115
  "Your license has expired. To continue getting top-priority support and "
116
  "plugin updates, you should extend it."
@@ -118,54 +120,54 @@ msgstr ""
118
  "Строк вашої ліцензії витік. Якщо ви хочете отримувати першочергову технічну "
119
  "підтримку та оновлювати плагін у майбутньому, вам слід подовжити ліцензію."
120
 
121
- #: bws_functions.php:147 bws_functions.php:226
122
  msgid "Learn more"
123
  msgstr "Дізнатись більше"
124
 
125
- #: bws_functions.php:165
126
  #, php-format
127
  msgid "Notice: You are using the Pro Trial license of %s plugin."
128
  msgstr "Увага: Ви використовуєте тріал Pro версію плагіну %s."
129
 
130
- #: bws_functions.php:167
131
  msgid "Notice: You are using the Pro Trial license of plugin."
132
  msgstr "Увага: Ви використовуєте тріал Pro версію плагіну."
133
 
134
- #: bws_functions.php:170
135
  msgid "The Pro Trial license will expire on"
136
  msgstr "Trial період Pro версії плагіну закінчується"
137
 
138
- #: bws_functions.php:199 bws_functions.php:222 bws_functions.php:266
139
- #: bws_functions.php:276 bws_functions.php:475
140
  msgid "Close notice"
141
  msgstr "Закрити"
142
 
143
- #: bws_functions.php:204
144
  msgid "It’s time to upgrade your"
145
  msgstr "Настав час модернізувати Ваш"
146
 
147
- #: bws_functions.php:204
148
  msgid "to"
149
  msgstr "до"
150
 
151
- #: bws_functions.php:204
152
  msgid "version!"
153
  msgstr "версії!"
154
 
155
- #: bws_functions.php:205
156
  msgid "Extend standard plugin functionality with new great options."
157
  msgstr "Розширює можливості стандартного функціоналу плагіна."
158
 
159
- #: bws_functions.php:226
160
  #, php-format
161
  msgid ""
162
- "Your license key for %s expires on %s and you won't be granted TOP-PRIORITY "
163
- "SUPPORT or UPDATES."
164
  msgstr ""
165
- "Ваш ліцензійний ключ для %s витікає %s та ви більше не будете отримувати "
166
- "першочергову технічну підтримку та оновлення."
167
 
168
- #: bws_functions.php:241
169
  msgid ""
170
  "or higher! We do not guarantee that our plugin will work correctly. Please "
171
  "upgrade to WordPress latest version."
@@ -173,62 +175,62 @@ msgstr ""
173
  "чи вище! Ми не гарантуємо, що наш плагін буде працювати правильно. Будь "
174
  "ласка, оновіть WordPress до останньої версії."
175
 
176
- #: bws_functions.php:237
177
  #, php-format
178
  msgid "<strong>%s</strong> %s <strong>WordPress %s</strong> %s"
179
- msgstr ""
180
 
181
- #: bws_functions.php:256
182
  #, php-format
183
  msgid "Thank you for installing %s plugin!"
184
  msgstr "Дякуємо, що встановили %s плагін!"
185
 
186
- #: bws_functions.php:258
187
  msgid "Let's get started"
188
  msgstr "Розпочнемо"
189
 
190
- #: bws_functions.php:259 bws_functions.php:292 bws_menu.php:533
191
- #: bws_menu.php:535
192
  msgid "Settings"
193
  msgstr "Налаштування"
194
 
195
- #: bws_functions.php:261 bws_menu.php:327 class-bws-settings.php:809
196
- #: class-bws-settings.php:1084 class-bws-settings.php:1094 deprecated.php:234
197
  msgid "or"
198
  msgstr "або"
199
 
200
- #: bws_functions.php:262 bws_functions.php:294
201
  msgid "Add New"
202
  msgstr "Додати"
203
 
204
- #: bws_functions.php:281
205
  msgid "Thank you for installing plugins by BestWebSoft!"
206
  msgstr "Дякуємо, що встановили плагіни від BestWebSoft!"
207
 
208
- #: bws_functions.php:283
209
  msgid "More Details"
210
  msgstr "Деталі"
211
 
212
- #: bws_functions.php:284
213
  msgid "Less Details"
214
  msgstr "Сховати Деталі"
215
 
216
- #: bws_functions.php:312
217
  msgid "Deprecated function(-s) is used on the site here:"
218
  msgstr "Застарілі функціі використовується на сайті тут:"
219
 
220
- #: bws_functions.php:326
221
  msgid ""
222
  "This function(-s) will be removed over time. Please update the product(-s)."
223
  msgstr ""
224
  "Ці функції буде видалено через деякий час. Будь ласка, поновіть продукт."
225
 
226
- #: bws_functions.php:470
227
  #, php-format
228
  msgid "Thank you for choosing %s plugin!"
229
  msgstr "Дякую за вибір плагіна %s!"
230
 
231
- #: bws_functions.php:471
232
  msgid ""
233
  "If you have a feature, suggestion or idea you'd like to see in the plugin, "
234
  "we'd love to hear about it!"
@@ -237,24 +239,53 @@ msgstr ""
237
  "функціоналу плагіна, будь ласка, надсилайте їх нам! Ми завжди відкриті для "
238
  "нових ідей!"
239
 
240
- #: bws_functions.php:472
241
  msgid "Suggest a Feature"
242
  msgstr "Запропонувати функціонал"
243
 
244
- #: bws_functions.php:488 class-bws-settings.php:580 class-bws-settings.php:583
245
- #: class-bws-settings.php:635 class-bws-settings.php:638
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
246
  msgid "Notice"
247
  msgstr "Зауважте"
248
 
249
- #: bws_functions.php:488
250
  msgid "The plugin's settings have been changed."
251
  msgstr "Налаштування плагіну змінено."
252
 
253
- #: bws_functions.php:489 class-bws-settings.php:222 class-bws-settings.php:242
254
  msgid "Save Changes"
255
  msgstr "Зберегти зміни"
256
 
257
- #: bws_functions.php:503
258
  msgid ""
259
  "You can always look at premium options by checking the \"Pro Options\" in "
260
  "the \"Misc\" tab."
@@ -262,68 +293,68 @@ msgstr ""
262
  "Ви завжди можете подивитися на преміум опції, натиснувши на кнопку \"Pro "
263
  "опції\" на вкладці \"Різне\"."
264
 
265
- #: bws_functions.php:679
266
  msgid "Add shortcode"
267
  msgstr "Додати шорткод"
268
 
269
- #: bws_functions.php:679
270
  msgid "Add BestWebSoft plugins' shortcodes using this button."
271
  msgstr "Додайте шорткоди BestWebSoft плагінів за допомогою цієї кнопки."
272
 
273
- #: bws_functions.php:765
274
  msgid "Close"
275
  msgstr "Закрити"
276
 
277
- #: bws_functions.php:851
278
  msgid "Are you sure you want to restore default settings?"
279
  msgstr "Ви впевнені, що хочете скинути налаштування плагіну до стандартних?"
280
 
281
- #: bws_functions.php:854
282
  msgid "Yes, restore all settings"
283
  msgstr "Так, скинути налаштування"
284
 
285
- #: bws_functions.php:855
286
  msgid "No, go back to the settings page"
287
  msgstr "Ні, повернутись назад на сторінку налаштувань"
288
 
289
- #: bws_functions.php:897
290
  msgid "Plugin"
291
  msgstr "Плагін"
292
 
293
- #: bws_functions.php:906
294
  msgid "Shortcode settings"
295
  msgstr "Налаштування шорткоду"
296
 
297
- #: bws_functions.php:911
298
  msgid "The shortcode will be inserted"
299
  msgstr "Буде вставлено шорткод"
300
 
301
- #: bws_functions.php:954
302
  msgid "FAQ"
303
  msgstr "FAQ"
304
 
305
- #: bws_functions.php:960
306
  msgid "For more information:"
307
  msgstr "Для отримання додаткової інформації:"
308
 
309
- #: bws_functions.php:961 bws_menu.php:401 class-bws-settings.php:776
310
  msgid "Documentation"
311
  msgstr "Документація"
312
 
313
- #: bws_functions.php:962 bws_menu.php:403 class-bws-settings.php:778
314
  msgid "Video Instructions"
315
  msgstr "Відео інструкції"
316
 
317
- #: bws_functions.php:963
318
  msgid "Submit a Request"
319
  msgstr "Надіслати запит"
320
 
321
- #: bws_menu.php:101 class-bws-settings.php:860
322
  msgid "Wrong license key"
323
  msgstr "Невірний ключ ліцензії"
324
 
325
- #: bws_menu.php:122 class-bws-settings.php:887 class-bws-settings.php:966
326
- #: class-bws-settings.php:1004
327
  msgid ""
328
  "Something went wrong. Please try again later. If the error appears again, "
329
  "please contact us"
@@ -331,31 +362,31 @@ msgstr ""
331
  "Щось не так, спробуйте пізніше. Якщо помилка повториться, будь ласка, "
332
  "повідомте нам"
333
 
334
- #: bws_menu.php:122 class-bws-settings.php:887 class-bws-settings.php:966
335
- #: class-bws-settings.php:1004
336
  msgid "We are sorry for inconvenience."
337
  msgstr "Просимо вибачення за незручності."
338
 
339
- #: bws_menu.php:129 class-bws-settings.php:893 class-bws-settings.php:1010
340
  msgid "Wrong license key."
341
  msgstr "Неправильний ліцензійний ключ."
342
 
343
- #: bws_menu.php:131
344
  msgid ""
345
  "This license key is bound to another site. Change it via personal Client "
346
  "Area."
347
  msgstr ""
348
  "Цей ліцензійний ключ прив'язано до іншого сайту. Змініть це в Client Area."
349
 
350
- #: bws_menu.php:131
351
  msgid "Log in"
352
  msgstr "Увійти"
353
 
354
- #: bws_menu.php:133 bws_menu.php:333 deprecated.php:157
355
  msgid "Unfortunately, you have exceeded the number of available tries per day."
356
  msgstr "На жаль, ви перевищили кількість допустимих спроб."
357
 
358
- #: bws_menu.php:135
359
  #, php-format
360
  msgid ""
361
  "Unfortunately, Your license has expired. To continue getting top-priority "
@@ -364,7 +395,7 @@ msgstr ""
364
  "На жаль, ваша ліцензія скінчилась. Для того, щоб і надалі отримувати "
365
  "першочергову техпідтримку і оновлення, будь ласка, продовжте ліцензію на %s"
366
 
367
- #: bws_menu.php:137 class-bws-settings.php:1018
368
  msgid ""
369
  "Unfortunately, the Pro licence was already installed to this domain. The Pro "
370
  "Trial license can be installed only once."
@@ -372,19 +403,19 @@ msgstr ""
372
  "На жаль, Pro ліцензія уже використовувалась на цьому домені. Тріал Pro "
373
  "версії плагіну можна використати лише один раз."
374
 
375
- #: bws_menu.php:143 class-bws-settings.php:908
376
  msgid "The license key is valid."
377
  msgstr "Ліцензійний ключ дійсний."
378
 
379
- #: bws_menu.php:145 class-bws-settings.php:912
380
  msgid "Your license will expire on"
381
  msgstr "Ваша ліцензія закінчується"
382
 
383
- #: bws_menu.php:147
384
  msgid "Congratulations! Pro Membership license is activated successfully."
385
  msgstr "Вітаємо! Pro Membership ліцензія успішно активована."
386
 
387
- #: bws_menu.php:154 class-bws-settings.php:1028
388
  msgid ""
389
  "Something went wrong. Try again later or upload the plugin manually. We are "
390
  "sorry for inconvenience."
@@ -392,214 +423,214 @@ msgstr ""
392
  "Виникли певні проблеми. Спробуйте ще раз пізніше або завантажте плагін "
393
  "вручну. Просимо вибачення за незручності."
394
 
395
- #: bws_menu.php:164
396
  msgid "Please enter your license key."
397
  msgstr "Будь ласка, введіть ваш ліцензійний ключ."
398
 
399
- #: bws_menu.php:175
400
  msgid "Not set"
401
  msgstr "Не задано"
402
 
403
- #: bws_menu.php:177
404
  msgid "On"
405
  msgstr "Увімк."
406
 
407
- #: bws_menu.php:177
408
  msgid "Off"
409
  msgstr "Вимк."
410
 
411
- #: bws_menu.php:178 bws_menu.php:179 bws_menu.php:180 bws_menu.php:181
412
- #: bws_menu.php:182 bws_menu.php:183 bws_menu.php:192
413
  msgid "N/A"
414
  msgstr "Невідомо"
415
 
416
- #: bws_menu.php:183
417
  msgid "Mb"
418
  msgstr "Мб"
419
 
420
- #: bws_menu.php:184 bws_menu.php:185 bws_menu.php:186 bws_menu.php:190
421
  msgid "Yes"
422
  msgstr "Так"
423
 
424
- #: bws_menu.php:184 bws_menu.php:185 bws_menu.php:186 bws_menu.php:190
425
  msgid "No"
426
  msgstr "Ні"
427
 
428
- #: bws_menu.php:197
429
  msgid "WordPress Environment"
430
  msgstr "Системне оточення WordPress"
431
 
432
- #: bws_menu.php:199
433
  msgid "Home URL"
434
  msgstr "Адреса домашньої сторінки"
435
 
436
- #: bws_menu.php:200
437
  msgid "Website URL"
438
  msgstr "Адреса сайту"
439
 
440
- #: bws_menu.php:201
441
  msgid "WP Version"
442
  msgstr "Версія WordPress"
443
 
444
- #: bws_menu.php:202
445
  msgid "WP Multisite"
446
  msgstr "Мультисайт"
447
 
448
- #: bws_menu.php:203
449
  msgid "WP Memory Limit"
450
  msgstr "Ліміт пам’яті WordPress"
451
 
452
- #: bws_menu.php:204
453
  msgid "Active Theme"
454
  msgstr "Активна тема"
455
 
456
- #: bws_menu.php:204 bws_menu.php:249 bws_menu.php:252
457
  #, php-format
458
  msgid "by %s"
459
  msgstr "%s"
460
 
461
- #: bws_menu.php:208
462
  msgid "Server Environment"
463
  msgstr "Системне оточення сервера"
464
 
465
- #: bws_menu.php:210
466
  msgid "Operating System"
467
  msgstr "Операційна система"
468
 
469
- #: bws_menu.php:211
470
  msgid "Server"
471
  msgstr "Тип серверу"
472
 
473
- #: bws_menu.php:212
474
  msgid "PHP Version"
475
  msgstr "Версія PHP"
476
 
477
- #: bws_menu.php:213
478
  msgid "PHP Allow URL fopen"
479
  msgstr "Дозволити PHP URL fopen"
480
 
481
- #: bws_menu.php:214
482
  msgid "PHP Memory Limit"
483
  msgstr "Ліміт пам’яті"
484
 
485
- #: bws_menu.php:215
486
  msgid "Memory Usage"
487
  msgstr "Використання пам'яті"
488
 
489
- #: bws_menu.php:216
490
  msgid "PHP Max Upload Size"
491
  msgstr "Макс. розмір файлу, що завантажується"
492
 
493
- #: bws_menu.php:217
494
  msgid "PHP Max Post Size"
495
  msgstr "Макс. розмір посту"
496
 
497
- #: bws_menu.php:218
498
  msgid "PHP Max Script Execute Time"
499
  msgstr "Макс. час виконання сценарію"
500
 
501
- #: bws_menu.php:219
502
  msgid "PHP Exif support"
503
  msgstr "Підтримка PHP Exif"
504
 
505
- #: bws_menu.php:220
506
  msgid "PHP IPTC support"
507
  msgstr "Підтримка PHP IPTC"
508
 
509
- #: bws_menu.php:221
510
  msgid "PHP XML support"
511
  msgstr "Підтримка PHP XML"
512
 
513
- #: bws_menu.php:227
514
  msgid "Database"
515
  msgstr "База даних"
516
 
517
- #: bws_menu.php:229
518
  msgid "WP DB version"
519
  msgstr "Версія бази даних WordPress"
520
 
521
- #: bws_menu.php:230
522
  msgid "MySQL version"
523
  msgstr "Версія MYSQL"
524
 
525
- #: bws_menu.php:231
526
  msgid "SQL Mode"
527
  msgstr "Режим SQL"
528
 
529
- #: bws_menu.php:235
530
  msgid "Active Plugins"
531
  msgstr "Активні плагіни"
532
 
533
- #: bws_menu.php:240
534
  msgid "Inactive Plugins"
535
  msgstr "Не активні плагіни"
536
 
537
- #: bws_menu.php:261
538
  msgid "Please enter a valid email address."
539
  msgstr "Будь ласка, введіть коректний емейл."
540
 
541
- #: bws_menu.php:263
542
  #, php-format
543
  msgid "Email with system info is sent to %s."
544
  msgstr "Емейл з системною інформацією надіслано на %s."
545
 
546
- #: bws_menu.php:267
547
  msgid "Thank you for contacting us."
548
  msgstr "Дякуємо, що звернулись до нас."
549
 
550
- #: bws_menu.php:290
551
  msgid "Sorry, email message could not be delivered."
552
  msgstr "Вибачте, ваше емейл не може бути доставлено"
553
 
554
- #: bws_menu.php:306 bws_menu.php:310 bws_menu.php:359 deprecated.php:26
555
  msgid "Plugins"
556
  msgstr "Плагіни"
557
 
558
- #: bws_menu.php:307 bws_menu.php:311 bws_menu.php:587 deprecated.php:27
559
  msgid "Themes"
560
  msgstr "Теми"
561
 
562
- #: bws_menu.php:308 bws_menu.php:312 bws_menu.php:617
563
  msgid "System status"
564
  msgstr "Системна інформація"
565
 
566
- #: bws_menu.php:316
567
  msgid "Support"
568
  msgstr "Підтримка"
569
 
570
- #: bws_menu.php:317
571
  msgid "Manage purchased licenses & subscriptions"
572
  msgstr "Управління придбаними ліцензіями і підписками"
573
 
574
- #: bws_menu.php:325
575
  #, php-format
576
  msgid "Get Access to %s+ Premium Plugins"
577
  msgstr "Отримати доступ до %s+ преміум плагинам"
578
 
579
- #: bws_menu.php:327
580
  msgid "Subscribe to Pro Membership"
581
  msgstr "Підписатися на Pro Membership"
582
 
583
- #: bws_menu.php:335 bws_menu.php:346 class-bws-settings.php:822
584
- #: deprecated.php:123
585
  msgid "Check license key"
586
  msgstr "Перевірте ліцензійний ключ"
587
 
588
- #: bws_menu.php:338
589
  msgid "Enter your license key"
590
  msgstr "Ваш ліцензійний ключ"
591
 
592
- #: bws_menu.php:344 bws_menu.php:539 bws_menu.php:548
593
- #: class-bws-settings.php:801 deprecated.php:155 deprecated.php:163
594
- #: deprecated.php:240 deprecated.php:249
595
  msgid "Activate"
596
  msgstr "Активувати"
597
 
598
- #: bws_menu.php:360
599
  msgid "Upload Plugin"
600
  msgstr "Завантажити плагін"
601
 
602
- #: bws_menu.php:364
603
  #, php-format
604
  msgid ""
605
  "The plugin generated %d characters of <strong>unexpected output</strong> "
@@ -612,7 +643,7 @@ msgstr ""
612
  "надіслані&#8221;, проблеми з каналами чи інші неполадки, спробуйте вимкнути "
613
  "чи видалити цей плагін."
614
 
615
- #: bws_menu.php:366
616
  msgid ""
617
  "Plugin could not be activated because it triggered a <strong>fatal error</"
618
  "strong>."
@@ -620,52 +651,52 @@ msgstr ""
620
  "Плагін не вдалося активувати, бо він спричинив <strong>критичну помилку</"
621
  "strong>."
622
 
623
- #: bws_menu.php:369
624
  msgid "Plugin <strong>activated</strong>."
625
  msgstr "Плагін <strong>активовано</strong>."
626
 
627
- #: bws_menu.php:383
628
  msgid "Download Pro Plugin"
629
  msgstr "Завантажити Pro плагін"
630
 
631
- #: bws_menu.php:385 class-bws-settings.php:759
632
  msgid "Your Pro plugin is ready"
633
  msgstr "Ваш Pro плагін готовий"
634
 
635
- #: bws_menu.php:387 class-bws-settings.php:761
636
  msgid "Your plugin has been zipped, and now is ready to download."
637
  msgstr "Ваш плагін був спакованний і тепер готовий до завантаження."
638
 
639
- #: bws_menu.php:390 class-bws-settings.php:764
640
  msgid "Download Now"
641
  msgstr "Завантажити Зараз"
642
 
643
- #: bws_menu.php:394 class-bws-settings.php:768
644
  msgid "Need help installing the plugin?"
645
  msgstr "Потрібна допомога в установці плагіна?"
646
 
647
- #: bws_menu.php:396 class-bws-settings.php:770
648
  msgid "How to install WordPress plugin from your admin Dashboard (ZIP archive)"
649
  msgstr ""
650
  "Як встановити WordPress плагін з вашої панелі адміністратора (ZIP архів)"
651
 
652
- #: bws_menu.php:399 class-bws-settings.php:774
653
  msgid "Get Started"
654
  msgstr "Розпочнемо"
655
 
656
- #: bws_menu.php:405 class-bws-settings.php:780
657
  msgid "Knowledge Base"
658
  msgstr "База знань"
659
 
660
- #: bws_menu.php:408
661
  msgid "Licenses & Domains"
662
  msgstr "Ліцензії та домени"
663
 
664
- #: bws_menu.php:411
665
  msgid "Client Area"
666
  msgstr "Client Area"
667
 
668
- #: bws_menu.php:410
669
  #, php-format
670
  msgid ""
671
  "Manage your license(-s) and change domain names using the %s at BestWebSoft."
@@ -673,249 +704,249 @@ msgstr ""
673
  "Керуйте своїми ліцензіями та змінюйте доменні імена, використовуючи %s на "
674
  "BestWebSoft."
675
 
676
- #: bws_menu.php:413
677
  msgid "Return to BestWebSoft Panel"
678
  msgstr "Назад до BestWebSoft Panel"
679
 
680
- #: bws_menu.php:420 bws_menu.php:440 bws_menu.php:569
681
  msgid "All"
682
  msgstr "Всі"
683
 
684
- #: bws_menu.php:423 bws_menu.php:606
685
  msgid "Installed"
686
  msgstr "Встановлені"
687
 
688
- #: bws_menu.php:426
689
  msgid "Not Installed"
690
  msgstr "Не встановлені"
691
 
692
- #: bws_menu.php:433
693
  msgid "Filter results"
694
  msgstr "Фільтр результатів"
695
 
696
- #: bws_menu.php:436 bws_menu.php:565
697
  msgid "Category"
698
  msgstr "Категорія"
699
 
700
- #: bws_menu.php:500
701
  msgid "Not installed"
702
  msgstr "Не встановлен"
703
 
704
- #: bws_menu.php:504
705
  msgid "Renew to get updates"
706
  msgstr "Продовжити для поновлення"
707
 
708
- #: bws_menu.php:507
709
  #, php-format
710
  msgid "Update to v %s"
711
  msgstr "Оновити до версії %s"
712
 
713
- #: bws_menu.php:519 bws_menu.php:542
714
  msgid "Get Pro"
715
  msgstr "Отримати Pro"
716
 
717
- #: bws_menu.php:525 class-bws-settings.php:192 class-bws-settings.php:1091
718
  msgid "Upgrade to Pro"
719
  msgstr "Оновити до Pro"
720
 
721
- #: bws_menu.php:539 bws_menu.php:548
722
  msgid "Activate this plugin"
723
  msgstr "Активувати плагін"
724
 
725
- #: bws_menu.php:551
726
  msgid "Install this plugin"
727
  msgstr "Встановити плагін"
728
 
729
- #: bws_menu.php:551
730
  msgid "Install Now"
731
  msgstr "Встановити"
732
 
733
- #: bws_menu.php:560
734
  msgid "Nothing found. Try another criteria."
735
  msgstr "Нічого не знайдено. Спробуйте інші критерії."
736
 
737
- #: bws_menu.php:597
738
  #, php-format
739
  msgid "By %s"
740
  msgstr "За %s"
741
 
742
- #: bws_menu.php:604
743
  msgid "Already Installed"
744
  msgstr "Уже встановлено %s"
745
 
746
- #: bws_menu.php:614
747
  msgid "Browse More WordPress Themes"
748
  msgstr "Огляд WordPress тем"
749
 
750
- #: bws_menu.php:623
751
  msgid "Send to support"
752
  msgstr "Відправити службі тех. підтримки"
753
 
754
- #: bws_menu.php:630
755
  msgid "Send to custom email &#187;"
756
  msgstr "Відправити на електронну адресу &#187;"
757
 
758
- #: class-bws-settings.php:167
759
  msgid "Information"
760
  msgstr "Інформація"
761
 
762
- #: class-bws-settings.php:179
763
  msgid "Inactive"
764
  msgstr "Неактивна"
765
 
766
- #: class-bws-settings.php:187
767
  msgid "Expired"
768
  msgstr "Закінчилась"
769
 
770
- #: class-bws-settings.php:190
771
  #, php-format
772
  msgid "%s day(-s) left"
773
  msgstr "%s днів залишилося"
774
 
775
- #: class-bws-settings.php:196
776
  #, php-format
777
  msgid "Expired on %s"
778
  msgstr "Витікає %s"
779
 
780
- #: class-bws-settings.php:196
781
  msgid "Renew Now"
782
  msgstr "Відновити зараз"
783
 
784
- #: class-bws-settings.php:198
785
  msgid "Active"
786
  msgstr "Активна"
787
 
788
- #: class-bws-settings.php:203
789
  msgid "License"
790
  msgstr "Ліцензія"
791
 
792
- #: class-bws-settings.php:206
793
  msgid "Status"
794
  msgstr "Статус"
795
 
796
- #: class-bws-settings.php:210
797
  msgid "Version"
798
  msgstr "Версія"
799
 
800
- #: class-bws-settings.php:323
801
  msgid "All plugin settings were restored."
802
  msgstr "Усі налаштування плагіну відновлені."
803
 
804
- #: class-bws-settings.php:463
805
  msgid "Custom Code"
806
  msgstr "Користувацький код"
807
 
808
- #: class-bws-settings.php:467
 
 
 
 
 
 
 
 
809
  msgid "You do not have sufficient permissions to edit plugins for this site."
810
  msgstr "У вас недостатньо повноважень для редагування плагінів цього сайту."
811
 
812
- #: class-bws-settings.php:472
813
  msgid "These styles will be added to the header on all pages of your site."
814
  msgstr "Ці стилі будуть додані в заголовок на всіх сторінках вашого сайту."
815
 
816
- #: class-bws-settings.php:475
817
  #, php-format
818
  msgid ""
819
- "This PHP code will be hooked to the %s action and will be printed on front "
820
  "end only."
821
  msgstr ""
822
  "Цей PHP код буде прикріплений до %s action і буде додано лише у фронтенді."
823
 
824
- #: class-bws-settings.php:478
825
  msgid "These code will be added to the header on all pages of your site."
826
  msgstr "Цей код буде додано в заголовок на всіх сторінках вашого сайту."
827
 
828
- #: class-bws-settings.php:486
829
- #, php-format
830
- msgid ""
831
- "You need to make this files writable before you can save your changes. See "
832
- "%s the Codex %s for more information."
833
- msgstr ""
834
- "Вам потрібно зробити цей файл доступним для запису, перед тим як ви зможете "
835
- "зберегти свої зміни. Перегляньте %sКодекс%s для додаткової інформації."
836
-
837
- #: class-bws-settings.php:496
838
  msgid "Browsing"
839
  msgstr "Огляд"
840
 
841
- #: class-bws-settings.php:501
842
  #, php-format
843
  msgid "Activate custom %s code."
844
  msgstr "Активувати користувацький %s код."
845
 
846
- #: class-bws-settings.php:509
847
  #, php-format
848
  msgid "Learn more about %s"
849
  msgstr "Дізнатись більше про %s"
850
 
851
- #: class-bws-settings.php:571
852
  msgid "Miscellaneous Settings"
853
  msgstr "Інші налаштування"
854
 
855
- #: class-bws-settings.php:580 class-bws-settings.php:635
856
  #, php-format
857
  msgid ""
858
- "It is prohibited to change %s settings on this site in the %s network "
859
  "settings."
860
  msgstr ""
861
- "Мережевими налаштуваннями %s забороняється змінювати налаштування %s на "
862
  "цьому сайті."
863
 
864
- #: class-bws-settings.php:583 class-bws-settings.php:638
865
  #, php-format
866
  msgid ""
867
- "It is prohibited to view %s settings on this site in the %s network settings."
 
868
  msgstr ""
869
- "Мережевими налаштуваннями %s забороняється дивитися налаштування %s на цьому "
870
- "сайті."
871
 
872
- #: class-bws-settings.php:592
873
  msgid "Pro Options"
874
  msgstr "Pro опції"
875
 
876
- #: class-bws-settings.php:596
877
  msgid "Enable to display plugin Pro options."
878
  msgstr "Увімкніть для відображення Pro опцій плагіна."
879
 
880
- #: class-bws-settings.php:602
881
  msgid "Track Usage"
882
  msgstr "Збирати статистику"
883
 
884
- #: class-bws-settings.php:606
885
  msgid ""
886
  "Enable to allow tracking plugin usage anonymously in order to make it better."
887
  msgstr ""
888
  "Включити, щоб дозволити анонімно відстежувати використання і зробити плагін "
889
  "краще."
890
 
891
- #: class-bws-settings.php:611
892
  msgid "Default Settings"
893
  msgstr "Налаштування за замовчуванням"
894
 
895
- #: class-bws-settings.php:613
896
  msgid "Restore Settings"
897
  msgstr "Відновлення налаштувань"
898
 
899
- #: class-bws-settings.php:614
900
  msgid "This will restore plugin settings to defaults."
901
  msgstr "Відновити всі налаштування плагіна до налаштувань за замовчуванням."
902
 
903
- #: class-bws-settings.php:626
904
  msgid "Import / Export"
905
  msgstr "Імпорт / Експорт"
906
 
907
- #: class-bws-settings.php:744
908
  msgid "License Key"
909
  msgstr "Ключ ліцензії"
910
 
911
- #: class-bws-settings.php:803
912
  #, php-format
913
  msgid "Enter your license key to activate %s and get premium plugin features."
914
  msgstr ""
915
  "Введіть ліцензійний ключ для активації %s і отримання додаткових можливостей "
916
  "плагіна."
917
 
918
- #: class-bws-settings.php:806 class-bws-settings.php:1014 deprecated.php:243
919
  msgid ""
920
  "Unfortunately, you have exceeded the number of available tries per day. "
921
  "Please, upload the plugin manually."
@@ -923,12 +954,12 @@ msgstr ""
923
  "На жаль, ви перевищили кількість доступних спроб на день. Будь ласка, "
924
  "завантажте плагін вручну"
925
 
926
- #: class-bws-settings.php:809 deprecated.php:234
927
  #, php-format
928
  msgid "Start Your Free %s-Day Trial Now"
929
  msgstr "Спробуйте %s-денну Trial версію безкоштовно"
930
 
931
- #: class-bws-settings.php:824
932
  msgid ""
933
  "If necessary, you can check if the license key is correct or reenter it in "
934
  "the field below."
@@ -936,15 +967,15 @@ msgstr ""
936
  "При необхідності ви можете перевірити правильність вашого ліцензійного ключа "
937
  "або знову ввести його у полі, що знаходиться вище."
938
 
939
- #: class-bws-settings.php:833
940
  msgid "Manage License Settings"
941
  msgstr "Управління налаштуваннями ліцензій"
942
 
943
- #: class-bws-settings.php:835
944
  msgid "Login to Client Area"
945
  msgstr "Зайти в Client Area"
946
 
947
- #: class-bws-settings.php:837
948
  msgid ""
949
  "Manage active licenses, download BWS products, and view your payment history "
950
  "using BestWebSoft Client Area."
@@ -952,11 +983,15 @@ msgstr ""
952
  "Керуй активними ліцензіями, завантажуй BWS продукти, а також переглядай "
953
  "історію платежів за допомогою BestWebSoft Client Area."
954
 
955
- #: class-bws-settings.php:895 class-bws-settings.php:1012
 
 
 
 
956
  msgid "This license key is bound to another site."
957
  msgstr "Цей ліцензійний ключ прив'язано до іншого сайту."
958
 
959
- #: class-bws-settings.php:897
960
  msgid ""
961
  "This license key is valid, but Your license has expired. If you want to "
962
  "update our plugin in future, you should extend the license."
@@ -964,11 +999,11 @@ msgstr ""
964
  "Даний ліцензійний ключ дійсний, але строк вашої ліцензії витік. Якщо ви "
965
  "хочете оновлювати наш плагін у майбутньому, вам слід подовжити ліцензію."
966
 
967
- #: class-bws-settings.php:899
968
  msgid "Unfortunately, you have exceeded the number of available tries."
969
  msgstr "На жаль, ви перевищили кількість допустимих спроб."
970
 
971
- #: class-bws-settings.php:901
972
  msgid ""
973
  "Unfortunately, the Pro Trial licence was already installed to this domain. "
974
  "The Pro Trial license can be installed only once."
@@ -976,17 +1011,17 @@ msgstr ""
976
  "На жаль, Trial Pro версія плагіну уже встановлювалась на цей домен. Trial "
977
  "Pro версію можна встановлювати лише один раз."
978
 
979
- #: class-bws-settings.php:906
980
  msgid "The Pro Trial license key is valid."
981
  msgstr "Ключ тріал Pro версії вірний."
982
 
983
- #: class-bws-settings.php:919 deprecated.php:142
984
  #, php-format
985
  msgid ""
986
  "In order to continue using the plugin it is necessary to buy a %s license."
987
  msgstr "Щоб продовжити користуватись плагіном, потрібно придбати %s ліцензію."
988
 
989
- #: class-bws-settings.php:1016
990
  #, php-format
991
  msgid ""
992
  "Unfortunately, Your license has expired. To continue getting top-priority "
@@ -995,133 +1030,151 @@ msgstr ""
995
  "На жаль, ваша ліцензія скінчилась. Для того, щоб і надалі отримувати "
996
  "першочергову тех.підтримку і оновлення, будь ласка, продовжте ліцензію у %s."
997
 
998
- #: class-bws-settings.php:1065
999
  msgid "Please, enter Your license key"
1000
  msgstr "Будь ласка, впишіть ваш ліцензійний ключ"
1001
 
1002
- #: class-bws-settings.php:1078
1003
  msgid "Need Help?"
1004
  msgstr "Потрібна допомога?"
1005
 
1006
- #: class-bws-settings.php:1080
1007
  msgid "Read the Instruction"
1008
  msgstr "Читати інструкцію"
1009
 
1010
- #: class-bws-settings.php:1084
1011
  msgid "Watch the Video"
1012
  msgstr "Дивитися відео"
1013
 
1014
- #: class-bws-settings.php:1095
1015
  msgid "Start Your Free Trial"
1016
  msgstr "Використовувати безкоштовну Trial версію"
1017
 
1018
- #: class-bws-settings.php:1130
1019
  msgid "Request a Feature"
1020
  msgstr "Запропонувати функціонал"
1021
 
1022
- #: class-bws-settings.php:1135
1023
  #, php-format
1024
  msgid "How can we improve %s?"
1025
  msgstr "Як ми можемо покращити %s?"
1026
 
1027
- #: class-bws-settings.php:1137
1028
  msgid "We look forward to hear your ideas."
1029
  msgstr "Ми будемо раді почути ваші ідеї."
1030
 
1031
- #: class-bws-settings.php:1139
1032
  msgid "Describe your idea"
1033
  msgstr "Опишіть свою ідею"
1034
 
1035
- #: class-bws-settings.php:1142 deactivation-form.php:120
1036
  msgid "Send website data and allow to contact me back"
1037
  msgstr "Надіслати дані сайту і дозволити зв'язатися зі мною"
1038
 
1039
- #: class-bws-settings.php:1147
1040
  msgid "Submit"
1041
  msgstr "Відправити"
1042
 
1043
- #: class-bws-settings.php:1148 deactivation-form.php:127
1044
  msgid "Processing"
1045
  msgstr "Обробка"
1046
 
1047
- #: class-bws-settings.php:1149
1048
  msgid "Thank you!"
1049
  msgstr "Дякую!"
1050
 
1051
- #: deactivation-form.php:22
1052
  msgid "Need help? We are ready to answer your questions."
1053
  msgstr "Потрібна допомога? Ми готові відповісти на ваші питання."
1054
 
1055
- #: deactivation-form.php:22
1056
  msgid "Contact Support"
1057
  msgstr "Зв'язатися з тех. підтримкою"
1058
 
1059
- #: deactivation-form.php:27
1060
  msgid "The plugin is not working"
1061
  msgstr "Плагін не працює"
1062
 
1063
- #: deactivation-form.php:33
 
 
 
 
 
 
1064
  msgid "The plugin didn't work as expected"
1065
  msgstr "Плагін не працює, як очікувалося"
1066
 
1067
- #: deactivation-form.php:39
 
 
 
 
1068
  msgid "The plugin suddenly stopped working"
1069
  msgstr "Плагін раптово перестав працювати"
1070
 
1071
- #: deactivation-form.php:46
1072
  msgid "The plugin broke my site"
1073
  msgstr "Плагін зламав мій сайт"
1074
 
1075
- #: deactivation-form.php:53
1076
  msgid "I couldn't understand how to get it work"
1077
  msgstr "Я не можу зрозуміти, як змусити його працювати"
1078
 
1079
- #: deactivation-form.php:60
1080
  msgid "I found a better plugin"
1081
  msgstr "Я знайшов кращий плагін"
1082
 
1083
- #: deactivation-form.php:66
 
 
 
 
1084
  msgid "The plugin is great, but I need specific feature that you don't support"
1085
  msgstr "Плагін чудовий, але мені потрібен певний функціонал, якого у вас немає"
1086
 
1087
- #: deactivation-form.php:72
 
 
 
 
1088
  msgid "I no longer need the plugin"
1089
  msgstr "Плагін мені більше не потрібен"
1090
 
1091
- #: deactivation-form.php:78
1092
  msgid "It's a temporary deactivation, I'm just debugging an issue"
1093
  msgstr "Це тимчасова деактивація, я просто відлагоджую проблему"
1094
 
1095
- #: deactivation-form.php:84
1096
  msgid "Other"
1097
  msgstr "Інше"
1098
 
1099
- #: deactivation-form.php:93
1100
  msgid "Quick Feedback"
1101
  msgstr "Швидкий відгук"
1102
 
1103
- #: deactivation-form.php:95
1104
  msgid "If you have a moment, please let us know why you are deactivating"
1105
  msgstr ""
1106
  "Якщо у вас є час, будь ласка, повідомте нам, чому ви деактивуете плагін"
1107
 
1108
- #: deactivation-form.php:125
1109
  msgid "Submit and Deactivate"
1110
  msgstr "Надіслати і деактивувати"
1111
 
1112
- #: deactivation-form.php:126
1113
  msgid "Skip and Deactivate"
1114
  msgstr "Пропустити і деактивувати"
1115
 
1116
- #: deactivation-form.php:272
1117
  msgid "Please tell us the reason so we can improve it."
1118
  msgstr "Будь ласка, повідомте нам причину, щоб ми могли покращити плагін."
1119
 
1120
- #: deprecated.php:28
1121
  msgid "System Status"
1122
  msgstr "Системна інформація"
1123
 
1124
- #: deprecated.php:119
1125
  msgid ""
1126
  "If necessary, you can check if the license key is correct or reenter it in "
1127
  "the field below. You can find your license key on your personal page - "
@@ -1132,7 +1185,7 @@ msgstr ""
1132
  "ліцензійний ключ на вашій персональній сторінці - Client area - на нашому "
1133
  "сайті"
1134
 
1135
- #: deprecated.php:119
1136
  msgid ""
1137
  "(your username is the email address specified during the purchase). If "
1138
  "necessary, please submit \"Lost your password?\" request."
@@ -1140,106 +1193,106 @@ msgstr ""
1140
  "(ваше ім'я користувача - це емейл, який ви вказували при купівлі). При "
1141
  "необхідності, будь ласка, відправте запит на відновлення вашого паролю."
1142
 
1143
- #: deprecated.php:142
1144
  msgid "After that, you can activate it by entering your license key."
1145
  msgstr "Після цього ви зможете активувати його ввівши ліцензійний ключ."
1146
 
1147
- #: deprecated.php:145 deprecated.php:228
1148
  msgid "License key can be found in the"
1149
  msgstr "Ліцензійний ключ можна знайти в"
1150
 
1151
- #: deprecated.php:147 deprecated.php:230
1152
  msgid "(your username is the email address specified during the purchase)."
1153
  msgstr "(ваше ім'я користувача - це емейл, який ви вказували при купівлі)"
1154
 
1155
- #: deprecated.php:170
1156
  msgid ""
1157
  "Congratulations! The Pro license of the plugin is activated successfully."
1158
  msgstr "Вітаємо! Pro версію плагіну успішно активовано."
1159
 
1160
- #: deprecated.php:172 deprecated.php:210
1161
  msgid "Please, go to"
1162
  msgstr "Будь ласка, перейдіть на"
1163
 
1164
- #: deprecated.php:172 deprecated.php:210
1165
  msgid "the setting page"
1166
  msgstr "сторінку установок"
1167
 
1168
- #: deprecated.php:187
1169
  msgid "Restore all plugin settings to defaults"
1170
  msgstr "Скинути налаштування плагіну до стандартних"
1171
 
1172
- #: deprecated.php:189
1173
  msgid "Restore settings"
1174
  msgstr "Скинути налаштування"
1175
 
1176
- #: deprecated.php:208
1177
  msgid ""
1178
  "Congratulations! Pro version of the plugin is installed and activated "
1179
  "successfully."
1180
  msgstr "Вітаємо! Pro версію плагіну успішно завантажено та активовано."
1181
 
1182
- #: deprecated.php:217
1183
  msgid "Show Pro features"
1184
  msgstr "Показати Pro опції"
1185
 
1186
- #: deprecated.php:224
1187
  msgid "Enter your license key to install and activate"
1188
  msgstr "Введіть ліцензійний ключ для установки і активації"
1189
 
1190
- #: deprecated.php:226
1191
  msgid "version of the plugin."
1192
  msgstr "версія плагіна."
1193
 
1194
- #: product_list.php:8
1195
  msgid "Admin Tools"
1196
  msgstr "Інструменти"
1197
 
1198
- #: product_list.php:9
1199
  msgid "Content"
1200
  msgstr "Контент"
1201
 
1202
- #: product_list.php:10
1203
  msgid "eCommerce"
1204
  msgstr "Комерція"
1205
 
1206
- #: product_list.php:11
1207
  msgid "Marketing"
1208
  msgstr "Маркетинг"
1209
 
1210
- #: product_list.php:12
1211
  msgid "Navigation"
1212
  msgstr "Навігація"
1213
 
1214
- #: product_list.php:13
1215
  msgid "Recommended"
1216
  msgstr "Рекомендовані "
1217
 
1218
- #: product_list.php:14
1219
  msgid "Security"
1220
  msgstr "Безпека"
1221
 
1222
- #: product_list.php:15
1223
  msgid "SEO"
1224
  msgstr "Пошукова оптимізація"
1225
 
1226
- #: product_list.php:16
1227
  msgid "SMM"
1228
  msgstr "СММ"
1229
 
1230
- #: product_list.php:23
1231
  msgid "Give a birth for your bike rental and booking WordPress website."
1232
  msgstr "Створіть прокат та бронювання велосипедів для веб-сайту WordPress."
1233
 
1234
- #: product_list.php:35
1235
  msgid "Best secure captcha plugin to protect your WordPress forms."
1236
  msgstr "Кращий плагін капчі, який захистить форми вашого сайту WordPress."
1237
 
1238
- #: product_list.php:45
1239
  msgid "Create your own rental website for car renting and booking."
1240
  msgstr "Створіть свій власний сайт прокату і резервування автомобілів."
1241
 
1242
- #: product_list.php:57
1243
  msgid ""
1244
  "Add columns with custom content to WordPress website pages, posts, widgets, "
1245
  "etc."
@@ -1247,7 +1300,7 @@ msgstr ""
1247
  "Додайте стовпці з користувачим вмістом на сторінки веб-сайту WordPress, "
1248
  "повідомлення, віджети тощо."
1249
 
1250
- #: product_list.php:64
1251
  msgid ""
1252
  "Allow customers to reach you using secure contact form plugin any website "
1253
  "must have."
@@ -1255,35 +1308,35 @@ msgstr ""
1255
  "Надайте можливість клієнтам здійснювати зв'язок з вами через безпечний "
1256
  "плагін контактної форми, який повинен мати будь-який сайт."
1257
 
1258
- #: product_list.php:74
1259
  msgid "Add unlimited number of contact forms to WordPress website."
1260
  msgstr "Додавайте необмежену кількість контактних форм на ваш сайт WordPress."
1261
 
1262
- #: product_list.php:84
1263
  msgid "Save and manage Contact Form messages. Never lose important data."
1264
  msgstr ""
1265
  "Зберігайте і керуйте повідомленнями плагіну Contact Form. Ніколи не "
1266
  "втрачайте важливі дані."
1267
 
1268
- #: product_list.php:94
1269
  msgid "Add unlimited custom pages to WordPress admin dashboard."
1270
  msgstr ""
1271
  "Додавайте необмежену кількість користувацьких сторінок у панелі "
1272
  "адміністратора WordPress."
1273
 
1274
- #: product_list.php:104
1275
  msgid ""
1276
  "Add custom post types and taxonomies to WordPress website search results."
1277
  msgstr ""
1278
  "Додавайте користувацькі типи постів і таксономії у результати пошуку на "
1279
  "вашому сайті WordPress."
1280
 
1281
- #: product_list.php:114
1282
  msgid "Add PayPal and 2CO donate buttons to receive charity payments."
1283
  msgstr ""
1284
  "Додавайте кнопки PayPal і 2CO, щоб отримувати пожертви та благодійні внески."
1285
 
1286
- #: product_list.php:121
1287
  msgid ""
1288
  "Get latest error log messages to diagnose website problems. Define and fix "
1289
  "issues faster."
@@ -1291,7 +1344,7 @@ msgstr ""
1291
  "Отримуйте останні повідомлення з журналу помилок для діагностики проблем "
1292
  "сайту. Швидше виявляйте і усувайте проблеми."
1293
 
1294
- #: product_list.php:128
1295
  msgid ""
1296
  "Add Facebook Follow, Like, and Share buttons to WordPress posts, pages, and "
1297
  "widgets."
@@ -1299,7 +1352,7 @@ msgstr ""
1299
  "Додавайте кнопки Facebook \"Підписатися\", \"Подобається\" та \"Поділитися\" "
1300
  "у пости, сторінки і віджети сайту WordPress."
1301
 
1302
- #: product_list.php:138
1303
  msgid ""
1304
  "Add beautiful galleries, albums & images to your WordPress website in a few "
1305
  "clicks."
@@ -1307,7 +1360,7 @@ msgstr ""
1307
  "Додавайте мальовничі галереї, альбоми, зображення та категорії галереї на "
1308
  "ваш сайт WordPress всього в декілька кліків."
1309
 
1310
- #: product_list.php:148
1311
  msgid ""
1312
  "Stronger security solution which protects your WordPress website from hacks "
1313
  "and unauthorized login attempts."
@@ -1315,7 +1368,7 @@ msgstr ""
1315
  "Найпотужніше рішення безпеки, яке захищає ваш сайт WordPress від зломів та "
1316
  "неавторизованих спроб входу в систему."
1317
 
1318
- #: product_list.php:158
1319
  msgid ""
1320
  "Add Adsense ads to WordPress website pages, posts, custom posts, search "
1321
  "results, categories, tags, and widgets."
@@ -1323,23 +1376,23 @@ msgstr ""
1323
  "Додавайте рекламу сервісу Adsense на сторінки, пости, користувацькі пости, "
1324
  "результати пошуку, категорії, теги і віджети сайту WordPress."
1325
 
1326
- #: product_list.php:168
1327
  msgid "Add Google Analytics code to WordPress website and track basic stats."
1328
  msgstr ""
1329
  "Додавайте код Google Analytics на ваш сайт WordPress та відстежуйте базову "
1330
  "статистику сайту."
1331
 
1332
- #: product_list.php:178
1333
  msgid "Protect WordPress website forms from spam entries with reCaptcha."
1334
  msgstr ""
1335
  "Захищайте форми вашого сайту WordPress від спаму за допомогою reCaptcha."
1336
 
1337
- #: product_list.php:188
1338
  msgid "Add customized Google maps to WordPress posts, pages and widgets."
1339
  msgstr ""
1340
  "Додавайте користувацькі карти Google у пости, сторінки та віджети WordPress."
1341
 
1342
- #: product_list.php:198
1343
  msgid ""
1344
  "Generate and add XML sitemap to WordPress website. Help search engines index "
1345
  "your blog."
@@ -1347,7 +1400,7 @@ msgstr ""
1347
  "Створюйте та додавайте файли XML sitemap на ваш сайт WordPress. Допоможіть "
1348
  "пошуковим системам проіндексувати ваш блог."
1349
 
1350
- #: product_list.php:208
1351
  msgid ""
1352
  "Replace external WordPress website links with Google shortlinks and track "
1353
  "click stats."
@@ -1355,7 +1408,7 @@ msgstr ""
1355
  "Замініть зовнішні посилання сайту WordPress на короткі посилання Google і "
1356
  "відстежуйте статистику кліків."
1357
 
1358
- #: product_list.php:215
1359
  msgid ""
1360
  "Protect WordPress website – allow and deny access for certain IP addresses, "
1361
  "hostnames, etc."
@@ -1363,7 +1416,7 @@ msgstr ""
1363
  "Захистіть свій сайт WordPress - надавайте та забороняйте доступ з певних IP-"
1364
  "адрес, імен хостів і т.д."
1365
 
1366
- #: product_list.php:225
1367
  msgid ""
1368
  "Create your personal job board and listing WordPress website. Search jobs, "
1369
  "submit CV/resumes, choose candidates."
@@ -1372,7 +1425,7 @@ msgstr ""
1372
  "WordPress. Здійснюйте пошук вакансій, подачу резюме/CV кандидата, вибір "
1373
  "кандидатів."
1374
 
1375
- #: product_list.php:232
1376
  msgid ""
1377
  "Protect WordPress website against brute force attacks. Limit rate of login "
1378
  "attempts."
@@ -1380,7 +1433,7 @@ msgstr ""
1380
  "Захищайте свій сайт WordPress від брутфорс-атак. Обмежуйте кількість спроб "
1381
  "введення логіна."
1382
 
1383
- #: product_list.php:242
1384
  msgid ""
1385
  "Add LinkedIn Share and Follow buttons to WordPress posts, pages and widgets. "
1386
  "5 plugins included – profile, insider, etc."
@@ -1388,7 +1441,7 @@ msgstr ""
1388
  "Додавайте кнопки LinkedIn \"Поділитися\" та \"Відстежувати\" до постів, "
1389
  "сторінок і віджетів WordPress. 5 плагінів включено - Профіль, Інсайдер і т.д."
1390
 
1391
- #: product_list.php:252
1392
  msgid ""
1393
  "Translate WordPress website content to other languages manually. Create "
1394
  "multilingual pages, posts, widgets, menus, etc."
@@ -1396,7 +1449,7 @@ msgstr ""
1396
  "Перекладайте вміст сайту WordPress іншими мовами вручну. Створюйте "
1397
  "багатомовні сторінки, пости, віджети, меню і т.д."
1398
 
1399
- #: product_list.php:262
1400
  msgid ""
1401
  "Add customizable pagination to WordPress website. Split long content to "
1402
  "multiple pages for better navigation."
@@ -1404,7 +1457,7 @@ msgstr ""
1404
  "Додавайте пагінацію з можливістю налаштування на ваш сайт WordPress. "
1405
  "Розбивайте об'ємний контент на декілька сторінок для кращої навігації."
1406
 
1407
- #: product_list.php:272
1408
  msgid ""
1409
  "Generate PDF files and print WordPress posts/pages. Customize document "
1410
  "header/footer styles and appearance."
@@ -1412,7 +1465,7 @@ msgstr ""
1412
  "Створюйте PDF-файли і друкуйте пости/сторінки сайту WordPress. Налаштовуйте "
1413
  "стилі хедера/футера документа і його зовнішній вигляд."
1414
 
1415
- #: product_list.php:282
1416
  msgid ""
1417
  "Add Pinterest Follow, Pin It buttons and profile widgets (Pin, Board, "
1418
  "Profile) to WordPress posts, pages and widgets."
@@ -1420,7 +1473,7 @@ msgstr ""
1420
  "Додавайте кнопки Pinterest \"Підписатися\", \"Зберегти\" і віджети профілю "
1421
  "(Пін, Дошка, Профіль) до постів, сторінок і віджетів WordPress."
1422
 
1423
- #: product_list.php:292
1424
  msgid ""
1425
  "Create your personal portfolio WordPress website. Manage and showcase past "
1426
  "projects to get more clients."
@@ -1428,13 +1481,13 @@ msgstr ""
1428
  "Створюйте і додавайте портфоліо на свій сайт WordPress. Керуйте і "
1429
  "демонструйте минулі проекти, щоб залучити більше клієнтів."
1430
 
1431
- #: product_list.php:302
1432
  msgid "Export WordPress posts to CSV file format easily. Configure data order."
1433
  msgstr ""
1434
  "З легкістю експортуйте пости WordPress в файли формату CSV. Налаштуйте "
1435
  "порядок відображення даних."
1436
 
1437
- #: product_list.php:312
1438
  msgid ""
1439
  "Add extra fields to default WordPress user profile. The easiest way to "
1440
  "create and manage additional custom values."
@@ -1442,7 +1495,7 @@ msgstr ""
1442
  "Додавайте користувацькі поля у стандартний профіль WordPress. Найпростіший "
1443
  "спосіб створення і управління додатковими полями."
1444
 
1445
- #: product_list.php:322
1446
  msgid ""
1447
  "Add and display HTML advertisement banner on WordPress website. Customize "
1448
  "bar styles and appearance."
@@ -1450,7 +1503,7 @@ msgstr ""
1450
  "Додавайте відображення банерної HTML реклами на сайті WordPress. Налаштуйте "
1451
  "стилі і зовнішній вигляд банеру."
1452
 
1453
- #: product_list.php:332
1454
  msgid ""
1455
  "Add customizable quotes and tips blocks to WordPress posts, pages and "
1456
  "widgets."
@@ -1458,7 +1511,7 @@ msgstr ""
1458
  "Додавайте редаговані цитати та підказки до постів, сторінок і віджетів "
1459
  "WordPress."
1460
 
1461
- #: product_list.php:339
1462
  msgid ""
1463
  "Add rating plugin to your WordPress website to receive feedback from your "
1464
  "customers."
@@ -1466,7 +1519,7 @@ msgstr ""
1466
  "Додавайте систему оцінювання і рейтингу на ваш сайт WordPress і отримуйте "
1467
  "відгуки від ваших клієнтів."
1468
 
1469
- #: product_list.php:349
1470
  msgid ""
1471
  "Create your personal real estate WordPress website. Sell, rent and buy "
1472
  "properties. Add, search and browse listings easily."
@@ -1475,7 +1528,7 @@ msgstr ""
1475
  "Продавайте, орендуйте і купуйте нерухомість. Легко додавайте, знаходьте і "
1476
  "переглядайте лістинги."
1477
 
1478
- #: product_list.php:359
1479
  msgid ""
1480
  "Add related, featured, latest, and popular posts to your WordPress website. "
1481
  "Connect your blog readers with a relevant content."
@@ -1483,7 +1536,7 @@ msgstr ""
1483
  "Додавайте схожі, обрані, останні та популярні пости на ваш сайт WordPress. "
1484
  "Надавайте своїм читачам контент схожої тематики."
1485
 
1486
- #: product_list.php:366
1487
  msgid ""
1488
  "Send bulk email messages to WordPress users. Custom templates, advanced "
1489
  "settings and detailed reports."
@@ -1491,7 +1544,7 @@ msgstr ""
1491
  "Здійснюйте масову розсилку листів користувачам WordPress. Користувацькі "
1492
  "шаблони, додаткові налаштування і детальні звіти."
1493
 
1494
- #: product_list.php:376
1495
  msgid ""
1496
  "The best responsive slider plugin for your WordPress website. Create "
1497
  "beautifully animated slides just in a few clicks."
@@ -1499,7 +1552,7 @@ msgstr ""
1499
  "Найкращий адаптивний слайдер для вашого сайту WordPress. Створюйте красиво "
1500
  "анімовані слайди всього в декілька кліків."
1501
 
1502
- #: product_list.php:383
1503
  msgid ""
1504
  "Configure SMTP server to receive email messages from WordPress to Gmail, "
1505
  "Yahoo, Hotmail and other services."
@@ -1507,7 +1560,7 @@ msgstr ""
1507
  "Налаштовуйте SMTP-сервер, щоб отримувати електронні повідомлення з сайту "
1508
  "WordPress на такі поштові служби, як Gmail, Yahoo, Hotmail і багато інших."
1509
 
1510
- #: product_list.php:390
1511
  msgid ""
1512
  "Add social media buttons and widgets to WordPress posts, pages and widgets. "
1513
  "FB, Twitter, Pinterest, LinkedIn."
@@ -1515,7 +1568,7 @@ msgstr ""
1515
  "Додавайте кнопки і віджети соціальних мереж до постів, сторінок і віджетів "
1516
  "WordPress. FB, Twitter, Pinterest, LinkedIn."
1517
 
1518
- #: product_list.php:400
1519
  msgid ""
1520
  "Add social media login, registration, and commenting to your WordPress "
1521
  "website."
@@ -1523,7 +1576,7 @@ msgstr ""
1523
  "Додавайте на свій сайт WordPress можливість входу, реєстрації та "
1524
  "коментування з використанням існуючих акаунтів соціальних мереж."
1525
 
1526
- #: product_list.php:407
1527
  msgid ""
1528
  "Add email newsletter sign up form to WordPress posts, pages and widgets. "
1529
  "Collect data and subscribe your users."
@@ -1531,7 +1584,7 @@ msgstr ""
1531
  "Додавайте форму підписки на розсилку новин у пости, сторінки і віджети "
1532
  "WordPress. Збирайте дані і здійснюйте підписку користувачів."
1533
 
1534
- #: product_list.php:417
1535
  msgid ""
1536
  "Add testimonials and feedbacks from your customers to WordPress website "
1537
  "posts, pages, and widgets."
@@ -1539,7 +1592,7 @@ msgstr ""
1539
  "Додавайте рекомендації та відгуки ваших клієнтів в пости, сторінки і віджети "
1540
  "сайту WordPress."
1541
 
1542
- #: product_list.php:424
1543
  msgid ""
1544
  "Best timesheet plugin for WordPress. Track employee time, streamline "
1545
  "attendance and generate reports."
@@ -1547,7 +1600,7 @@ msgstr ""
1547
  "Кращий плагін обліку робочого часу на сайті WordPress. Відстежуйте час "
1548
  "роботи співробітників, оптимізуйте графік роботи в офісі і створюйте звіти."
1549
 
1550
- #: product_list.php:434
1551
  msgid ""
1552
  "Add Twitter Follow, Tweet, Hashtag, and Mention buttons to WordPress posts "
1553
  "and pages."
@@ -1555,7 +1608,7 @@ msgstr ""
1555
  "Додавайте кнопки Твіттера \"Читати\", \"Твітнути\", \"Хештеґ\" і \"Згадати\" "
1556
  "до постів і сторінок WordPress."
1557
 
1558
- #: product_list.php:444
1559
  msgid ""
1560
  "Automatically check and update WordPress website core with all installed "
1561
  "plugins and themes to the latest versions."
@@ -1563,7 +1616,7 @@ msgstr ""
1563
  "Виконуйте автоматичну перевірку і оновлення ядра WordPress до останніх "
1564
  "версій з усіма встановленими плагінами та темами."
1565
 
1566
- #: product_list.php:454
1567
  msgid ""
1568
  "Powerful user role management plugin for WordPress website. Create, edit, "
1569
  "copy, and delete user roles."
@@ -1571,7 +1624,7 @@ msgstr ""
1571
  "Ефективний плагін управління ролями користувачів для сайту WordPress. "
1572
  "Створюйте, редагуйте, копіюйте і видаляйте ролі користувачів."
1573
 
1574
- #: product_list.php:464
1575
  msgid ""
1576
  "Display live count of online visitors who are currently browsing your "
1577
  "WordPress website."
@@ -1579,7 +1632,7 @@ msgstr ""
1579
  "Ведіть підрахунок кількості відвідувачів, які в даний час переглядають ваш "
1580
  "сайт WordPress."
1581
 
1582
- #: product_list.php:474
1583
  msgid ""
1584
  "Backup and export Zendesk Help Center content automatically to your "
1585
  "WordPress website database."
@@ -1587,6 +1640,15 @@ msgstr ""
1587
  "Робіть автоматичне резервне копіювання і експорт вмісту Zendesk Help Center "
1588
  "в базу даних вашого сайту WordPress."
1589
 
 
 
 
 
 
 
 
 
 
1590
  #~ msgid "Create your personal car rental/booking and reservation website."
1591
  #~ msgstr "Створіть свій власний сайт прокату і резервування автомобілів."
1592
 
@@ -1626,20 +1688,6 @@ msgstr ""
1626
  #~ "Немає доступу до теки завантажень WordPress. Будь ласка, завантажте "
1627
  #~ "плагін вручну."
1628
 
1629
- #~ msgid "Kindly share what didn't work so we can fix it in future updates..."
1630
- #~ msgstr ""
1631
- #~ "Будь ласка, повідомте, що не працює, щоб ми змогли виправити це в "
1632
- #~ "майбутніх оновленнях..."
1633
-
1634
- #~ msgid "What did you expect?"
1635
- #~ msgstr "Що саме ви очікували?"
1636
-
1637
- #~ msgid "What's the plugin name?"
1638
- #~ msgstr "Яка назва плагіна?"
1639
-
1640
- #~ msgid "What feature?"
1641
- #~ msgstr "Який функціонал?"
1642
-
1643
  #~ msgid "Please, enter your license key"
1644
  #~ msgstr "Будь ласка, введіть ваш ліцензійний ключ"
1645
 
2
  msgstr ""
3
  "Project-Id-Version: bestwebsoft\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2022-04-21 14:14+0300\n"
6
+ "PO-Revision-Date: 2022-04-21 14:17+0300\n"
7
  "Last-Translator: bestwebsoft.com <plugins@bestwebsoft.com>\n"
8
  "Language-Team: bestwebsoft.com <https://support.bestwebsoft.com>\n"
9
  "Language: uk\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
14
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
15
  "X-Poedit-KeywordsList: __;_e;esc_attr_e;sprintf;printf;esc_html__;"
16
  "esc_html_e\n"
17
  "X-Poedit-Basepath: ..\n"
18
  "X-Poedit-SourceCharset: UTF-8\n"
19
+ "X-Generator: Poedit 3.0.1\n"
 
 
20
  "X-Poedit-SearchPath-0: .\n"
21
  "X-Poedit-SearchPathExcluded-0: js\n"
22
 
23
+ #: bws_functions.php:60
24
  #, php-format
25
  msgid "%s/%s"
26
+ msgstr "%s/%s"
27
 
28
+ #: bws_functions.php:85 bws_functions.php:283
29
  msgid "requires"
30
  msgstr "потребує"
31
 
32
+ #: bws_functions.php:87
33
  msgid ""
34
  "or higher, that is why it has been deactivated! Please upgrade WordPress and "
35
  "try again."
37
  "чи вище, тому його було деактивовано! Будь ласка оновіть WordPress та "
38
  "спробуйте ще раз."
39
 
40
+ #: bws_functions.php:88
41
  msgid "Back to the WordPress"
42
  msgstr "Повернутися на WordPress на"
43
 
44
+ #: bws_functions.php:90
45
  msgid "Plugins page"
46
  msgstr "Сторінку Плагінів"
47
 
48
+ #: bws_functions.php:83
49
  #, php-format
50
  msgid ""
51
  "<strong>%s</strong> %s <strong>WordPress %s</strong> %s <br /><br />%s <a "
52
  "href='%s'>%s</a>."
53
  msgstr ""
54
+ "<strong>%s</strong> %s <strong>WordPress %s</strong> %s <br /><br />%s <a "
55
+ "href='%s'>%s</a>."
56
 
57
+ #: bws_functions.php:112
58
  msgid "Like the plugin?"
59
  msgstr "Сподобався плагін?"
60
 
61
+ #: bws_functions.php:113
62
  #, php-format
63
  msgid "%s reviews"
64
  msgstr "%s відгуки"
65
 
66
+ #: bws_functions.php:114
67
  msgid "Rate it"
68
  msgstr "Оцінити"
69
 
70
+ #: bws_functions.php:123
71
  msgid "Need help?"
72
  msgstr "Потрібна допомога?"
73
 
74
+ #: bws_functions.php:124 bws_functions.php:1186 class-bws-settings.php:1193
75
  msgid "Visit Help Center"
76
  msgstr "Перейти до Help Center"
77
 
78
+ #: bws_functions.php:127
79
  msgid "Want to support the plugin?"
80
  msgstr "Хочете підтримати плагін?"
81
 
82
+ #: bws_functions.php:128 bws_menu.php:651
83
  msgid "Donate"
84
  msgstr "Пожертвувати"
85
 
86
+ #: bws_functions.php:155
87
  msgid "WARNING: Illegal use notification"
88
  msgstr "УВАГА: виявлено несанкціоноване використання плагіну"
89
 
90
+ #: bws_functions.php:155
91
  msgid ""
92
  "You can use one license of the Pro plugin for one domain only. Please check "
93
  "and edit your license or domain if necessary using your personal Client "
99
  "вкладці Client Area. Ми настійливо рекомендуємо Вам вирішити це питання "
100
  "протягом 24 годин, інакше плагін буде деактивовано."
101
 
102
+ #: bws_functions.php:155 bws_functions.php:247 bws_menu.php:746
103
+ #: class-bws-settings.php:189
104
  msgid "Learn More"
105
  msgstr "Дізнатись більше"
106
 
107
+ #: bws_functions.php:174
108
  msgid ""
109
  "Notice: Your Pro Trial license has expired. To continue using the plugin, "
110
  "you should buy a Pro license"
112
  "Увага: Термін дії Pro Trial версії плагіну скінчився. Щоб продовжити "
113
  "користуватись плагіном, будь ласка, придбайте Pro ліцензію"
114
 
115
+ #: bws_functions.php:176
116
  msgid ""
117
  "Your license has expired. To continue getting top-priority support and "
118
  "plugin updates, you should extend it."
120
  "Строк вашої ліцензії витік. Якщо ви хочете отримувати першочергову технічну "
121
  "підтримку та оновлювати плагін у майбутньому, вам слід подовжити ліцензію."
122
 
123
+ #: bws_functions.php:176 bws_functions.php:267
124
  msgid "Learn more"
125
  msgstr "Дізнатись більше"
126
 
127
+ #: bws_functions.php:196
128
  #, php-format
129
  msgid "Notice: You are using the Pro Trial license of %s plugin."
130
  msgstr "Увага: Ви використовуєте тріал Pro версію плагіну %s."
131
 
132
+ #: bws_functions.php:198
133
  msgid "Notice: You are using the Pro Trial license of plugin."
134
  msgstr "Увага: Ви використовуєте тріал Pro версію плагіну."
135
 
136
+ #: bws_functions.php:201
137
  msgid "The Pro Trial license will expire on"
138
  msgstr "Trial період Pro версії плагіну закінчується"
139
 
140
+ #: bws_functions.php:238 bws_functions.php:263 bws_functions.php:313
141
+ #: bws_functions.php:323 bws_functions.php:560 bws_functions.php:593
142
  msgid "Close notice"
143
  msgstr "Закрити"
144
 
145
+ #: bws_functions.php:243
146
  msgid "It’s time to upgrade your"
147
  msgstr "Настав час модернізувати Ваш"
148
 
149
+ #: bws_functions.php:243
150
  msgid "to"
151
  msgstr "до"
152
 
153
+ #: bws_functions.php:243
154
  msgid "version!"
155
  msgstr "версії!"
156
 
157
+ #: bws_functions.php:244
158
  msgid "Extend standard plugin functionality with new great options."
159
  msgstr "Розширює можливості стандартного функціоналу плагіна."
160
 
161
+ #: bws_functions.php:267
162
  #, php-format
163
  msgid ""
164
+ "Your license key for %1$s expires on %2$s and you won't be granted TOP-"
165
+ "PRIORITY SUPPORT or UPDATES."
166
  msgstr ""
167
+ "Ваш ліцензійний ключ для %s закінчується %s та ви більше не будете "
168
+ "отримувати першочергову технічну підтримку та оновлення."
169
 
170
+ #: bws_functions.php:285
171
  msgid ""
172
  "or higher! We do not guarantee that our plugin will work correctly. Please "
173
  "upgrade to WordPress latest version."
175
  "чи вище! Ми не гарантуємо, що наш плагін буде працювати правильно. Будь "
176
  "ласка, оновіть WordPress до останньої версії."
177
 
178
+ #: bws_functions.php:281
179
  #, php-format
180
  msgid "<strong>%s</strong> %s <strong>WordPress %s</strong> %s"
181
+ msgstr "<strong>%s</strong> %s <strong>WordPress %s</strong> %s"
182
 
183
+ #: bws_functions.php:303
184
  #, php-format
185
  msgid "Thank you for installing %s plugin!"
186
  msgstr "Дякуємо, що встановили %s плагін!"
187
 
188
+ #: bws_functions.php:305
189
  msgid "Let's get started"
190
  msgstr "Розпочнемо"
191
 
192
+ #: bws_functions.php:306 bws_functions.php:339 bws_menu.php:657
193
+ #: bws_menu.php:659
194
  msgid "Settings"
195
  msgstr "Налаштування"
196
 
197
+ #: bws_functions.php:308 bws_menu.php:377 class-bws-settings.php:908
198
+ #: class-bws-settings.php:1196 class-bws-settings.php:1209 deprecated.php:260
199
  msgid "or"
200
  msgstr "або"
201
 
202
+ #: bws_functions.php:309 bws_functions.php:341
203
  msgid "Add New"
204
  msgstr "Додати"
205
 
206
+ #: bws_functions.php:328
207
  msgid "Thank you for installing plugins by BestWebSoft!"
208
  msgstr "Дякуємо, що встановили плагіни від BestWebSoft!"
209
 
210
+ #: bws_functions.php:330
211
  msgid "More Details"
212
  msgstr "Деталі"
213
 
214
+ #: bws_functions.php:331
215
  msgid "Less Details"
216
  msgstr "Сховати Деталі"
217
 
218
+ #: bws_functions.php:362
219
  msgid "Deprecated function(-s) is used on the site here:"
220
  msgstr "Застарілі функціі використовується на сайті тут:"
221
 
222
+ #: bws_functions.php:380
223
  msgid ""
224
  "This function(-s) will be removed over time. Please update the product(-s)."
225
  msgstr ""
226
  "Ці функції буде видалено через деякий час. Будь ласка, поновіть продукт."
227
 
228
+ #: bws_functions.php:555
229
  #, php-format
230
  msgid "Thank you for choosing %s plugin!"
231
  msgstr "Дякую за вибір плагіна %s!"
232
 
233
+ #: bws_functions.php:556
234
  msgid ""
235
  "If you have a feature, suggestion or idea you'd like to see in the plugin, "
236
  "we'd love to hear about it!"
239
  "функціоналу плагіна, будь ласка, надсилайте їх нам! Ми завжди відкриті для "
240
  "нових ідей!"
241
 
242
+ #: bws_functions.php:557
243
  msgid "Suggest a Feature"
244
  msgstr "Запропонувати функціонал"
245
 
246
+ #: bws_functions.php:598
247
+ msgid "Affiliate Program"
248
+ msgstr "Партнерська Програма"
249
+
250
+ #: bws_functions.php:599
251
+ #, php-format
252
+ msgid "Get %s"
253
+ msgstr "Отримати %s"
254
+
255
+ #: bws_functions.php:600
256
+ msgid "from each BestWebSoft plugin and theme sale you refer"
257
+ msgstr "з кожного розпродажу плагінів і тем BestWebSoft, які ви посилаєте"
258
+
259
+ #: bws_functions.php:604
260
+ msgid "Join affiliate program"
261
+ msgstr "Приєднуйтесь до партнерської програми"
262
+
263
+ #: bws_functions.php:608
264
+ msgid "Promote and sell products"
265
+ msgstr "Рекламуйте та продавайте продукти"
266
+
267
+ #: bws_functions.php:612
268
+ msgid "Get commission!"
269
+ msgstr "Отримайте комісію!"
270
+
271
+ #: bws_functions.php:617
272
+ msgid "Start Now"
273
+ msgstr "Розпочати зараз"
274
+
275
+ #: bws_functions.php:634 class-bws-settings.php:640 class-bws-settings.php:645
276
+ #: class-bws-settings.php:714 class-bws-settings.php:719
277
  msgid "Notice"
278
  msgstr "Зауважте"
279
 
280
+ #: bws_functions.php:634
281
  msgid "The plugin's settings have been changed."
282
  msgstr "Налаштування плагіну змінено."
283
 
284
+ #: bws_functions.php:635 class-bws-settings.php:235 class-bws-settings.php:263
285
  msgid "Save Changes"
286
  msgstr "Зберегти зміни"
287
 
288
+ #: bws_functions.php:656
289
  msgid ""
290
  "You can always look at premium options by checking the \"Pro Options\" in "
291
  "the \"Misc\" tab."
293
  "Ви завжди можете подивитися на преміум опції, натиснувши на кнопку \"Pro "
294
  "опції\" на вкладці \"Різне\"."
295
 
296
+ #: bws_functions.php:857
297
  msgid "Add shortcode"
298
  msgstr "Додати шорткод"
299
 
300
+ #: bws_functions.php:857
301
  msgid "Add BestWebSoft plugins' shortcodes using this button."
302
  msgstr "Додайте шорткоди BestWebSoft плагінів за допомогою цієї кнопки."
303
 
304
+ #: bws_functions.php:967
305
  msgid "Close"
306
  msgstr "Закрити"
307
 
308
+ #: bws_functions.php:1059
309
  msgid "Are you sure you want to restore default settings?"
310
  msgstr "Ви впевнені, що хочете скинути налаштування плагіну до стандартних?"
311
 
312
+ #: bws_functions.php:1062
313
  msgid "Yes, restore all settings"
314
  msgstr "Так, скинути налаштування"
315
 
316
+ #: bws_functions.php:1063
317
  msgid "No, go back to the settings page"
318
  msgstr "Ні, повернутись назад на сторінку налаштувань"
319
 
320
+ #: bws_functions.php:1125
321
  msgid "Plugin"
322
  msgstr "Плагін"
323
 
324
+ #: bws_functions.php:1134
325
  msgid "Shortcode settings"
326
  msgstr "Налаштування шорткоду"
327
 
328
+ #: bws_functions.php:1139
329
  msgid "The shortcode will be inserted"
330
  msgstr "Буде вставлено шорткод"
331
 
332
+ #: bws_functions.php:1191
333
  msgid "FAQ"
334
  msgstr "FAQ"
335
 
336
+ #: bws_functions.php:1197
337
  msgid "For more information:"
338
  msgstr "Для отримання додаткової інформації:"
339
 
340
+ #: bws_functions.php:1198 bws_menu.php:475 class-bws-settings.php:870
341
  msgid "Documentation"
342
  msgstr "Документація"
343
 
344
+ #: bws_functions.php:1199 bws_menu.php:477 class-bws-settings.php:872
345
  msgid "Video Instructions"
346
  msgstr "Відео інструкції"
347
 
348
+ #: bws_functions.php:1200
349
  msgid "Submit a Request"
350
  msgstr "Надіслати запит"
351
 
352
+ #: bws_menu.php:105 class-bws-settings.php:971
353
  msgid "Wrong license key"
354
  msgstr "Невірний ключ ліцензії"
355
 
356
+ #: bws_menu.php:127 class-bws-settings.php:997 class-bws-settings.php:1074
357
+ #: class-bws-settings.php:1112
358
  msgid ""
359
  "Something went wrong. Please try again later. If the error appears again, "
360
  "please contact us"
362
  "Щось не так, спробуйте пізніше. Якщо помилка повториться, будь ласка, "
363
  "повідомте нам"
364
 
365
+ #: bws_menu.php:127 class-bws-settings.php:997 class-bws-settings.php:1074
366
+ #: class-bws-settings.php:1112
367
  msgid "We are sorry for inconvenience."
368
  msgstr "Просимо вибачення за незручності."
369
 
370
+ #: bws_menu.php:134 class-bws-settings.php:1003 class-bws-settings.php:1118
371
  msgid "Wrong license key."
372
  msgstr "Неправильний ліцензійний ключ."
373
 
374
+ #: bws_menu.php:136
375
  msgid ""
376
  "This license key is bound to another site. Change it via personal Client "
377
  "Area."
378
  msgstr ""
379
  "Цей ліцензійний ключ прив'язано до іншого сайту. Змініть це в Client Area."
380
 
381
+ #: bws_menu.php:136
382
  msgid "Log in"
383
  msgstr "Увійти"
384
 
385
+ #: bws_menu.php:138 bws_menu.php:385 deprecated.php:172
386
  msgid "Unfortunately, you have exceeded the number of available tries per day."
387
  msgstr "На жаль, ви перевищили кількість допустимих спроб."
388
 
389
+ #: bws_menu.php:140
390
  #, php-format
391
  msgid ""
392
  "Unfortunately, Your license has expired. To continue getting top-priority "
395
  "На жаль, ваша ліцензія скінчилась. Для того, щоб і надалі отримувати "
396
  "першочергову техпідтримку і оновлення, будь ласка, продовжте ліцензію на %s"
397
 
398
+ #: bws_menu.php:142 class-bws-settings.php:1126
399
  msgid ""
400
  "Unfortunately, the Pro licence was already installed to this domain. The Pro "
401
  "Trial license can be installed only once."
403
  "На жаль, Pro ліцензія уже використовувалась на цьому домені. Тріал Pro "
404
  "версії плагіну можна використати лише один раз."
405
 
406
+ #: bws_menu.php:148 class-bws-settings.php:1018
407
  msgid "The license key is valid."
408
  msgstr "Ліцензійний ключ дійсний."
409
 
410
+ #: bws_menu.php:150 class-bws-settings.php:1022
411
  msgid "Your license will expire on"
412
  msgstr "Ваша ліцензія закінчується"
413
 
414
+ #: bws_menu.php:153
415
  msgid "Congratulations! Pro Membership license is activated successfully."
416
  msgstr "Вітаємо! Pro Membership ліцензія успішно активована."
417
 
418
+ #: bws_menu.php:160 class-bws-settings.php:1136
419
  msgid ""
420
  "Something went wrong. Try again later or upload the plugin manually. We are "
421
  "sorry for inconvenience."
423
  "Виникли певні проблеми. Спробуйте ще раз пізніше або завантажте плагін "
424
  "вручну. Просимо вибачення за незручності."
425
 
426
+ #: bws_menu.php:171
427
  msgid "Please enter your license key."
428
  msgstr "Будь ласка, введіть ваш ліцензійний ключ."
429
 
430
+ #: bws_menu.php:183
431
  msgid "Not set"
432
  msgstr "Не задано"
433
 
434
+ #: bws_menu.php:186
435
  msgid "On"
436
  msgstr "Увімк."
437
 
438
+ #: bws_menu.php:186
439
  msgid "Off"
440
  msgstr "Вимк."
441
 
442
+ #: bws_menu.php:187 bws_menu.php:188 bws_menu.php:189 bws_menu.php:190
443
+ #: bws_menu.php:191 bws_menu.php:192 bws_menu.php:201
444
  msgid "N/A"
445
  msgstr "Невідомо"
446
 
447
+ #: bws_menu.php:192
448
  msgid "Mb"
449
  msgstr "Мб"
450
 
451
+ #: bws_menu.php:193 bws_menu.php:194 bws_menu.php:195 bws_menu.php:199
452
  msgid "Yes"
453
  msgstr "Так"
454
 
455
+ #: bws_menu.php:193 bws_menu.php:194 bws_menu.php:195 bws_menu.php:199
456
  msgid "No"
457
  msgstr "Ні"
458
 
459
+ #: bws_menu.php:206
460
  msgid "WordPress Environment"
461
  msgstr "Системне оточення WordPress"
462
 
463
+ #: bws_menu.php:208
464
  msgid "Home URL"
465
  msgstr "Адреса домашньої сторінки"
466
 
467
+ #: bws_menu.php:209
468
  msgid "Website URL"
469
  msgstr "Адреса сайту"
470
 
471
+ #: bws_menu.php:210
472
  msgid "WP Version"
473
  msgstr "Версія WordPress"
474
 
475
+ #: bws_menu.php:211
476
  msgid "WP Multisite"
477
  msgstr "Мультисайт"
478
 
479
+ #: bws_menu.php:212
480
  msgid "WP Memory Limit"
481
  msgstr "Ліміт пам’яті WordPress"
482
 
483
+ #: bws_menu.php:213
484
  msgid "Active Theme"
485
  msgstr "Активна тема"
486
 
487
+ #: bws_menu.php:213 bws_menu.php:258 bws_menu.php:261
488
  #, php-format
489
  msgid "by %s"
490
  msgstr "%s"
491
 
492
+ #: bws_menu.php:217
493
  msgid "Server Environment"
494
  msgstr "Системне оточення сервера"
495
 
496
+ #: bws_menu.php:219
497
  msgid "Operating System"
498
  msgstr "Операційна система"
499
 
500
+ #: bws_menu.php:220
501
  msgid "Server"
502
  msgstr "Тип серверу"
503
 
504
+ #: bws_menu.php:221
505
  msgid "PHP Version"
506
  msgstr "Версія PHP"
507
 
508
+ #: bws_menu.php:222
509
  msgid "PHP Allow URL fopen"
510
  msgstr "Дозволити PHP URL fopen"
511
 
512
+ #: bws_menu.php:223
513
  msgid "PHP Memory Limit"
514
  msgstr "Ліміт пам’яті"
515
 
516
+ #: bws_menu.php:224
517
  msgid "Memory Usage"
518
  msgstr "Використання пам'яті"
519
 
520
+ #: bws_menu.php:225
521
  msgid "PHP Max Upload Size"
522
  msgstr "Макс. розмір файлу, що завантажується"
523
 
524
+ #: bws_menu.php:226
525
  msgid "PHP Max Post Size"
526
  msgstr "Макс. розмір посту"
527
 
528
+ #: bws_menu.php:227
529
  msgid "PHP Max Script Execute Time"
530
  msgstr "Макс. час виконання сценарію"
531
 
532
+ #: bws_menu.php:228
533
  msgid "PHP Exif support"
534
  msgstr "Підтримка PHP Exif"
535
 
536
+ #: bws_menu.php:229
537
  msgid "PHP IPTC support"
538
  msgstr "Підтримка PHP IPTC"
539
 
540
+ #: bws_menu.php:230
541
  msgid "PHP XML support"
542
  msgstr "Підтримка PHP XML"
543
 
544
+ #: bws_menu.php:236
545
  msgid "Database"
546
  msgstr "База даних"
547
 
548
+ #: bws_menu.php:238
549
  msgid "WP DB version"
550
  msgstr "Версія бази даних WordPress"
551
 
552
+ #: bws_menu.php:239
553
  msgid "MySQL version"
554
  msgstr "Версія MYSQL"
555
 
556
+ #: bws_menu.php:240
557
  msgid "SQL Mode"
558
  msgstr "Режим SQL"
559
 
560
+ #: bws_menu.php:244
561
  msgid "Active Plugins"
562
  msgstr "Активні плагіни"
563
 
564
+ #: bws_menu.php:249
565
  msgid "Inactive Plugins"
566
  msgstr "Не активні плагіни"
567
 
568
+ #: bws_menu.php:270
569
  msgid "Please enter a valid email address."
570
  msgstr "Будь ласка, введіть коректний емейл."
571
 
572
+ #: bws_menu.php:272
573
  #, php-format
574
  msgid "Email with system info is sent to %s."
575
  msgstr "Емейл з системною інформацією надіслано на %s."
576
 
577
+ #: bws_menu.php:276
578
  msgid "Thank you for contacting us."
579
  msgstr "Дякуємо, що звернулись до нас."
580
 
581
+ #: bws_menu.php:300
582
  msgid "Sorry, email message could not be delivered."
583
  msgstr "Вибачте, ваше емейл не може бути доставлено"
584
 
585
+ #: bws_menu.php:321 bws_menu.php:342 bws_menu.php:427 deprecated.php:27
586
  msgid "Plugins"
587
  msgstr "Плагіни"
588
 
589
+ #: bws_menu.php:329 bws_menu.php:350 bws_menu.php:731 deprecated.php:28
590
  msgid "Themes"
591
  msgstr "Теми"
592
 
593
+ #: bws_menu.php:334 bws_menu.php:358 bws_menu.php:767
594
  msgid "System status"
595
  msgstr "Системна інформація"
596
 
597
+ #: bws_menu.php:365
598
  msgid "Support"
599
  msgstr "Підтримка"
600
 
601
+ #: bws_menu.php:366
602
  msgid "Manage purchased licenses & subscriptions"
603
  msgstr "Управління придбаними ліцензіями і підписками"
604
 
605
+ #: bws_menu.php:375
606
  #, php-format
607
  msgid "Get Access to %s+ Premium Plugins"
608
  msgstr "Отримати доступ до %s+ преміум плагинам"
609
 
610
+ #: bws_menu.php:377
611
  msgid "Subscribe to Pro Membership"
612
  msgstr "Підписатися на Pro Membership"
613
 
614
+ #: bws_menu.php:387 bws_menu.php:408 class-bws-settings.php:925
615
+ #: deprecated.php:133
616
  msgid "Check license key"
617
  msgstr "Перевірте ліцензійний ключ"
618
 
619
+ #: bws_menu.php:395
620
  msgid "Enter your license key"
621
  msgstr "Ваш ліцензійний ключ"
622
 
623
+ #: bws_menu.php:406 bws_menu.php:665 bws_menu.php:674
624
+ #: class-bws-settings.php:898 deprecated.php:170 deprecated.php:178
625
+ #: deprecated.php:268 deprecated.php:281
626
  msgid "Activate"
627
  msgstr "Активувати"
628
 
629
+ #: bws_menu.php:428
630
  msgid "Upload Plugin"
631
  msgstr "Завантажити плагін"
632
 
633
+ #: bws_menu.php:433
634
  #, php-format
635
  msgid ""
636
  "The plugin generated %d characters of <strong>unexpected output</strong> "
643
  "надіслані&#8221;, проблеми з каналами чи інші неполадки, спробуйте вимкнути "
644
  "чи видалити цей плагін."
645
 
646
+ #: bws_menu.php:435
647
  msgid ""
648
  "Plugin could not be activated because it triggered a <strong>fatal error</"
649
  "strong>."
651
  "Плагін не вдалося активувати, бо він спричинив <strong>критичну помилку</"
652
  "strong>."
653
 
654
+ #: bws_menu.php:440
655
  msgid "Plugin <strong>activated</strong>."
656
  msgstr "Плагін <strong>активовано</strong>."
657
 
658
+ #: bws_menu.php:457
659
  msgid "Download Pro Plugin"
660
  msgstr "Завантажити Pro плагін"
661
 
662
+ #: bws_menu.php:459 class-bws-settings.php:853
663
  msgid "Your Pro plugin is ready"
664
  msgstr "Ваш Pro плагін готовий"
665
 
666
+ #: bws_menu.php:461 class-bws-settings.php:855
667
  msgid "Your plugin has been zipped, and now is ready to download."
668
  msgstr "Ваш плагін був спакованний і тепер готовий до завантаження."
669
 
670
+ #: bws_menu.php:464 class-bws-settings.php:858
671
  msgid "Download Now"
672
  msgstr "Завантажити Зараз"
673
 
674
+ #: bws_menu.php:468 class-bws-settings.php:862
675
  msgid "Need help installing the plugin?"
676
  msgstr "Потрібна допомога в установці плагіна?"
677
 
678
+ #: bws_menu.php:470 class-bws-settings.php:864
679
  msgid "How to install WordPress plugin from your admin Dashboard (ZIP archive)"
680
  msgstr ""
681
  "Як встановити WordPress плагін з вашої панелі адміністратора (ZIP архів)"
682
 
683
+ #: bws_menu.php:473 class-bws-settings.php:868
684
  msgid "Get Started"
685
  msgstr "Розпочнемо"
686
 
687
+ #: bws_menu.php:479 class-bws-settings.php:874
688
  msgid "Knowledge Base"
689
  msgstr "База знань"
690
 
691
+ #: bws_menu.php:482
692
  msgid "Licenses & Domains"
693
  msgstr "Ліцензії та домени"
694
 
695
+ #: bws_menu.php:487
696
  msgid "Client Area"
697
  msgstr "Client Area"
698
 
699
+ #: bws_menu.php:486
700
  #, php-format
701
  msgid ""
702
  "Manage your license(-s) and change domain names using the %s at BestWebSoft."
704
  "Керуйте своїми ліцензіями та змінюйте доменні імена, використовуючи %s на "
705
  "BestWebSoft."
706
 
707
+ #: bws_menu.php:491
708
  msgid "Return to BestWebSoft Panel"
709
  msgstr "Назад до BestWebSoft Panel"
710
 
711
+ #: bws_menu.php:506 bws_menu.php:541 bws_menu.php:706
712
  msgid "All"
713
  msgstr "Всі"
714
 
715
+ #: bws_menu.php:514 bws_menu.php:754
716
  msgid "Installed"
717
  msgstr "Встановлені"
718
 
719
+ #: bws_menu.php:522
720
  msgid "Not Installed"
721
  msgstr "Не встановлені"
722
 
723
+ #: bws_menu.php:529
724
  msgid "Filter results"
725
  msgstr "Фільтр результатів"
726
 
727
+ #: bws_menu.php:532 bws_menu.php:697
728
  msgid "Category"
729
  msgstr "Категорія"
730
 
731
+ #: bws_menu.php:617
732
  msgid "Not installed"
733
  msgstr "Не встановлен"
734
 
735
+ #: bws_menu.php:621
736
  msgid "Renew to get updates"
737
  msgstr "Продовжити для поновлення"
738
 
739
+ #: bws_menu.php:624
740
  #, php-format
741
  msgid "Update to v %s"
742
  msgstr "Оновити до версії %s"
743
 
744
+ #: bws_menu.php:639 bws_menu.php:668
745
  msgid "Get Pro"
746
  msgstr "Отримати Pro"
747
 
748
+ #: bws_menu.php:645 class-bws-settings.php:202 class-bws-settings.php:1206
749
  msgid "Upgrade to Pro"
750
  msgstr "Оновити до Pro"
751
 
752
+ #: bws_menu.php:665 bws_menu.php:674
753
  msgid "Activate this plugin"
754
  msgstr "Активувати плагін"
755
 
756
+ #: bws_menu.php:679
757
  msgid "Install this plugin"
758
  msgstr "Встановити плагін"
759
 
760
+ #: bws_menu.php:679
761
  msgid "Install Now"
762
  msgstr "Встановити"
763
 
764
+ #: bws_menu.php:692
765
  msgid "Nothing found. Try another criteria."
766
  msgstr "Нічого не знайдено. Спробуйте інші критерії."
767
 
768
+ #: bws_menu.php:743
769
  #, php-format
770
  msgid "By %s"
771
  msgstr "За %s"
772
 
773
+ #: bws_menu.php:752
774
  msgid "Already Installed"
775
  msgstr "Уже встановлено %s"
776
 
777
+ #: bws_menu.php:764
778
  msgid "Browse More WordPress Themes"
779
  msgstr "Огляд WordPress тем"
780
 
781
+ #: bws_menu.php:783
782
  msgid "Send to support"
783
  msgstr "Відправити службі тех. підтримки"
784
 
785
+ #: bws_menu.php:790
786
  msgid "Send to custom email &#187;"
787
  msgstr "Відправити на електронну адресу &#187;"
788
 
789
+ #: class-bws-settings.php:174
790
  msgid "Information"
791
  msgstr "Інформація"
792
 
793
+ #: class-bws-settings.php:189
794
  msgid "Inactive"
795
  msgstr "Неактивна"
796
 
797
+ #: class-bws-settings.php:197
798
  msgid "Expired"
799
  msgstr "Закінчилась"
800
 
801
+ #: class-bws-settings.php:200
802
  #, php-format
803
  msgid "%s day(-s) left"
804
  msgstr "%s днів залишилося"
805
 
806
+ #: class-bws-settings.php:206
807
  #, php-format
808
  msgid "Expired on %s"
809
  msgstr "Витікає %s"
810
 
811
+ #: class-bws-settings.php:206
812
  msgid "Renew Now"
813
  msgstr "Відновити зараз"
814
 
815
+ #: class-bws-settings.php:208
816
  msgid "Active"
817
  msgstr "Активна"
818
 
819
+ #: class-bws-settings.php:214
820
  msgid "License"
821
  msgstr "Ліцензія"
822
 
823
+ #: class-bws-settings.php:217
824
  msgid "Status"
825
  msgstr "Статус"
826
 
827
+ #: class-bws-settings.php:221
828
  msgid "Version"
829
  msgstr "Версія"
830
 
831
+ #: class-bws-settings.php:368
832
  msgid "All plugin settings were restored."
833
  msgstr "Усі налаштування плагіну відновлені."
834
 
835
+ #: class-bws-settings.php:531
836
  msgid "Custom Code"
837
  msgstr "Користувацький код"
838
 
839
+ #: class-bws-settings.php:537
840
+ msgid ""
841
+ "The ability to add custom code is available in the Pro version. If the Pro "
842
+ "version is not available please contact us via Help Center"
843
+ msgstr ""
844
+ "Можливість додавати користувацький код доступна у версії Pro. Якщо версія "
845
+ "Pro недоступна, зв’яжіться з нами через довідковий центр"
846
+
847
+ #: class-bws-settings.php:548
848
  msgid "You do not have sufficient permissions to edit plugins for this site."
849
  msgstr "У вас недостатньо повноважень для редагування плагінів цього сайту."
850
 
851
+ #: class-bws-settings.php:554
852
  msgid "These styles will be added to the header on all pages of your site."
853
  msgstr "Ці стилі будуть додані в заголовок на всіх сторінках вашого сайту."
854
 
855
+ #: class-bws-settings.php:558
856
  #, php-format
857
  msgid ""
858
+ "This PHP code will be hooked to the %s Action and will be printed on front "
859
  "end only."
860
  msgstr ""
861
  "Цей PHP код буде прикріплений до %s action і буде додано лише у фронтенді."
862
 
863
+ #: class-bws-settings.php:562
864
  msgid "These code will be added to the header on all pages of your site."
865
  msgstr "Цей код буде додано в заголовок на всіх сторінках вашого сайту."
866
 
867
+ #: class-bws-settings.php:574
 
 
 
 
 
 
 
 
 
868
  msgid "Browsing"
869
  msgstr "Огляд"
870
 
871
+ #: class-bws-settings.php:586
872
  #, php-format
873
  msgid "Activate custom %s code."
874
  msgstr "Активувати користувацький %s код."
875
 
876
+ #: class-bws-settings.php:597
877
  #, php-format
878
  msgid "Learn more about %s"
879
  msgstr "Дізнатись більше про %s"
880
 
881
+ #: class-bws-settings.php:629
882
  msgid "Miscellaneous Settings"
883
  msgstr "Інші налаштування"
884
 
885
+ #: class-bws-settings.php:640 class-bws-settings.php:714
886
  #, php-format
887
  msgid ""
888
+ "It is prohibited to change %1$s settings on this site in the %2$s network "
889
  "settings."
890
  msgstr ""
891
+ "Мережевими налаштуваннями %1$s забороняється змінювати налаштування %2$s на "
892
  "цьому сайті."
893
 
894
+ #: class-bws-settings.php:645 class-bws-settings.php:719
895
  #, php-format
896
  msgid ""
897
+ "It is prohibited to view %1$s settings on this site in the %2$s network "
898
+ "settings."
899
  msgstr ""
900
+ "Мережевими налаштуваннями %1$s забороняється дивитися налаштування %2$s на "
901
+ "цьому сайті."
902
 
903
+ #: class-bws-settings.php:656
904
  msgid "Pro Options"
905
  msgstr "Pro опції"
906
 
907
+ #: class-bws-settings.php:665
908
  msgid "Enable to display plugin Pro options."
909
  msgstr "Увімкніть для відображення Pro опцій плагіна."
910
 
911
+ #: class-bws-settings.php:671
912
  msgid "Track Usage"
913
  msgstr "Збирати статистику"
914
 
915
+ #: class-bws-settings.php:680
916
  msgid ""
917
  "Enable to allow tracking plugin usage anonymously in order to make it better."
918
  msgstr ""
919
  "Включити, щоб дозволити анонімно відстежувати використання і зробити плагін "
920
  "краще."
921
 
922
+ #: class-bws-settings.php:685
923
  msgid "Default Settings"
924
  msgstr "Налаштування за замовчуванням"
925
 
926
+ #: class-bws-settings.php:687
927
  msgid "Restore Settings"
928
  msgstr "Відновлення налаштувань"
929
 
930
+ #: class-bws-settings.php:688
931
  msgid "This will restore plugin settings to defaults."
932
  msgstr "Відновити всі налаштування плагіна до налаштувань за замовчуванням."
933
 
934
+ #: class-bws-settings.php:703
935
  msgid "Import / Export"
936
  msgstr "Імпорт / Експорт"
937
 
938
+ #: class-bws-settings.php:837
939
  msgid "License Key"
940
  msgstr "Ключ ліцензії"
941
 
942
+ #: class-bws-settings.php:901
943
  #, php-format
944
  msgid "Enter your license key to activate %s and get premium plugin features."
945
  msgstr ""
946
  "Введіть ліцензійний ключ для активації %s і отримання додаткових можливостей "
947
  "плагіна."
948
 
949
+ #: class-bws-settings.php:904 class-bws-settings.php:1122 deprecated.php:275
950
  msgid ""
951
  "Unfortunately, you have exceeded the number of available tries per day. "
952
  "Please, upload the plugin manually."
954
  "На жаль, ви перевищили кількість доступних спроб на день. Будь ласка, "
955
  "завантажте плагін вручну"
956
 
957
+ #: class-bws-settings.php:908 deprecated.php:260
958
  #, php-format
959
  msgid "Start Your Free %s-Day Trial Now"
960
  msgstr "Спробуйте %s-денну Trial версію безкоштовно"
961
 
962
+ #: class-bws-settings.php:927
963
  msgid ""
964
  "If necessary, you can check if the license key is correct or reenter it in "
965
  "the field below."
967
  "При необхідності ви можете перевірити правильність вашого ліцензійного ключа "
968
  "або знову ввести його у полі, що знаходиться вище."
969
 
970
+ #: class-bws-settings.php:938
971
  msgid "Manage License Settings"
972
  msgstr "Управління налаштуваннями ліцензій"
973
 
974
+ #: class-bws-settings.php:940
975
  msgid "Login to Client Area"
976
  msgstr "Зайти в Client Area"
977
 
978
+ #: class-bws-settings.php:942
979
  msgid ""
980
  "Manage active licenses, download BWS products, and view your payment history "
981
  "using BestWebSoft Client Area."
983
  "Керуй активними ліцензіями, завантажуй BWS продукти, а також переглядай "
984
  "історію платежів за допомогою BestWebSoft Client Area."
985
 
986
+ #: class-bws-settings.php:964
987
+ msgid "Security check"
988
+ msgstr "Перевірка безпеки"
989
+
990
+ #: class-bws-settings.php:1005 class-bws-settings.php:1120
991
  msgid "This license key is bound to another site."
992
  msgstr "Цей ліцензійний ключ прив'язано до іншого сайту."
993
 
994
+ #: class-bws-settings.php:1007
995
  msgid ""
996
  "This license key is valid, but Your license has expired. If you want to "
997
  "update our plugin in future, you should extend the license."
999
  "Даний ліцензійний ключ дійсний, але строк вашої ліцензії витік. Якщо ви "
1000
  "хочете оновлювати наш плагін у майбутньому, вам слід подовжити ліцензію."
1001
 
1002
+ #: class-bws-settings.php:1009
1003
  msgid "Unfortunately, you have exceeded the number of available tries."
1004
  msgstr "На жаль, ви перевищили кількість допустимих спроб."
1005
 
1006
+ #: class-bws-settings.php:1011
1007
  msgid ""
1008
  "Unfortunately, the Pro Trial licence was already installed to this domain. "
1009
  "The Pro Trial license can be installed only once."
1011
  "На жаль, Trial Pro версія плагіну уже встановлювалась на цей домен. Trial "
1012
  "Pro версію можна встановлювати лише один раз."
1013
 
1014
+ #: class-bws-settings.php:1016
1015
  msgid "The Pro Trial license key is valid."
1016
  msgstr "Ключ тріал Pro версії вірний."
1017
 
1018
+ #: class-bws-settings.php:1029 deprecated.php:155
1019
  #, php-format
1020
  msgid ""
1021
  "In order to continue using the plugin it is necessary to buy a %s license."
1022
  msgstr "Щоб продовжити користуватись плагіном, потрібно придбати %s ліцензію."
1023
 
1024
+ #: class-bws-settings.php:1124
1025
  #, php-format
1026
  msgid ""
1027
  "Unfortunately, Your license has expired. To continue getting top-priority "
1030
  "На жаль, ваша ліцензія скінчилась. Для того, щоб і надалі отримувати "
1031
  "першочергову тех.підтримку і оновлення, будь ласка, продовжте ліцензію у %s."
1032
 
1033
+ #: class-bws-settings.php:1173
1034
  msgid "Please, enter Your license key"
1035
  msgstr "Будь ласка, впишіть ваш ліцензійний ключ"
1036
 
1037
+ #: class-bws-settings.php:1189
1038
  msgid "Need Help?"
1039
  msgstr "Потрібна допомога?"
1040
 
1041
+ #: class-bws-settings.php:1191
1042
  msgid "Read the Instruction"
1043
  msgstr "Читати інструкцію"
1044
 
1045
+ #: class-bws-settings.php:1196
1046
  msgid "Watch the Video"
1047
  msgstr "Дивитися відео"
1048
 
1049
+ #: class-bws-settings.php:1210
1050
  msgid "Start Your Free Trial"
1051
  msgstr "Використовувати безкоштовну Trial версію"
1052
 
1053
+ #: class-bws-settings.php:1248
1054
  msgid "Request a Feature"
1055
  msgstr "Запропонувати функціонал"
1056
 
1057
+ #: class-bws-settings.php:1254
1058
  #, php-format
1059
  msgid "How can we improve %s?"
1060
  msgstr "Як ми можемо покращити %s?"
1061
 
1062
+ #: class-bws-settings.php:1256
1063
  msgid "We look forward to hear your ideas."
1064
  msgstr "Ми будемо раді почути ваші ідеї."
1065
 
1066
+ #: class-bws-settings.php:1258
1067
  msgid "Describe your idea"
1068
  msgstr "Опишіть свою ідею"
1069
 
1070
+ #: class-bws-settings.php:1261 deactivation-form.php:123
1071
  msgid "Send website data and allow to contact me back"
1072
  msgstr "Надіслати дані сайту і дозволити зв'язатися зі мною"
1073
 
1074
+ #: class-bws-settings.php:1266
1075
  msgid "Submit"
1076
  msgstr "Відправити"
1077
 
1078
+ #: class-bws-settings.php:1267 deactivation-form.php:130
1079
  msgid "Processing"
1080
  msgstr "Обробка"
1081
 
1082
+ #: class-bws-settings.php:1268
1083
  msgid "Thank you!"
1084
  msgstr "Дякую!"
1085
 
1086
+ #: deactivation-form.php:25
1087
  msgid "Need help? We are ready to answer your questions."
1088
  msgstr "Потрібна допомога? Ми готові відповісти на ваші питання."
1089
 
1090
+ #: deactivation-form.php:25
1091
  msgid "Contact Support"
1092
  msgstr "Зв'язатися з тех. підтримкою"
1093
 
1094
+ #: deactivation-form.php:30
1095
  msgid "The plugin is not working"
1096
  msgstr "Плагін не працює"
1097
 
1098
+ #: deactivation-form.php:32
1099
+ msgid "Kindly share what didn't work so we can fix it in future updates..."
1100
+ msgstr ""
1101
+ "Будь ласка, повідомте, що не працює, щоб ми змогли виправити це в майбутніх "
1102
+ "оновленнях..."
1103
+
1104
+ #: deactivation-form.php:36
1105
  msgid "The plugin didn't work as expected"
1106
  msgstr "Плагін не працює, як очікувалося"
1107
 
1108
+ #: deactivation-form.php:38
1109
+ msgid "What did you expect?"
1110
+ msgstr "Що саме ви очікували?"
1111
+
1112
+ #: deactivation-form.php:42
1113
  msgid "The plugin suddenly stopped working"
1114
  msgstr "Плагін раптово перестав працювати"
1115
 
1116
+ #: deactivation-form.php:49
1117
  msgid "The plugin broke my site"
1118
  msgstr "Плагін зламав мій сайт"
1119
 
1120
+ #: deactivation-form.php:56
1121
  msgid "I couldn't understand how to get it work"
1122
  msgstr "Я не можу зрозуміти, як змусити його працювати"
1123
 
1124
+ #: deactivation-form.php:63
1125
  msgid "I found a better plugin"
1126
  msgstr "Я знайшов кращий плагін"
1127
 
1128
+ #: deactivation-form.php:65
1129
+ msgid "What's the plugin name?"
1130
+ msgstr "Яка назва плагіна?"
1131
+
1132
+ #: deactivation-form.php:69
1133
  msgid "The plugin is great, but I need specific feature that you don't support"
1134
  msgstr "Плагін чудовий, але мені потрібен певний функціонал, якого у вас немає"
1135
 
1136
+ #: deactivation-form.php:71
1137
+ msgid "What feature?"
1138
+ msgstr "Який функціонал?"
1139
+
1140
+ #: deactivation-form.php:75
1141
  msgid "I no longer need the plugin"
1142
  msgstr "Плагін мені більше не потрібен"
1143
 
1144
+ #: deactivation-form.php:81
1145
  msgid "It's a temporary deactivation, I'm just debugging an issue"
1146
  msgstr "Це тимчасова деактивація, я просто відлагоджую проблему"
1147
 
1148
+ #: deactivation-form.php:87
1149
  msgid "Other"
1150
  msgstr "Інше"
1151
 
1152
+ #: deactivation-form.php:96
1153
  msgid "Quick Feedback"
1154
  msgstr "Швидкий відгук"
1155
 
1156
+ #: deactivation-form.php:98
1157
  msgid "If you have a moment, please let us know why you are deactivating"
1158
  msgstr ""
1159
  "Якщо у вас є час, будь ласка, повідомте нам, чому ви деактивуете плагін"
1160
 
1161
+ #: deactivation-form.php:128
1162
  msgid "Submit and Deactivate"
1163
  msgstr "Надіслати і деактивувати"
1164
 
1165
+ #: deactivation-form.php:129
1166
  msgid "Skip and Deactivate"
1167
  msgstr "Пропустити і деактивувати"
1168
 
1169
+ #: deactivation-form.php:275
1170
  msgid "Please tell us the reason so we can improve it."
1171
  msgstr "Будь ласка, повідомте нам причину, щоб ми могли покращити плагін."
1172
 
1173
+ #: deprecated.php:29
1174
  msgid "System Status"
1175
  msgstr "Системна інформація"
1176
 
1177
+ #: deprecated.php:129
1178
  msgid ""
1179
  "If necessary, you can check if the license key is correct or reenter it in "
1180
  "the field below. You can find your license key on your personal page - "
1185
  "ліцензійний ключ на вашій персональній сторінці - Client area - на нашому "
1186
  "сайті"
1187
 
1188
+ #: deprecated.php:129
1189
  msgid ""
1190
  "(your username is the email address specified during the purchase). If "
1191
  "necessary, please submit \"Lost your password?\" request."
1193
  "(ваше ім'я користувача - це емейл, який ви вказували при купівлі). При "
1194
  "необхідності, будь ласка, відправте запит на відновлення вашого паролю."
1195
 
1196
+ #: deprecated.php:155
1197
  msgid "After that, you can activate it by entering your license key."
1198
  msgstr "Після цього ви зможете активувати його ввівши ліцензійний ключ."
1199
 
1200
+ #: deprecated.php:158 deprecated.php:253
1201
  msgid "License key can be found in the"
1202
  msgstr "Ліцензійний ключ можна знайти в"
1203
 
1204
+ #: deprecated.php:160 deprecated.php:255
1205
  msgid "(your username is the email address specified during the purchase)."
1206
  msgstr "(ваше ім'я користувача - це емейл, який ви вказували при купівлі)"
1207
 
1208
+ #: deprecated.php:187
1209
  msgid ""
1210
  "Congratulations! The Pro license of the plugin is activated successfully."
1211
  msgstr "Вітаємо! Pro версію плагіну успішно активовано."
1212
 
1213
+ #: deprecated.php:189 deprecated.php:233
1214
  msgid "Please, go to"
1215
  msgstr "Будь ласка, перейдіть на"
1216
 
1217
+ #: deprecated.php:189 deprecated.php:233
1218
  msgid "the setting page"
1219
  msgstr "сторінку установок"
1220
 
1221
+ #: deprecated.php:207
1222
  msgid "Restore all plugin settings to defaults"
1223
  msgstr "Скинути налаштування плагіну до стандартних"
1224
 
1225
+ #: deprecated.php:209
1226
  msgid "Restore settings"
1227
  msgstr "Скинути налаштування"
1228
 
1229
+ #: deprecated.php:231
1230
  msgid ""
1231
  "Congratulations! Pro version of the plugin is installed and activated "
1232
  "successfully."
1233
  msgstr "Вітаємо! Pro версію плагіну успішно завантажено та активовано."
1234
 
1235
+ #: deprecated.php:242
1236
  msgid "Show Pro features"
1237
  msgstr "Показати Pro опції"
1238
 
1239
+ #: deprecated.php:249
1240
  msgid "Enter your license key to install and activate"
1241
  msgstr "Введіть ліцензійний ключ для установки і активації"
1242
 
1243
+ #: deprecated.php:251
1244
  msgid "version of the plugin."
1245
  msgstr "версія плагіна."
1246
 
1247
+ #: product_list.php:9
1248
  msgid "Admin Tools"
1249
  msgstr "Інструменти"
1250
 
1251
+ #: product_list.php:10
1252
  msgid "Content"
1253
  msgstr "Контент"
1254
 
1255
+ #: product_list.php:11
1256
  msgid "eCommerce"
1257
  msgstr "Комерція"
1258
 
1259
+ #: product_list.php:12
1260
  msgid "Marketing"
1261
  msgstr "Маркетинг"
1262
 
1263
+ #: product_list.php:13
1264
  msgid "Navigation"
1265
  msgstr "Навігація"
1266
 
1267
+ #: product_list.php:14
1268
  msgid "Recommended"
1269
  msgstr "Рекомендовані "
1270
 
1271
+ #: product_list.php:15
1272
  msgid "Security"
1273
  msgstr "Безпека"
1274
 
1275
+ #: product_list.php:16
1276
  msgid "SEO"
1277
  msgstr "Пошукова оптимізація"
1278
 
1279
+ #: product_list.php:17
1280
  msgid "SMM"
1281
  msgstr "СММ"
1282
 
1283
+ #: product_list.php:24
1284
  msgid "Give a birth for your bike rental and booking WordPress website."
1285
  msgstr "Створіть прокат та бронювання велосипедів для веб-сайту WordPress."
1286
 
1287
+ #: product_list.php:36
1288
  msgid "Best secure captcha plugin to protect your WordPress forms."
1289
  msgstr "Кращий плагін капчі, який захистить форми вашого сайту WordPress."
1290
 
1291
+ #: product_list.php:46
1292
  msgid "Create your own rental website for car renting and booking."
1293
  msgstr "Створіть свій власний сайт прокату і резервування автомобілів."
1294
 
1295
+ #: product_list.php:58
1296
  msgid ""
1297
  "Add columns with custom content to WordPress website pages, posts, widgets, "
1298
  "etc."
1300
  "Додайте стовпці з користувачим вмістом на сторінки веб-сайту WordPress, "
1301
  "повідомлення, віджети тощо."
1302
 
1303
+ #: product_list.php:65
1304
  msgid ""
1305
  "Allow customers to reach you using secure contact form plugin any website "
1306
  "must have."
1308
  "Надайте можливість клієнтам здійснювати зв'язок з вами через безпечний "
1309
  "плагін контактної форми, який повинен мати будь-який сайт."
1310
 
1311
+ #: product_list.php:75
1312
  msgid "Add unlimited number of contact forms to WordPress website."
1313
  msgstr "Додавайте необмежену кількість контактних форм на ваш сайт WordPress."
1314
 
1315
+ #: product_list.php:85
1316
  msgid "Save and manage Contact Form messages. Never lose important data."
1317
  msgstr ""
1318
  "Зберігайте і керуйте повідомленнями плагіну Contact Form. Ніколи не "
1319
  "втрачайте важливі дані."
1320
 
1321
+ #: product_list.php:95
1322
  msgid "Add unlimited custom pages to WordPress admin dashboard."
1323
  msgstr ""
1324
  "Додавайте необмежену кількість користувацьких сторінок у панелі "
1325
  "адміністратора WordPress."
1326
 
1327
+ #: product_list.php:105
1328
  msgid ""
1329
  "Add custom post types and taxonomies to WordPress website search results."
1330
  msgstr ""
1331
  "Додавайте користувацькі типи постів і таксономії у результати пошуку на "
1332
  "вашому сайті WordPress."
1333
 
1334
+ #: product_list.php:115
1335
  msgid "Add PayPal and 2CO donate buttons to receive charity payments."
1336
  msgstr ""
1337
  "Додавайте кнопки PayPal і 2CO, щоб отримувати пожертви та благодійні внески."
1338
 
1339
+ #: product_list.php:122
1340
  msgid ""
1341
  "Get latest error log messages to diagnose website problems. Define and fix "
1342
  "issues faster."
1344
  "Отримуйте останні повідомлення з журналу помилок для діагностики проблем "
1345
  "сайту. Швидше виявляйте і усувайте проблеми."
1346
 
1347
+ #: product_list.php:129
1348
  msgid ""
1349
  "Add Facebook Follow, Like, and Share buttons to WordPress posts, pages, and "
1350
  "widgets."
1352
  "Додавайте кнопки Facebook \"Підписатися\", \"Подобається\" та \"Поділитися\" "
1353
  "у пости, сторінки і віджети сайту WordPress."
1354
 
1355
+ #: product_list.php:139
1356
  msgid ""
1357
  "Add beautiful galleries, albums & images to your WordPress website in a few "
1358
  "clicks."
1360
  "Додавайте мальовничі галереї, альбоми, зображення та категорії галереї на "
1361
  "ваш сайт WordPress всього в декілька кліків."
1362
 
1363
+ #: product_list.php:149
1364
  msgid ""
1365
  "Stronger security solution which protects your WordPress website from hacks "
1366
  "and unauthorized login attempts."
1368
  "Найпотужніше рішення безпеки, яке захищає ваш сайт WordPress від зломів та "
1369
  "неавторизованих спроб входу в систему."
1370
 
1371
+ #: product_list.php:159
1372
  msgid ""
1373
  "Add Adsense ads to WordPress website pages, posts, custom posts, search "
1374
  "results, categories, tags, and widgets."
1376
  "Додавайте рекламу сервісу Adsense на сторінки, пости, користувацькі пости, "
1377
  "результати пошуку, категорії, теги і віджети сайту WordPress."
1378
 
1379
+ #: product_list.php:169
1380
  msgid "Add Google Analytics code to WordPress website and track basic stats."
1381
  msgstr ""
1382
  "Додавайте код Google Analytics на ваш сайт WordPress та відстежуйте базову "
1383
  "статистику сайту."
1384
 
1385
+ #: product_list.php:179
1386
  msgid "Protect WordPress website forms from spam entries with reCaptcha."
1387
  msgstr ""
1388
  "Захищайте форми вашого сайту WordPress від спаму за допомогою reCaptcha."
1389
 
1390
+ #: product_list.php:189
1391
  msgid "Add customized Google maps to WordPress posts, pages and widgets."
1392
  msgstr ""
1393
  "Додавайте користувацькі карти Google у пости, сторінки та віджети WordPress."
1394
 
1395
+ #: product_list.php:199
1396
  msgid ""
1397
  "Generate and add XML sitemap to WordPress website. Help search engines index "
1398
  "your blog."
1400
  "Створюйте та додавайте файли XML sitemap на ваш сайт WordPress. Допоможіть "
1401
  "пошуковим системам проіндексувати ваш блог."
1402
 
1403
+ #: product_list.php:209
1404
  msgid ""
1405
  "Replace external WordPress website links with Google shortlinks and track "
1406
  "click stats."
1408
  "Замініть зовнішні посилання сайту WordPress на короткі посилання Google і "
1409
  "відстежуйте статистику кліків."
1410
 
1411
+ #: product_list.php:216
1412
  msgid ""
1413
  "Protect WordPress website – allow and deny access for certain IP addresses, "
1414
  "hostnames, etc."
1416
  "Захистіть свій сайт WordPress - надавайте та забороняйте доступ з певних IP-"
1417
  "адрес, імен хостів і т.д."
1418
 
1419
+ #: product_list.php:226
1420
  msgid ""
1421
  "Create your personal job board and listing WordPress website. Search jobs, "
1422
  "submit CV/resumes, choose candidates."
1425
  "WordPress. Здійснюйте пошук вакансій, подачу резюме/CV кандидата, вибір "
1426
  "кандидатів."
1427
 
1428
+ #: product_list.php:233
1429
  msgid ""
1430
  "Protect WordPress website against brute force attacks. Limit rate of login "
1431
  "attempts."
1433
  "Захищайте свій сайт WordPress від брутфорс-атак. Обмежуйте кількість спроб "
1434
  "введення логіна."
1435
 
1436
+ #: product_list.php:243
1437
  msgid ""
1438
  "Add LinkedIn Share and Follow buttons to WordPress posts, pages and widgets. "
1439
  "5 plugins included – profile, insider, etc."
1441
  "Додавайте кнопки LinkedIn \"Поділитися\" та \"Відстежувати\" до постів, "
1442
  "сторінок і віджетів WordPress. 5 плагінів включено - Профіль, Інсайдер і т.д."
1443
 
1444
+ #: product_list.php:253
1445
  msgid ""
1446
  "Translate WordPress website content to other languages manually. Create "
1447
  "multilingual pages, posts, widgets, menus, etc."
1449
  "Перекладайте вміст сайту WordPress іншими мовами вручну. Створюйте "
1450
  "багатомовні сторінки, пости, віджети, меню і т.д."
1451
 
1452
+ #: product_list.php:263
1453
  msgid ""
1454
  "Add customizable pagination to WordPress website. Split long content to "
1455
  "multiple pages for better navigation."
1457
  "Додавайте пагінацію з можливістю налаштування на ваш сайт WordPress. "
1458
  "Розбивайте об'ємний контент на декілька сторінок для кращої навігації."
1459
 
1460
+ #: product_list.php:273
1461
  msgid ""
1462
  "Generate PDF files and print WordPress posts/pages. Customize document "
1463
  "header/footer styles and appearance."
1465
  "Створюйте PDF-файли і друкуйте пости/сторінки сайту WordPress. Налаштовуйте "
1466
  "стилі хедера/футера документа і його зовнішній вигляд."
1467
 
1468
+ #: product_list.php:283
1469
  msgid ""
1470
  "Add Pinterest Follow, Pin It buttons and profile widgets (Pin, Board, "
1471
  "Profile) to WordPress posts, pages and widgets."
1473
  "Додавайте кнопки Pinterest \"Підписатися\", \"Зберегти\" і віджети профілю "
1474
  "(Пін, Дошка, Профіль) до постів, сторінок і віджетів WordPress."
1475
 
1476
+ #: product_list.php:293
1477
  msgid ""
1478
  "Create your personal portfolio WordPress website. Manage and showcase past "
1479
  "projects to get more clients."
1481
  "Створюйте і додавайте портфоліо на свій сайт WordPress. Керуйте і "
1482
  "демонструйте минулі проекти, щоб залучити більше клієнтів."
1483
 
1484
+ #: product_list.php:303
1485
  msgid "Export WordPress posts to CSV file format easily. Configure data order."
1486
  msgstr ""
1487
  "З легкістю експортуйте пости WordPress в файли формату CSV. Налаштуйте "
1488
  "порядок відображення даних."
1489
 
1490
+ #: product_list.php:313
1491
  msgid ""
1492
  "Add extra fields to default WordPress user profile. The easiest way to "
1493
  "create and manage additional custom values."
1495
  "Додавайте користувацькі поля у стандартний профіль WordPress. Найпростіший "
1496
  "спосіб створення і управління додатковими полями."
1497
 
1498
+ #: product_list.php:323
1499
  msgid ""
1500
  "Add and display HTML advertisement banner on WordPress website. Customize "
1501
  "bar styles and appearance."
1503
  "Додавайте відображення банерної HTML реклами на сайті WordPress. Налаштуйте "
1504
  "стилі і зовнішній вигляд банеру."
1505
 
1506
+ #: product_list.php:333
1507
  msgid ""
1508
  "Add customizable quotes and tips blocks to WordPress posts, pages and "
1509
  "widgets."
1511
  "Додавайте редаговані цитати та підказки до постів, сторінок і віджетів "
1512
  "WordPress."
1513
 
1514
+ #: product_list.php:340
1515
  msgid ""
1516
  "Add rating plugin to your WordPress website to receive feedback from your "
1517
  "customers."
1519
  "Додавайте систему оцінювання і рейтингу на ваш сайт WordPress і отримуйте "
1520
  "відгуки від ваших клієнтів."
1521
 
1522
+ #: product_list.php:350
1523
  msgid ""
1524
  "Create your personal real estate WordPress website. Sell, rent and buy "
1525
  "properties. Add, search and browse listings easily."
1528
  "Продавайте, орендуйте і купуйте нерухомість. Легко додавайте, знаходьте і "
1529
  "переглядайте лістинги."
1530
 
1531
+ #: product_list.php:360
1532
  msgid ""
1533
  "Add related, featured, latest, and popular posts to your WordPress website. "
1534
  "Connect your blog readers with a relevant content."
1536
  "Додавайте схожі, обрані, останні та популярні пости на ваш сайт WordPress. "
1537
  "Надавайте своїм читачам контент схожої тематики."
1538
 
1539
+ #: product_list.php:367
1540
  msgid ""
1541
  "Send bulk email messages to WordPress users. Custom templates, advanced "
1542
  "settings and detailed reports."
1544
  "Здійснюйте масову розсилку листів користувачам WordPress. Користувацькі "
1545
  "шаблони, додаткові налаштування і детальні звіти."
1546
 
1547
+ #: product_list.php:377
1548
  msgid ""
1549
  "The best responsive slider plugin for your WordPress website. Create "
1550
  "beautifully animated slides just in a few clicks."
1552
  "Найкращий адаптивний слайдер для вашого сайту WordPress. Створюйте красиво "
1553
  "анімовані слайди всього в декілька кліків."
1554
 
1555
+ #: product_list.php:384
1556
  msgid ""
1557
  "Configure SMTP server to receive email messages from WordPress to Gmail, "
1558
  "Yahoo, Hotmail and other services."
1560
  "Налаштовуйте SMTP-сервер, щоб отримувати електронні повідомлення з сайту "
1561
  "WordPress на такі поштові служби, як Gmail, Yahoo, Hotmail і багато інших."
1562
 
1563
+ #: product_list.php:391
1564
  msgid ""
1565
  "Add social media buttons and widgets to WordPress posts, pages and widgets. "
1566
  "FB, Twitter, Pinterest, LinkedIn."
1568
  "Додавайте кнопки і віджети соціальних мереж до постів, сторінок і віджетів "
1569
  "WordPress. FB, Twitter, Pinterest, LinkedIn."
1570
 
1571
+ #: product_list.php:401
1572
  msgid ""
1573
  "Add social media login, registration, and commenting to your WordPress "
1574
  "website."
1576
  "Додавайте на свій сайт WordPress можливість входу, реєстрації та "
1577
  "коментування з використанням існуючих акаунтів соціальних мереж."
1578
 
1579
+ #: product_list.php:408
1580
  msgid ""
1581
  "Add email newsletter sign up form to WordPress posts, pages and widgets. "
1582
  "Collect data and subscribe your users."
1584
  "Додавайте форму підписки на розсилку новин у пости, сторінки і віджети "
1585
  "WordPress. Збирайте дані і здійснюйте підписку користувачів."
1586
 
1587
+ #: product_list.php:418
1588
  msgid ""
1589
  "Add testimonials and feedbacks from your customers to WordPress website "
1590
  "posts, pages, and widgets."
1592
  "Додавайте рекомендації та відгуки ваших клієнтів в пости, сторінки і віджети "
1593
  "сайту WordPress."
1594
 
1595
+ #: product_list.php:425
1596
  msgid ""
1597
  "Best timesheet plugin for WordPress. Track employee time, streamline "
1598
  "attendance and generate reports."
1600
  "Кращий плагін обліку робочого часу на сайті WordPress. Відстежуйте час "
1601
  "роботи співробітників, оптимізуйте графік роботи в офісі і створюйте звіти."
1602
 
1603
+ #: product_list.php:435
1604
  msgid ""
1605
  "Add Twitter Follow, Tweet, Hashtag, and Mention buttons to WordPress posts "
1606
  "and pages."
1608
  "Додавайте кнопки Твіттера \"Читати\", \"Твітнути\", \"Хештеґ\" і \"Згадати\" "
1609
  "до постів і сторінок WordPress."
1610
 
1611
+ #: product_list.php:445
1612
  msgid ""
1613
  "Automatically check and update WordPress website core with all installed "
1614
  "plugins and themes to the latest versions."
1616
  "Виконуйте автоматичну перевірку і оновлення ядра WordPress до останніх "
1617
  "версій з усіма встановленими плагінами та темами."
1618
 
1619
+ #: product_list.php:455
1620
  msgid ""
1621
  "Powerful user role management plugin for WordPress website. Create, edit, "
1622
  "copy, and delete user roles."
1624
  "Ефективний плагін управління ролями користувачів для сайту WordPress. "
1625
  "Створюйте, редагуйте, копіюйте і видаляйте ролі користувачів."
1626
 
1627
+ #: product_list.php:465
1628
  msgid ""
1629
  "Display live count of online visitors who are currently browsing your "
1630
  "WordPress website."
1632
  "Ведіть підрахунок кількості відвідувачів, які в даний час переглядають ваш "
1633
  "сайт WordPress."
1634
 
1635
+ #: product_list.php:475
1636
  msgid ""
1637
  "Backup and export Zendesk Help Center content automatically to your "
1638
  "WordPress website database."
1640
  "Робіть автоматичне резервне копіювання і експорт вмісту Zendesk Help Center "
1641
  "в базу даних вашого сайту WordPress."
1642
 
1643
+ #, php-format
1644
+ #~ msgid ""
1645
+ #~ "You need to make this files writable before you can save your changes. "
1646
+ #~ "See %s the Codex %s for more information."
1647
+ #~ msgstr ""
1648
+ #~ "Вам потрібно зробити цей файл доступним для запису, перед тим як ви "
1649
+ #~ "зможете зберегти свої зміни. Перегляньте %sКодекс%s для додаткової "
1650
+ #~ "інформації."
1651
+
1652
  #~ msgid "Create your personal car rental/booking and reservation website."
1653
  #~ msgstr "Створіть свій власний сайт прокату і резервування автомобілів."
1654
 
1688
  #~ "Немає доступу до теки завантажень WordPress. Будь ласка, завантажте "
1689
  #~ "плагін вручну."
1690
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1691
  #~ msgid "Please, enter your license key"
1692
  #~ msgstr "Будь ласка, введіть ваш ліцензійний ключ"
1693
 
bws_menu/product_list.php CHANGED
@@ -1,509 +1,510 @@
1
  <?php
2
- /*
3
- * BestWebSoft product list
4
- */
 
5
  global $bws_plugin_info, $wp_version;
6
 
7
  $bws_plugins_category = array(
8
- 'admin-tools' => array( 'name' => __( 'Admin Tools', 'bestwebsoft' ) ),
9
- 'content' => array( 'name' => __( 'Content', 'bestwebsoft' ) ),
10
- 'ecommerce' => array( 'name' => __( 'eCommerce', 'bestwebsoft' ) ),
11
- 'marketing' => array( 'name' => __( 'Marketing', 'bestwebsoft' ) ),
12
- 'navigation' => array( 'name' => __( 'Navigation', 'bestwebsoft' ) ),
13
- 'recommended' => array( 'name' => __( 'Recommended', 'bestwebsoft' ) ),
14
- 'security' => array( 'name' => __( 'Security', 'bestwebsoft' ) ),
15
- 'seo' => array( 'name' => __( 'SEO', 'bestwebsoft' ) ),
16
- 'smm' => array( 'name' => __( 'SMM', 'bestwebsoft' ) ),
17
  );
18
 
19
  $bws_plugins = array(
20
- 'bike-rental/bike-rental.php' => array(
21
- 'category' => array( 'ecommerce' ),
22
- 'name' => 'Bike Rental',
23
- 'description' => __( 'Give a birth for your bike rental and booking WordPress website.', 'bestwebsoft' ),
24
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/bike-rental/?k=04387cfc31fc8b9553e4741392762231&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
25
- 'settings' => 'edit.php?post_type=bws_bike&page=bkng_general_settings',
26
- 'pro_version' => 'bike-rental-pro/bike-rental-pro.php',
27
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/bike-rental/buy/?k=9b3222b005340035eaead38a7a495a0d&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
28
- 'pro_settings' => 'edit.php?post_type=bws_bike&page=bkrntl_bws_bike_settings',
29
- 'icon' => bws_menu_url( "icons/plugins/" ) . 'bike-rental.png',
30
- 'install_url' => 'https://bestwebsoft.com/products/wordpress/plugins/bike-rental/'
31
- ),
32
- 'captcha-bws/captcha-bws.php' => array(
33
- 'category' => array( 'security', 'recommended' ),
34
- 'name' => 'Captcha',
35
- 'description' => __( 'Best secure captcha plugin to protect your WordPress forms.', 'bestwebsoft' ),
36
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/captcha/?k=d678516c0990e781edfb6a6c874f0b8a&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
37
- 'settings' => 'admin.php?page=captcha.php',
38
- 'pro_version' => 'captcha-pro/captcha_pro.php',
39
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/captcha/buy/?k=ff7d65e55e5e7f98f219be9ed711094e&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
40
- 'pro_settings' => 'admin.php?page=captcha_pro.php'
41
- ),
42
- 'bws-car-rental/bws-car-rental.php' => array(
43
- 'category' => array( 'ecommerce' ),
44
- 'name' => 'Car Rental V2',
45
- 'description' => __( 'Create your own rental website for car renting and booking.', 'bestwebsoft' ),
46
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/car-rental-v2/?k=ca43df54beefae7128a7005bce0ec651&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
47
- 'settings' => 'admin.php?page=bws-car-rental-settings',
48
- 'pro_version' => 'bws-car-rental-pro/bws-car-rental-pro.php',
49
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/car-rental-v2/buy/?k=63cac1b736047a3f5a2f5a7c5336f3c4&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
50
- 'pro_settings' => 'edit.php?post_type=bws_bkng_products&page=bws-car-rental-pro-settings',
51
- 'icon' => '//ps.w.org/car-rental/assets/icon-128x128.png',
52
- 'install_url' => 'https://bestwebsoft.com/products/wordpress/plugins/car-rental-v2/'
53
- ),
54
- 'columns-bws/columns-bws.php' => array(
55
- 'category' => array( 'content' ),
56
- 'name' => 'Columns',
57
- 'description' => __( 'Add columns with custom content to WordPress website pages, posts, widgets, etc.', 'bestwebsoft' ),
58
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/columns/?k=6d2cddc059a04e4d528cec14de47fb1e&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
59
- 'settings' => 'admin.php?page=columns-settings.php'
60
- ),
61
- 'contact-form-plugin/contact_form.php' => array(
62
- 'category' => array( 'marketing', 'recommended' ),
63
- 'name' => 'Contact Form',
64
- 'description' => __( 'Allow customers to reach you using secure contact form plugin any website must have.', 'bestwebsoft' ),
65
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form/?k=012327ef413e5b527883e031d43b088b&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
66
- 'settings' => 'admin.php?page=contact_form.php',
67
- 'pro_version' => 'contact-form-pro/contact_form_pro.php',
68
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form/buy/?k=773dc97bb3551975db0e32edca1a6d71&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
69
- 'pro_settings' => 'admin.php?page=contact_form_pro.php'
70
- ),
71
- 'contact-form-multi/contact-form-multi.php' => array(
72
- 'category' => array( 'marketing', 'recommended' ),
73
- 'name' => 'Contact Form Multi',
74
- 'description' => __( 'Add unlimited number of contact forms to WordPress website.', 'bestwebsoft' ),
75
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form-multi/?k=83cdd9e72a9f4061122ad28a67293c72&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
76
- 'settings' => '',
77
- 'pro_version' => 'contact-form-multi-pro/contact-form-multi-pro.php',
78
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form-multi/buy/?k=fde3a18581c143654f060c398b07e8ac&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
79
- 'pro_settings' => ''
80
- ),
81
- 'contact-form-to-db/contact_form_to_db.php' => array(
82
- 'category' => array( 'admin-tools', 'recommended' ),
83
- 'name' => 'Contact Form to DB',
84
- 'description' => __( 'Save and manage Contact Form messages. Never lose important data.', 'bestwebsoft' ),
85
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form-to-db/?k=ba3747d317c2692e4136ca096a8989d6&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
86
- 'settings' => 'admin.php?page=contact_form_to_db.php',
87
- 'pro_version' => 'contact-form-to-db-pro/contact_form_to_db_pro.php',
88
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form-to-db/buy/?k=6ce5f4a9006ec906e4db643669246c6a&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
89
- 'pro_settings' => 'admin.php?page=contact_form_to_db_pro.php'
90
- ),
91
- 'custom-admin-page/custom-admin-page.php' => array(
92
- 'category' => array( 'admin-tools' ),
93
- 'name' => 'Custom Admin Page',
94
- 'description' => __( 'Add unlimited custom pages to WordPress admin dashboard.', 'bestwebsoft' ),
95
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/custom-admin-page/?k=9ac03f16c25e845e8e055a221c3e1467&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
96
- 'settings' => 'edit.php?post_type=bws-admin_page&page=custom-admin-page.php',
97
- 'pro_version' => 'custom-admin-page-pro/custom-admin-page-pro.php',
98
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/custom-admin-page/buy/?k=b986f456dba092b537f1a7755a363be9&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
99
- 'pro_settings' => 'edit.php?post_type=bws-admin_page&page=custom-admin-page-pro.php'
100
- ),
101
- 'custom-search-plugin/custom-search-plugin.php' => array(
102
- 'category' => array( 'navigation' ),
103
- 'name' => 'Custom Search',
104
- 'description' => __( 'Add custom post types and taxonomies to WordPress website search results.', 'bestwebsoft' ),
105
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/custom-search/?k=933be8f3a8b8719d95d1079d15443e29&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
106
- 'settings' => 'admin.php?page=custom_search.php',
107
- 'pro_version' => 'custom-search-pro/custom-search-pro.php',
108
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/custom-search/buy/?k=062b652ac6ac8ba863c9f30fc21d62c6&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
109
- 'pro_settings' => 'admin.php?page=custom_search_pro.php'
110
- ),
111
- 'donate-button/donate.php' => array(
112
- 'category' => array( 'ecommerce' ),
113
- 'name' => 'Donate',
114
- 'description' => __( 'Add PayPal and 2CO donate buttons to receive charity payments.', 'bestwebsoft' ),
115
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/donate/?k=a8b2e2a56914fb1765dd20297c26401b&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
116
- 'settings' => 'admin.php?page=donate.php'
117
- ),
118
- 'error-log-viewer/error-log-viewer.php' => array(
119
- 'category' => array( 'admin-tools' ),
120
- 'name' => 'Error Log Viewer',
121
- 'description' => __( 'Get latest error log messages to diagnose website problems. Define and fix issues faster.', 'bestwebsoft' ),
122
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/error-log-viewer/?k=da0de8bd2c7a0b2fea5df64d55a368b3&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
123
- 'settings' => 'admin.php?page=rrrlgvwr.php&tab=settings'
124
  ),
125
  'facebook-button-plugin/facebook-button-plugin.php' => array(
126
- 'category' => array( 'smm' ),
127
- 'name' => 'Like & Share',
128
- 'description' => __( 'Add Facebook Follow, Like, and Share buttons to WordPress posts, pages, and widgets.', 'bestwebsoft' ),
129
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/facebook-like-button/?k=05ec4f12327f55848335802581467d55&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
130
- 'settings' => 'admin.php?page=facebook-button-plugin.php',
131
- 'pro_version' => 'facebook-button-pro/facebook-button-pro.php',
132
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/facebook-like-button/buy/?k=8da168e60a831cfb3525417c333ad275&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
133
- 'pro_settings' => 'admin.php?page=facebook-button-pro.php'
134
- ),
135
- 'gallery-plugin/gallery-plugin.php' => array(
136
- 'category' => array( 'content', 'recommended' ),
137
- 'name' => 'Gallery',
138
- 'description' => __( 'Add beautiful galleries, albums & images to your WordPress website in a few clicks.', 'bestwebsoft' ),
139
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/gallery/?k=2da21c0a64eec7ebf16337fa134c5f78&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
140
- 'settings' => 'admin.php?page=gallery-plugin.php',
141
- 'pro_version' => 'gallery-plugin-pro/gallery-plugin-pro.php',
142
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/gallery/buy/?k=382e5ce7c96a6391f5ffa5e116b37fe0&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
143
- 'pro_settings' => 'admin.php?page=gallery-plugin-pro.php'
144
  ),
145
  'bws-google-2-step-verification/bws-google-2-step-verification.php' => array(
146
- 'category' => array( 'security' ),
147
- 'name' => '2-Step Verification',
148
- 'description' => __( 'Stronger security solution which protects your WordPress website from hacks and unauthorized login attempts.', 'bestwebsoft' ),
149
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/google-2-step-verification/?k=78de1a525f968d56e39f7325908aa98e&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
150
- 'settings' => 'admin.php?page=google-2-step-verification.php',
151
- 'pro_version' => 'bws-google-2-step-verification-pro/bws-google-2-step-verification-pro.php',
152
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/google-2-step-verification/buy/?k=b5605ea9bb3628682cfa416e70e78410&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
153
- 'pro_settings' => 'admin.php?page=google-2-step-verification-pro.php'
154
- ),
155
- 'adsense-plugin/adsense-plugin.php' => array(
156
- 'category' => array( 'marketing' ),
157
- 'name' => 'Google Ads',
158
- 'description' => __( 'Add Adsense ads to WordPress website pages, posts, custom posts, search results, categories, tags, and widgets.', 'bestwebsoft' ),
159
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/google-adsense/?k=60e3979921e354feb0347e88e7d7b73d&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
160
- 'settings' => 'admin.php?page=adsense-plugin.php',
161
- 'pro_version' => 'adsense-pro/adsense-pro.php',
162
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/google-adsense/buy/?k=c23889b293d62aa1ad2c96513405f0e1&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
163
- 'pro_settings' => 'admin.php?page=adsense-pro.php'
164
- ),
165
- 'bws-google-analytics/bws-google-analytics.php' => array(
166
- 'category' => array( 'admin-tools' ),
167
- 'name' => 'Analytics',
168
- 'description' => __( 'Add Google Analytics code to WordPress website and track basic stats.', 'bestwebsoft' ),
169
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/bws-google-analytics/?k=261c74cad753fb279cdf5a5db63fbd43&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
170
- 'settings' => 'admin.php?page=bws-google-analytics.php',
171
- 'pro_version' => 'bws-google-analytics-pro/bws-google-analytics-pro.php',
172
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/bws-google-analytics/buy/?k=83796e84fec3f70ecfcc8894a73a6c4a&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
173
- 'pro_settings' => 'admin.php?page=bws-google-analytics-pro.php'
174
- ),
175
- 'google-captcha/google-captcha.php' => array(
176
- 'category' => array( 'security', 'recommended' ),
177
- 'name' => 'reCaptcha',
178
- 'description' => __( 'Protect WordPress website forms from spam entries with reCaptcha.', 'bestwebsoft' ),
179
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/google-captcha/?k=7b59fbe542acf950b29f3e020d5ad735&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
180
- 'settings' => 'admin.php?page=google-captcha.php',
181
- 'pro_version' => 'google-captcha-pro/google-captcha-pro.php',
182
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/google-captcha/buy/?k=773d30149acf1edc32e5c0766b96c134&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
183
- 'pro_settings' => 'admin.php?page=google-captcha-pro.php'
184
- ),
185
- 'bws-google-maps/bws-google-maps.php' => array(
186
- 'category' => array( 'content' ),
187
- 'name' => 'Maps',
188
- 'description' => __( 'Add customized Google maps to WordPress posts, pages and widgets.', 'bestwebsoft' ),
189
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/bws-google-maps/?k=d8fac412d7359ebaa4ff53b46572f9f7&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
190
- 'settings' => 'admin.php?page=bws-google-maps.php',
191
- 'pro_version' => 'bws-google-maps-pro/bws-google-maps-pro.php',
192
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/bws-google-maps/buy/?k=117c3f9fc17f2c83ef430a8a9dc06f56&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
193
- 'pro_settings' => 'admin.php?page=bws-google-maps-pro.php'
194
- ),
195
- 'google-sitemap-plugin/google-sitemap-plugin.php' => array(
196
- 'category' => array( 'seo', 'recommended' ),
197
- 'name' => 'Sitemap',
198
- 'description' => __( 'Generate and add XML sitemap to WordPress website. Help search engines index your blog.', 'bestwebsoft' ),
199
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/google-sitemap/?k=5202b2f5ce2cf85daee5e5f79a51d806&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
200
- 'settings' => 'admin.php?page=google-sitemap-plugin.php',
201
- 'pro_version' => 'google-sitemap-pro/google-sitemap-pro.php',
202
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/google-sitemap/buy/?k=7ea384a5cc36cb4c22741caa20dcd56d&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
203
- 'pro_settings' => 'admin.php?page=google-sitemap-pro.php'
204
- ),
205
- 'google-shortlink/google-shortlink.php' => array(
206
- 'category' => array( 'seo' ),
207
- 'name' => 'Shortlink',
208
- 'description' => __( 'Replace external WordPress website links with Google shortlinks and track click stats.', 'bestwebsoft' ),
209
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/google-shortlink/?k=afcf3eaed021bbbbeea1090e16bc22db&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
210
- 'settings' => 'admin.php?page=gglshrtlnk_options'
211
- ),
212
- 'htaccess/htaccess.php' => array(
213
- 'category' => array( 'security' ),
214
- 'name' => 'Htaccess',
215
- 'description' => __( 'Protect WordPress website – allow and deny access for certain IP addresses, hostnames, etc.', 'bestwebsoft' ),
216
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/htaccess/?k=2b865fcd56a935d22c5c4f1bba52ed46&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
217
- 'settings' => 'admin.php?page=htaccess.php',
218
- 'pro_version' => 'htaccess-pro/htaccess-pro.php',
219
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/htaccess/buy/?k=59e9209a32864be534fda77d5e591c15&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
220
- 'pro_settings' => 'admin.php?page=htaccess-pro.php'
221
- ),
222
- 'job-board/job-board.php' => array(
223
- 'category' => array( 'ecommerce' ),
224
- 'name' => 'Job Board',
225
- 'description' => __( 'Create your personal job board and listing WordPress website. Search jobs, submit CV/resumes, choose candidates.', 'bestwebsoft' ),
226
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/job-board/?k=b0c504c9ce6edd6692e04222af3fed6f&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
227
- 'settings' => 'admin.php?page=job-board.php'
228
- ),
229
- 'limit-attempts/limit-attempts.php' => array(
230
- 'category' => array( 'security', 'recommended' ),
231
- 'name' => 'Limit Attempts',
232
- 'description' => __( 'Protect WordPress website against brute force attacks. Limit rate of login attempts.', 'bestwebsoft' ),
233
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/limit-attempts/?k=b14e1697ee4d008abcd4bd34d492573a&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
234
- 'settings' => 'admin.php?page=limit-attempts.php',
235
- 'pro_version' => 'limit-attempts-pro/limit-attempts-pro.php',
236
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/limit-attempts/buy/?k=9d42cdf22c7fce2c4b6b447e6a2856e0&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
237
- 'pro_settings' => 'admin.php?page=limit-attempts-pro.php'
238
- ),
239
- 'bws-linkedin/bws-linkedin.php' => array(
240
- 'category' => array( 'smm' ),
241
- 'name' => 'LinkedIn',
242
- 'description' => __( 'Add LinkedIn Share and Follow buttons to WordPress posts, pages and widgets. 5 plugins included – profile, insider, etc.', 'bestwebsoft' ),
243
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/linkedin/?k=d63c7319622ccc5f589dd2d545c1d77c&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
244
- 'settings' => 'admin.php?page=linkedin.php',
245
- 'pro_version' => 'bws-linkedin-pro/bws-linkedin-pro.php',
246
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/linkedin/buy/?k=41dcc36192994408d24b103a02134567&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
247
- 'pro_settings' => 'admin.php?page=linkedin-pro.php'
248
- ),
249
- 'multilanguage/multilanguage.php' => array(
250
- 'category' => array( 'content', 'recommended' ),
251
- 'name' => 'Multilanguage',
252
- 'description' => __( 'Translate WordPress website content to other languages manually. Create multilingual pages, posts, widgets, menus, etc.', 'bestwebsoft' ),
253
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/multilanguage/?k=7d68c7bfec2486dc350c67fff57ad433&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
254
- 'settings' => 'admin.php?page=mltlngg_settings',
255
- 'pro_version' => 'multilanguage-pro/multilanguage-pro.php',
256
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/multilanguage/buy/?k=2d1121cd9a5ced583fc29eefd51bdf57&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
257
- 'pro_settings' => 'admin.php?page=mltlnggpr_settings'
258
- ),
259
- 'pagination/pagination.php' => array(
260
- 'category' => array( 'navigation' ),
261
- 'name' => 'Pagination',
262
- 'description' => __( 'Add customizable pagination to WordPress website. Split long content to multiple pages for better navigation.', 'bestwebsoft' ),
263
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/pagination/?k=22adb940256f149559ba8fedcd728ac8&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
264
- 'settings' => 'admin.php?page=pagination.php',
265
- 'pro_version' => 'pagination-pro/pagination-pro.php',
266
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/pagination/buy/?k=b87201d5a0505c621d0b14f4e8d4ccd6&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
267
- 'pro_settings' => 'admin.php?page=pagination-pro.php'
268
- ),
269
- 'pdf-print/pdf-print.php' => array(
270
- 'category' => array( 'content' ),
271
- 'name' => 'PDF & Print',
272
- 'description' => __( 'Generate PDF files and print WordPress posts/pages. Customize document header/footer styles and appearance.', 'bestwebsoft' ),
273
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/pdf-print/?k=bfefdfb522a4c0ff0141daa3f271840c&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
274
- 'settings' => 'admin.php?page=pdf-print.php',
275
- 'pro_version' => 'pdf-print-pro/pdf-print-pro.php',
276
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/pdf-print/buy/?k=fd43a0e659ddc170a9060027cbfdcc3a&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
277
- 'pro_settings' => 'admin.php?page=pdf-print-pro.php'
278
- ),
279
- 'bws-pinterest/bws-pinterest.php' => array(
280
- 'category' => array( 'smm' ),
281
- 'name' => 'Pinterest',
282
- 'description' => __( 'Add Pinterest Follow, Pin It buttons and profile widgets (Pin, Board, Profile) to WordPress posts, pages and widgets.', 'bestwebsoft' ),
283
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/pinterest/?k=504107b6213f247a67fe7ffb94e97c78&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
284
- 'settings' => 'admin.php?page=pinterest.php',
285
- 'pro_version' => 'bws-pinterest-pro/bws-pinterest-pro.php',
286
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/pinterest/buy/?k=ab0069edd1914a3ca8f541bfd88bb0bb&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
287
- 'pro_settings' => 'admin.php?page=pinterest-pro.php'
288
- ),
289
- 'portfolio/portfolio.php' => array(
290
- 'category' => array( 'content', 'recommended' ),
291
- 'name' => 'Portfolio',
292
- 'description' => __( 'Create your personal portfolio WordPress website. Manage and showcase past projects to get more clients.', 'bestwebsoft' ),
293
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/portfolio/?k=1249a890c5b7bba6bda3f528a94f768b&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
294
- 'settings' => 'admin.php?page=portfolio.php',
295
- 'pro_version' => 'portfolio-pro/portfolio-pro.php',
296
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/portfolio/buy/?k=2cc716026197d36538a414b728e49fdd&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
297
- 'pro_settings' => 'admin.php?page=portfolio-pro.php'
298
- ),
299
- 'post-to-csv/post-to-csv.php' => array(
300
- 'category' => array( 'admin-tools' ),
301
- 'name' => 'Post to CSV',
302
- 'description' => __( 'Export WordPress posts to CSV file format easily. Configure data order.', 'bestwebsoft' ),
303
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/post-to-csv/?k=653aa55518ae17409293a7a894268b8f&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
304
- 'settings' => 'admin.php?page=post-to-csv.php',
305
- 'pro_version' => 'post-to-csv-pro/post-to-csv-pro.php',
306
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/post-to-csv/buy/?k=b6521601d1579ed9c556ba98234f2d8f&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
307
- 'pro_settings' => 'admin.php?page=post-to-csv-pro.php'
308
- ),
309
- 'profile-extra-fields/profile-extra-fields.php' => array(
310
- 'category' => array( 'admin-tools' ),
311
- 'name' => 'Profile Extra Fields',
312
- 'description' => __( 'Add extra fields to default WordPress user profile. The easiest way to create and manage additional custom values.', 'bestwebsoft' ),
313
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/profile-extra-fields/?k=fe3b6c3dbc80bd4b1cf9a27a2f339820&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
314
- 'settings' => 'admin.php?page=profile-extra-fields.php',
315
- 'pro_version' => 'profile-extra-fields-pro/profile-extra-fields-pro.php',
316
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/profile-extra-fields/buy/?k=a1f0b20e50ea10e5453aba399de496c0&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
317
- 'pro_settings' => 'admin.php?page=profile-extra-fields-pro.php'
318
- ),
319
- 'promobar/promobar.php' => array(
320
- 'category' => array( 'marketing' ),
321
- 'name' => 'PromoBar',
322
- 'description' => __( 'Add and display HTML advertisement banner on WordPress website. Customize bar styles and appearance.', 'bestwebsoft' ),
323
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/promobar/?k=619eac2232d9cfa382c4e678c3b14766&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
324
- 'settings' => 'admin.php?page=promobar.php',
325
- 'pro_version' => 'promobar-pro/promobar-pro.php',
326
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/promobar/buy/?k=a9b09708502f12a1483532ba12fe2103&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
327
- 'pro_settings' => 'admin.php?page=promobar-pro.php'
328
- ),
329
- 'quotes-and-tips/quotes-and-tips.php' => array(
330
- 'category' => array( 'content' ),
331
- 'name' => 'Quotes and Tips',
332
- 'description' => __( 'Add customizable quotes and tips blocks to WordPress posts, pages and widgets.', 'bestwebsoft' ),
333
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/quotes-and-tips/?k=5738a4e85a798c4a5162240c6515098d&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
334
- 'settings' => 'admin.php?page=quotes-and-tips.php'
335
- ),
336
- 'rating-bws/rating-bws.php' => array(
337
- 'category' => array( 'marketing' ),
338
- 'name' => 'Rating',
339
- 'description' => __( 'Add rating plugin to your WordPress website to receive feedback from your customers.', 'bestwebsoft' ),
340
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/rating/?k=c00e0824bb999735a3224616ef51f4c5&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
341
- 'settings' => 'admin.php?page=rating.php',
342
- 'pro_version' => 'rating-bws-pro/rating-bws-pro.php',
343
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/rating/buy/?k=ba459f3115edb7be610e8d6f8e05df6c&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
344
- 'pro_settings' => 'admin.php?page=rating-bws-pro.php'
345
- ),
346
- 'realty/realty.php' => array(
347
- 'category' => array( 'ecommerce' ),
348
- 'name' => 'Realty',
349
- 'description' => __( 'Create your personal real estate WordPress website. Sell, rent and buy properties. Add, search and browse listings easily.', 'bestwebsoft' ),
350
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/realty/?k=d55de979dbbbb7af0b2ff1d7f43884fa&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
351
- 'settings' => 'admin.php?page=realty_settings',
352
- 'pro_version' => 'realty-pro/realty-pro.php',
353
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/realty/buy/?k=c7791f0a72acfb36f564a614dbccb474&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
354
- 'pro_settings' => 'admin.php?page=realty_pro_settings'
355
- ),
356
- 'relevant/related-posts-plugin.php' => array(
357
- 'category' => array( 'marketing', 'recommended' ),
358
- 'name' => 'Relevant - Related, Featured, Latest, and Popular Posts',
359
- 'description' => __( 'Add related, featured, latest, and popular posts to your WordPress website. Connect your blog readers with a relevant content.', 'bestwebsoft' ),
360
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/related-posts/?k=73fb737037f7141e66415ec259f7e426&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
361
- 'settings' => 'admin.php?page=related-posts-plugin.php'
362
- ),
363
- 'sender/sender.php' => array(
364
- 'category' => array( 'marketing', 'recommended' ),
365
- 'name' => 'Sender',
366
- 'description' => __( 'Send bulk email messages to WordPress users. Custom templates, advanced settings and detailed reports.', 'bestwebsoft' ),
367
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/sender/?k=89c297d14ba85a8417a0f2fc05e089c7&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
368
- 'settings' => 'admin.php?page=sndr_settings',
369
- 'pro_version' => 'sender-pro/sender-pro.php',
370
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/sender/buy/?k=dc5d1a87bdc8aeab2de40ffb99b38054&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
371
- 'pro_settings' => 'admin.php?page=sndrpr_settings'
372
- ),
373
- 'slider-bws/slider-bws.php' => array(
374
- 'category' => array( 'content' ),
375
- 'name' => 'Slider',
376
- 'description' => __( 'The best responsive slider plugin for your WordPress website. Create beautifully animated slides just in a few clicks.', 'bestwebsoft' ),
377
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/slider/?k=02acebf8531b2995e7de8474ae28e290&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
378
- 'settings' => 'admin.php?page=slider-settings.php'
379
- ),
380
- 'bws-smtp/bws-smtp.php' => array(
381
- 'category' => array( 'admin-tools' ),
382
- 'name' => 'SMTP',
383
- 'description' => __( 'Configure SMTP server to receive email messages from WordPress to Gmail, Yahoo, Hotmail and other services.', 'bestwebsoft' ),
384
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/smtp/?k=0546419f962704429ad2d9b88567752f&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
385
- 'settings' => 'admin.php?page=bwssmtp_settings'
386
- ),
387
- 'social-buttons-pack/social-buttons-pack.php' => array(
388
- 'category' => array( 'smm', 'recommended' ),
389
- 'name' => 'Social Buttons Pack',
390
- 'description' => __( 'Add social media buttons and widgets to WordPress posts, pages and widgets. FB, Twitter, Pinterest, LinkedIn.', 'bestwebsoft' ),
391
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/social-buttons-pack/?k=b6440fad9f54274429e536b0c61b42da&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
392
- 'settings' => 'admin.php?page=social-buttons.php',
393
- 'pro_version' => 'social-buttons-pack-pro/social-buttons-pack-pro.php',
394
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/social-buttons-pack/buy/?k=e7059cacde0d275b224a5d995c9160fd&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
395
- 'pro_settings' => 'admin.php?page=social-buttons-pro.php'
396
- ),
397
- 'social-login-bws/social-login-bws.php' => array(
398
- 'category' => array( 'smm' ),
399
- 'name' => 'Social Login',
400
- 'description' => __( 'Add social media login, registration, and commenting to your WordPress website.', 'bestwebsoft' ),
401
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/social-login/?k=62817c9c94f24129e40894e1d9c3f49d&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
402
- 'settings' => 'admin.php?page=social-login.php'
403
- ),
404
- 'subscriber/subscriber.php' => array(
405
- 'category' => array( 'marketing', 'recommended' ),
406
- 'name' => 'Subscriber',
407
- 'description' => __( 'Add email newsletter sign up form to WordPress posts, pages and widgets. Collect data and subscribe your users.', 'bestwebsoft' ),
408
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/subscriber/?k=a4ecc1b7800bae7329fbe8b4b04e9c88&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
409
- 'settings' => 'admin.php?page=subscriber.php',
410
- 'pro_version' => 'subscriber-pro/subscriber-pro.php',
411
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/subscriber/buy/?k=02dbb8b549925d9b74e70adc2a7282e4&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
412
- 'pro_settings' => 'admin.php?page=subscriber-pro.php'
413
- ),
414
- 'bws-testimonials/bws-testimonials.php' => array(
415
- 'category' => array( 'marketing', 'recommended' ),
416
- 'name' => 'Testimonials',
417
- 'description' => __( 'Add testimonials and feedbacks from your customers to WordPress website posts, pages, and widgets.', 'bestwebsoft' ),
418
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/testimonials/?k=3fe4bb89dc901c98e43a113e08f8db73&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
419
- 'settings' => 'admin.php?page=testimonials.php'
420
- ),
421
- 'timesheet/timesheet.php' => array(
422
- 'category' => array( 'admin-tools' ),
423
- 'name' => 'Timesheet',
424
- 'description' => __( 'Best timesheet plugin for WordPress. Track employee time, streamline attendance and generate reports.', 'bestwebsoft' ),
425
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/timesheet/?k=06a58bb78c17a43df01825925f05a5c1&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
426
- 'settings' => 'admin.php?page=timesheet_settings',
427
- 'pro_version' => 'timesheet-pro/timesheet-pro.php',
428
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/timesheet/buy/?k=a448ce4cab0d365b7774c9bc3903b851&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
429
- 'pro_settings' => 'admin.php?page=timesheet_pro_settings'
430
- ),
431
- 'twitter-plugin/twitter.php' => array(
432
- 'category' => array( 'smm' ),
433
- 'name' => 'Twitter',
434
- 'description' => __( 'Add Twitter Follow, Tweet, Hashtag, and Mention buttons to WordPress posts and pages.', 'bestwebsoft' ),
435
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/twitter/?k=f8cb514e25bd7ec4974d64435c5eb333&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
436
- 'settings' => 'admin.php?page=twitter.php',
437
- 'pro_version' => 'twitter-pro/twitter-pro.php',
438
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/twitter/buy/?k=63ecbf0cc9cebf060b5a3c9362299700&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
439
- 'pro_settings' => 'admin.php?page=twitter-pro.php'
440
- ),
441
- 'updater/updater.php' => array(
442
- 'category' => array( 'admin-tools', 'recommended' ),
443
- 'name' => 'Updater',
444
- 'description' => __( 'Automatically check and update WordPress website core with all installed plugins and themes to the latest versions.', 'bestwebsoft' ),
445
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/updater/?k=66f3ecd4c1912009d395c4bb30f779d1&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
446
- 'settings' => 'admin.php?page=updater-options',
447
- 'pro_version' => 'updater-pro/updater_pro.php',
448
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/updater/buy/?k=cf633acbefbdff78545347fe08a3aecb&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
449
- 'pro_settings' => 'admin.php?page=updater-pro-options'
450
- ),
451
- 'user-role/user-role.php' => array(
452
- 'category' => array( 'admin-tools' ),
453
- 'name' => 'User Role',
454
- 'description' => __( 'Powerful user role management plugin for WordPress website. Create, edit, copy, and delete user roles.', 'bestwebsoft' ),
455
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/user-role/?k=dfe2244835c6fbf601523964b3f34ccc&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
456
- 'settings' => 'admin.php?page=user-role.php',
457
- 'pro_version' => 'user-role-pro/user-role-pro.php',
458
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/user-role/buy/?k=cfa9cea6613fb3d7c0a3622fa2faaf46&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
459
- 'pro_settings' => 'admin.php?page=user-role-pro.php'
460
- ),
461
- 'visitors-online/visitors-online.php' => array(
462
- 'category' => array( 'admin-tools' ),
463
- 'name' => 'Visitors Online',
464
- 'description' => __( 'Display live count of online visitors who are currently browsing your WordPress website.', 'bestwebsoft' ),
465
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/visitors-online/?k=93c28013a4f830671b3bba9502ed5177&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
466
- 'settings' => 'admin.php?page=visitors-online.php',
467
- 'pro_version' => 'visitors-online-pro/visitors-online-pro.php',
468
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/visitors-online/buy/?k=f9a746075ff8a0a6cb192cb46526afd2&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
469
- 'pro_settings' => 'admin.php?page=visitors-online-pro.php'
470
- ),
471
- 'zendesk-help-center/zendesk-help-center.php' => array(
472
- 'category' => array( 'admin-tools' ),
473
- 'name' => 'Help Center',
474
- 'description' => __( 'Backup and export Zendesk Help Center content automatically to your WordPress website database.', 'bestwebsoft' ),
475
- 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/zendesk-help-center/?k=2a5fd2f4b2f4bde46f2ca44b8d15846d&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
476
- 'settings' => 'admin.php?page=zendesk_hc.php',
477
- 'pro_version' => 'zendesk-help-center-pro/zendesk-help-center-pro.php',
478
- 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/zendesk-help-center/buy/?k=45199e4538b5befe4d9566868a61a3aa&pn=' . $bws_plugin_info["id"] . '&v=' . $bws_plugin_info["version"] . '&wp_v=' . $wp_version,
479
- 'pro_settings' => 'admin.php?page=zendesk_hc_pro.php'
480
- )
481
  );
482
 
483
  $themes = array(
484
  (object) array(
485
- 'name' => 'Opening',
486
- 'slug' => 'opening',
487
- 'href' => 'https://bestwebsoft.com/products/wordpress/themes/opening-job-board-wordpress-theme/'
488
  ),
489
  (object) array(
490
- 'name' => 'Real Estate',
491
- 'slug' => 'realestate',
492
- 'href' => 'https://bestwebsoft.com/products/wordpress/themes/real-estate-creative-wordpress-theme/'
493
  ),
494
  (object) array(
495
- 'name' => 'Rent a Bike',
496
- 'slug' => 'rent-a-bike',
497
- 'href' => 'https://bestwebsoft.com/products/wordpress/themes/rent-a-bike-booking-wordpress-theme/'
498
  ),
499
  (object) array(
500
- 'name' => 'Renty',
501
- 'slug' => 'renty',
502
- 'href' => 'https://bestwebsoft.com/products/wordpress/themes/renty-car-rental-booking-wordpress-theme/'
503
  ),
504
  (object) array(
505
- 'name' => 'Unity',
506
- 'slug' => 'unity',
507
- 'href' => 'https://bestwebsoft.com/products/wordpress/themes/unity-multipurpose-wordpress-theme/'
508
- )
509
  );
1
  <?php
2
+ /**
3
+ * BestWebSoft product list
4
+ */
5
+
6
  global $bws_plugin_info, $wp_version;
7
 
8
  $bws_plugins_category = array(
9
+ 'admin-tools' => array( 'name' => __( 'Admin Tools', 'bestwebsoft' ) ),
10
+ 'content' => array( 'name' => __( 'Content', 'bestwebsoft' ) ),
11
+ 'ecommerce' => array( 'name' => __( 'eCommerce', 'bestwebsoft' ) ),
12
+ 'marketing' => array( 'name' => __( 'Marketing', 'bestwebsoft' ) ),
13
+ 'navigation' => array( 'name' => __( 'Navigation', 'bestwebsoft' ) ),
14
+ 'recommended' => array( 'name' => __( 'Recommended', 'bestwebsoft' ) ),
15
+ 'security' => array( 'name' => __( 'Security', 'bestwebsoft' ) ),
16
+ 'seo' => array( 'name' => __( 'SEO', 'bestwebsoft' ) ),
17
+ 'smm' => array( 'name' => __( 'SMM', 'bestwebsoft' ) ),
18
  );
19
 
20
  $bws_plugins = array(
21
+ 'bike-rental/bike-rental.php' => array(
22
+ 'category' => array( 'ecommerce' ),
23
+ 'name' => 'Bike Rental',
24
+ 'description' => __( 'Give a birth for your bike rental and booking WordPress website.', 'bestwebsoft' ),
25
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/bike-rental/?k=04387cfc31fc8b9553e4741392762231&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
26
+ 'settings' => 'edit.php?post_type=bws_bike&page=bkng_general_settings',
27
+ 'pro_version' => 'bike-rental-pro/bike-rental-pro.php',
28
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/bike-rental/buy/?k=9b3222b005340035eaead38a7a495a0d&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
29
+ 'pro_settings' => 'edit.php?post_type=bws_bike&page=bkrntl_bws_bike_settings',
30
+ 'icon' => bws_menu_url( 'icons/plugins/' ) . 'bike-rental.png',
31
+ 'install_url' => 'https://bestwebsoft.com/products/wordpress/plugins/bike-rental/',
32
+ ),
33
+ 'captcha-bws/captcha-bws.php' => array(
34
+ 'category' => array( 'security', 'recommended' ),
35
+ 'name' => 'Captcha',
36
+ 'description' => __( 'Best secure captcha plugin to protect your WordPress forms.', 'bestwebsoft' ),
37
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/captcha/?k=d678516c0990e781edfb6a6c874f0b8a&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
38
+ 'settings' => 'admin.php?page=captcha.php',
39
+ 'pro_version' => 'captcha-pro/captcha_pro.php',
40
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/captcha/buy/?k=ff7d65e55e5e7f98f219be9ed711094e&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
41
+ 'pro_settings' => 'admin.php?page=captcha_pro.php',
42
+ ),
43
+ 'bws-car-rental/bws-car-rental.php' => array(
44
+ 'category' => array( 'ecommerce' ),
45
+ 'name' => 'Car Rental V2',
46
+ 'description' => __( 'Create your own rental website for car renting and booking.', 'bestwebsoft' ),
47
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/car-rental-v2/?k=ca43df54beefae7128a7005bce0ec651&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
48
+ 'settings' => 'admin.php?page=bws-car-rental-settings',
49
+ 'pro_version' => 'bws-car-rental-pro/bws-car-rental-pro.php',
50
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/car-rental-v2/buy/?k=63cac1b736047a3f5a2f5a7c5336f3c4&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
51
+ 'pro_settings' => 'edit.php?post_type=bws_bkng_products&page=bws-car-rental-pro-settings',
52
+ 'icon' => '//ps.w.org/car-rental/assets/icon-128x128.png',
53
+ 'install_url' => 'https://bestwebsoft.com/products/wordpress/plugins/car-rental-v2/',
54
+ ),
55
+ 'columns-bws/columns-bws.php' => array(
56
+ 'category' => array( 'content' ),
57
+ 'name' => 'Columns',
58
+ 'description' => __( 'Add columns with custom content to WordPress website pages, posts, widgets, etc.', 'bestwebsoft' ),
59
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/columns/?k=6d2cddc059a04e4d528cec14de47fb1e&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
60
+ 'settings' => 'admin.php?page=columns-settings.php',
61
+ ),
62
+ 'contact-form-plugin/contact_form.php' => array(
63
+ 'category' => array( 'marketing', 'recommended' ),
64
+ 'name' => 'Contact Form',
65
+ 'description' => __( 'Allow customers to reach you using secure contact form plugin any website must have.', 'bestwebsoft' ),
66
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form/?k=012327ef413e5b527883e031d43b088b&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
67
+ 'settings' => 'admin.php?page=contact_form.php',
68
+ 'pro_version' => 'contact-form-pro/contact_form_pro.php',
69
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form/buy/?k=773dc97bb3551975db0e32edca1a6d71&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
70
+ 'pro_settings' => 'admin.php?page=contact_form_pro.php',
71
+ ),
72
+ 'contact-form-multi/contact-form-multi.php' => array(
73
+ 'category' => array( 'marketing', 'recommended' ),
74
+ 'name' => 'Contact Form Multi',
75
+ 'description' => __( 'Add unlimited number of contact forms to WordPress website.', 'bestwebsoft' ),
76
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form-multi/?k=83cdd9e72a9f4061122ad28a67293c72&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
77
+ 'settings' => '',
78
+ 'pro_version' => 'contact-form-multi-pro/contact-form-multi-pro.php',
79
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form-multi/buy/?k=fde3a18581c143654f060c398b07e8ac&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
80
+ 'pro_settings' => '',
81
+ ),
82
+ 'contact-form-to-db/contact_form_to_db.php' => array(
83
+ 'category' => array( 'admin-tools', 'recommended' ),
84
+ 'name' => 'Contact Form to DB',
85
+ 'description' => __( 'Save and manage Contact Form messages. Never lose important data.', 'bestwebsoft' ),
86
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form-to-db/?k=ba3747d317c2692e4136ca096a8989d6&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
87
+ 'settings' => 'admin.php?page=contact_form_to_db.php',
88
+ 'pro_version' => 'contact-form-to-db-pro/contact_form_to_db_pro.php',
89
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form-to-db/buy/?k=6ce5f4a9006ec906e4db643669246c6a&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
90
+ 'pro_settings' => 'admin.php?page=contact_form_to_db_pro.php',
91
+ ),
92
+ 'custom-admin-page/custom-admin-page.php' => array(
93
+ 'category' => array( 'admin-tools' ),
94
+ 'name' => 'Custom Admin Page',
95
+ 'description' => __( 'Add unlimited custom pages to WordPress admin dashboard.', 'bestwebsoft' ),
96
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/custom-admin-page/?k=9ac03f16c25e845e8e055a221c3e1467&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
97
+ 'settings' => 'edit.php?post_type=bws-admin_page&page=custom-admin-page.php',
98
+ 'pro_version' => 'custom-admin-page-pro/custom-admin-page-pro.php',
99
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/custom-admin-page/buy/?k=b986f456dba092b537f1a7755a363be9&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
100
+ 'pro_settings' => 'edit.php?post_type=bws-admin_page&page=custom-admin-page-pro.php',
101
+ ),
102
+ 'custom-search-plugin/custom-search-plugin.php' => array(
103
+ 'category' => array( 'navigation' ),
104
+ 'name' => 'Custom Search',
105
+ 'description' => __( 'Add custom post types and taxonomies to WordPress website search results.', 'bestwebsoft' ),
106
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/custom-search/?k=933be8f3a8b8719d95d1079d15443e29&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
107
+ 'settings' => 'admin.php?page=custom_search.php',
108
+ 'pro_version' => 'custom-search-pro/custom-search-pro.php',
109
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/custom-search/buy/?k=062b652ac6ac8ba863c9f30fc21d62c6&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
110
+ 'pro_settings' => 'admin.php?page=custom_search_pro.php',
111
+ ),
112
+ 'donate-button/donate.php' => array(
113
+ 'category' => array( 'ecommerce' ),
114
+ 'name' => 'Donate',
115
+ 'description' => __( 'Add PayPal and 2CO donate buttons to receive charity payments.', 'bestwebsoft' ),
116
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/donate/?k=a8b2e2a56914fb1765dd20297c26401b&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
117
+ 'settings' => 'admin.php?page=donate.php',
118
+ ),
119
+ 'error-log-viewer/error-log-viewer.php' => array(
120
+ 'category' => array( 'admin-tools' ),
121
+ 'name' => 'Error Log Viewer',
122
+ 'description' => __( 'Get latest error log messages to diagnose website problems. Define and fix issues faster.', 'bestwebsoft' ),
123
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/error-log-viewer/?k=da0de8bd2c7a0b2fea5df64d55a368b3&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
124
+ 'settings' => 'admin.php?page=rrrlgvwr.php&tab=settings',
125
  ),
126
  'facebook-button-plugin/facebook-button-plugin.php' => array(
127
+ 'category' => array( 'smm' ),
128
+ 'name' => 'Like & Share',
129
+ 'description' => __( 'Add Facebook Follow, Like, and Share buttons to WordPress posts, pages, and widgets.', 'bestwebsoft' ),
130
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/facebook-like-button/?k=05ec4f12327f55848335802581467d55&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
131
+ 'settings' => 'admin.php?page=facebook-button-plugin.php',
132
+ 'pro_version' => 'facebook-button-pro/facebook-button-pro.php',
133
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/facebook-like-button/buy/?k=8da168e60a831cfb3525417c333ad275&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
134
+ 'pro_settings' => 'admin.php?page=facebook-button-pro.php',
135
+ ),
136
+ 'gallery-plugin/gallery-plugin.php' => array(
137
+ 'category' => array( 'content', 'recommended' ),
138
+ 'name' => 'Gallery',
139
+ 'description' => __( 'Add beautiful galleries, albums & images to your WordPress website in a few clicks.', 'bestwebsoft' ),
140
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/gallery/?k=2da21c0a64eec7ebf16337fa134c5f78&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
141
+ 'settings' => 'admin.php?page=gallery-plugin.php',
142
+ 'pro_version' => 'gallery-plugin-pro/gallery-plugin-pro.php',
143
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/gallery/buy/?k=382e5ce7c96a6391f5ffa5e116b37fe0&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
144
+ 'pro_settings' => 'admin.php?page=gallery-plugin-pro.php',
145
  ),
146
  'bws-google-2-step-verification/bws-google-2-step-verification.php' => array(
147
+ 'category' => array( 'security' ),
148
+ 'name' => '2-Step Verification',
149
+ 'description' => __( 'Stronger security solution which protects your WordPress website from hacks and unauthorized login attempts.', 'bestwebsoft' ),
150
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/google-2-step-verification/?k=78de1a525f968d56e39f7325908aa98e&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
151
+ 'settings' => 'admin.php?page=google-2-step-verification.php',
152
+ 'pro_version' => 'bws-google-2-step-verification-pro/bws-google-2-step-verification-pro.php',
153
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/google-2-step-verification/buy/?k=b5605ea9bb3628682cfa416e70e78410&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
154
+ 'pro_settings' => 'admin.php?page=google-2-step-verification-pro.php',
155
+ ),
156
+ 'bws-adsense/bws-adsense.php' => array(
157
+ 'category' => array( 'marketing' ),
158
+ 'name' => 'AdS',
159
+ 'description' => __( 'Add Adsense ads to WordPress website pages, posts, custom posts, search results, categories, tags, and widgets.', 'bestwebsoft' ),
160
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/google-adsense/?k=9d719e415eee289845b00843e8847bc9&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
161
+ 'settings' => 'admin.php?page=bws-adsense.php',
162
+ 'pro_version' => 'adsense-pro/adsense-pro.php',
163
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/google-adsense/buy/?k=60e3979921e354feb0347e88e7d7b73d&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
164
+ 'pro_settings' => 'admin.php?page=adsense-pro.php',
165
+ ),
166
+ 'bws-google-analytics/bws-google-analytics.php' => array(
167
+ 'category' => array( 'admin-tools' ),
168
+ 'name' => 'Analytics',
169
+ 'description' => __( 'Add Google Analytics code to WordPress website and track basic stats.', 'bestwebsoft' ),
170
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/bws-google-analytics/?k=261c74cad753fb279cdf5a5db63fbd43&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
171
+ 'settings' => 'admin.php?page=bws-google-analytics.php',
172
+ 'pro_version' => 'bws-google-analytics-pro/bws-google-analytics-pro.php',
173
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/bws-google-analytics/buy/?k=83796e84fec3f70ecfcc8894a73a6c4a&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
174
+ 'pro_settings' => 'admin.php?page=bws-google-analytics-pro.php',
175
+ ),
176
+ 'google-captcha/google-captcha.php' => array(
177
+ 'category' => array( 'security', 'recommended' ),
178
+ 'name' => 'reCaptcha',
179
+ 'description' => __( 'Protect WordPress website forms from spam entries with reCaptcha.', 'bestwebsoft' ),
180
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/google-captcha/?k=7b59fbe542acf950b29f3e020d5ad735&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
181
+ 'settings' => 'admin.php?page=google-captcha.php',
182
+ 'pro_version' => 'google-captcha-pro/google-captcha-pro.php',
183
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/google-captcha/buy/?k=773d30149acf1edc32e5c0766b96c134&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
184
+ 'pro_settings' => 'admin.php?page=google-captcha-pro.php',
185
+ ),
186
+ 'bws-google-maps/bws-google-maps.php' => array(
187
+ 'category' => array( 'content' ),
188
+ 'name' => 'Maps',
189
+ 'description' => __( 'Add customized Google maps to WordPress posts, pages and widgets.', 'bestwebsoft' ),
190
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/bws-google-maps/?k=d8fac412d7359ebaa4ff53b46572f9f7&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
191
+ 'settings' => 'admin.php?page=bws-google-maps.php',
192
+ 'pro_version' => 'bws-google-maps-pro/bws-google-maps-pro.php',
193
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/bws-google-maps/buy/?k=117c3f9fc17f2c83ef430a8a9dc06f56&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
194
+ 'pro_settings' => 'admin.php?page=bws-google-maps-pro.php',
195
+ ),
196
+ 'google-sitemap-plugin/google-sitemap-plugin.php' => array(
197
+ 'category' => array( 'seo', 'recommended' ),
198
+ 'name' => 'Sitemap',
199
+ 'description' => __( 'Generate and add XML sitemap to WordPress website. Help search engines index your blog.', 'bestwebsoft' ),
200
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/google-sitemap/?k=5202b2f5ce2cf85daee5e5f79a51d806&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
201
+ 'settings' => 'admin.php?page=google-sitemap-plugin.php',
202
+ 'pro_version' => 'google-sitemap-pro/google-sitemap-pro.php',
203
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/google-sitemap/buy/?k=7ea384a5cc36cb4c22741caa20dcd56d&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
204
+ 'pro_settings' => 'admin.php?page=google-sitemap-pro.php',
205
+ ),
206
+ 'google-shortlink/google-shortlink.php' => array(
207
+ 'category' => array( 'seo' ),
208
+ 'name' => 'Shortlink',
209
+ 'description' => __( 'Replace external WordPress website links with Google shortlinks and track click stats.', 'bestwebsoft' ),
210
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/google-shortlink/?k=afcf3eaed021bbbbeea1090e16bc22db&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
211
+ 'settings' => 'admin.php?page=gglshrtlnk_options',
212
+ ),
213
+ 'htaccess/htaccess.php' => array(
214
+ 'category' => array( 'security' ),
215
+ 'name' => 'Htaccess',
216
+ 'description' => __( 'Protect WordPress website – allow and deny access for certain IP addresses, hostnames, etc.', 'bestwebsoft' ),
217
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/htaccess/?k=2b865fcd56a935d22c5c4f1bba52ed46&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
218
+ 'settings' => 'admin.php?page=htaccess.php',
219
+ 'pro_version' => 'htaccess-pro/htaccess-pro.php',
220
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/htaccess/buy/?k=59e9209a32864be534fda77d5e591c15&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
221
+ 'pro_settings' => 'admin.php?page=htaccess-pro.php',
222
+ ),
223
+ 'job-board/job-board.php' => array(
224
+ 'category' => array( 'ecommerce' ),
225
+ 'name' => 'Job Board',
226
+ 'description' => __( 'Create your personal job board and listing WordPress website. Search jobs, submit CV/resumes, choose candidates.', 'bestwebsoft' ),
227
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/job-board/?k=b0c504c9ce6edd6692e04222af3fed6f&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
228
+ 'settings' => 'admin.php?page=job-board.php',
229
+ ),
230
+ 'limit-attempts/limit-attempts.php' => array(
231
+ 'category' => array( 'security', 'recommended' ),
232
+ 'name' => 'Limit Attempts',
233
+ 'description' => __( 'Protect WordPress website against brute force attacks. Limit rate of login attempts.', 'bestwebsoft' ),
234
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/limit-attempts/?k=b14e1697ee4d008abcd4bd34d492573a&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
235
+ 'settings' => 'admin.php?page=limit-attempts.php',
236
+ 'pro_version' => 'limit-attempts-pro/limit-attempts-pro.php',
237
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/limit-attempts/buy/?k=9d42cdf22c7fce2c4b6b447e6a2856e0&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
238
+ 'pro_settings' => 'admin.php?page=limit-attempts-pro.php',
239
+ ),
240
+ 'bws-linkedin/bws-linkedin.php' => array(
241
+ 'category' => array( 'smm' ),
242
+ 'name' => 'LinkedIn',
243
+ 'description' => __( 'Add LinkedIn Share and Follow buttons to WordPress posts, pages and widgets. 5 plugins included – profile, insider, etc.', 'bestwebsoft' ),
244
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/linkedin/?k=d63c7319622ccc5f589dd2d545c1d77c&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
245
+ 'settings' => 'admin.php?page=linkedin.php',
246
+ 'pro_version' => 'bws-linkedin-pro/bws-linkedin-pro.php',
247
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/linkedin/buy/?k=41dcc36192994408d24b103a02134567&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
248
+ 'pro_settings' => 'admin.php?page=linkedin-pro.php',
249
+ ),
250
+ 'multilanguage/multilanguage.php' => array(
251
+ 'category' => array( 'content', 'recommended' ),
252
+ 'name' => 'Multilanguage',
253
+ 'description' => __( 'Translate WordPress website content to other languages manually. Create multilingual pages, posts, widgets, menus, etc.', 'bestwebsoft' ),
254
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/multilanguage/?k=7d68c7bfec2486dc350c67fff57ad433&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
255
+ 'settings' => 'admin.php?page=mltlngg_settings',
256
+ 'pro_version' => 'multilanguage-pro/multilanguage-pro.php',
257
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/multilanguage/buy/?k=2d1121cd9a5ced583fc29eefd51bdf57&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
258
+ 'pro_settings' => 'admin.php?page=mltlnggpr_settings',
259
+ ),
260
+ 'pagination/pagination.php' => array(
261
+ 'category' => array( 'navigation' ),
262
+ 'name' => 'Pagination',
263
+ 'description' => __( 'Add customizable pagination to WordPress website. Split long content to multiple pages for better navigation.', 'bestwebsoft' ),
264
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/pagination/?k=22adb940256f149559ba8fedcd728ac8&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
265
+ 'settings' => 'admin.php?page=pagination.php',
266
+ 'pro_version' => 'pagination-pro/pagination-pro.php',
267
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/pagination/buy/?k=b87201d5a0505c621d0b14f4e8d4ccd6&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
268
+ 'pro_settings' => 'admin.php?page=pagination-pro.php',
269
+ ),
270
+ 'pdf-print/pdf-print.php' => array(
271
+ 'category' => array( 'content' ),
272
+ 'name' => 'PDF & Print',
273
+ 'description' => __( 'Generate PDF files and print WordPress posts/pages. Customize document header/footer styles and appearance.', 'bestwebsoft' ),
274
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/pdf-print/?k=bfefdfb522a4c0ff0141daa3f271840c&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
275
+ 'settings' => 'admin.php?page=pdf-print.php',
276
+ 'pro_version' => 'pdf-print-pro/pdf-print-pro.php',
277
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/pdf-print/buy/?k=fd43a0e659ddc170a9060027cbfdcc3a&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
278
+ 'pro_settings' => 'admin.php?page=pdf-print-pro.php',
279
+ ),
280
+ 'bws-pinterest/bws-pinterest.php' => array(
281
+ 'category' => array( 'smm' ),
282
+ 'name' => 'Pinterest',
283
+ 'description' => __( 'Add Pinterest Follow, Pin It buttons and profile widgets (Pin, Board, Profile) to WordPress posts, pages and widgets.', 'bestwebsoft' ),
284
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/pinterest/?k=504107b6213f247a67fe7ffb94e97c78&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
285
+ 'settings' => 'admin.php?page=pinterest.php',
286
+ 'pro_version' => 'bws-pinterest-pro/bws-pinterest-pro.php',
287
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/pinterest/buy/?k=ab0069edd1914a3ca8f541bfd88bb0bb&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
288
+ 'pro_settings' => 'admin.php?page=pinterest-pro.php',
289
+ ),
290
+ 'portfolio/portfolio.php' => array(
291
+ 'category' => array( 'content', 'recommended' ),
292
+ 'name' => 'Portfolio',
293
+ 'description' => __( 'Create your personal portfolio WordPress website. Manage and showcase past projects to get more clients.', 'bestwebsoft' ),
294
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/portfolio/?k=1249a890c5b7bba6bda3f528a94f768b&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
295
+ 'settings' => 'admin.php?page=portfolio.php',
296
+ 'pro_version' => 'portfolio-pro/portfolio-pro.php',
297
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/portfolio/buy/?k=2cc716026197d36538a414b728e49fdd&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
298
+ 'pro_settings' => 'admin.php?page=portfolio-pro.php',
299
+ ),
300
+ 'post-to-csv/post-to-csv.php' => array(
301
+ 'category' => array( 'admin-tools' ),
302
+ 'name' => 'Post to CSV',
303
+ 'description' => __( 'Export WordPress posts to CSV file format easily. Configure data order.', 'bestwebsoft' ),
304
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/post-to-csv/?k=653aa55518ae17409293a7a894268b8f&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
305
+ 'settings' => 'admin.php?page=post-to-csv.php',
306
+ 'pro_version' => 'post-to-csv-pro/post-to-csv-pro.php',
307
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/post-to-csv/buy/?k=b6521601d1579ed9c556ba98234f2d8f&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
308
+ 'pro_settings' => 'admin.php?page=post-to-csv-pro.php',
309
+ ),
310
+ 'profile-extra-fields/profile-extra-fields.php' => array(
311
+ 'category' => array( 'admin-tools' ),
312
+ 'name' => 'Profile Extra Fields',
313
+ 'description' => __( 'Add extra fields to default WordPress user profile. The easiest way to create and manage additional custom values.', 'bestwebsoft' ),
314
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/profile-extra-fields/?k=fe3b6c3dbc80bd4b1cf9a27a2f339820&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
315
+ 'settings' => 'admin.php?page=profile-extra-fields.php',
316
+ 'pro_version' => 'profile-extra-fields-pro/profile-extra-fields-pro.php',
317
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/profile-extra-fields/buy/?k=a1f0b20e50ea10e5453aba399de496c0&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
318
+ 'pro_settings' => 'admin.php?page=profile-extra-fields-pro.php',
319
+ ),
320
+ 'promobar/promobar.php' => array(
321
+ 'category' => array( 'marketing' ),
322
+ 'name' => 'PromoBar',
323
+ 'description' => __( 'Add and display HTML advertisement banner on WordPress website. Customize bar styles and appearance.', 'bestwebsoft' ),
324
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/promobar/?k=619eac2232d9cfa382c4e678c3b14766&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
325
+ 'settings' => 'admin.php?page=promobar.php',
326
+ 'pro_version' => 'promobar-pro/promobar-pro.php',
327
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/promobar/buy/?k=a9b09708502f12a1483532ba12fe2103&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
328
+ 'pro_settings' => 'admin.php?page=promobar-pro.php',
329
+ ),
330
+ 'quotes-and-tips/quotes-and-tips.php' => array(
331
+ 'category' => array( 'content' ),
332
+ 'name' => 'Quotes and Tips',
333
+ 'description' => __( 'Add customizable quotes and tips blocks to WordPress posts, pages and widgets.', 'bestwebsoft' ),
334
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/quotes-and-tips/?k=5738a4e85a798c4a5162240c6515098d&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
335
+ 'settings' => 'admin.php?page=quotes-and-tips.php',
336
+ ),
337
+ 'rating-bws/rating-bws.php' => array(
338
+ 'category' => array( 'marketing' ),
339
+ 'name' => 'Rating',
340
+ 'description' => __( 'Add rating plugin to your WordPress website to receive feedback from your customers.', 'bestwebsoft' ),
341
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/rating/?k=c00e0824bb999735a3224616ef51f4c5&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
342
+ 'settings' => 'admin.php?page=rating.php',
343
+ 'pro_version' => 'rating-bws-pro/rating-bws-pro.php',
344
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/rating/buy/?k=ba459f3115edb7be610e8d6f8e05df6c&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
345
+ 'pro_settings' => 'admin.php?page=rating-bws-pro.php',
346
+ ),
347
+ 'realty/realty.php' => array(
348
+ 'category' => array( 'ecommerce' ),
349
+ 'name' => 'Realty',
350
+ 'description' => __( 'Create your personal real estate WordPress website. Sell, rent and buy properties. Add, search and browse listings easily.', 'bestwebsoft' ),
351
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/realty/?k=d55de979dbbbb7af0b2ff1d7f43884fa&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
352
+ 'settings' => 'admin.php?page=realty_settings',
353
+ 'pro_version' => 'realty-pro/realty-pro.php',
354
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/realty/buy/?k=c7791f0a72acfb36f564a614dbccb474&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
355
+ 'pro_settings' => 'admin.php?page=realty_pro_settings',
356
+ ),
357
+ 'relevant/related-posts-plugin.php' => array(
358
+ 'category' => array( 'marketing', 'recommended' ),
359
+ 'name' => 'Relevant - Related, Featured, Latest, and Popular Posts',
360
+ 'description' => __( 'Add related, featured, latest, and popular posts to your WordPress website. Connect your blog readers with a relevant content.', 'bestwebsoft' ),
361
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/related-posts/?k=73fb737037f7141e66415ec259f7e426&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
362
+ 'settings' => 'admin.php?page=related-posts-plugin.php',
363
+ ),
364
+ 'sender/sender.php' => array(
365
+ 'category' => array( 'marketing', 'recommended' ),
366
+ 'name' => 'Sender',
367
+ 'description' => __( 'Send bulk email messages to WordPress users. Custom templates, advanced settings and detailed reports.', 'bestwebsoft' ),
368
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/sender/?k=89c297d14ba85a8417a0f2fc05e089c7&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
369
+ 'settings' => 'admin.php?page=sndr_settings',
370
+ 'pro_version' => 'sender-pro/sender-pro.php',
371
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/sender/buy/?k=dc5d1a87bdc8aeab2de40ffb99b38054&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
372
+ 'pro_settings' => 'admin.php?page=sndrpr_settings',
373
+ ),
374
+ 'slider-bws/slider-bws.php' => array(
375
+ 'category' => array( 'content' ),
376
+ 'name' => 'Slider',
377
+ 'description' => __( 'The best responsive slider plugin for your WordPress website. Create beautifully animated slides just in a few clicks.', 'bestwebsoft' ),
378
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/slider/?k=02acebf8531b2995e7de8474ae28e290&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
379
+ 'settings' => 'admin.php?page=slider-settings.php',
380
+ ),
381
+ 'bws-smtp/bws-smtp.php' => array(
382
+ 'category' => array( 'admin-tools' ),
383
+ 'name' => 'SMTP',
384
+ 'description' => __( 'Configure SMTP server to receive email messages from WordPress to Gmail, Yahoo, Hotmail and other services.', 'bestwebsoft' ),
385
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/smtp/?k=0546419f962704429ad2d9b88567752f&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
386
+ 'settings' => 'admin.php?page=bwssmtp_settings',
387
+ ),
388
+ 'social-buttons-pack/social-buttons-pack.php' => array(
389
+ 'category' => array( 'smm', 'recommended' ),
390
+ 'name' => 'Social Buttons Pack',
391
+ 'description' => __( 'Add social media buttons and widgets to WordPress posts, pages and widgets. FB, Twitter, Pinterest, LinkedIn.', 'bestwebsoft' ),
392
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/social-buttons-pack/?k=b6440fad9f54274429e536b0c61b42da&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
393
+ 'settings' => 'admin.php?page=social-buttons.php',
394
+ 'pro_version' => 'social-buttons-pack-pro/social-buttons-pack-pro.php',
395
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/social-buttons-pack/buy/?k=e7059cacde0d275b224a5d995c9160fd&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
396
+ 'pro_settings' => 'admin.php?page=social-buttons-pro.php',
397
+ ),
398
+ 'social-login-bws/social-login-bws.php' => array(
399
+ 'category' => array( 'smm' ),
400
+ 'name' => 'Social Login',
401
+ 'description' => __( 'Add social media login, registration, and commenting to your WordPress website.', 'bestwebsoft' ),
402
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/social-login/?k=62817c9c94f24129e40894e1d9c3f49d&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
403
+ 'settings' => 'admin.php?page=social-login.php',
404
+ ),
405
+ 'subscriber/subscriber.php' => array(
406
+ 'category' => array( 'marketing', 'recommended' ),
407
+ 'name' => 'Subscriber',
408
+ 'description' => __( 'Add email newsletter sign up form to WordPress posts, pages and widgets. Collect data and subscribe your users.', 'bestwebsoft' ),
409
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/subscriber/?k=a4ecc1b7800bae7329fbe8b4b04e9c88&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
410
+ 'settings' => 'admin.php?page=subscriber.php',
411
+ 'pro_version' => 'subscriber-pro/subscriber-pro.php',
412
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/subscriber/buy/?k=02dbb8b549925d9b74e70adc2a7282e4&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
413
+ 'pro_settings' => 'admin.php?page=subscriber-pro.php',
414
+ ),
415
+ 'bws-testimonials/bws-testimonials.php' => array(
416
+ 'category' => array( 'marketing', 'recommended' ),
417
+ 'name' => 'Testimonials',
418
+ 'description' => __( 'Add testimonials and feedbacks from your customers to WordPress website posts, pages, and widgets.', 'bestwebsoft' ),
419
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/testimonials/?k=3fe4bb89dc901c98e43a113e08f8db73&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
420
+ 'settings' => 'admin.php?page=testimonials.php',
421
+ ),
422
+ 'timesheet/timesheet.php' => array(
423
+ 'category' => array( 'admin-tools' ),
424
+ 'name' => 'Timesheet',
425
+ 'description' => __( 'Best timesheet plugin for WordPress. Track employee time, streamline attendance and generate reports.', 'bestwebsoft' ),
426
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/timesheet/?k=06a58bb78c17a43df01825925f05a5c1&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
427
+ 'settings' => 'admin.php?page=timesheet_settings',
428
+ 'pro_version' => 'timesheet-pro/timesheet-pro.php',
429
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/timesheet/buy/?k=a448ce4cab0d365b7774c9bc3903b851&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
430
+ 'pro_settings' => 'admin.php?page=timesheet_pro_settings',
431
+ ),
432
+ 'twitter-plugin/twitter.php' => array(
433
+ 'category' => array( 'smm' ),
434
+ 'name' => 'Twitter',
435
+ 'description' => __( 'Add Twitter Follow, Tweet, Hashtag, and Mention buttons to WordPress posts and pages.', 'bestwebsoft' ),
436
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/twitter/?k=f8cb514e25bd7ec4974d64435c5eb333&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
437
+ 'settings' => 'admin.php?page=twitter.php',
438
+ 'pro_version' => 'twitter-pro/twitter-pro.php',
439
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/twitter/buy/?k=63ecbf0cc9cebf060b5a3c9362299700&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
440
+ 'pro_settings' => 'admin.php?page=twitter-pro.php',
441
+ ),
442
+ 'updater/updater.php' => array(
443
+ 'category' => array( 'admin-tools', 'recommended' ),
444
+ 'name' => 'Updater',
445
+ 'description' => __( 'Automatically check and update WordPress website core with all installed plugins and themes to the latest versions.', 'bestwebsoft' ),
446
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/updater/?k=66f3ecd4c1912009d395c4bb30f779d1&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
447
+ 'settings' => 'admin.php?page=updater-options',
448
+ 'pro_version' => 'updater-pro/updater_pro.php',
449
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/updater/buy/?k=cf633acbefbdff78545347fe08a3aecb&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
450
+ 'pro_settings' => 'admin.php?page=updater-pro-options',
451
+ ),
452
+ 'user-role/user-role.php' => array(
453
+ 'category' => array( 'admin-tools' ),
454
+ 'name' => 'User Role',
455
+ 'description' => __( 'Powerful user role management plugin for WordPress website. Create, edit, copy, and delete user roles.', 'bestwebsoft' ),
456
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/user-role/?k=dfe2244835c6fbf601523964b3f34ccc&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
457
+ 'settings' => 'admin.php?page=user-role.php',
458
+ 'pro_version' => 'user-role-pro/user-role-pro.php',
459
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/user-role/buy/?k=cfa9cea6613fb3d7c0a3622fa2faaf46&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
460
+ 'pro_settings' => 'admin.php?page=user-role-pro.php',
461
+ ),
462
+ 'visitors-online/visitors-online.php' => array(
463
+ 'category' => array( 'admin-tools' ),
464
+ 'name' => 'Visitors Online',
465
+ 'description' => __( 'Display live count of online visitors who are currently browsing your WordPress website.', 'bestwebsoft' ),
466
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/visitors-online/?k=93c28013a4f830671b3bba9502ed5177&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
467
+ 'settings' => 'admin.php?page=visitors-online.php',
468
+ 'pro_version' => 'visitors-online-pro/visitors-online-pro.php',
469
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/visitors-online/buy/?k=f9a746075ff8a0a6cb192cb46526afd2&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
470
+ 'pro_settings' => 'admin.php?page=visitors-online-pro.php',
471
+ ),
472
+ 'zendesk-help-center/zendesk-help-center.php' => array(
473
+ 'category' => array( 'admin-tools' ),
474
+ 'name' => 'Help Center',
475
+ 'description' => __( 'Backup and export Zendesk Help Center content automatically to your WordPress website database.', 'bestwebsoft' ),
476
+ 'link' => 'https://bestwebsoft.com/products/wordpress/plugins/zendesk-help-center/?k=2a5fd2f4b2f4bde46f2ca44b8d15846d&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
477
+ 'settings' => 'admin.php?page=zendesk_hc.php',
478
+ 'pro_version' => 'zendesk-help-center-pro/zendesk-help-center-pro.php',
479
+ 'purchase' => 'https://bestwebsoft.com/products/wordpress/plugins/zendesk-help-center/buy/?k=45199e4538b5befe4d9566868a61a3aa&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
480
+ 'pro_settings' => 'admin.php?page=zendesk_hc_pro.php',
481
+ ),
482
  );
483
 
484
  $themes = array(
485
  (object) array(
486
+ 'name' => 'Opening',
487
+ 'slug' => 'opening',
488
+ 'href' => 'https://bestwebsoft.com/products/wordpress/themes/opening-job-board-wordpress-theme/',
489
  ),
490
  (object) array(
491
+ 'name' => 'Real Estate',
492
+ 'slug' => 'realestate',
493
+ 'href' => 'https://bestwebsoft.com/products/wordpress/themes/real-estate-creative-wordpress-theme/',
494
  ),
495
  (object) array(
496
+ 'name' => 'Rent a Bike',
497
+ 'slug' => 'rent-a-bike',
498
+ 'href' => 'https://bestwebsoft.com/products/wordpress/themes/rent-a-bike-booking-wordpress-theme/',
499
  ),
500
  (object) array(
501
+ 'name' => 'Renty',
502
+ 'slug' => 'renty',
503
+ 'href' => 'https://bestwebsoft.com/products/wordpress/themes/renty-car-rental-booking-wordpress-theme/',
504
  ),
505
  (object) array(
506
+ 'name' => 'Unity',
507
+ 'slug' => 'unity',
508
+ 'href' => 'https://bestwebsoft.com/products/wordpress/themes/unity-multipurpose-wordpress-theme/',
509
+ ),
510
  );
gallery-plugin.php CHANGED
@@ -6,7 +6,7 @@ Description: Add beautiful galleries, albums & images to your Wordpress website
6
  Author: BestWebSoft
7
  Text Domain: gallery-plugin
8
  Domain Path: /languages
9
- Version: 4.6.8
10
  Author URI: https://bestwebsoft.com/
11
  License: GPLv2 or later
12
  */
@@ -48,7 +48,7 @@ if ( ! function_exists( 'add_gllr_admin_menu' ) ) {
48
  '<span style="color:#d86463"> ' . __( 'Upgrade to Pro', 'gallery-plugin' ) . '</span>',
49
  'manage_options',
50
  'https://bestwebsoft.com/products/wordpress/plugins/gallery/?k=63a36f6bf5de0726ad6a43a165f38fe5&pn=79&v=' . $gllr_plugin_info["Version"] . '&wp_v=' . $wp_version
51
- );
52
  }
53
  /* pls*/
54
  add_action( 'load-' . $settings, 'gllr_add_tabs' );
@@ -113,7 +113,7 @@ if ( ! function_exists( 'gllr_init' ) ) {
113
 
114
  /* Add media button to the gallery post type */
115
  if (
116
- ( isset( $_GET['post'] ) && get_post_type( $_GET['post'] ) == $gllr_options['post_type_name'] ) ||
117
  ( 'post-new.php' ==$pagenow && isset( $_GET['post_type'] ) && $_GET['post_type'] == $gllr_options['post_type_name'] )
118
  ) {
119
  add_action( 'edit_form_after_title', 'gllr_media_custom_box' );
@@ -209,11 +209,11 @@ if ( ! function_exists( 'gllr_export_slider' ) ) {
209
  $title = isset( $_POST['post_title'] ) ? esc_attr( $_POST['post_title'] ) : "";
210
 
211
  $select = $wpdb->get_results( "
212
- SELECT meta_value
213
- FROM {$wpdb->prefix}postmeta
214
- WHERE post_id = '$id'
215
- AND meta_key = '_gallery_images'
216
- ", ARRAY_A );
217
 
218
  if ( $select ) {
219
 
@@ -241,10 +241,10 @@ if ( ! function_exists( 'gllr_export_slider' ) ) {
241
  );
242
 
243
  $slider_id = $wpdb->get_results( "
244
- SELECT slider_id
245
- FROM {$wpdb->prefix}sldr_slider
246
- WHERE title = '$title'
247
- ", ARRAY_A );
248
 
249
  $data_slide = array();
250
  $data_relation = array();
@@ -264,22 +264,22 @@ if ( ! function_exists( 'gllr_export_slider' ) ) {
264
  $implode_data_relation = implode( ', ', $data_relation );
265
 
266
  $check_duplicate = $wpdb->get_results( "
267
- SELECT slide_id
268
- FROM {$wpdb->prefix}sldr_slide
269
- WHERE attachment_id = '$get_meta_val'
270
- ", ARRAY_A );
271
 
272
  if ( ! $check_duplicate) {
273
  $wpdb->query( "
274
- INSERT INTO {$wpdb->prefix}sldr_slide ( `attachment_id`, `order` )
275
- VALUES {$implode_data_slide}
276
- " );
277
- }
278
 
279
  $wpdb->query( "
280
- INSERT INTO {$wpdb->prefix}sldr_relation ( `slider_id`, `attachment_id` )
281
- VALUES {$implode_data_relation}
282
- " );
283
  }
284
  }
285
  }
@@ -315,8 +315,8 @@ if ( ! function_exists( 'gllr_settings' ) ) {
315
  }
316
 
317
  if ( function_exists( 'add_image_size' ) ) {
318
- add_image_size( 'album-thumb', $gllr_options['custom_size_px']['album-thumb'][0], $gllr_options['custom_size_px']['album-thumb'][1], true );
319
- add_image_size( 'photo-thumb', $gllr_options['custom_size_px']['photo-thumb'][0], $gllr_options['custom_size_px']['photo-thumb'][1], true );
320
  }
321
  }
322
  }
@@ -377,8 +377,8 @@ if ( ! function_exists( 'gllr_get_options_default' ) ) {
377
  'post_type_name' => 'bws-gallery',
378
  /* gallery_category */
379
  'default_gallery_category' => '',
380
- /* disable 3rd-party fancybox */
381
- 'disable_foreing_fancybox' => 0
382
  );
383
 
384
  $option_defaults = apply_filters( 'gllr_get_additional_options_default', $option_defaults );
@@ -644,7 +644,7 @@ if ( ! class_exists( 'Gllr_CategoryDropdown' ) ) {
644
  /**
645
  * Start the element output.
646
  * @param string $output Passed by reference. Used to append additional content.
647
- * @param object $term Category data object.
648
  * @param int $depth Depth of category in reference to parents. Default 0.
649
  * @param array $args An array of arguments.
650
  * @param int $id ID of the current term.
@@ -653,12 +653,12 @@ if ( ! class_exists( 'Gllr_CategoryDropdown' ) ) {
653
  $term_name = apply_filters( 'list_cats', $term->name, $term );
654
  $output .= '<option class="level-' . $depth . '" value="' . $term->slug . '"';
655
  if ( $term->slug == $args['selected'] ) {
656
- $output .= ' selected="selected"';
657
  }
658
  $output .= '>';
659
  $output .= str_repeat( '&nbsp;', $depth * 3 ) . $term_name;
660
  if ( $args['show_count'] )
661
- $output .= '&nbsp;( ' . $term->count .' )';
662
  $output .= '</option>';
663
  }
664
  }
@@ -912,9 +912,9 @@ if ( ! function_exists( 'gllr_template_include' ) ) {
912
  if ( is_single() && $gllr_options['post_type_name'] == $post_type ) {
913
  $file = 'gallery-single-template.php';
914
  } elseif (
915
- ( $gllr_options['post_type_name'] == $post_type && isset( $wp_query->query_vars["gallery_categories"] ) ) ||
916
- ( ! empty( $gllr_options['page_id_gallery_template'] ) && is_page( $gllr_options['page_id_gallery_template'] ) )
917
- ) {
918
  $file = 'gallery-template.php';
919
  }
920
 
@@ -1106,7 +1106,7 @@ if ( ! function_exists( 'gllr_single_template_content' ) ) {
1106
  'post_status' => 'publish',
1107
  'name' => $wp_query->query_vars['name'],
1108
  'posts_per_page' => 1,
1109
- 'p' => $wp_query->query_vars['p']
1110
  );
1111
  $second_query = new WP_Query( $args );
1112
 
@@ -1123,13 +1123,16 @@ if ( ! function_exists( 'gllr_single_template_content' ) ) {
1123
 
1124
  while ( $second_query->have_posts() ) {
1125
  $second_query->the_post(); ?>
1126
- <header class="entry-header <?php echo ( 'Twenty Twenty' == wp_get_theme()->get( 'Name' ) ) ? 'has-text-align-center' : ''; ?>">
1127
- <h1 class="home_page_title entry-title"><?php the_title(); ?></h1>
1128
- </header>
1129
  <div class="gallery_box_single entry-content">
1130
- <div class="gllr_page_content">
1131
  <?php if ( ! post_password_required() ) {
1132
- the_content();
 
 
 
1133
 
1134
  $images_id = get_post_meta( $post->ID, '_gallery_images', true );
1135
 
@@ -1145,6 +1148,9 @@ if ( ! function_exists( 'gllr_single_template_content' ) ) {
1145
  'meta_key' => '_gallery_order_' . $post->ID
1146
  ) );
1147
  if ( count( $posts ) > 0 ) {
 
 
 
1148
  $count_image_block = 0; ?>
1149
  <div class="gallery gllr_grid" data-gllr-columns="<?php echo $gllr_options["custom_image_row_count"]; ?>" data-gllr-border-width="<?php echo $gllr_options['border_images_width']; ?>">
1150
  <?php foreach ( $posts as $attachment ) {
@@ -1197,18 +1203,25 @@ if ( ! function_exists( 'gllr_single_template_content' ) ) {
1197
  </div><!-- .gllr_image_row -->
1198
  <?php } ?>
1199
  </div><!-- .gallery.clearfix -->
1200
- <?php }
 
 
 
 
 
 
1201
  if ( 1 == $gllr_options['return_link'] ) {
1202
  if ( empty( $gllr_options['return_link_url'] ) ) {
1203
  if ( ! empty( $gllr_options['page_id_gallery_template'] ) ) { ?>
1204
- <div class="gllr_clear"></div>
1205
- <div class="return_link gllr_return_link"><a href="<?php echo get_permalink( $gllr_options['page_id_gallery_template'] ); ?>"><?php echo $gllr_options['return_link_text']; ?></a></div>
1206
  <?php }
1207
  } else { ?>
1208
- <div class="gllr_clear"></div>
1209
- <div class="return_link gllr_return_link"><a href="<?php echo $gllr_options["return_link_url"]; ?>"><?php echo $gllr_options['return_link_text']; ?></a></div>
1210
  <?php }
1211
  }
 
1212
  if ( $gllr_options['enable_lightbox'] ) {
1213
 
1214
  $gllr_vars_for_inline_script['single_script'][] = apply_filters( 'gllr_options_for_inline_script', array( 'post_id' => $post->ID ) );
@@ -1220,7 +1233,7 @@ if ( ! function_exists( 'gllr_single_template_content' ) ) {
1220
  } else { ?>
1221
  <p><?php echo get_the_password_form(); ?></p>
1222
  <?php } ?>
1223
- </div><!-- .gllr_page_content -->
1224
  </div><!-- .gallery_box_single -->
1225
  <?php }
1226
  } else { ?>
@@ -1817,8 +1830,8 @@ if ( ! function_exists( 'gllr_settings_page' ) ) {
1817
  require_once( dirname( __FILE__ ) . '/bws_menu/class-bws-settings.php' );
1818
  require_once( dirname( __FILE__ ) . '/includes/class-gllr-settings.php' );
1819
  $page = new Gllr_Settings_Tabs( plugin_basename( __FILE__ ) );
1820
- if ( method_exists( $page, 'add_request_feature' ) )
1821
- $page->add_request_feature(); ?>
1822
  <div class="wrap">
1823
  <h1><?php printf( __( '%s Settings', 'gallery-plugin' ), 'Gallery' ); ?></h1>
1824
  <?php $page->display_content(); ?>
@@ -1920,13 +1933,13 @@ if ( ! function_exists ( 'gllr_admin_head' ) ) {
1920
 
1921
  if ( ! function_exists( 'gllr_enqueue_scripts' ) ) {
1922
  function gllr_enqueue_scripts() {
1923
- global $gllr_options, $post, $wp_scripts;
1924
 
1925
  $post_type = get_post_type();
1926
  $is_gallery_on_page = ( ( is_single() && $gllr_options['post_type_name'] == $post_type ) || ( isset( $post ) && has_shortcode( $post->post_content, 'print_gllr' ) ) );
1927
 
1928
  /* disable 3rd-party fancybox */
1929
- if( $gllr_options['disable_foreing_fancybox'] && $is_gallery_on_page ) {
1930
  foreach ( $wp_scripts->queue as $script) {
1931
  if( preg_match( '/\.*fancybox\.*/', $script ) ) {
1932
  wp_dequeue_script( $script );
@@ -1947,20 +1960,20 @@ if ( ! function_exists( 'gllr_wp_head' ) ) {
1947
 
1948
  if ( $gllr_options['enable_lightbox'] ) {
1949
  wp_enqueue_style( 'gllr_fancybox_stylesheet', plugins_url( 'fancybox/jquery.fancybox.min.css', __FILE__ ) );
1950
- /* Start ios */
1951
- $script = '
1952
- ( function( $ ){
1953
- $( document ).ready( function() {
1954
- $( \'#fancybox-overlay\' ).css( {
1955
- \'width\' : $( document ).width()
1956
- } );
1957
- } );
1958
- } )( jQuery );
1959
- ';
1960
- /* End ios */
1961
- wp_register_script( 'gllr_enable_lightbox_ios', '' );
1962
- wp_enqueue_script( 'gllr_enable_lightbox_ios' );
1963
- wp_add_inline_script( 'gllr_enable_lightbox_ios', sprintf( $script ) );
1964
  }
1965
  if ( 1 == $gllr_options["image_text"] ) { ?>
1966
  <style type="text/css">
@@ -2268,12 +2281,12 @@ if ( ! function_exists ( 'gllr_shortcode' ) ) {
2268
  if ( 1 == $gllr_options['return_link_shortcode'] ) {
2269
  if ( empty( $gllr_options['return_link_url'] ) ) {
2270
  if ( ! empty( $gllr_options["page_id_gallery_template"] ) ) { ?>
2271
- <div class="gllr_clear"></div>
2272
- <div class="return_link gllr_return_link"><a href="<?php echo get_permalink( $gllr_options["page_id_gallery_template"] ); ?>"><?php echo $gllr_options['return_link_text']; ?></a></div>
2273
  <?php }
2274
  } else { ?>
2275
- <div class="gllr_clear"></div>
2276
- <div class="return_link gllr_return_link"><a href="<?php echo $gllr_options["return_link_url"]; ?>"><?php echo $gllr_options['return_link_text']; ?></a></div>
2277
  <?php }
2278
  } ?>
2279
  </div><!-- .gallery_box_single -->
@@ -2309,71 +2322,71 @@ if ( ! function_exists( 'gllr_echo_inline_script' ) ) {
2309
 
2310
  if ( isset( $gllr_vars_for_inline_script['single_script'] ) ) {
2311
 
2312
- $script = '
2313
- var gllr_onload = window.onload;
2314
- function gllr_fancy_init() {
2315
- var options = {
2316
- loop : true,
2317
- arrows : false,
2318
- infobar : true,
2319
- caption : function( instance, current ) {
2320
- current.full_src = jQuery( this ).find( \'img\' ).attr( \'rel\' );
2321
- var title = jQuery( this ).attr( \'title\' ).replace(/</g, "&lt;");
2322
- return title ? \'<div>\' + title + \'</div>\' : \'\';
2323
- },
2324
- buttons : [\'close\']
2325
- };
2326
- ';
2327
-
2328
- if ( $gllr_options['lightbox_download_link'] ) {
2329
- $script .= '
2330
- if ( ! jQuery.fancybox.defaults.btnTpl.download )
2331
- jQuery.fancybox.defaults.btnTpl.download = \'<a class="fancybox-button bws_gallery_download_link dashicons dashicons-download"></a>\';
2332
-
2333
- options.buttons.unshift( \'download\' );
2334
- options.beforeShow = function( instance, current ) {
2335
- jQuery( \'.bws_gallery_download_link\' ).attr( \'href\', current.full_src ).attr( \'download\', current.full_src.substring( current.full_src.lastIndexOf(\'/\') + 1 ) );
2336
- }
2337
- ';
2338
- }
2339
-
2340
- if ( $gllr_options['start_slideshow'] ) {
2341
- $script .= '
2342
- options.buttons.unshift( \'slideShow\' );
2343
- options.slideShow = { autoStart : true, speed : ' . $gllr_options['slideshow_interval'] . ' };
2344
- ';
2345
- }
2346
-
2347
- /* prevent several fancybox initialization */
2348
- if ( $gllr_options['single_lightbox_for_multiple_galleries'] ) {
2349
- $script .= '
2350
- jQuery( "a[data-fancybox=gallery_fancybox]" ).fancybox( options );
2351
- ';
2352
- } else {
2353
- foreach ( $gllr_vars_for_inline_script['single_script'] as $vars ) {
2354
- $script .= '
2355
- jQuery( "a[data-fancybox=gallery_fancybox_' . $vars['post_id'] . ']" ).fancybox( options );
2356
- ';
2357
- }
2358
- }
2359
-
2360
- $script .= '
2361
- }
2362
- if ( typeof gllr_onload === \'function\' ) {
2363
- window.onload = function() {
2364
- gllr_onload();
2365
- gllr_fancy_init();
2366
- }
2367
  } else {
2368
- window.onload = gllr_fancy_init;
2369
- }
2370
- ';
 
 
 
2371
 
2372
- wp_register_script( 'gllr_fancy_init', '' );
2373
- wp_enqueue_script( 'gllr_fancy_init' );
2374
- wp_add_inline_script( 'gllr_fancy_init', sprintf( $script ) );
 
 
 
 
 
 
 
 
2375
 
2376
- unset( $gllr_vars_for_inline_script );
 
 
 
 
2377
  }
2378
  /* pls*/
2379
  $additional_options = do_action( 'gllr_echo_additional_inline_script', array() );
@@ -2754,10 +2767,10 @@ if ( ! function_exists( 'gllr_print_media_notice' ) ) {
2754
  if ( $post->post_type == $gllr_options['post_type_name'] ) {
2755
 
2756
  $script = "( function ($) {
2757
- $( '#tmpl-attachment-details' ).html(
2758
- $( '#tmpl-attachment-details' ).html().replace( '<div class=\"attachment-info\"', '<# gllr_notice_wiev( data.id ); #><div id=\"gllr_media_notice\" class=\"upload-errors\"></div>$&' )
2759
- );
2760
- } )(jQuery);";
2761
  wp_register_script( 'gllr_print_media_notice', '' );
2762
  wp_enqueue_script( 'gllr_print_media_notice' );
2763
  wp_add_inline_script( 'gllr_print_media_notice', sprintf( $script ) );
@@ -2801,7 +2814,7 @@ if ( ! function_exists( 'gllr_shortcode_button_content' ) ) {
2801
  <span class="title"><?php _e( 'Gallery Categories', 'gallery-plugin' ); ?></span>
2802
  <?php $cat_args = array(
2803
  'orderby' => 'date',
2804
- 'order' => 'DESC',
2805
  'show_count' => 1,
2806
  'hierarchical' => 1,
2807
  'taxonomy' => 'gallery_categories',
@@ -2854,8 +2867,8 @@ if ( ! function_exists( 'gllr_shortcode_button_content' ) ) {
2854
  <input class="bws_default_shortcode" type="hidden" name="default" value="[print_gllr id=<?php echo $gllr_first; ?>]" />
2855
  <?php }
2856
 
2857
- $script = '
2858
- function gllr_shortcode_init() {
2859
  (function($) {
2860
  $( \'.mce-reset input[name="gllr_shortcode_radio"], .mce-reset #gllr_display_short, .mce-reset #gllr_album_order_by_shortcode_option, .mce-reset #gllr_shortcode_list, .mce-reset #gllr_gallery_categories\' ).on( \'change\', function() {
2861
  if ( $( \'.mce-reset #gllr_shortcode_list\' ).is( ":focus" ) ) {
@@ -2891,11 +2904,11 @@ if ( ! function_exists( 'gllr_shortcode_button_content' ) ) {
2891
  } ).trigger( \'change\' );
2892
  })(jQuery);
2893
  }
2894
- ';
2895
 
2896
- wp_register_script( 'gllr_shortcode_script', '' );
2897
- wp_enqueue_script( 'gllr_shortcode_script' );
2898
- wp_add_inline_script( 'gllr_shortcode_script', sprintf( $script ) );
2899
  ?>
2900
  <div class="clear"></div>
2901
  </div>
@@ -2936,11 +2949,15 @@ if ( ! function_exists ( 'gllr_admin_notices' ) ) {
2936
  }
2937
  } else {
2938
  $max_filesize = ini_get( 'upload_max_filesize' );
 
2939
  $cs = get_current_screen();
2940
  $is_bws_gallery_page = ( $cs->action == 'add' || $cs->base == 'post' ) && $cs->post_type === $gllr_options['post_type_name'];
2941
- if( $is_bws_gallery_page && '' != $max_filesize ) {
2942
  echo '<div class="notice notice-info"><p><strong>' . __( 'Warning', 'gallery-plugin' ) . ': </strong>' . sprintf ( __( 'Maximum upload file size %s. Contact your administrator or hosting provider if you need to upload a large file size.', 'gallery-plugin' ), $max_filesize ) . '</p></div>';
2943
  }
 
 
 
2944
  }
2945
  }
2946
  }
@@ -2959,13 +2976,13 @@ if ( ! function_exists( 'gllr_get_gallery_data' ) ) {
2959
  /* Get the entire list of posts or the specified array */
2960
  if ( 'all' == $gallery_id || is_array( $gallery_id ) ) {
2961
 
2962
- /* Prepare args for get_posts */
2963
- if ( is_array( $gallery_id ) && ! empty( $gallery_id ) ) {
2964
- $gallery_id_list = $gallery_id;
2965
- $args = array( 'post_type' => $gllr_options['post_type_name'], 'include' => $gallery_id_list );
2966
- } else {
2967
- $args = array( 'post_type' => $gllr_options['post_type_name'] );
2968
- }
2969
 
2970
  $gallery_posts = get_posts( $args );
2971
 
@@ -2978,8 +2995,8 @@ if ( ! function_exists( 'gllr_get_gallery_data' ) ) {
2978
 
2979
  /* Return false if there are no records */
2980
  if ( ! $gallery_posts ) {
2981
- return false;
2982
- }
2983
 
2984
  foreach ( (array)$gallery_posts as $gallery_post ) {
2985
 
@@ -2992,7 +3009,7 @@ if ( ! function_exists( 'gllr_get_gallery_data' ) ) {
2992
 
2993
  foreach ( $gallery_images_id as $image_id ) {
2994
 
2995
- /* Resulting array with images */
2996
  $gallery_image_post_meta = array();
2997
 
2998
  $image_post_meta = get_post_meta( $image_id, '', true );
6
  Author: BestWebSoft
7
  Text Domain: gallery-plugin
8
  Domain Path: /languages
9
+ Version: 4.6.9
10
  Author URI: https://bestwebsoft.com/
11
  License: GPLv2 or later
12
  */
48
  '<span style="color:#d86463"> ' . __( 'Upgrade to Pro', 'gallery-plugin' ) . '</span>',
49
  'manage_options',
50
  'https://bestwebsoft.com/products/wordpress/plugins/gallery/?k=63a36f6bf5de0726ad6a43a165f38fe5&pn=79&v=' . $gllr_plugin_info["Version"] . '&wp_v=' . $wp_version
51
+ );
52
  }
53
  /* pls*/
54
  add_action( 'load-' . $settings, 'gllr_add_tabs' );
113
 
114
  /* Add media button to the gallery post type */
115
  if (
116
+ ( isset( $_GET['post'] ) && get_post_type( $_GET['post'] ) == $gllr_options['post_type_name'] ) ||
117
  ( 'post-new.php' ==$pagenow && isset( $_GET['post_type'] ) && $_GET['post_type'] == $gllr_options['post_type_name'] )
118
  ) {
119
  add_action( 'edit_form_after_title', 'gllr_media_custom_box' );
209
  $title = isset( $_POST['post_title'] ) ? esc_attr( $_POST['post_title'] ) : "";
210
 
211
  $select = $wpdb->get_results( "
212
+ SELECT meta_value
213
+ FROM {$wpdb->prefix}postmeta
214
+ WHERE post_id = '$id'
215
+ AND meta_key = '_gallery_images'
216
+ ", ARRAY_A );
217
 
218
  if ( $select ) {
219
 
241
  );
242
 
243
  $slider_id = $wpdb->get_results( "
244
+ SELECT slider_id
245
+ FROM {$wpdb->prefix}sldr_slider
246
+ WHERE title = '$title'
247
+ ", ARRAY_A );
248
 
249
  $data_slide = array();
250
  $data_relation = array();
264
  $implode_data_relation = implode( ', ', $data_relation );
265
 
266
  $check_duplicate = $wpdb->get_results( "
267
+ SELECT slide_id
268
+ FROM {$wpdb->prefix}sldr_slide
269
+ WHERE attachment_id = '$get_meta_val'
270
+ ", ARRAY_A );
271
 
272
  if ( ! $check_duplicate) {
273
  $wpdb->query( "
274
+ INSERT INTO {$wpdb->prefix}sldr_slide ( `attachment_id`, `order` )
275
+ VALUES {$implode_data_slide}
276
+ " );
277
+ }
278
 
279
  $wpdb->query( "
280
+ INSERT INTO {$wpdb->prefix}sldr_relation ( `slider_id`, `attachment_id` )
281
+ VALUES {$implode_data_relation}
282
+ " );
283
  }
284
  }
285
  }
315
  }
316
 
317
  if ( function_exists( 'add_image_size' ) ) {
318
+ add_image_size( 'album-thumb', $gllr_options['custom_size_px']['album-thumb'][0], $gllr_options['custom_size_px']['album-thumb'][1], true );
319
+ add_image_size( 'photo-thumb', $gllr_options['custom_size_px']['photo-thumb'][0], $gllr_options['custom_size_px']['photo-thumb'][1], true );
320
  }
321
  }
322
  }
377
  'post_type_name' => 'bws-gallery',
378
  /* gallery_category */
379
  'default_gallery_category' => '',
380
+ /* disable 3rd-party fancybox */
381
+ 'disable_foreing_fancybox' => 0
382
  );
383
 
384
  $option_defaults = apply_filters( 'gllr_get_additional_options_default', $option_defaults );
644
  /**
645
  * Start the element output.
646
  * @param string $output Passed by reference. Used to append additional content.
647
+ * @param object $term Category data object.
648
  * @param int $depth Depth of category in reference to parents. Default 0.
649
  * @param array $args An array of arguments.
650
  * @param int $id ID of the current term.
653
  $term_name = apply_filters( 'list_cats', $term->name, $term );
654
  $output .= '<option class="level-' . $depth . '" value="' . $term->slug . '"';
655
  if ( $term->slug == $args['selected'] ) {
656
+ $output .= ' selected="selected"';
657
  }
658
  $output .= '>';
659
  $output .= str_repeat( '&nbsp;', $depth * 3 ) . $term_name;
660
  if ( $args['show_count'] )
661
+ $output .= '&nbsp;( ' . $term->count .' )';
662
  $output .= '</option>';
663
  }
664
  }
912
  if ( is_single() && $gllr_options['post_type_name'] == $post_type ) {
913
  $file = 'gallery-single-template.php';
914
  } elseif (
915
+ ( $gllr_options['post_type_name'] == $post_type || isset( $wp_query->query_vars["gallery_categories"] ) ) ||
916
+ ( ! empty( $gllr_options['page_id_gallery_template'] ) && is_page( $gllr_options['page_id_gallery_template'] ) )
917
+ ) {
918
  $file = 'gallery-template.php';
919
  }
920
 
1106
  'post_status' => 'publish',
1107
  'name' => $wp_query->query_vars['name'],
1108
  'posts_per_page' => 1,
1109
+ 'p' => $wp_query->query_vars['p']
1110
  );
1111
  $second_query = new WP_Query( $args );
1112
 
1123
 
1124
  while ( $second_query->have_posts() ) {
1125
  $second_query->the_post(); ?>
1126
+ <header class="entry-header <?php echo ( 'Twenty Twenty' == wp_get_theme()->get( 'Name' ) ) ? 'has-text-align-center' : ''; ?>">
1127
+ <h1 class="home_page_title entry-title"><?php the_title(); ?></h1>
1128
+ </header>
1129
  <div class="gallery_box_single entry-content">
1130
+ <div class="gllr_page_content">
1131
  <?php if ( ! post_password_required() ) {
1132
+ do_action( 'loop_start', $wp_query );
1133
+ if ( '' !== $post->post_content ) {
1134
+ the_content();
1135
+ }
1136
 
1137
  $images_id = get_post_meta( $post->ID, '_gallery_images', true );
1138
 
1148
  'meta_key' => '_gallery_order_' . $post->ID
1149
  ) );
1150
  if ( count( $posts ) > 0 ) {
1151
+ if ( '' === $post->post_content ) {
1152
+ ob_start();
1153
+ }
1154
  $count_image_block = 0; ?>
1155
  <div class="gallery gllr_grid" data-gllr-columns="<?php echo $gllr_options["custom_image_row_count"]; ?>" data-gllr-border-width="<?php echo $gllr_options['border_images_width']; ?>">
1156
  <?php foreach ( $posts as $attachment ) {
1203
  </div><!-- .gllr_image_row -->
1204
  <?php } ?>
1205
  </div><!-- .gallery.clearfix -->
1206
+ <?php
1207
+ if ( '' === $post->post_content ) {
1208
+ $output = ob_get_contents();
1209
+ ob_end_clean();
1210
+ echo apply_filters( 'the_content', $output );
1211
+ }
1212
+ }
1213
  if ( 1 == $gllr_options['return_link'] ) {
1214
  if ( empty( $gllr_options['return_link_url'] ) ) {
1215
  if ( ! empty( $gllr_options['page_id_gallery_template'] ) ) { ?>
1216
+ <div class="gllr_clear"></div>
1217
+ <div class="return_link gllr_return_link"><a href="<?php echo get_permalink( $gllr_options['page_id_gallery_template'] ); ?>"><?php echo $gllr_options['return_link_text']; ?></a></div>
1218
  <?php }
1219
  } else { ?>
1220
+ <div class="gllr_clear"></div>
1221
+ <div class="return_link gllr_return_link"><a href="<?php echo $gllr_options["return_link_url"]; ?>"><?php echo $gllr_options['return_link_text']; ?></a></div>
1222
  <?php }
1223
  }
1224
+ do_action( 'loop_end', $wp_query );
1225
  if ( $gllr_options['enable_lightbox'] ) {
1226
 
1227
  $gllr_vars_for_inline_script['single_script'][] = apply_filters( 'gllr_options_for_inline_script', array( 'post_id' => $post->ID ) );
1233
  } else { ?>
1234
  <p><?php echo get_the_password_form(); ?></p>
1235
  <?php } ?>
1236
+ </div><!-- .gllr_page_content -->
1237
  </div><!-- .gallery_box_single -->
1238
  <?php }
1239
  } else { ?>
1830
  require_once( dirname( __FILE__ ) . '/bws_menu/class-bws-settings.php' );
1831
  require_once( dirname( __FILE__ ) . '/includes/class-gllr-settings.php' );
1832
  $page = new Gllr_Settings_Tabs( plugin_basename( __FILE__ ) );
1833
+ if ( method_exists( $page, 'add_request_feature' ) )
1834
+ $page->add_request_feature(); ?>
1835
  <div class="wrap">
1836
  <h1><?php printf( __( '%s Settings', 'gallery-plugin' ), 'Gallery' ); ?></h1>
1837
  <?php $page->display_content(); ?>
1933
 
1934
  if ( ! function_exists( 'gllr_enqueue_scripts' ) ) {
1935
  function gllr_enqueue_scripts() {
1936
+ global $gllr_options, $post, $wp_scripts;
1937
 
1938
  $post_type = get_post_type();
1939
  $is_gallery_on_page = ( ( is_single() && $gllr_options['post_type_name'] == $post_type ) || ( isset( $post ) && has_shortcode( $post->post_content, 'print_gllr' ) ) );
1940
 
1941
  /* disable 3rd-party fancybox */
1942
+ if( $gllr_options['disable_foreing_fancybox'] && $is_gallery_on_page ) {
1943
  foreach ( $wp_scripts->queue as $script) {
1944
  if( preg_match( '/\.*fancybox\.*/', $script ) ) {
1945
  wp_dequeue_script( $script );
1960
 
1961
  if ( $gllr_options['enable_lightbox'] ) {
1962
  wp_enqueue_style( 'gllr_fancybox_stylesheet', plugins_url( 'fancybox/jquery.fancybox.min.css', __FILE__ ) );
1963
+ /* Start ios */
1964
+ $script = '
1965
+ ( function( $ ){
1966
+ $( document ).ready( function() {
1967
+ $( \'#fancybox-overlay\' ).css( {
1968
+ \'width\' : $( document ).width()
1969
+ } );
1970
+ } );
1971
+ } )( jQuery );
1972
+ ';
1973
+ /* End ios */
1974
+ wp_register_script( 'gllr_enable_lightbox_ios', '' );
1975
+ wp_enqueue_script( 'gllr_enable_lightbox_ios' );
1976
+ wp_add_inline_script( 'gllr_enable_lightbox_ios', sprintf( $script ) );
1977
  }
1978
  if ( 1 == $gllr_options["image_text"] ) { ?>
1979
  <style type="text/css">
2281
  if ( 1 == $gllr_options['return_link_shortcode'] ) {
2282
  if ( empty( $gllr_options['return_link_url'] ) ) {
2283
  if ( ! empty( $gllr_options["page_id_gallery_template"] ) ) { ?>
2284
+ <div class="gllr_clear"></div>
2285
+ <div class="return_link gllr_return_link"><a href="<?php echo get_permalink( $gllr_options["page_id_gallery_template"] ); ?>"><?php echo $gllr_options['return_link_text']; ?></a></div>
2286
  <?php }
2287
  } else { ?>
2288
+ <div class="gllr_clear"></div>
2289
+ <div class="return_link gllr_return_link"><a href="<?php echo $gllr_options["return_link_url"]; ?>"><?php echo $gllr_options['return_link_text']; ?></a></div>
2290
  <?php }
2291
  } ?>
2292
  </div><!-- .gallery_box_single -->
2322
 
2323
  if ( isset( $gllr_vars_for_inline_script['single_script'] ) ) {
2324
 
2325
+ $script = '
2326
+ var gllr_onload = window.onload;
2327
+ function gllr_fancy_init() {
2328
+ var options = {
2329
+ loop : true,
2330
+ arrows : false,
2331
+ infobar : true,
2332
+ caption : function( instance, current ) {
2333
+ current.full_src = jQuery( this ).find( \'img\' ).attr( \'rel\' );
2334
+ var title = jQuery( this ).attr( \'title\' ).replace(/</g, "&lt;");
2335
+ return title ? \'<div>\' + title + \'</div>\' : \'\';
2336
+ },
2337
+ buttons : [\'close\']
2338
+ };
2339
+ ';
2340
+
2341
+ if ( $gllr_options['lightbox_download_link'] ) {
2342
+ $script .= '
2343
+ if ( ! jQuery.fancybox.defaults.btnTpl.download )
2344
+ jQuery.fancybox.defaults.btnTpl.download = \'<a class="fancybox-button bws_gallery_download_link dashicons dashicons-download"></a>\';
2345
+
2346
+ options.buttons.unshift( \'download\' );
2347
+ options.beforeShow = function( instance, current ) {
2348
+ jQuery( \'.bws_gallery_download_link\' ).attr( \'href\', current.full_src ).attr( \'download\', current.full_src.substring( current.full_src.lastIndexOf(\'/\') + 1 ) );
2349
+ }
2350
+ ';
2351
+ }
2352
+
2353
+ if ( $gllr_options['start_slideshow'] ) {
2354
+ $script .= '
2355
+ options.buttons.unshift( \'slideShow\' );
2356
+ options.slideShow = { autoStart : true, speed : ' . $gllr_options['slideshow_interval'] . ' };
2357
+ ';
2358
+ }
2359
+
2360
+ /* prevent several fancybox initialization */
2361
+ if ( $gllr_options['single_lightbox_for_multiple_galleries'] ) {
2362
+ $script .= '
2363
+ jQuery( "a[data-fancybox=gallery_fancybox]" ).fancybox( options );
2364
+ ';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2365
  } else {
2366
+ foreach ( $gllr_vars_for_inline_script['single_script'] as $vars ) {
2367
+ $script .= '
2368
+ jQuery( "a[data-fancybox=gallery_fancybox_' . $vars['post_id'] . ']" ).fancybox( options );
2369
+ ';
2370
+ }
2371
+ }
2372
 
2373
+ $script .= '
2374
+ }
2375
+ if ( typeof gllr_onload === \'function\' ) {
2376
+ window.onload = function() {
2377
+ gllr_onload();
2378
+ gllr_fancy_init();
2379
+ }
2380
+ } else {
2381
+ window.onload = gllr_fancy_init;
2382
+ }
2383
+ ';
2384
 
2385
+ wp_register_script( 'gllr_fancy_init', '' );
2386
+ wp_enqueue_script( 'gllr_fancy_init' );
2387
+ wp_add_inline_script( 'gllr_fancy_init', sprintf( $script ) );
2388
+
2389
+ unset( $gllr_vars_for_inline_script );
2390
  }
2391
  /* pls*/
2392
  $additional_options = do_action( 'gllr_echo_additional_inline_script', array() );
2767
  if ( $post->post_type == $gllr_options['post_type_name'] ) {
2768
 
2769
  $script = "( function ($) {
2770
+ $( '#tmpl-attachment-details' ).html(
2771
+ $( '#tmpl-attachment-details' ).html().replace( '<div class=\"attachment-info\"', '<# gllr_notice_wiev( data.id ); #><div id=\"gllr_media_notice\" class=\"upload-errors\"></div>$&' )
2772
+ );
2773
+ } )(jQuery);";
2774
  wp_register_script( 'gllr_print_media_notice', '' );
2775
  wp_enqueue_script( 'gllr_print_media_notice' );
2776
  wp_add_inline_script( 'gllr_print_media_notice', sprintf( $script ) );
2814
  <span class="title"><?php _e( 'Gallery Categories', 'gallery-plugin' ); ?></span>
2815
  <?php $cat_args = array(
2816
  'orderby' => 'date',
2817
+ 'order' => 'DESC',
2818
  'show_count' => 1,
2819
  'hierarchical' => 1,
2820
  'taxonomy' => 'gallery_categories',
2867
  <input class="bws_default_shortcode" type="hidden" name="default" value="[print_gllr id=<?php echo $gllr_first; ?>]" />
2868
  <?php }
2869
 
2870
+ $script = '
2871
+ function gllr_shortcode_init() {
2872
  (function($) {
2873
  $( \'.mce-reset input[name="gllr_shortcode_radio"], .mce-reset #gllr_display_short, .mce-reset #gllr_album_order_by_shortcode_option, .mce-reset #gllr_shortcode_list, .mce-reset #gllr_gallery_categories\' ).on( \'change\', function() {
2874
  if ( $( \'.mce-reset #gllr_shortcode_list\' ).is( ":focus" ) ) {
2904
  } ).trigger( \'change\' );
2905
  })(jQuery);
2906
  }
2907
+ ';
2908
 
2909
+ wp_register_script( 'gllr_shortcode_script', '' );
2910
+ wp_enqueue_script( 'gllr_shortcode_script' );
2911
+ wp_add_inline_script( 'gllr_shortcode_script', sprintf( $script ) );
2912
  ?>
2913
  <div class="clear"></div>
2914
  </div>
2949
  }
2950
  } else {
2951
  $max_filesize = ini_get( 'upload_max_filesize' );
2952
+ $max_input_vars = ini_get( 'max_input_vars' );
2953
  $cs = get_current_screen();
2954
  $is_bws_gallery_page = ( $cs->action == 'add' || $cs->base == 'post' ) && $cs->post_type === $gllr_options['post_type_name'];
2955
+ if ( $is_bws_gallery_page && '' != $max_filesize ) {
2956
  echo '<div class="notice notice-info"><p><strong>' . __( 'Warning', 'gallery-plugin' ) . ': </strong>' . sprintf ( __( 'Maximum upload file size %s. Contact your administrator or hosting provider if you need to upload a large file size.', 'gallery-plugin' ), $max_filesize ) . '</p></div>';
2957
  }
2958
+ if ( $is_bws_gallery_page && '' != $max_input_vars ) {
2959
+ echo '<div class="notice notice-info"><p><strong>' . __( 'Warning', 'gallery-plugin' ) . ': </strong>' . sprintf ( __( 'Input vars count %s i.e. the number of pictures in the gallery may be limited. Contact your administrator or hosting provider if you need to upload a large input vars count.', 'gallery-plugin' ), $max_input_vars ) . '</p></div>';
2960
+ }
2961
  }
2962
  }
2963
  }
2976
  /* Get the entire list of posts or the specified array */
2977
  if ( 'all' == $gallery_id || is_array( $gallery_id ) ) {
2978
 
2979
+ /* Prepare args for get_posts */
2980
+ if ( is_array( $gallery_id ) && ! empty( $gallery_id ) ) {
2981
+ $gallery_id_list = $gallery_id;
2982
+ $args = array( 'post_type' => $gllr_options['post_type_name'], 'include' => $gallery_id_list );
2983
+ } else {
2984
+ $args = array( 'post_type' => $gllr_options['post_type_name'] );
2985
+ }
2986
 
2987
  $gallery_posts = get_posts( $args );
2988
 
2995
 
2996
  /* Return false if there are no records */
2997
  if ( ! $gallery_posts ) {
2998
+ return false;
2999
+ }
3000
 
3001
  foreach ( (array)$gallery_posts as $gallery_post ) {
3002
 
3009
 
3010
  foreach ( $gallery_images_id as $image_id ) {
3011
 
3012
+ /* Resulting array with images */
3013
  $gallery_image_post_meta = array();
3014
 
3015
  $image_post_meta = get_post_meta( $image_id, '', true );
languages/gallery-plugin-ru_RU.mo CHANGED
Binary file
languages/gallery-plugin-ru_RU.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Gallery\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2021-08-20 14:44+0300\n"
6
- "PO-Revision-Date: 2021-08-20 14:44+0300\n"
7
  "Last-Translator: bestwebsoft.com <plugin@bestwebsoft.com>\n"
8
  "Language-Team: BestWebSoft <plugin@bestwebsoft.com>\n"
9
  "Language: ru_RU\n"
@@ -13,7 +13,7 @@ msgstr ""
13
  "X-Poedit-KeywordsList: __;_e\n"
14
  "X-Poedit-Basepath: ..\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
- "X-Generator: Poedit 2.3\n"
17
  "X-Poedit-SearchPath-0: .\n"
18
  "X-Poedit-SearchPathExcluded-0: bws_menu\n"
19
 
@@ -325,7 +325,7 @@ msgstr ""
325
  msgid "Invalid path"
326
  msgstr "Путь к изображению некорректный"
327
 
328
- #: gallery-plugin.php:2781 gallery-plugin.php:2942
329
  msgid "Warning"
330
  msgstr "Внимание"
331
 
@@ -349,7 +349,7 @@ msgstr ""
349
  msgid "Sorry, no gallery found."
350
  msgstr "Извините, галерей не найдено."
351
 
352
- #: gallery-plugin.php:2942
353
  #, php-format
354
  msgid ""
355
  "Maximum upload file size %s. Contact your administrator or hosting provider "
@@ -358,6 +358,17 @@ msgstr ""
358
  "Максимальный размер файла %s. Свяжитесь с вашим администратором или "
359
  "провайдером хостинга, если вам нужно загрузить файл большего размера."
360
 
 
 
 
 
 
 
 
 
 
 
 
361
  #: includes/class-gllr-media-table.php:19
362
  msgid "List View"
363
  msgstr "В виде списка"
2
  msgstr ""
3
  "Project-Id-Version: Gallery\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2022-04-12 16:02+0530\n"
6
+ "PO-Revision-Date: 2022-04-12 16:03+0530\n"
7
  "Last-Translator: bestwebsoft.com <plugin@bestwebsoft.com>\n"
8
  "Language-Team: BestWebSoft <plugin@bestwebsoft.com>\n"
9
  "Language: ru_RU\n"
13
  "X-Poedit-KeywordsList: __;_e\n"
14
  "X-Poedit-Basepath: ..\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Generator: Poedit 3.0.1\n"
17
  "X-Poedit-SearchPath-0: .\n"
18
  "X-Poedit-SearchPathExcluded-0: bws_menu\n"
19
 
325
  msgid "Invalid path"
326
  msgstr "Путь к изображению некорректный"
327
 
328
+ #: gallery-plugin.php:2781 gallery-plugin.php:2943 gallery-plugin.php:2946
329
  msgid "Warning"
330
  msgstr "Внимание"
331
 
349
  msgid "Sorry, no gallery found."
350
  msgstr "Извините, галерей не найдено."
351
 
352
+ #: gallery-plugin.php:2943
353
  #, php-format
354
  msgid ""
355
  "Maximum upload file size %s. Contact your administrator or hosting provider "
358
  "Максимальный размер файла %s. Свяжитесь с вашим администратором или "
359
  "провайдером хостинга, если вам нужно загрузить файл большего размера."
360
 
361
+ #: gallery-plugin.php:2946
362
+ #, php-format
363
+ msgid ""
364
+ "Input vars count %s i.e. the number of pictures in the gallery may be "
365
+ "limited. Contact your administrator or hosting provider if you need to "
366
+ "upload a large input vars count."
367
+ msgstr ""
368
+ "Количество входных параметров %s, т.е. количество картинок в галерее может "
369
+ "быть ограничено. Обратитесь к администратору или хостинг-провайдеру, если "
370
+ "вам нужно загрузить большое количество входных параметров."
371
+
372
  #: includes/class-gllr-media-table.php:19
373
  msgid "List View"
374
  msgstr "В виде списка"
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://bestwebsoft.com/donate/
4
  Tags: add album, add galleries, add images, add pictures, add albums, gallery, gallery plugin, gallery slider, fancy gallery, slideshow, lightbox, fullscreen gallery
5
  Requires at least: 5.6
6
  Tested up to: 6.0
7
- Stable tag: 4.6.8
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -239,6 +239,14 @@ Please make sure that the problem hasn't been discussed yet on our forum (<https
239
 
240
  == Changelog ==
241
 
 
 
 
 
 
 
 
 
242
  = V4.6.8 - 10.09.2021 =
243
  * Update : All functionality was updated for WordPress 5.8.1
244
  * Update : BWS Panel section was updated.
@@ -713,6 +721,11 @@ Please make sure that the problem hasn't been discussed yet on our forum (<https
713
 
714
  == Upgrade Notice ==
715
 
 
 
 
 
 
716
  = V4.6.8 =
717
  * The compatibility with new WordPress version updated.
718
  * New features added.
4
  Tags: add album, add galleries, add images, add pictures, add albums, gallery, gallery plugin, gallery slider, fancy gallery, slideshow, lightbox, fullscreen gallery
5
  Requires at least: 5.6
6
  Tested up to: 6.0
7
+ Stable tag: 4.6.9
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
239
 
240
  == Changelog ==
241
 
242
+ = V4.6.9 - 27.09.2022 =
243
+ * Update : All functionality was updated for WordPress 6.0
244
+ * Update : BWS Panel section was updated.
245
+ * Update : Notification of the maximum number of images has been added.
246
+ * Bugfix : Gallery Categories widget has been fixed.
247
+ * Bugfix : Gallery Lightbox options have been fixed.
248
+ * PRO : Comments on Gallery page have been fixed.
249
+
250
  = V4.6.8 - 10.09.2021 =
251
  * Update : All functionality was updated for WordPress 5.8.1
252
  * Update : BWS Panel section was updated.
721
 
722
  == Upgrade Notice ==
723
 
724
+ = V4.6.9 =
725
+ * The compatibility with new WordPress version updated.
726
+ * Usability improved.
727
+ * Bugs fixed.
728
+
729
  = V4.6.8 =
730
  * The compatibility with new WordPress version updated.
731
  * New features added.
templates/gallery-single-template.php CHANGED
@@ -19,10 +19,9 @@ get_header(); ?>
19
  </div><!-- #container -->
20
  </div><!-- .content-area -->
21
  <?php
22
- $current_theme = wp_get_theme();
23
  /* Theme Twenty Nineteen hasn`t sidebar */
24
  $current_theme = wp_get_theme();
25
- if( 'Twenty Twenty' == $current_theme->get( 'Name' ) ) {
26
  get_template_part( 'template-parts/footer-menus-widgets' );
27
  } elseif ( file_exists( TEMPLATEPATH . '/sidebar.php' ) ) {
28
  get_sidebar();
19
  </div><!-- #container -->
20
  </div><!-- .content-area -->
21
  <?php
 
22
  /* Theme Twenty Nineteen hasn`t sidebar */
23
  $current_theme = wp_get_theme();
24
+ if ( 'Twenty Twenty' == $current_theme->get( 'Name' ) ) {
25
  get_template_part( 'template-parts/footer-menus-widgets' );
26
  } elseif ( file_exists( TEMPLATEPATH . '/sidebar.php' ) ) {
27
  get_sidebar();