Orbit Fox by ThemeIsle - Version 2.10.15

Version Description

Download this release

Release Info

Developer themeisle
Plugin Icon 128x128 Orbit Fox by ThemeIsle
Version 2.10.15
Comparing to
See all releases

Code changes from version 2.10.14 to 2.10.15

Files changed (34) hide show
  1. CHANGELOG.md +6 -0
  2. core/app/class-orbit-fox-admin.php +49 -76
  3. core/app/class-orbit-fox-plugin-install.php +1 -1
  4. core/app/views/modules-page.php +5 -5
  5. core/app/views/partials/module-tile-tpl.php +2 -2
  6. core/includes/class-orbit-fox.php +1 -2
  7. dashboard/assets/sparks.jpeg +0 -0
  8. languages/themeisle-companion.pot +16 -22
  9. obfx_modules/beaver-widgets/modules/post-grid/includes/loop-settings.php +3 -3
  10. obfx_modules/companion-legacy/inc/hestia/inc/sections/hestia-clients-bar-section.php +1 -3
  11. obfx_modules/custom-fonts/custom_fonts_admin.php +1 -1
  12. obfx_modules/elementor-widgets/init.php +4 -4
  13. obfx_modules/google-analytics/init.php +1 -1
  14. obfx_modules/gutenberg-blocks/init.php +2 -2
  15. obfx_modules/menu-icons/init.php +1 -1
  16. obfx_modules/policy-notice/init.php +5 -5
  17. obfx_modules/social-sharing/views/hestia-social-sharing-tpl.php +1 -1
  18. obfx_modules/social-sharing/views/social-sharing-tpl.php +1 -1
  19. obfx_modules/template-directory/init.php +14 -14
  20. readme.md +10 -1
  21. readme.txt +10 -1
  22. themeisle-companion.php +1 -1
  23. vendor/autoload.php +1 -1
  24. vendor/codeinwp/themeisle-sdk/CHANGELOG.md +5 -0
  25. vendor/codeinwp/themeisle-sdk/assets/js/build/index.asset.php +1 -1
  26. vendor/codeinwp/themeisle-sdk/assets/js/build/index.js +1 -1
  27. vendor/codeinwp/themeisle-sdk/load.php +36 -1
  28. vendor/codeinwp/themeisle-sdk/src/Modules/Dashboard_widget.php +2 -1
  29. vendor/codeinwp/themeisle-sdk/src/Modules/Promotions.php +72 -10
  30. vendor/codeinwp/themeisle-sdk/start.php +0 -1
  31. vendor/composer/autoload_real.php +7 -7
  32. vendor/composer/autoload_static.php +4 -4
  33. vendor/composer/installed.json +7 -7
  34. vendor/composer/installed.php +9 -9
CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
 
 
 
 
 
 
1
  ##### [Version 2.10.14](https://github.com/Codeinwp/themeisle-companion/compare/v2.10.13...v2.10.14) (2022-08-23)
2
 
3
  * Update dependencies
1
+ ##### [Version 2.10.15](https://github.com/Codeinwp/themeisle-companion/compare/v2.10.14...v2.10.15) (2022-09-02)
2
+
3
+ * Update dependencies
4
+ * Fix Hestia client section image problem
5
+ * Improve security validation
6
+
7
  ##### [Version 2.10.14](https://github.com/Codeinwp/themeisle-companion/compare/v2.10.13...v2.10.14) (2022-08-23)
8
 
9
  * Update dependencies
core/app/class-orbit-fox-admin.php CHANGED
@@ -52,7 +52,7 @@ class Orbit_Fox_Admin {
52
  $this->plugin_name = $plugin_name;
53
  $this->version = $version;
54
 
55
- add_action( 'rest_api_init', [ $this, 'init_dashboard_routes' ] );
56
 
57
  }
58
 
@@ -65,7 +65,7 @@ class Orbit_Fox_Admin {
65
  '/toggle-module-state',
66
  array(
67
  'methods' => WP_REST_Server::CREATABLE,
68
- 'callback' => [ $this, 'update_module_callback' ],
69
  'permission_callback' => function () {
70
  return current_user_can( 'manage_options' );
71
  },
@@ -76,7 +76,7 @@ class Orbit_Fox_Admin {
76
  '/set-module-settings',
77
  array(
78
  'methods' => WP_REST_Server::CREATABLE,
79
- 'callback' => [ $this, 'update_module_callback' ],
80
  'permission_callback' => function () {
81
  return current_user_can( 'manage_options' );
82
  },
@@ -99,19 +99,19 @@ class Orbit_Fox_Admin {
99
 
100
  if ( ! isset( $data['slug'] ) || ! isset( $data['value'] ) ) {
101
  return new WP_REST_Response(
102
- [
103
  'type' => 'error',
104
  'message' => __( 'Bad request!', 'themeisle-companion' ),
105
- ]
106
  );
107
  }
108
 
109
  if ( ! isset( $modules[ $data['slug'] ] ) ) {
110
  return new WP_REST_Response(
111
- [
112
  'type' => 'error',
113
  'message' => __( 'Module not found!', 'themeisle-companion' ),
114
- ]
115
  );
116
  }
117
 
@@ -129,18 +129,18 @@ class Orbit_Fox_Admin {
129
 
130
  if ( ! $response ) {
131
  return new WP_REST_Response(
132
- [
133
  'type' => 'warning',
134
  'message' => __( 'Data unchanged!', 'themeisle-companion' ),
135
- ]
136
  );
137
  }
138
 
139
  return new WP_REST_Response(
140
- [
141
  'type' => 'success',
142
  'data' => $data,
143
- ]
144
  );
145
  }
146
 
@@ -168,11 +168,11 @@ class Orbit_Fox_Admin {
168
  }
169
  if ( in_array( $screen->id, array( 'toplevel_page_obfx_companion' ), true ) ) {
170
  $dependencies = include OBX_PATH . '/dashboard/build/dashboard.asset.php';
171
- wp_register_style( 'obfx-dashboard-style', OBFX_URL . 'dashboard/build/style-dashboard.css', [ 'wp-components' ], $dependencies['version'] );
172
  wp_enqueue_style( 'obfx-dashboard-style' );
173
- wp_register_style( 'obfx-dashboard-colors', OBFX_URL . 'obfx_modules/social-sharing/css/admin.css', [ 'wp-components' ], $dependencies['version'] );
174
  wp_enqueue_style( 'obfx-dashboard-colors' );
175
- wp_register_style( 'obfx-dashboard-social', OBFX_URL . 'obfx_modules/social-sharing/css/vendor/socicon/socicon.css', [ 'wp-components' ], $dependencies['version'] );
176
  wp_enqueue_style( 'obfx-dashboard-social' );
177
  }
178
 
@@ -210,12 +210,12 @@ class Orbit_Fox_Admin {
210
  $global_settings = new Orbit_Fox_Global_Settings();
211
  $modules = array_filter(
212
  $global_settings::$instance->module_objects,
213
- function( $module ) {
214
  return $module->enable_module();
215
  }
216
  );
217
  $modules_options = array_map(
218
- function( $module ) {
219
  return $module->options();
220
  },
221
  $modules
@@ -264,54 +264,6 @@ class Orbit_Fox_Admin {
264
  add_submenu_page( 'obfx_companion', __( 'Orbit Fox General Options', 'themeisle-companion' ), __( 'General Settings', 'themeisle-companion' ), 'manage_options', 'obfx_companion' );
265
  }
266
 
267
- /**
268
- * Show the uptime monitor notice.
269
- */
270
- public function uptime_removed_notice() {
271
-
272
- if ( ! current_user_can( 'manage_options' ) ) {
273
- return;
274
- }
275
-
276
- $screen = get_current_screen();
277
- if ( empty( $screen ) ) {
278
- return;
279
- }
280
-
281
- if ( ! in_array( $screen->id, array( 'toplevel_page_obfx_companion' ), true ) ) {
282
- return;
283
- }
284
-
285
- global $current_user;
286
- $user_id = $current_user->ID;
287
-
288
- if ( get_user_meta( $user_id, 'obfx_dismiss_uptime_notice' ) ) {
289
- return;
290
- }
291
-
292
-
293
- $external_link_data = '<span class="dashicons dashicons-external" style="text-decoration: none;"></span><span class="screen-reader-text">' . esc_html__( 'opens in a new tab', 'themeisle-companion' ) . '</span>';
294
-
295
- echo '<div class="notice notice-info" style="position:relative;">';
296
- echo '<p>';
297
-
298
-
299
- echo sprintf(
300
- /*
301
- * translators: %1$s first alternative url, %2$s second alternative url, %3$s third alternative url.
302
- */
303
- esc_attr__( 'We have retired the free uptime monitoring module in OrbitFox since we haven\'t been able to dedicate more time to its development and direction. Instead, we recommend using services like %1$s, %2$s, or %3$s, which provide more options/integrations and faster checks.', 'themeisle-companion' ),
304
- '<a target="_blank" rel="external noreferrer noopener" href="https://uptimerobot.com/">uptimerobot.com' . wp_kses_post( $external_link_data ) . '</a>',
305
- '<a target="_blank" rel="external noreferrer noopener" href="https://cronitor.io/">cronitor.io' . wp_kses_post( $external_link_data ) . '</a>',
306
- '<a target="_blank" rel="external noreferrer noopener" href="https://updown.io/">updown.io' . wp_kses_post( $external_link_data ) . '</a>'
307
- );
308
-
309
- echo '</p>';
310
- echo '</div>';
311
-
312
- add_user_meta( $user_id, 'obfx_dismiss_uptime_notice', 'true', true );
313
- }
314
-
315
  /**
316
  * Add the initial dashboard notice to guide the user to the OrbitFox admin page.
317
  *
@@ -324,16 +276,25 @@ class Orbit_Fox_Admin {
324
  if ( ! current_user_can( 'manage_options' ) ) {
325
  return;
326
  }
 
 
 
 
 
 
 
 
 
327
  if ( ! get_user_meta( $user_id, 'obfx_ignore_visit_dashboard_notice' ) ) { ?>
328
  <div class="notice notice-info" style="position:relative;">
329
  <p>
330
- <?php
331
  /*
332
  * translators: Go to url.
333
  */
334
  echo sprintf( esc_attr__( 'You have activated Orbit Fox plugin! Go to the %s to get started with the extra features.', 'themeisle-companion' ), sprintf( '<a href="%s">%s</a>', esc_url( add_query_arg( 'obfx_ignore_visit_dashboard_notice', '0', admin_url( 'admin.php?page=obfx_companion' ) ) ), esc_attr__( 'Dashboard Page', 'themeisle-companion' ) ) );
335
- ?>
336
- </p>
337
  <a href="<?php echo esc_url( add_query_arg( 'obfx_ignore_visit_dashboard_notice', '0', admin_url( 'admin.php?page=obfx_companion' ) ) ); ?>"
338
  class="notice-dismiss" style="text-decoration: none;">
339
  <span class="screen-reader-text">Dismiss this notice.</span>
@@ -408,27 +369,39 @@ class Orbit_Fox_Admin {
408
  * Define render function for recommended tab.
409
  */
410
  public function get_recommended_plugins() {
411
- $plugins = [
412
  'optimole-wp',
 
413
  'feedzy-rss-feeds',
414
  'translatepress-multilingual',
415
- 'wp-cloudflare-page-cache',
416
  'otter-blocks',
417
  'wp-maintenance-mode',
418
  'multiple-pages-generator-by-porthas',
419
- ];
420
 
421
- $th_plugins = [
422
- 'wp-landing-kit' => [
423
  'banner' => esc_url( OBFX_URL ) . '/dashboard/assets/wp-landing.jpg',
424
  'name' => 'WP Landing Kit',
425
  'description' => __( 'Turn WordPress into a landing page powerhouse with Landing Kit. Map domains to pages or any other published resource.', 'themeisle-companion' ),
426
  'author' => 'Themeisle',
427
  'action' => 'external',
428
- 'url' => 'https://wplandingkit.com/?utm_medium=orbitfoxdashboard&utm_source=recommendedplugins&utm_campaign=orbitfox',
 
 
 
 
 
 
 
 
 
 
 
 
429
  'premium' => true,
430
- ],
431
- ];
432
  $install_instance = new Orbit_Fox_Plugin_Install();
433
 
434
  $data = array();
@@ -466,7 +439,7 @@ class Orbit_Fox_Admin {
466
  *
467
  * @codeCoverageIgnore
468
  *
469
- * @param boolean $active_status The active status.
470
  * @param Orbit_Fox_Module_Abstract $module The module referenced.
471
  *
472
  * @since 2.3.3
52
  $this->plugin_name = $plugin_name;
53
  $this->version = $version;
54
 
55
+ add_action( 'rest_api_init', array( $this, 'init_dashboard_routes' ) );
56
 
57
  }
58
 
65
  '/toggle-module-state',
66
  array(
67
  'methods' => WP_REST_Server::CREATABLE,
68
+ 'callback' => array( $this, 'update_module_callback' ),
69
  'permission_callback' => function () {
70
  return current_user_can( 'manage_options' );
71
  },
76
  '/set-module-settings',
77
  array(
78
  'methods' => WP_REST_Server::CREATABLE,
79
+ 'callback' => array( $this, 'update_module_callback' ),
80
  'permission_callback' => function () {
81
  return current_user_can( 'manage_options' );
82
  },
99
 
100
  if ( ! isset( $data['slug'] ) || ! isset( $data['value'] ) ) {
101
  return new WP_REST_Response(
102
+ array(
103
  'type' => 'error',
104
  'message' => __( 'Bad request!', 'themeisle-companion' ),
105
+ )
106
  );
107
  }
108
 
109
  if ( ! isset( $modules[ $data['slug'] ] ) ) {
110
  return new WP_REST_Response(
111
+ array(
112
  'type' => 'error',
113
  'message' => __( 'Module not found!', 'themeisle-companion' ),
114
+ )
115
  );
116
  }
117
 
129
 
130
  if ( ! $response ) {
131
  return new WP_REST_Response(
132
+ array(
133
  'type' => 'warning',
134
  'message' => __( 'Data unchanged!', 'themeisle-companion' ),
135
+ )
136
  );
137
  }
138
 
139
  return new WP_REST_Response(
140
+ array(
141
  'type' => 'success',
142
  'data' => $data,
143
+ )
144
  );
145
  }
146
 
168
  }
169
  if ( in_array( $screen->id, array( 'toplevel_page_obfx_companion' ), true ) ) {
170
  $dependencies = include OBX_PATH . '/dashboard/build/dashboard.asset.php';
171
+ wp_register_style( 'obfx-dashboard-style', OBFX_URL . 'dashboard/build/style-dashboard.css', array( 'wp-components' ), $dependencies['version'] );
172
  wp_enqueue_style( 'obfx-dashboard-style' );
173
+ wp_register_style( 'obfx-dashboard-colors', OBFX_URL . 'obfx_modules/social-sharing/css/admin.css', array( 'wp-components' ), $dependencies['version'] );
174
  wp_enqueue_style( 'obfx-dashboard-colors' );
175
+ wp_register_style( 'obfx-dashboard-social', OBFX_URL . 'obfx_modules/social-sharing/css/vendor/socicon/socicon.css', array( 'wp-components' ), $dependencies['version'] );
176
  wp_enqueue_style( 'obfx-dashboard-social' );
177
  }
178
 
210
  $global_settings = new Orbit_Fox_Global_Settings();
211
  $modules = array_filter(
212
  $global_settings::$instance->module_objects,
213
+ function ( $module ) {
214
  return $module->enable_module();
215
  }
216
  );
217
  $modules_options = array_map(
218
+ function ( $module ) {
219
  return $module->options();
220
  },
221
  $modules
264
  add_submenu_page( 'obfx_companion', __( 'Orbit Fox General Options', 'themeisle-companion' ), __( 'General Settings', 'themeisle-companion' ), 'manage_options', 'obfx_companion' );
265
  }
266
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
267
  /**
268
  * Add the initial dashboard notice to guide the user to the OrbitFox admin page.
269
  *
276
  if ( ! current_user_can( 'manage_options' ) ) {
277
  return;
278
  }
279
+ $screen = get_current_screen();
280
+ if ( empty( $screen ) ) {
281
+ return;
282
+ }
283
+
284
+ if ( in_array( $screen->id, array( 'toplevel_page_obfx_companion' ), true ) ) {
285
+ add_user_meta( $user_id, 'obfx_ignore_visit_dashboard_notice', 'true', true );
286
+ return;
287
+ }
288
  if ( ! get_user_meta( $user_id, 'obfx_ignore_visit_dashboard_notice' ) ) { ?>
289
  <div class="notice notice-info" style="position:relative;">
290
  <p>
291
+ <?php
292
  /*
293
  * translators: Go to url.
294
  */
295
  echo sprintf( esc_attr__( 'You have activated Orbit Fox plugin! Go to the %s to get started with the extra features.', 'themeisle-companion' ), sprintf( '<a href="%s">%s</a>', esc_url( add_query_arg( 'obfx_ignore_visit_dashboard_notice', '0', admin_url( 'admin.php?page=obfx_companion' ) ) ), esc_attr__( 'Dashboard Page', 'themeisle-companion' ) ) );
296
+ ?>
297
+ </p>
298
  <a href="<?php echo esc_url( add_query_arg( 'obfx_ignore_visit_dashboard_notice', '0', admin_url( 'admin.php?page=obfx_companion' ) ) ); ?>"
299
  class="notice-dismiss" style="text-decoration: none;">
300
  <span class="screen-reader-text">Dismiss this notice.</span>
369
  * Define render function for recommended tab.
370
  */
371
  public function get_recommended_plugins() {
372
+ $plugins = array(
373
  'optimole-wp',
374
+ 'wp-cloudflare-page-cache',
375
  'feedzy-rss-feeds',
376
  'translatepress-multilingual',
 
377
  'otter-blocks',
378
  'wp-maintenance-mode',
379
  'multiple-pages-generator-by-porthas',
380
+ );
381
 
382
+ $th_plugins = array(
383
+ 'wp-landing-kit' => array(
384
  'banner' => esc_url( OBFX_URL ) . '/dashboard/assets/wp-landing.jpg',
385
  'name' => 'WP Landing Kit',
386
  'description' => __( 'Turn WordPress into a landing page powerhouse with Landing Kit. Map domains to pages or any other published resource.', 'themeisle-companion' ),
387
  'author' => 'Themeisle',
388
  'action' => 'external',
389
+ 'url' => tsdk_utmify( 'https://wplandingkit.com/', 'recommendedplugins', 'orbitfox' ),
390
+ 'premium' => true,
391
+ ),
392
+ );
393
+
394
+ if ( class_exists( 'woocommerce' ) ) {
395
+ $th_plugins['sparks'] = array(
396
+ 'banner' => esc_url( OBFX_URL ) . '/dashboard/assets/sparks.jpeg',
397
+ 'name' => 'Sparks for WooCommerce',
398
+ 'description' => __( 'Conversion-focused features for your online store.', 'themeisle-companion' ),
399
+ 'author' => 'Themeisle',
400
+ 'action' => 'external',
401
+ 'url' => tsdk_utmify( 'https://themeisle.com/plugins/sparks-for-woocommerce/', 'recommendedplugins', 'orbitfox' ),
402
  'premium' => true,
403
+ );
404
+ }
405
  $install_instance = new Orbit_Fox_Plugin_Install();
406
 
407
  $data = array();
439
  *
440
  * @codeCoverageIgnore
441
  *
442
+ * @param boolean $active_status The active status.
443
  * @param Orbit_Fox_Module_Abstract $module The module referenced.
444
  *
445
  * @since 2.3.3
core/app/class-orbit-fox-plugin-install.php CHANGED
@@ -101,7 +101,7 @@ class Orbit_Fox_Plugin_Install {
101
  * @return string
102
  */
103
  public function get_plugin_action_link( $slug, $action = 'activate' ) {
104
- if ( ! in_array( $action, [ 'activate', 'deactivate' ] ) ) {
105
  return '';
106
  }
107
 
101
  * @return string
102
  */
103
  public function get_plugin_action_link( $slug, $action = 'activate' ) {
104
+ if ( ! in_array( $action, array( 'activate', 'deactivate' ) ) ) {
105
  return '';
106
  }
107
 
core/app/views/modules-page.php CHANGED
@@ -42,7 +42,7 @@ if ( isset( $_GET['show_plugins'] ) && $_GET['show_plugins'] === 'yes' ) {
42
  <div class="obfx-wrapper obfx-header">
43
  <div class="obfx-header-content">
44
  <img src="<?php echo esc_url( OBFX_URL ); ?>/images/orbit-fox.png" title="Orbit Fox" class="obfx-logo"/>
45
- <h1><?php esc_attr_e( 'Orbit Fox', 'themeisle-companion' ); ?></h1><span class="powered"> by <a
46
  href="https://themeisle.com" target="_blank"><b>ThemeIsle</b></a></span>
47
  </div>
48
  </div>
@@ -67,9 +67,9 @@ if ( isset( $_GET['show_plugins'] ) && $_GET['show_plugins'] === 'yes' ) {
67
  <?php
68
  echo esc_url( admin_url( 'admin.php?page=obfx_companion' ) );
69
  ?>
70
- "><?php echo esc_attr__( 'Available Modules', 'themeisle-companion' ); ?></a></li>
71
  <li class="<?php echo $current_tab === 'plugins' ? 'obfx-tab-active' : ''; ?>">
72
- <a href="<?php echo esc_url( admin_url( 'admin.php?page=obfx_companion&show_plugins=yes' ) ); ?>"><?php echo esc_attr__( 'Recommended Plugins', 'themeisle-companion' ); ?></a>
73
  </li>
74
  </ul>
75
  </div>
@@ -89,9 +89,9 @@ if ( isset( $_GET['show_plugins'] ) && $_GET['show_plugins'] === 'yes' ) {
89
  </div>
90
  <div class="panel" <?php echo $current_tab === 'plugins' ? 'style="display:none"' : ''; ?>>
91
  <div class="panel-header text-center">
92
- <div class="panel-title mt-10"><?php echo esc_attr( 'Activated Modules Options', 'themeisle-companion' ); ?></div>
93
  </div>
94
- <?php echo ( $panels === '' ) ? '<p class="text-center">' . esc_attr__( 'No modules activated.', 'themeisle-companion' ) . '</p>' : ( $panels ); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
95
  </div>
96
  <?php
97
  }
42
  <div class="obfx-wrapper obfx-header">
43
  <div class="obfx-header-content">
44
  <img src="<?php echo esc_url( OBFX_URL ); ?>/images/orbit-fox.png" title="Orbit Fox" class="obfx-logo"/>
45
+ <h1><?php esc_html_e( 'Orbit Fox', 'themeisle-companion' ); ?></h1><span class="powered"> by <a
46
  href="https://themeisle.com" target="_blank"><b>ThemeIsle</b></a></span>
47
  </div>
48
  </div>
67
  <?php
68
  echo esc_url( admin_url( 'admin.php?page=obfx_companion' ) );
69
  ?>
70
+ "><?php esc_html_e( 'Available Modules', 'themeisle-companion' ); ?></a></li>
71
  <li class="<?php echo $current_tab === 'plugins' ? 'obfx-tab-active' : ''; ?>">
72
+ <a href="<?php echo esc_url( admin_url( 'admin.php?page=obfx_companion&show_plugins=yes' ) ); ?>"><?php esc_html_e( 'Recommended Plugins', 'themeisle-companion' ); ?></a>
73
  </li>
74
  </ul>
75
  </div>
89
  </div>
90
  <div class="panel" <?php echo $current_tab === 'plugins' ? 'style="display:none"' : ''; ?>>
91
  <div class="panel-header text-center">
92
+ <div class="panel-title mt-10"><?php echo esc_html__( 'Activated Modules Options', 'themeisle-companion' ); ?></div>
93
  </div>
94
+ <?php echo ( $panels === '' ) ? '<p class="text-center">' . esc_html__( 'No modules activated.', 'themeisle-companion' ) . '</p>' : ( $panels ); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
95
  </div>
96
  <?php
97
  }
core/app/views/partials/module-tile-tpl.php CHANGED
@@ -64,12 +64,12 @@ $noance = wp_create_nonce( 'obfx_activate_mod_' . $slug );
64
  <input class="<?php echo esc_attr( $toggle_class ); ?>" type="checkbox" name="<?php echo esc_attr( $slug ); ?>"
65
  value="<?php echo esc_attr( $noance ); ?>" <?php echo esc_attr( $checked ); ?> >
66
  <i class="form-icon"></i>
67
- <span class="inactive"><?php esc_attr_e( 'Activate', 'themeisle-companion' ); ?></span>
68
  <i class="dashicons dashicons-yes"></i>
69
 
70
  </label>
71
  <?php if ( $beta ) { ?>
72
- <p class="obfx-beta-module"><?php esc_attr_e( 'Beta module', 'themeisle-companion' ); ?></p>
73
  <?php } ?>
74
  <?php
75
  if ( ! empty( $modal ) ) {
64
  <input class="<?php echo esc_attr( $toggle_class ); ?>" type="checkbox" name="<?php echo esc_attr( $slug ); ?>"
65
  value="<?php echo esc_attr( $noance ); ?>" <?php echo esc_attr( $checked ); ?> >
66
  <i class="form-icon"></i>
67
+ <span class="inactive"><?php esc_html_e( 'Activate', 'themeisle-companion' ); ?></span>
68
  <i class="dashicons dashicons-yes"></i>
69
 
70
  </label>
71
  <?php if ( $beta ) { ?>
72
+ <p class="obfx-beta-module"><?php esc_html_e( 'Beta module', 'themeisle-companion' ); ?></p>
73
  <?php } ?>
74
  <?php
75
  if ( ! empty( $modal ) ) {
core/includes/class-orbit-fox.php CHANGED
@@ -69,7 +69,7 @@ class Orbit_Fox {
69
 
70
  $this->plugin_name = 'orbit-fox';
71
 
72
- $this->version = '2.10.14';
73
 
74
  $this->load_dependencies();
75
  $this->set_locale();
@@ -181,7 +181,6 @@ class Orbit_Fox {
181
  $this->loader->add_action( 'admin_init', $plugin_admin, 'visit_dashboard_notice_dismiss' );
182
  $this->loader->add_action( 'admin_menu', $plugin_admin, 'menu_pages' );
183
  $this->loader->add_action( 'admin_notices', $plugin_admin, 'visit_dashboard_notice' );
184
- $this->loader->add_action( 'admin_notices', $plugin_admin, 'uptime_removed_notice' );
185
  $this->loader->add_action( 'obfx_recommended_plugins', $plugin_admin, 'load_recommended_plugins' );
186
  $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
187
  $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
69
 
70
  $this->plugin_name = 'orbit-fox';
71
 
72
+ $this->version = '2.10.15';
73
 
74
  $this->load_dependencies();
75
  $this->set_locale();
181
  $this->loader->add_action( 'admin_init', $plugin_admin, 'visit_dashboard_notice_dismiss' );
182
  $this->loader->add_action( 'admin_menu', $plugin_admin, 'menu_pages' );
183
  $this->loader->add_action( 'admin_notices', $plugin_admin, 'visit_dashboard_notice' );
 
184
  $this->loader->add_action( 'obfx_recommended_plugins', $plugin_admin, 'load_recommended_plugins' );
185
  $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
186
  $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
dashboard/assets/sparks.jpeg ADDED
Binary file
languages/themeisle-companion.pot CHANGED
@@ -2,10 +2,10 @@
2
  # This file is distributed under the GPL-2.0+.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Orbit Fox Companion 2.10.14\n"
6
  "Report-Msgid-Bugs-To: "
7
  "https://github.com/Codeinwp/themeisle-companion/issues\n"
8
- "POT-Creation-Date: 2022-08-23 13:50:52+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=utf-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
@@ -80,49 +80,39 @@ msgstr ""
80
  msgid "General Settings"
81
  msgstr ""
82
 
83
- #: core/app/class-orbit-fox-admin.php:293
84
- msgid "opens in a new tab"
85
- msgstr ""
86
-
87
- #: core/app/class-orbit-fox-admin.php:303
88
- #. translators: %1$s first alternative url, %2$s second alternative url, %3$s
89
- #. third alternative url.
90
- msgid ""
91
- "We have retired the free uptime monitoring module in OrbitFox since we "
92
- "haven't been able to dedicate more time to its development and direction. "
93
- "Instead, we recommend using services like %1$s, %2$s, or %3$s, which "
94
- "provide more options/integrations and faster checks."
95
- msgstr ""
96
-
97
- #: core/app/class-orbit-fox-admin.php:334
98
  #. translators: Go to url.
99
  msgid ""
100
  "You have activated Orbit Fox plugin! Go to the %s to get started with the "
101
  "extra features."
102
  msgstr ""
103
 
104
- #: core/app/class-orbit-fox-admin.php:334
105
  msgid "Dashboard Page"
106
  msgstr ""
107
 
108
- #: core/app/class-orbit-fox-admin.php:390
109
  msgid "No module found! No data was updated."
110
  msgstr ""
111
 
112
- #: core/app/class-orbit-fox-admin.php:396
113
  msgid "Something went wrong, data might not be saved!"
114
  msgstr ""
115
 
116
- #: core/app/class-orbit-fox-admin.php:400
117
  msgid "Options updated, successfully!"
118
  msgstr ""
119
 
120
- #: core/app/class-orbit-fox-admin.php:425
121
  msgid ""
122
  "Turn WordPress into a landing page powerhouse with Landing Kit. Map domains "
123
  "to pages or any other published resource."
124
  msgstr ""
125
 
 
 
 
 
126
  #: core/app/helpers/class-orbit-fox-render-helper.php:123
127
  msgid "No option found for provided type"
128
  msgstr ""
@@ -135,6 +125,10 @@ msgstr ""
135
  msgid "Recommended Plugins"
136
  msgstr ""
137
 
 
 
 
 
138
  #: core/app/views/modules-page.php:94
139
  msgid "No modules activated."
140
  msgstr ""
2
  # This file is distributed under the GPL-2.0+.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Orbit Fox Companion 2.10.15\n"
6
  "Report-Msgid-Bugs-To: "
7
  "https://github.com/Codeinwp/themeisle-companion/issues\n"
8
+ "POT-Creation-Date: 2022-09-02 11:30:48+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=utf-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
80
  msgid "General Settings"
81
  msgstr ""
82
 
83
+ #: core/app/class-orbit-fox-admin.php:295
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  #. translators: Go to url.
85
  msgid ""
86
  "You have activated Orbit Fox plugin! Go to the %s to get started with the "
87
  "extra features."
88
  msgstr ""
89
 
90
+ #: core/app/class-orbit-fox-admin.php:295
91
  msgid "Dashboard Page"
92
  msgstr ""
93
 
94
+ #: core/app/class-orbit-fox-admin.php:351
95
  msgid "No module found! No data was updated."
96
  msgstr ""
97
 
98
+ #: core/app/class-orbit-fox-admin.php:357
99
  msgid "Something went wrong, data might not be saved!"
100
  msgstr ""
101
 
102
+ #: core/app/class-orbit-fox-admin.php:361
103
  msgid "Options updated, successfully!"
104
  msgstr ""
105
 
106
+ #: core/app/class-orbit-fox-admin.php:386
107
  msgid ""
108
  "Turn WordPress into a landing page powerhouse with Landing Kit. Map domains "
109
  "to pages or any other published resource."
110
  msgstr ""
111
 
112
+ #: core/app/class-orbit-fox-admin.php:398
113
+ msgid "Conversion-focused features for your online store."
114
+ msgstr ""
115
+
116
  #: core/app/helpers/class-orbit-fox-render-helper.php:123
117
  msgid "No option found for provided type"
118
  msgstr ""
125
  msgid "Recommended Plugins"
126
  msgstr ""
127
 
128
+ #: core/app/views/modules-page.php:92
129
+ msgid "Activated Modules Options"
130
+ msgstr ""
131
+
132
  #: core/app/views/modules-page.php:94
133
  msgid "No modules activated."
134
  msgstr ""
obfx_modules/beaver-widgets/modules/post-grid/includes/loop-settings.php CHANGED
@@ -21,7 +21,7 @@ do_action( 'fl_builder_loop_settings_before_form', $settings ); // e.g Add custo
21
  ?>
22
  <div class="fl-custom-query fl-loop-data-source" data-source="custom_query">
23
  <div id="fl-builder-settings-section-general" class="fl-builder-settings-section">
24
- <h3 class="fl-builder-settings-title"><?php esc_attr_e( 'Custom Query', 'themeisle-companion' ); ?></h3>
25
  <table class="fl-form-table">
26
  <?php
27
 
@@ -131,7 +131,7 @@ do_action( 'fl_builder_loop_settings_before_form', $settings ); // e.g Add custo
131
  </table>
132
  </div>
133
  <div id="fl-builder-settings-section-filter" class="fl-builder-settings-section">
134
- <h3 class="fl-builder-settings-title"><?php esc_attr_e( 'Filter', 'themeisle-companion' ); ?></h3>
135
  <?php foreach ( FLBuilderLoop::post_types() as $slug => $type ) : //phpcs:ignore WordPress.WP.GlobalVariablesOverride.OverrideProhibited ?>
136
  <table class="fl-form-table fl-custom-query-filter fl-custom-query-<?php echo esc_attr( $slug ); ?>-filter"
137
  <?php
@@ -203,7 +203,7 @@ do_action( 'fl_builder_loop_settings_before_form', $settings ); // e.g Add custo
203
  </table>
204
  </div>
205
  <div id="fl-builder-settings-section-filter" class="fl-builder-settings-section">
206
- <h3 class="fl-builder-settings-title"><?php esc_attr_e( 'Appearance', 'themeisle-companion' ); ?></h3>
207
  <table class="fl-form-table">
208
 
209
  <?php
21
  ?>
22
  <div class="fl-custom-query fl-loop-data-source" data-source="custom_query">
23
  <div id="fl-builder-settings-section-general" class="fl-builder-settings-section">
24
+ <h3 class="fl-builder-settings-title"><?php esc_html_e( 'Custom Query', 'themeisle-companion' ); ?></h3>
25
  <table class="fl-form-table">
26
  <?php
27
 
131
  </table>
132
  </div>
133
  <div id="fl-builder-settings-section-filter" class="fl-builder-settings-section">
134
+ <h3 class="fl-builder-settings-title"><?php esc_html_e( 'Filter', 'themeisle-companion' ); ?></h3>
135
  <?php foreach ( FLBuilderLoop::post_types() as $slug => $type ) : //phpcs:ignore WordPress.WP.GlobalVariablesOverride.OverrideProhibited ?>
136
  <table class="fl-form-table fl-custom-query-filter fl-custom-query-<?php echo esc_attr( $slug ); ?>-filter"
137
  <?php
203
  </table>
204
  </div>
205
  <div id="fl-builder-settings-section-filter" class="fl-builder-settings-section">
206
+ <h3 class="fl-builder-settings-title"><?php esc_html_e( 'Appearance', 'themeisle-companion' ); ?></h3>
207
  <table class="fl-form-table">
208
 
209
  <?php
obfx_modules/companion-legacy/inc/hestia/inc/sections/hestia-clients-bar-section.php CHANGED
@@ -66,10 +66,8 @@ if ( ! function_exists( 'hestia_clients_bar' ) ) :
66
 
67
  $image_id = function_exists( 'attachment_url_to_postid' ) ? attachment_url_to_postid( preg_replace( '/-\d{1,4}x\d{1,4}/i', '', $image ) ) : '';
68
  $alt_text = '';
69
- $srcset = '';
70
  if ( ! empty( $image_id ) ) {
71
  $alt_text = 'alt="' . get_post_meta( $image_id, '_wp_attachment_image_alt', true ) . '"';
72
- $srcset = 'srcset="' . wp_get_attachment_image_srcset( $image_id, 'full' ) . '"';
73
  }
74
 
75
  if ( ! empty( $image ) ) {
@@ -82,7 +80,7 @@ if ( ! function_exists( 'hestia_clients_bar' ) ) :
82
  $link_html .= '>';
83
  echo wp_kses_post( $link_html );
84
  }
85
- echo '<img src="' . esc_url( $image ) . '" ' . wp_kses_post( $alt_text ) . ' ' . wp_kses_post( $srcset ) . '>';
86
  if ( ! empty( $link ) ) {
87
  echo '</a>';
88
  }
66
 
67
  $image_id = function_exists( 'attachment_url_to_postid' ) ? attachment_url_to_postid( preg_replace( '/-\d{1,4}x\d{1,4}/i', '', $image ) ) : '';
68
  $alt_text = '';
 
69
  if ( ! empty( $image_id ) ) {
70
  $alt_text = 'alt="' . get_post_meta( $image_id, '_wp_attachment_image_alt', true ) . '"';
 
71
  }
72
 
73
  if ( ! empty( $image ) ) {
80
  $link_html .= '>';
81
  echo wp_kses_post( $link_html );
82
  }
83
+ echo '<img src="' . esc_url( $image ) . '" ' . wp_kses_post( $alt_text ) . '>';
84
  if ( ! empty( $link ) ) {
85
  echo '</a>';
86
  }
obfx_modules/custom-fonts/custom_fonts_admin.php CHANGED
@@ -290,7 +290,7 @@ class Custom_Fonts_Admin {
290
 
291
  if ( isset( $_POST['obfx_custom_fonts'] ) ) {// phpcs:ignore WordPress.Security.NonceVerification.Missing
292
  $return_val = array();
293
- foreach ( $_POST['obfx_custom_fonts'] as $key => $value ) {
294
  if ( $key === 'font-display' ) {
295
  $return_val[ $key ] = esc_attr( $value );
296
  continue;
290
 
291
  if ( isset( $_POST['obfx_custom_fonts'] ) ) {// phpcs:ignore WordPress.Security.NonceVerification.Missing
292
  $return_val = array();
293
+ foreach ( $_POST['obfx_custom_fonts'] as $key => $value ) {// phpcs:ignore WordPress.Security.NonceVerification.Missing
294
  if ( $key === 'font-display' ) {
295
  $return_val[ $key ] = esc_attr( $value );
296
  continue;
obfx_modules/elementor-widgets/init.php CHANGED
@@ -45,7 +45,7 @@ class Elementor_Widgets_OBFX_Module extends Orbit_Fox_Module_Abstract {
45
  '<b>Neve PRO</b>'
46
  ) .
47
  '</p>
48
- <a class="notice-cta" target="_blank" href="https://themeisle.com/themes/neve/upgrade/?utm_medium=orbitfoxdashboard&utm_source=pagebuildermodule&utm_campaign=orbitfox">
49
  <b>' . __( 'Learn more', 'themeisle-companion' ) . '</b>
50
  </a>
51
  </div>';
@@ -155,7 +155,7 @@ class Elementor_Widgets_OBFX_Module extends Orbit_Fox_Module_Abstract {
155
  }
156
 
157
  $elements_categories = $config['initial_document']['panel']['elements_categories'];
158
- $obfx_cat = [ 'obfx-elementor-widgets' => $elements_categories['obfx-elementor-widgets'] ];
159
 
160
  unset( $elements_categories['obfx-elementor-widgets'] );
161
 
@@ -163,7 +163,7 @@ class Elementor_Widgets_OBFX_Module extends Orbit_Fox_Module_Abstract {
163
 
164
  $elements_categories = $config['initial_document']['panel']['elements_categories'];
165
  if ( $this->should_add_placeholders() && array_key_exists( 'obfx-elementor-widgets-pro', $elements_categories ) ) {
166
- $placeholders_cat = [ 'obfx-elementor-widgets-pro' => $elements_categories['obfx-elementor-widgets-pro'] ];
167
  unset( $elements_categories['obfx-elementor-widgets-pro'] );
168
  $config['initial_document']['panel']['elements_categories'] = $this->insert_before_element( $elements_categories, 'pro-elements', $placeholders_cat );
169
  }
@@ -208,7 +208,7 @@ class Elementor_Widgets_OBFX_Module extends Orbit_Fox_Module_Abstract {
208
  });
209
 
210
  jQuery( \'#elementor-panel-category-obfx-elementor-widgets-pro .elementor-element-wrapper\' ).on( \'click drop\', function(e) {
211
- window.open( \'https://themeisle.com/themes/neve/upgrade/?utm_medium=elementoreditor&utm_source=elementorwidget&utm_campaign=orbitfox\',\'_blank\');
212
  });
213
  }, 1000
214
  );
45
  '<b>Neve PRO</b>'
46
  ) .
47
  '</p>
48
+ <a class="notice-cta" target="_blank" href="' . tsdk_utmify( 'https://themeisle.com/themes/neve/upgrade/', 'elementorwidgets', 'orbitfox' ) . '">
49
  <b>' . __( 'Learn more', 'themeisle-companion' ) . '</b>
50
  </a>
51
  </div>';
155
  }
156
 
157
  $elements_categories = $config['initial_document']['panel']['elements_categories'];
158
+ $obfx_cat = array( 'obfx-elementor-widgets' => $elements_categories['obfx-elementor-widgets'] );
159
 
160
  unset( $elements_categories['obfx-elementor-widgets'] );
161
 
163
 
164
  $elements_categories = $config['initial_document']['panel']['elements_categories'];
165
  if ( $this->should_add_placeholders() && array_key_exists( 'obfx-elementor-widgets-pro', $elements_categories ) ) {
166
+ $placeholders_cat = array( 'obfx-elementor-widgets-pro' => $elements_categories['obfx-elementor-widgets-pro'] );
167
  unset( $elements_categories['obfx-elementor-widgets-pro'] );
168
  $config['initial_document']['panel']['elements_categories'] = $this->insert_before_element( $elements_categories, 'pro-elements', $placeholders_cat );
169
  }
208
  });
209
 
210
  jQuery( \'#elementor-panel-category-obfx-elementor-widgets-pro .elementor-element-wrapper\' ).on( \'click drop\', function(e) {
211
+ window.open( \'' . tsdk_utmify( 'https://themeisle.com/themes/neve/upgrade/', 'elementorwidgetsdrag', 'orbitfox' ) . '\',\'_blank\');
212
  });
213
  }, 1000
214
  );
obfx_modules/google-analytics/init.php CHANGED
@@ -128,7 +128,7 @@ class Google_Analytics_OBFX_Module extends Orbit_Fox_Module_Abstract {
128
 
129
  $obfx_token = get_option( 'obfx_token', '' );
130
 
131
- if ( ( $_POST['deactivate'] === 'unregister' ) ) { //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated
132
  return $this->unregister_website( $obfx_token );
133
  }
134
  if ( empty( $obfx_token ) ) {
128
 
129
  $obfx_token = get_option( 'obfx_token', '' );
130
 
131
+ if ( ( $_POST['deactivate'] === 'unregister' ) ) { //phpcs:ignore WordPress.Security
132
  return $this->unregister_website( $obfx_token );
133
  }
134
  if ( empty( $obfx_token ) ) {
obfx_modules/gutenberg-blocks/init.php CHANGED
@@ -130,8 +130,8 @@ class Gutenberg_Blocks_OBFX_Module extends Orbit_Fox_Module_Abstract {
130
  * Load assets for our blocks.
131
  */
132
  public function enqueue_block_assets() {
133
- wp_enqueue_style( 'font-awesome-5', plugins_url( 'assets/fontawesome/css/all.min.css', __FILE__ ), [], $this->version );
134
- wp_enqueue_style( 'font-awesome-4-shims', plugins_url( 'assets/fontawesome/css/v4-shims.min.css', __FILE__ ), [], $this->version );
135
  }
136
 
137
  /**
130
  * Load assets for our blocks.
131
  */
132
  public function enqueue_block_assets() {
133
+ wp_enqueue_style( 'font-awesome-5', plugins_url( 'assets/fontawesome/css/all.min.css', __FILE__ ), array(), $this->version );
134
+ wp_enqueue_style( 'font-awesome-4-shims', plugins_url( 'assets/fontawesome/css/v4-shims.min.css', __FILE__ ), array(), $this->version );
135
  }
136
 
137
  /**
obfx_modules/menu-icons/init.php CHANGED
@@ -301,7 +301,7 @@ class Menu_Icons_OBFX_Module extends Orbit_Fox_Module_Abstract {
301
  $path = explode( DIRECTORY_SEPARATOR, isset( $path[1] ) ? $path[1] : '' );
302
  $path = array_values( array_filter( $path ) );
303
  if ( isset( $path[0] ) ) {
304
- $name = '&nbsp; <b>' . esc_attr( $path[0] ) . '</b>';
305
  }
306
  $type = __( 'plugin', 'themeisle-companion' );
307
  }
301
  $path = explode( DIRECTORY_SEPARATOR, isset( $path[1] ) ? $path[1] : '' );
302
  $path = array_values( array_filter( $path ) );
303
  if ( isset( $path[0] ) ) {
304
+ $name = '&nbsp; <b>' . esc_html( $path[0] ) . '</b>';
305
  }
306
  $type = __( 'plugin', 'themeisle-companion' );
307
  }
obfx_modules/policy-notice/init.php CHANGED
@@ -193,11 +193,11 @@ class Policy_Notice_OBFX_Module extends Orbit_Fox_Module_Abstract {
193
  // combine the buttons with the bar and close the wrapper.
194
  $output .= '<span class="obfx-cookie-bar">' . $policy_text . $buttons . '</span></div>';
195
  $allowed_html = wp_kses_allowed_html( 'post' );
196
- $allowed_html['input'] = [
197
- 'class' => [],
198
- 'id' => [],
199
- 'type' => [],
200
- ];
201
 
202
  echo wp_kses( apply_filters( 'obfx_cookie_notice_output', $output, $options ), $allowed_html );
203
  }
193
  // combine the buttons with the bar and close the wrapper.
194
  $output .= '<span class="obfx-cookie-bar">' . $policy_text . $buttons . '</span></div>';
195
  $allowed_html = wp_kses_allowed_html( 'post' );
196
+ $allowed_html['input'] = array(
197
+ 'class' => array(),
198
+ 'id' => array(),
199
+ 'type' => array(),
200
+ );
201
 
202
  echo wp_kses( apply_filters( 'obfx_cookie_notice_output', $output, $options ), $allowed_html );
203
  }
obfx_modules/social-sharing/views/hestia-social-sharing-tpl.php CHANGED
@@ -35,7 +35,7 @@ if ( ! empty( $social_links_array ) ) { ?>
35
  }
36
  ?>
37
  <li class="<?php echo esc_attr( $class ); ?>">
38
- <a rel="tooltip" aria-label="<?php echo esc_html( $network_data['nicename'] ); ?>" data-original-title="<?php echo esc_attr( __( 'Share on ', 'themeisle-companion' ) . $network_data['nicename'] ); ?>" class = "btn btn-just-icon btn-round btn-<?php echo esc_attr( $network_data['icon'] ); ?>"
39
  <?php
40
  // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
41
  echo ( isset( $network_data['target'] ) && $network_data['target'] != '0' ) ? 'target="_blank"' : '';
35
  }
36
  ?>
37
  <li class="<?php echo esc_attr( $class ); ?>">
38
+ <a rel="tooltip" aria-label="<?php echo esc_attr( $network_data['nicename'] ); ?>" data-original-title="<?php echo esc_attr( __( 'Share on ', 'themeisle-companion' ) . $network_data['nicename'] ); ?>" class = "btn btn-just-icon btn-round btn-<?php echo esc_attr( $network_data['icon'] ); ?>"
39
  <?php
40
  // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
41
  echo ( isset( $network_data['target'] ) && $network_data['target'] != '0' ) ? 'target="_blank"' : '';
obfx_modules/social-sharing/views/social-sharing-tpl.php CHANGED
@@ -37,7 +37,7 @@ if ( ! empty( $social_links_array ) ) { ?>
37
  ?>
38
  <li class="<?php echo esc_attr( $class ); ?>">
39
  <a class = "<?php echo esc_attr( $network_data['icon'] ); ?>"
40
- aria-label="<?php echo esc_html( $network_data['nicename'] ); ?>"
41
  <?php
42
  // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
43
  echo ( isset( $network_data['target'] ) && $network_data['target'] != '0' ) ? 'target="_blank"' : '';
37
  ?>
38
  <li class="<?php echo esc_attr( $class ); ?>">
39
  <a class = "<?php echo esc_attr( $network_data['icon'] ); ?>"
40
+ aria-label="<?php echo esc_attr( $network_data['nicename'] ); ?>"
41
  <?php
42
  // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
43
  echo ( isset( $network_data['target'] ) && $network_data['target'] != '0' ) ? 'target="_blank"' : '';
obfx_modules/template-directory/init.php CHANGED
@@ -61,7 +61,7 @@ class Template_Directory_OBFX_Module extends Orbit_Fox_Module_Abstract {
61
  * @access public
62
  */
63
  public function hooks() {
64
- add_action( 'admin_menu', [ $this, 'add_template_directory_submenu' ], 11 );
65
  }
66
 
67
  /**
@@ -74,7 +74,7 @@ class Template_Directory_OBFX_Module extends Orbit_Fox_Module_Abstract {
74
  esc_html__( 'Template Directory', 'themeisle-companion' ),
75
  'manage_options',
76
  'obfx_template_dir',
77
- [ $this, 'render_template_directory' ]
78
  );
79
  }
80
 
@@ -202,32 +202,32 @@ class Template_Directory_OBFX_Module extends Orbit_Fox_Module_Abstract {
202
  'template-directory' => array(
203
  'slug' => $this->slug,
204
  'assets' => OBFX_URL . 'obfx_modules/template-directory/assets',
205
- 'neveData' => [
206
  'cta' => $this->get_state( 'neve' ),
207
  'activate' => $this->get_neve_activation_link(),
208
- ],
209
- 'tpcData' => [
210
  'cta' => $this->get_state( 'tpc' ),
211
  'activate' => $this->get_tcp_activation_link(),
212
- ],
213
  'tpcAdminURL' => admin_url( 'themes.php?page=tiob-starter-sites' ),
214
  'nonce' => wp_create_nonce( 'wp_rest' ),
215
- 'strings' => [
216
  'themeNotInstalled' => __( 'In order to import any starter sites, Neve theme & Templates Cloud plugin need to be installed and activated. Click the button below to install and activate Neve.', 'themeisle-companion' ),
217
  'themeNotActive' => __( 'In order to import any starter sites, Neve theme & Templates Cloud plugin need to be installed and activated. Click the button below to activate Neve.', 'themeisle-companion' ),
218
  'tpcNotInstalled' => __( 'In order to import any starter sites, Neve theme & Templates Cloud plugin need to be installed and activated. Click the button below to install and activate Templates Cloud.', 'themeisle-companion' ),
219
  'tpcNotActive' => __( 'In order to import any starter sites, Neve theme & Templates Cloud plugin need to be installed and activated. Click the button below to activate Templates Cloud.', 'themeisle-companion' ),
220
- ],
221
  ),
222
  );
223
 
224
  return array(
225
- 'js' => [
226
- 'template-directory' => array_merge( $dependencies_file['dependencies'], [ 'updates' ] ),
227
- ],
228
- 'css' => [
229
- 'admin' => [ 'wp-components' ],
230
- ],
231
  );
232
  }
233
 
61
  * @access public
62
  */
63
  public function hooks() {
64
+ add_action( 'admin_menu', array( $this, 'add_template_directory_submenu' ), 11 );
65
  }
66
 
67
  /**
74
  esc_html__( 'Template Directory', 'themeisle-companion' ),
75
  'manage_options',
76
  'obfx_template_dir',
77
+ array( $this, 'render_template_directory' )
78
  );
79
  }
80
 
202
  'template-directory' => array(
203
  'slug' => $this->slug,
204
  'assets' => OBFX_URL . 'obfx_modules/template-directory/assets',
205
+ 'neveData' => array(
206
  'cta' => $this->get_state( 'neve' ),
207
  'activate' => $this->get_neve_activation_link(),
208
+ ),
209
+ 'tpcData' => array(
210
  'cta' => $this->get_state( 'tpc' ),
211
  'activate' => $this->get_tcp_activation_link(),
212
+ ),
213
  'tpcAdminURL' => admin_url( 'themes.php?page=tiob-starter-sites' ),
214
  'nonce' => wp_create_nonce( 'wp_rest' ),
215
+ 'strings' => array(
216
  'themeNotInstalled' => __( 'In order to import any starter sites, Neve theme & Templates Cloud plugin need to be installed and activated. Click the button below to install and activate Neve.', 'themeisle-companion' ),
217
  'themeNotActive' => __( 'In order to import any starter sites, Neve theme & Templates Cloud plugin need to be installed and activated. Click the button below to activate Neve.', 'themeisle-companion' ),
218
  'tpcNotInstalled' => __( 'In order to import any starter sites, Neve theme & Templates Cloud plugin need to be installed and activated. Click the button below to install and activate Templates Cloud.', 'themeisle-companion' ),
219
  'tpcNotActive' => __( 'In order to import any starter sites, Neve theme & Templates Cloud plugin need to be installed and activated. Click the button below to activate Templates Cloud.', 'themeisle-companion' ),
220
+ ),
221
  ),
222
  );
223
 
224
  return array(
225
+ 'js' => array(
226
+ 'template-directory' => array_merge( $dependencies_file['dependencies'], array( 'updates' ) ),
227
+ ),
228
+ 'css' => array(
229
+ 'admin' => array( 'wp-components' ),
230
+ ),
231
  );
232
  }
233
 
readme.md CHANGED
@@ -33,7 +33,7 @@ You can check out the demo <a href="https://orbitfox.com/#blog" rel="nofollow" t
33
 
34
  OrbitFox is a user-centred plugin with an easy-to-use admin panel. One of the most important features is that modules will only be loaded if they meet two conditions. If they are needed and if they are compatible with your existing themes and plugins. This will cut down on the unnecessary bloating of your website.
35
 
36
- We've also built some fantastic <a href="http://themeisle.com/wordpress-themes/free/" rel="nofollow" target="_blank">free themes</a> that work well with Orbit Fox, check them out.
37
 
38
  ## Frequently Asked Questions ##
39
 
@@ -107,6 +107,15 @@ Activating the Orbit Fox plugin is just like any other plugin. If you've uploade
107
 
108
  ## Changelog ##
109
 
 
 
 
 
 
 
 
 
 
110
  ##### [Version 2.10.14](https://github.com/Codeinwp/themeisle-companion/compare/v2.10.13...v2.10.14) (2022-08-23)
111
 
112
  * Update dependencies
33
 
34
  OrbitFox is a user-centred plugin with an easy-to-use admin panel. One of the most important features is that modules will only be loaded if they meet two conditions. If they are needed and if they are compatible with your existing themes and plugins. This will cut down on the unnecessary bloating of your website.
35
 
36
+ We've also built some fantastic <a href="http://themeisle.com/wordpress-themes/free/?utm_source=plugin-readme&utm_medium=orbitfox&utm_campaign=freethemes" rel="nofollow" target="_blank">free themes</a> that work well with Orbit Fox, check them out.
37
 
38
  ## Frequently Asked Questions ##
39
 
107
 
108
  ## Changelog ##
109
 
110
+ ##### [Version 2.10.15](https://github.com/Codeinwp/themeisle-companion/compare/v2.10.14...v2.10.15) (2022-09-02)
111
+
112
+ * Update dependencies
113
+ * Fix Hestia client section image problem
114
+ * Improve security validation
115
+
116
+
117
+
118
+
119
  ##### [Version 2.10.14](https://github.com/Codeinwp/themeisle-companion/compare/v2.10.13...v2.10.14) (2022-08-23)
120
 
121
  * Update dependencies
readme.txt CHANGED
@@ -33,7 +33,7 @@ You can check out the demo <a href="https://orbitfox.com/#blog" rel="nofollow" t
33
 
34
  OrbitFox is a user-centred plugin with an easy-to-use admin panel. One of the most important features is that modules will only be loaded if they meet two conditions. If they are needed and if they are compatible with your existing themes and plugins. This will cut down on the unnecessary bloating of your website.
35
 
36
- We've also built some fantastic <a href="http://themeisle.com/wordpress-themes/free/" rel="nofollow" target="_blank">free themes</a> that work well with Orbit Fox, check them out.
37
 
38
  ## Frequently Asked Questions ##
39
 
@@ -107,6 +107,15 @@ Activating the Orbit Fox plugin is just like any other plugin. If you've uploade
107
 
108
  == Changelog ==
109
 
 
 
 
 
 
 
 
 
 
110
  ##### [Version 2.10.14](https://github.com/Codeinwp/themeisle-companion/compare/v2.10.13...v2.10.14) (2022-08-23)
111
 
112
  * Update dependencies
33
 
34
  OrbitFox is a user-centred plugin with an easy-to-use admin panel. One of the most important features is that modules will only be loaded if they meet two conditions. If they are needed and if they are compatible with your existing themes and plugins. This will cut down on the unnecessary bloating of your website.
35
 
36
+ We've also built some fantastic <a href="http://themeisle.com/wordpress-themes/free/?utm_source=plugin-readme&utm_medium=orbitfox&utm_campaign=freethemes" rel="nofollow" target="_blank">free themes</a> that work well with Orbit Fox, check them out.
37
 
38
  ## Frequently Asked Questions ##
39
 
107
 
108
  == Changelog ==
109
 
110
+ ##### [Version 2.10.15](https://github.com/Codeinwp/themeisle-companion/compare/v2.10.14...v2.10.15) (2022-09-02)
111
+
112
+ * Update dependencies
113
+ * Fix Hestia client section image problem
114
+ * Improve security validation
115
+
116
+
117
+
118
+
119
  ##### [Version 2.10.14](https://github.com/Codeinwp/themeisle-companion/compare/v2.10.13...v2.10.14) (2022-08-23)
120
 
121
  * Update dependencies
themeisle-companion.php CHANGED
@@ -15,7 +15,7 @@
15
  * Plugin Name: Orbit Fox Companion
16
  * Plugin URI: https://orbitfox.com/
17
  * Description: This swiss-knife plugin comes with a quality template library, menu/sharing icons modules, Gutenberg blocks, and newly added Elementor/BeaverBuilder page builder widgets on each release.
18
- * Version: 2.10.14
19
  * Author: Themeisle
20
  * Author URI: https://orbitfox.com/
21
  * License: GPL-2.0+
15
  * Plugin Name: Orbit Fox Companion
16
  * Plugin URI: https://orbitfox.com/
17
  * Description: This swiss-knife plugin comes with a quality template library, menu/sharing icons modules, Gutenberg blocks, and newly added Elementor/BeaverBuilder page builder widgets on each release.
18
+ * Version: 2.10.15
19
  * Author: Themeisle
20
  * Author URI: https://orbitfox.com/
21
  * License: GPL-2.0+
vendor/autoload.php CHANGED
@@ -9,4 +9,4 @@ if (PHP_VERSION_ID < 50600) {
9
 
10
  require_once __DIR__ . '/composer/autoload_real.php';
11
 
12
- return ComposerAutoloaderInitddfed374323adeef8c4fafa6123185bb::getLoader();
9
 
10
  require_once __DIR__ . '/composer/autoload_real.php';
11
 
12
+ return ComposerAutoloaderInitdfce362bc6e91a53d9a51189195f2da6::getLoader();
vendor/codeinwp/themeisle-sdk/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  ##### [Version 3.2.27](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.26...v3.2.27) (2022-08-23)
2
 
3
  - Add Promotion Module
1
+ ##### [Version 3.2.28](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.27...v3.2.28) (2022-08-30)
2
+
3
+ * Adds utm handler
4
+ * Improve promotions
5
+
6
  ##### [Version 3.2.27](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.26...v3.2.27) (2022-08-23)
7
 
8
  - Add Promotion Module
vendor/codeinwp/themeisle-sdk/assets/js/build/index.asset.php CHANGED
@@ -1 +1 @@
1
- <?php return array('dependencies' => array('wp-api', 'wp-block-editor', 'wp-components', 'wp-compose', 'wp-data', 'wp-element', 'wp-hooks', 'wp-i18n'), 'version' => 'a1e161cc7b075bdd9250');
1
+ <?php return array('dependencies' => array('wp-api', 'wp-block-editor', 'wp-components', 'wp-compose', 'wp-data', 'wp-element', 'wp-hooks', 'wp-i18n'), 'version' => '73443c6739f6cbdbb5fd');
vendor/codeinwp/themeisle-sdk/assets/js/build/index.js CHANGED
@@ -1 +1 @@
1
- (()=>{"use strict";var e={n:t=>{var o=t&&t.__esModule?()=>t.default:()=>t;return e.d(o,{a:o}),o},d:(t,o)=>{for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.element,o=window.wp.i18n,n=window.wp.blockEditor,s=window.wp.components,i=window.wp.compose,r=window.wp.data,a=window.wp.hooks,l=window.wp.api;var c=e.n(l);const d={button:{display:"flex",justifyContent:"center",width:"100%"},image:{padding:"20px 0"},skip:{container:{display:"flex",flexDirection:"column",alignItems:"center"},button:{fontSize:"9px"},poweredby:{fontSize:"9px",textTransform:"uppercase"}}},m={"blocks-css":{title:(0,o.__)("Custom CSS","otter-blocks"),description:(0,o.__)("Enable Otter and add your Custom CSS for this block."),image:"css.jpg"},"blocks-animation":{title:(0,o.__)("Animations","otter-blocks"),description:(0,o.__)("Enable Otter to add Animations to this block."),image:"animation.jpg"},"blocks-conditions":{title:(0,o.__)("Visibility Conditions","otter-blocks"),description:(0,o.__)("Enable Otter to add Visibility Conditions to this block."),image:"conditions.jpg"}},w=e=>{let{onClick:n}=e;return(0,t.createElement)("div",{style:d.skip.container},(0,t.createElement)(s.Button,{style:d.skip.button,variant:"tertiary",onClick:n},(0,o.__)("Skip for now")),(0,t.createElement)("span",{style:d.skip.poweredby},(0,o.__)("Recommended by ")+window.themeisleSDKPromotions.product))},p=(0,i.createHigherOrderComponent)((e=>i=>{if(i.isSelected&&Boolean(window.themeisleSDKPromotions.showPromotion)){const[a,l]=(0,t.useState)(!1),[p,u]=(0,t.useState)("default"),[b,_]=(0,t.useState)(!1),[k,y,h]=(()=>{const{createNotice:e}=(0,r.dispatch)("core/notices"),[n,s]=(0,t.useState)({}),[i,a]=(0,t.useState)("loading"),l=()=>{c().loadPromise.then((async()=>{try{const e=new(c().models.Settings),t=await e.fetch();s(t)}catch(e){a("error")}finally{a("loaded")}}))};return(0,t.useEffect)((()=>{l()}),[]),[e=>null==n?void 0:n[e],function(t,n){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:(0,o.__)("Settings saved.","textdomain");a("saving");const i=new(c().models.Settings)({[t]:n}).save();i.success(((t,n)=>{"success"===n&&(a("loaded"),e("success",s,{isDismissible:!0,type:"snackbar"})),"error"===n&&(a("error"),e("error",(0,o.__)("An unknown error occurred.","textdomain"),{isDismissible:!0,type:"snackbar"})),l()})),i.error((t=>{a("error"),e("error",t.responseJSON.message?t.responseJSON.message:(0,o.__)("An unknown error occurred.","textdomain"),{isDismissible:!0,type:"snackbar"})}))},i]})(),g=async()=>{var e;l(!0),await("otter-blocks",new Promise((e=>{wp.updates.ajax("install-plugin",{slug:"otter-blocks",success:()=>{e({success:!0})},error:t=>{e({success:!1,code:t.errorCode})}})}))),await(e=window.themeisleSDKPromotions.activationUrl,new Promise((t=>{jQuery.get(e).done((()=>{t({success:!0})})).fail((()=>{t({success:!1})}))}))),l(!1),u("installed")},S=()=>"installed"===p?(0,t.createElement)("p",null,(0,o.__)("Awesome! Refresh the page to see Otter in action.")):(0,t.createElement)(s.Button,{variant:"secondary",onClick:g,isBusy:a,style:d.button},(0,o.__)("Install & Activate Otter")),f=()=>{const e=JSON.parse(window.themeisleSDKPromotions.promotions_otter);e[window.themeisleSDKPromotions.showPromotion]=(new Date).getTime()/1e3|0,y("themeisle_sdk_promotions_otter",JSON.stringify(e)),window.themeisleSDKPromotions.showPromotion=!1};return(0,t.useEffect)((()=>{b&&f()}),[b]),b?(0,t.createElement)(e,i):(0,t.createElement)(t.Fragment,null,(0,t.createElement)(e,i),(0,t.createElement)(n.InspectorControls,null,Object.keys(m).map((e=>{if(e===window.themeisleSDKPromotions.showPromotion){const o=m[e];return(0,t.createElement)(s.PanelBody,{title:o.title,initialOpen:!1},(0,t.createElement)("p",null,o.description),(0,t.createElement)(S,null),(0,t.createElement)("img",{style:d.image,src:window.themeisleSDKPromotions.assets+o.image}),(0,t.createElement)(w,{onClick:()=>_(!0)}))}}))))}return(0,t.createElement)(e,i)}),"withInspectorControl");(0,r.select)("core/edit-site")||(0,a.addFilter)("editor.BlockEdit","themeisle-sdk/with-inspector-controls",p)})();
1
+ (()=>{"use strict";var e={n:t=>{var o=t&&t.__esModule?()=>t.default:()=>t;return e.d(o,{a:o}),o},d:(t,o)=>{for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.element,o=window.wp.i18n,n=window.wp.blockEditor,s=window.wp.components,i=window.wp.compose,r=window.wp.data,l=window.wp.hooks,a=window.wp.api;var c=e.n(a);const d={button:{display:"flex",justifyContent:"center",width:"100%"},image:{padding:"20px 0"},skip:{container:{display:"flex",flexDirection:"column",alignItems:"center"},button:{fontSize:"9px"},poweredby:{fontSize:"9px",textTransform:"uppercase"}}},m={"blocks-css":{title:(0,o.__)("Custom CSS","textdomain"),description:(0,o.__)("Enable Otter Blocks to add Custom CSS for this block."),image:"css.jpg"},"blocks-animation":{title:(0,o.__)("Animations","textdomain"),description:(0,o.__)("Enable Otter Blocks to add Animations for this block."),image:"animation.jpg"},"blocks-conditions":{title:(0,o.__)("Visibility Conditions","textdomain"),description:(0,o.__)("Enable Otter Blocks to add Visibility Conditions for this block."),image:"conditions.jpg"}},w=e=>{let{onClick:n}=e;return(0,t.createElement)("div",{style:d.skip.container},(0,t.createElement)(s.Button,{style:d.skip.button,variant:"tertiary",onClick:n},(0,o.__)("Skip for now")),(0,t.createElement)("span",{style:d.skip.poweredby},(0,o.__)("Recommended by ")+window.themeisleSDKPromotions.product))},p=(0,i.createHigherOrderComponent)((e=>i=>{if(i.isSelected&&Boolean(window.themeisleSDKPromotions.showPromotion)){const[l,a]=(0,t.useState)(!1),[p,u]=(0,t.useState)("default"),[_,k]=(0,t.useState)(!1),[h,b,g]=(()=>{const{createNotice:e}=(0,r.dispatch)("core/notices"),[n,s]=(0,t.useState)({}),[i,l]=(0,t.useState)("loading"),a=()=>{c().loadPromise.then((async()=>{try{const e=new(c().models.Settings),t=await e.fetch();s(t)}catch(e){l("error")}finally{l("loaded")}}))};return(0,t.useEffect)((()=>{a()}),[]),[e=>null==n?void 0:n[e],function(t,n){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:(0,o.__)("Settings saved.","textdomain");l("saving");const i=new(c().models.Settings)({[t]:n}).save();i.success(((t,n)=>{"success"===n&&(l("loaded"),e("success",s,{isDismissible:!0,type:"snackbar"})),"error"===n&&(l("error"),e("error",(0,o.__)("An unknown error occurred.","textdomain"),{isDismissible:!0,type:"snackbar"})),a()})),i.error((t=>{l("error"),e("error",t.responseJSON.message?t.responseJSON.message:(0,o.__)("An unknown error occurred.","textdomain"),{isDismissible:!0,type:"snackbar"})}))},i]})(),y=async()=>{var e;a(!0),await("otter-blocks",new Promise((e=>{wp.updates.ajax("install-plugin",{slug:"otter-blocks",success:()=>{e({success:!0})},error:t=>{e({success:!1,code:t.errorCode})}})}))),b("themeisle_sdk_promotions_otter_installed",!Boolean(h("themeisle_sdk_promotions_otter_installed"))),await(e=window.themeisleSDKPromotions.activationUrl,new Promise((t=>{jQuery.get(e).done((()=>{t({success:!0})})).fail((()=>{t({success:!1})}))}))),a(!1),u("installed")},S=()=>"installed"===p?(0,t.createElement)("p",null,(0,t.createElement)("strong",null,(0,o.__)("Awesome! Refresh the page to see Otter Blocks in action."))):(0,t.createElement)(s.Button,{variant:"secondary",onClick:y,isBusy:l,style:d.button},(0,o.__)("Install & Activate Otter Blocks")),f=()=>{const e=JSON.parse(window.themeisleSDKPromotions.promotions_otter);e[window.themeisleSDKPromotions.showPromotion]=(new Date).getTime()/1e3|0,b("themeisle_sdk_promotions_otter",JSON.stringify(e)),window.themeisleSDKPromotions.showPromotion=!1};return(0,t.useEffect)((()=>{_&&f()}),[_]),_?(0,t.createElement)(e,i):(0,t.createElement)(t.Fragment,null,(0,t.createElement)(e,i),(0,t.createElement)(n.InspectorControls,null,Object.keys(m).map((e=>{if(e===window.themeisleSDKPromotions.showPromotion){const o=m[e];return(0,t.createElement)(s.PanelBody,{title:o.title,initialOpen:!1},(0,t.createElement)("p",null,o.description),(0,t.createElement)(S,null),(0,t.createElement)("img",{style:d.image,src:window.themeisleSDKPromotions.assets+o.image}),(0,t.createElement)(w,{onClick:()=>k(!0)}))}}))))}return(0,t.createElement)(e,i)}),"withInspectorControl");(0,r.select)("core/edit-site")||(0,l.addFilter)("editor.BlockEdit","themeisle-sdk/with-inspector-controls",p)})();
vendor/codeinwp/themeisle-sdk/load.php CHANGED
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  return;
15
  }
16
  // Current SDK version and path.
17
- $themeisle_sdk_version = '3.2.27';
18
  $themeisle_sdk_path = dirname( __FILE__ );
19
 
20
  global $themeisle_sdk_max_version;
@@ -71,3 +71,38 @@ if ( ! function_exists( 'themeisle_sdk_load_latest' ) ) :
71
  }
72
  endif;
73
  add_action( 'init', 'themeisle_sdk_load_latest' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  return;
15
  }
16
  // Current SDK version and path.
17
+ $themeisle_sdk_version = '3.2.28';
18
  $themeisle_sdk_path = dirname( __FILE__ );
19
 
20
  global $themeisle_sdk_max_version;
71
  }
72
  endif;
73
  add_action( 'init', 'themeisle_sdk_load_latest' );
74
+
75
+ if ( ! function_exists( 'tsdk_utmify' ) ) {
76
+ /**
77
+ * Utmify a link.
78
+ *
79
+ * @param string $url URL to add utms.
80
+ * @param string $area Area in page where this is used ( CTA, image, section name).
81
+ * @param string $location Location, such as customizer, about page.
82
+ *
83
+ * @return string
84
+ */
85
+ function tsdk_utmify( $url, $area, $location = null ) {
86
+ static $current_page = null;
87
+ if ( $location === null && $current_page === null ) {
88
+ global $pagenow;
89
+ $screen = function_exists( 'get_current_screen' ) ? get_current_screen() : $pagenow;
90
+ $current_page = isset( $screen->id ) ? $screen->id : ( ( $screen === null ) ? 'non-admin' : $screen );
91
+ $current_page = sanitize_key( str_replace( '.php', '', $current_page ) );
92
+ }
93
+ $location = $location === null ? $current_page : $location;
94
+
95
+ return esc_url_raw(
96
+ add_query_arg(
97
+ [
98
+ 'utm_source' => 'wpadmin',
99
+ 'utm_medium' => $location,
100
+ 'utm_campaign' => $area,
101
+ ],
102
+ $url
103
+ )
104
+ );
105
+ }
106
+
107
+ add_filter( 'tsdk_utmify', 'tsdk_utmify', 10, 3 );
108
+ }
vendor/codeinwp/themeisle-sdk/src/Modules/Dashboard_widget.php CHANGED
@@ -131,8 +131,9 @@ class Dashboard_Widget extends Abstract_Module {
131
  #themeisle h2.hndle {
132
  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABbCAMAAADncTNAAAAAtFBMVEVHcEyAgIB/f3+xsbGgoaGBgYGCgoKKioqAgIC1tbW5ubnFx8iAgIDU1taBgYGCgoKAgIC0tLXW19jW2NiAgIC3uLiBgYHLzMy4uLhycnLW19d/f3/T1NW0tLTX19mVlZWvr6+BgYHl5eWKiottbW5JSUnW2Nm5ubnh4eHT1NWVlZVjY2N4eHh9fX6pqqq+v79PT0/39/fu7u7Nzc7Z2ttYWFgBAQHDw8P////JysoZGRk0NTZqJc/sAAAAIXRSTlMA0FL7/oEnEPL6eibivm9gwJya76/enFq2CXI+2lFAyM8GATmPAAADj0lEQVR4Xu2YaW/iOhSGAwRCWDosnXa6znjJvm8svf//f12TuARyhiR2pfnUR6gSEnr0+uT4xK7yRb755pvhHePli5K7Bfpkuhoq8ozRJdMH+WWha6Z3sqYparCSLRJqspjImVbANJU03cNMMpofAwQZCGsmpQYyFvVM0Q00OQ9koMl5IPcCoro+RA1Dt2Ea9n9eZ0+YHJLkgIlkDywQx00wCTyaReiKH8LbNU9ybJOdkchV6QFxyCFLbVvdfaREqgUWg/tx2UbqIcK2Hex2TdGLwFTjIj3XP3YfCZFsb23KRZn/3263oymSFI0/a5S4PqUBjoBIJBDjeEhCN0wxQSRybIxtJ3K5SGzuE/vAwIQc8ZmMMJFAIM4oikZItfEFtorGgoE43FObwqHU68OtPCnOz8KZ2Jbl5LgkSW0Tc7YyIz/EFWmS4jMbiZU5mJOmKRaJpKGGyLZtDJh3iyaNUu/3+xyKnrtFL71EG+FTiMpENhQtxUQ8kSOXCIr2tnCNhg/gTX0SHYFp0t7TCwQZ7U841yoHrW6rtGroUwTWVnLMssxx+H4bgZcSOFf5MYx0Ae8FghomMDyC2EBNImBywPkNTDNqGLQpIg2TjUNU8tBy9DQMo0DAZF16rAi7vJAtFTIYFAHUc6hIRW6OuOhJgaCSwmDEAYK4oa7ro+qIEyJU/US7KTJKPNSFT9tFgVFBu0SF1y7yjX4masRA9Da7EFGj28R/BkQz6xGIOurkx38T/bKs9Uk8aIiMwm/Jw0VP1yLrJwt13xAxvABBgsK4KWLov35DkRF7ZaqgzuZ7MQ8MOntmVYyAqKTwaICKqvSUFnVccMN5sziEP/5+xGDTahbH5Q3ZB76zr8fI+nJtvUUU3t3ml5GKviK/npCg3CGodnuJ4JVkfRFJYGVDBZrqKnn9RLf+CzDTS5PaN5J38+auzX4ykU4Qoj0rdKfcYs5ijfo9OL/uRUgZyQr7NCWtWwiUSLc4arfJa7lpszTA1OJZAQ8w8dXFrR5YHzCWSnS3pZ18tOi4Ps4vl/c7i/6qomjRecN+UubrPyPGn/VEMU3T0UFHkaPzpgjxmJsnjmrtionlMDZiog0TsY/DPtn8SXtlBvbtxKtwopy7lqW3smQO+yoGE1Uu55GJ3pmI8ygoejZNnqj0vnIRCyTKfLstRdtStGQi09myUsvwvlkuzSUXbV+Xz5ryBebV33fln/A/moud69FZiEYAAAAASUVORK5CYII=');
133
  background-repeat: no-repeat;
134
- background-position: 92% 50%;
135
  background-size: 25px;
 
136
  }
137
 
138
  #themeisle .inside {
131
  #themeisle h2.hndle {
132
  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABbCAMAAADncTNAAAAAtFBMVEVHcEyAgIB/f3+xsbGgoaGBgYGCgoKKioqAgIC1tbW5ubnFx8iAgIDU1taBgYGCgoKAgIC0tLXW19jW2NiAgIC3uLiBgYHLzMy4uLhycnLW19d/f3/T1NW0tLTX19mVlZWvr6+BgYHl5eWKiottbW5JSUnW2Nm5ubnh4eHT1NWVlZVjY2N4eHh9fX6pqqq+v79PT0/39/fu7u7Nzc7Z2ttYWFgBAQHDw8P////JysoZGRk0NTZqJc/sAAAAIXRSTlMA0FL7/oEnEPL6eibivm9gwJya76/enFq2CXI+2lFAyM8GATmPAAADj0lEQVR4Xu2YaW/iOhSGAwRCWDosnXa6znjJvm8svf//f12TuARyhiR2pfnUR6gSEnr0+uT4xK7yRb755pvhHePli5K7Bfpkuhoq8ozRJdMH+WWha6Z3sqYparCSLRJqspjImVbANJU03cNMMpofAwQZCGsmpQYyFvVM0Q00OQ9koMl5IPcCoro+RA1Dt2Ea9n9eZ0+YHJLkgIlkDywQx00wCTyaReiKH8LbNU9ybJOdkchV6QFxyCFLbVvdfaREqgUWg/tx2UbqIcK2Hex2TdGLwFTjIj3XP3YfCZFsb23KRZn/3263oymSFI0/a5S4PqUBjoBIJBDjeEhCN0wxQSRybIxtJ3K5SGzuE/vAwIQc8ZmMMJFAIM4oikZItfEFtorGgoE43FObwqHU68OtPCnOz8KZ2Jbl5LgkSW0Tc7YyIz/EFWmS4jMbiZU5mJOmKRaJpKGGyLZtDJh3iyaNUu/3+xyKnrtFL71EG+FTiMpENhQtxUQ8kSOXCIr2tnCNhg/gTX0SHYFp0t7TCwQZ7U841yoHrW6rtGroUwTWVnLMssxx+H4bgZcSOFf5MYx0Ae8FghomMDyC2EBNImBywPkNTDNqGLQpIg2TjUNU8tBy9DQMo0DAZF16rAi7vJAtFTIYFAHUc6hIRW6OuOhJgaCSwmDEAYK4oa7ro+qIEyJU/US7KTJKPNSFT9tFgVFBu0SF1y7yjX4masRA9Da7EFGj28R/BkQz6xGIOurkx38T/bKs9Uk8aIiMwm/Jw0VP1yLrJwt13xAxvABBgsK4KWLov35DkRF7ZaqgzuZ7MQ8MOntmVYyAqKTwaICKqvSUFnVccMN5sziEP/5+xGDTahbH5Q3ZB76zr8fI+nJtvUUU3t3ml5GKviK/npCg3CGodnuJ4JVkfRFJYGVDBZrqKnn9RLf+CzDTS5PaN5J38+auzX4ykU4Qoj0rdKfcYs5ijfo9OL/uRUgZyQr7NCWtWwiUSLc4arfJa7lpszTA1OJZAQ8w8dXFrR5YHzCWSnS3pZ18tOi4Ps4vl/c7i/6qomjRecN+UubrPyPGn/VEMU3T0UFHkaPzpgjxmJsnjmrtionlMDZiog0TsY/DPtn8SXtlBvbtxKtwopy7lqW3smQO+yoGE1Uu55GJ3pmI8ygoejZNnqj0vnIRCyTKfLstRdtStGQi09myUsvwvlkuzSUXbV+Xz5ryBebV33fln/A/moud69FZiEYAAAAASUVORK5CYII=');
133
  background-repeat: no-repeat;
134
+ background-position: 2% 50%;
135
  background-size: 25px;
136
+ padding-left: 39px;
137
  }
138
 
139
  #themeisle .inside {
vendor/codeinwp/themeisle-sdk/src/Modules/Promotions.php CHANGED
@@ -65,11 +65,21 @@ class Promotions extends Abstract_Module {
65
  return;
66
  }
67
 
 
 
 
 
68
  $this->product = $product;
69
 
70
- if ( in_array( 'otter', $this->promotions_to_load ) && false === apply_filters( 'themeisle_sdk_load_promotions_otter', false ) && ! ( defined( 'OTTER_BLOCKS_VERSION' ) || $this->is_otter_installed() ) && version_compare( get_bloginfo( 'version' ), '5.8', '>=' ) ) {
 
 
 
 
 
 
 
71
  add_filter( 'themeisle_sdk_load_promotions_otter', '__return_true' );
72
- add_action( 'init', array( $this, 'register_settings' ), 99 );
73
 
74
  if ( false !== $this->show_otter_promotion() ) {
75
  add_action( 'enqueue_block_editor_assets', array( $this, 'enqueue_editor_assets' ) );
@@ -79,6 +89,23 @@ class Promotions extends Abstract_Module {
79
  return $this;
80
  }
81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  /**
83
  * Register Settings
84
  *
@@ -96,21 +123,36 @@ class Promotions extends Abstract_Module {
96
  'default' => '{}',
97
  )
98
  );
 
 
 
 
 
 
 
 
 
 
 
99
  }
100
 
101
  /**
102
  * Get the Otter Blocks plugin status.
103
  *
 
 
104
  * @return string
105
  */
106
- private function is_otter_installed() {
107
- $status = false;
108
-
109
- if ( file_exists( ABSPATH . 'wp-content/plugins/otter-blocks/otter-blocks.php' ) ) {
 
 
110
  return true;
111
  }
112
 
113
- return $status;
114
  }
115
 
116
  /**
@@ -142,10 +184,29 @@ class Promotions extends Abstract_Module {
142
  return false;
143
  }
144
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
145
  /**
146
  * Load Gutenberg editor assets.
147
  *
148
- * @since 1.0.0
149
  * @access public
150
  */
151
  public function enqueue_editor_assets() {
@@ -180,11 +241,12 @@ class Promotions extends Abstract_Module {
180
  'plugin_status' => 'all',
181
  'paged' => '1',
182
  'action' => 'activate',
 
183
  'plugin' => rawurlencode( 'otter-blocks/otter-blocks.php' ),
184
  '_wpnonce' => wp_create_nonce( 'activate-plugin_otter-blocks/otter-blocks.php' ),
185
  ),
186
- admin_url( 'plugins.php' )
187
- )
188
  ),
189
  )
190
  );
65
  return;
66
  }
67
 
68
+ if ( ! $this->is_writeable() || ! current_user_can( 'install_plugins' ) ) {
69
+ return;
70
+ }
71
+
72
  $this->product = $product;
73
 
74
+ add_action( 'init', array( $this, 'register_settings' ), 99 );
75
+ add_action( 'admin_init', array( $this, 'register_reference' ), 99 );
76
+
77
+ if ( in_array( 'otter', $this->promotions_to_load )
78
+ && false === apply_filters( 'themeisle_sdk_load_promotions_otter', false )
79
+ && ! ( defined( 'OTTER_BLOCKS_VERSION' )
80
+ || $this->is_plugin_installed( 'otter-blocks' ) )
81
+ && version_compare( get_bloginfo( 'version' ), '5.8', '>=' ) ) {
82
  add_filter( 'themeisle_sdk_load_promotions_otter', '__return_true' );
 
83
 
84
  if ( false !== $this->show_otter_promotion() ) {
85
  add_action( 'enqueue_block_editor_assets', array( $this, 'enqueue_editor_assets' ) );
89
  return $this;
90
  }
91
 
92
+ /**
93
+ * Register plugin reference.
94
+ *
95
+ * @return void
96
+ */
97
+ public function register_reference() {
98
+
99
+ $reference_key = ! isset( $_GET['reference_key'] ) ? '' : sanitize_key( $_GET['reference_key'] );
100
+ if ( empty( $reference_key ) ) {
101
+ return;
102
+ }
103
+ if ( get_option( 'otter_reference_key', false ) !== false ) {
104
+ return;
105
+ }
106
+ update_option( 'otter_reference_key', $reference_key );
107
+ }
108
+
109
  /**
110
  * Register Settings
111
  *
123
  'default' => '{}',
124
  )
125
  );
126
+
127
+ register_setting(
128
+ 'themeisle_sdk_settings',
129
+ 'themeisle_sdk_promotions_otter_installed',
130
+ array(
131
+ 'type' => 'boolean',
132
+ 'sanitize_callback' => 'rest_sanitize_boolean',
133
+ 'show_in_rest' => true,
134
+ 'default' => false,
135
+ )
136
+ );
137
  }
138
 
139
  /**
140
  * Get the Otter Blocks plugin status.
141
  *
142
+ * @param string $plugin Plugin slug.
143
+ *
144
  * @return string
145
  */
146
+ private function is_plugin_installed( $plugin ) {
147
+ static $allowed_keys = [ 'otter-blocks' => 'otter-blocks/otter-blocks.php' ];
148
+ if ( ! isset( $allowed_keys[ $plugin ] ) ) {
149
+ return false;
150
+ }
151
+ if ( file_exists( WP_CONTENT_DIR . '/plugins/' . $allowed_keys[ $plugin ] ) ) {
152
  return true;
153
  }
154
 
155
+ return false;
156
  }
157
 
158
  /**
184
  return false;
185
  }
186
 
187
+ /**
188
+ * Check if the path is writable.
189
+ *
190
+ * @return boolean
191
+ * @access public
192
+ */
193
+ public function is_writeable() {
194
+ global $wp_filesystem;
195
+ include_once ABSPATH . 'wp-admin/includes/file.php';
196
+ WP_Filesystem();
197
+
198
+ if ( ! function_exists( 'WP_Filesystem' ) ) {
199
+ return false;
200
+ }
201
+
202
+ $writable = WP_Filesystem( false, ABSPATH . 'wp-content' );
203
+
204
+ return $writable && 'direct' === $wp_filesystem->method;
205
+ }
206
+
207
  /**
208
  * Load Gutenberg editor assets.
209
  *
 
210
  * @access public
211
  */
212
  public function enqueue_editor_assets() {
241
  'plugin_status' => 'all',
242
  'paged' => '1',
243
  'action' => 'activate',
244
+ 'reference_key' => $this->product->get_key(),
245
  'plugin' => rawurlencode( 'otter-blocks/otter-blocks.php' ),
246
  '_wpnonce' => wp_create_nonce( 'activate-plugin_otter-blocks/otter-blocks.php' ),
247
  ),
248
+ admin_url( 'plugins.php' )
249
+ )
250
  ),
251
  )
252
  );
vendor/codeinwp/themeisle-sdk/start.php CHANGED
@@ -42,7 +42,6 @@ foreach ( $files_to_load as $file ) {
42
  require_once $file;
43
  }
44
  }
45
-
46
  Loader::init();
47
 
48
  foreach ( $products as $product ) {
42
  require_once $file;
43
  }
44
  }
 
45
  Loader::init();
46
 
47
  foreach ( $products as $product ) {
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitddfed374323adeef8c4fafa6123185bb
6
  {
7
  private static $loader;
8
 
@@ -24,18 +24,18 @@ class ComposerAutoloaderInitddfed374323adeef8c4fafa6123185bb
24
 
25
  require __DIR__ . '/platform_check.php';
26
 
27
- spl_autoload_register(array('ComposerAutoloaderInitddfed374323adeef8c4fafa6123185bb', 'loadClassLoader'), true, true);
28
  self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
29
- spl_autoload_unregister(array('ComposerAutoloaderInitddfed374323adeef8c4fafa6123185bb', 'loadClassLoader'));
30
 
31
  require __DIR__ . '/autoload_static.php';
32
- call_user_func(\Composer\Autoload\ComposerStaticInitddfed374323adeef8c4fafa6123185bb::getInitializer($loader));
33
 
34
  $loader->register(true);
35
 
36
- $includeFiles = \Composer\Autoload\ComposerStaticInitddfed374323adeef8c4fafa6123185bb::$files;
37
  foreach ($includeFiles as $fileIdentifier => $file) {
38
- composerRequireddfed374323adeef8c4fafa6123185bb($fileIdentifier, $file);
39
  }
40
 
41
  return $loader;
@@ -47,7 +47,7 @@ class ComposerAutoloaderInitddfed374323adeef8c4fafa6123185bb
47
  * @param string $file
48
  * @return void
49
  */
50
- function composerRequireddfed374323adeef8c4fafa6123185bb($fileIdentifier, $file)
51
  {
52
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
53
  $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInitdfce362bc6e91a53d9a51189195f2da6
6
  {
7
  private static $loader;
8
 
24
 
25
  require __DIR__ . '/platform_check.php';
26
 
27
+ spl_autoload_register(array('ComposerAutoloaderInitdfce362bc6e91a53d9a51189195f2da6', 'loadClassLoader'), true, true);
28
  self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
29
+ spl_autoload_unregister(array('ComposerAutoloaderInitdfce362bc6e91a53d9a51189195f2da6', 'loadClassLoader'));
30
 
31
  require __DIR__ . '/autoload_static.php';
32
+ call_user_func(\Composer\Autoload\ComposerStaticInitdfce362bc6e91a53d9a51189195f2da6::getInitializer($loader));
33
 
34
  $loader->register(true);
35
 
36
+ $includeFiles = \Composer\Autoload\ComposerStaticInitdfce362bc6e91a53d9a51189195f2da6::$files;
37
  foreach ($includeFiles as $fileIdentifier => $file) {
38
+ composerRequiredfce362bc6e91a53d9a51189195f2da6($fileIdentifier, $file);
39
  }
40
 
41
  return $loader;
47
  * @param string $file
48
  * @return void
49
  */
50
+ function composerRequiredfce362bc6e91a53d9a51189195f2da6($fileIdentifier, $file)
51
  {
52
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
53
  $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInitddfed374323adeef8c4fafa6123185bb
8
  {
9
  public static $files = array (
10
  '9c67151ae59aff4788964ce8eb2a0f43' => __DIR__ . '/..' . '/clue/stream-filter/src/functions_include.php',
@@ -269,9 +269,9 @@ class ComposerStaticInitddfed374323adeef8c4fafa6123185bb
269
  public static function getInitializer(ClassLoader $loader)
270
  {
271
  return \Closure::bind(function () use ($loader) {
272
- $loader->prefixLengthsPsr4 = ComposerStaticInitddfed374323adeef8c4fafa6123185bb::$prefixLengthsPsr4;
273
- $loader->prefixDirsPsr4 = ComposerStaticInitddfed374323adeef8c4fafa6123185bb::$prefixDirsPsr4;
274
- $loader->classMap = ComposerStaticInitddfed374323adeef8c4fafa6123185bb::$classMap;
275
 
276
  }, null, ClassLoader::class);
277
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInitdfce362bc6e91a53d9a51189195f2da6
8
  {
9
  public static $files = array (
10
  '9c67151ae59aff4788964ce8eb2a0f43' => __DIR__ . '/..' . '/clue/stream-filter/src/functions_include.php',
269
  public static function getInitializer(ClassLoader $loader)
270
  {
271
  return \Closure::bind(function () use ($loader) {
272
+ $loader->prefixLengthsPsr4 = ComposerStaticInitdfce362bc6e91a53d9a51189195f2da6::$prefixLengthsPsr4;
273
+ $loader->prefixDirsPsr4 = ComposerStaticInitdfce362bc6e91a53d9a51189195f2da6::$prefixDirsPsr4;
274
+ $loader->classMap = ComposerStaticInitdfce362bc6e91a53d9a51189195f2da6::$classMap;
275
 
276
  }, null, ClassLoader::class);
277
  }
vendor/composer/installed.json CHANGED
@@ -244,23 +244,23 @@
244
  },
245
  {
246
  "name": "codeinwp/themeisle-sdk",
247
- "version": "3.2.27",
248
- "version_normalized": "3.2.27.0",
249
  "source": {
250
  "type": "git",
251
  "url": "https://github.com/Codeinwp/themeisle-sdk.git",
252
- "reference": "bab0314e1f6e2f811116a2da7736b94cbe6af90f"
253
  },
254
  "dist": {
255
  "type": "zip",
256
- "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/bab0314e1f6e2f811116a2da7736b94cbe6af90f",
257
- "reference": "bab0314e1f6e2f811116a2da7736b94cbe6af90f",
258
  "shasum": ""
259
  },
260
  "require-dev": {
261
  "codeinwp/phpcs-ruleset": "dev-main"
262
  },
263
- "time": "2022-08-23T13:09:40+00:00",
264
  "type": "library",
265
  "installation-source": "dist",
266
  "notification-url": "https://packagist.org/downloads/",
@@ -281,7 +281,7 @@
281
  ],
282
  "support": {
283
  "issues": "https://github.com/Codeinwp/themeisle-sdk/issues",
284
- "source": "https://github.com/Codeinwp/themeisle-sdk/tree/v3.2.27"
285
  },
286
  "install-path": "../codeinwp/themeisle-sdk"
287
  },
244
  },
245
  {
246
  "name": "codeinwp/themeisle-sdk",
247
+ "version": "3.2.28",
248
+ "version_normalized": "3.2.28.0",
249
  "source": {
250
  "type": "git",
251
  "url": "https://github.com/Codeinwp/themeisle-sdk.git",
252
+ "reference": "89aafa06d90d8b2d79804e6030d5f3610f596434"
253
  },
254
  "dist": {
255
  "type": "zip",
256
+ "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/89aafa06d90d8b2d79804e6030d5f3610f596434",
257
+ "reference": "89aafa06d90d8b2d79804e6030d5f3610f596434",
258
  "shasum": ""
259
  },
260
  "require-dev": {
261
  "codeinwp/phpcs-ruleset": "dev-main"
262
  },
263
+ "time": "2022-08-30T13:45:55+00:00",
264
  "type": "library",
265
  "installation-source": "dist",
266
  "notification-url": "https://packagist.org/downloads/",
281
  ],
282
  "support": {
283
  "issues": "https://github.com/Codeinwp/themeisle-sdk/issues",
284
+ "source": "https://github.com/Codeinwp/themeisle-sdk/tree/v3.2.28"
285
  },
286
  "install-path": "../codeinwp/themeisle-sdk"
287
  },
vendor/composer/installed.php CHANGED
@@ -1,9 +1,9 @@
1
  <?php return array(
2
  'root' => array(
3
  'name' => 'codeinwp/themeisle-companion',
4
- 'pretty_version' => 'v2.10.14',
5
- 'version' => '2.10.14.0',
6
- 'reference' => 'cba35cf6479051c2138b1f16991e4a220c364d3d',
7
  'type' => 'wordpress-plugin',
8
  'install_path' => __DIR__ . '/../../',
9
  'aliases' => array(),
@@ -47,9 +47,9 @@
47
  'dev_requirement' => false,
48
  ),
49
  'codeinwp/themeisle-companion' => array(
50
- 'pretty_version' => 'v2.10.14',
51
- 'version' => '2.10.14.0',
52
- 'reference' => 'cba35cf6479051c2138b1f16991e4a220c364d3d',
53
  'type' => 'wordpress-plugin',
54
  'install_path' => __DIR__ . '/../../',
55
  'aliases' => array(),
@@ -65,9 +65,9 @@
65
  'dev_requirement' => false,
66
  ),
67
  'codeinwp/themeisle-sdk' => array(
68
- 'pretty_version' => '3.2.27',
69
- 'version' => '3.2.27.0',
70
- 'reference' => 'bab0314e1f6e2f811116a2da7736b94cbe6af90f',
71
  'type' => 'library',
72
  'install_path' => __DIR__ . '/../codeinwp/themeisle-sdk',
73
  'aliases' => array(),
1
  <?php return array(
2
  'root' => array(
3
  'name' => 'codeinwp/themeisle-companion',
4
+ 'pretty_version' => 'v2.10.15',
5
+ 'version' => '2.10.15.0',
6
+ 'reference' => '77ad17285802c814695255477f8ab39580dd69fd',
7
  'type' => 'wordpress-plugin',
8
  'install_path' => __DIR__ . '/../../',
9
  'aliases' => array(),
47
  'dev_requirement' => false,
48
  ),
49
  'codeinwp/themeisle-companion' => array(
50
+ 'pretty_version' => 'v2.10.15',
51
+ 'version' => '2.10.15.0',
52
+ 'reference' => '77ad17285802c814695255477f8ab39580dd69fd',
53
  'type' => 'wordpress-plugin',
54
  'install_path' => __DIR__ . '/../../',
55
  'aliases' => array(),
65
  'dev_requirement' => false,
66
  ),
67
  'codeinwp/themeisle-sdk' => array(
68
+ 'pretty_version' => '3.2.28',
69
+ 'version' => '3.2.28.0',
70
+ 'reference' => '89aafa06d90d8b2d79804e6030d5f3610f596434',
71
  'type' => 'library',
72
  'install_path' => __DIR__ . '/../codeinwp/themeisle-sdk',
73
  'aliases' => array(),