Ocean Extra - Version 1.6.1

Version Description

Download this release

Release Info

Developer oceanwp
Plugin Icon 128x128 Ocean Extra
Version 1.6.1
Comparing to
See all releases

Code changes from version 1.6.0 to 1.6.1

changelog.txt ADDED
@@ -0,0 +1,399 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ = 1.6.1 =
2
+ - fixed: Freemius account details display.
3
+ - Added: Updated custom header nav widget with respect to theme for accessibitly.
4
+
5
+ = 1.6.0 =
6
+ - Updated: Freemius SDK for better account and license management.
7
+ - Fixed: [oceanwp_nav] shortcode mobile menu issue.
8
+ - Fixed: Theme Panel > Scripts & Styles - PHP7.4 Warning message after disabling/enabling styles & scripts.
9
+ - Fixed: Replaced get_woocommerce_term_meta (deprecated) by get_term_meta.
10
+ - Added: Accessibility Improvement - Added 'aria-hidden' labels to the social icon widget.
11
+
12
+ = 1.5.20 =
13
+ - Fixed: Menu Icon Library: icon library loading blank.
14
+
15
+ = 1.5.19 =
16
+ - Fixed: Icon issue.
17
+ - Fixed: Compatibility with WP5.3
18
+
19
+ = 1.5.18 =
20
+ - Fixed: Fatal Error.
21
+
22
+ = 1.5.17 =
23
+ - Added: Updated to FontAwesome-5 to fix the version conflict.
24
+
25
+ = 1.5.16 =
26
+ - New: Added white-labeling capabilities for client installations.
27
+
28
+ = 1.5.15 =
29
+ - Fix: Fixed the WP Cron jobs issue.
30
+
31
+ = 1.5.14 =
32
+ - Update: Added special logging and troubleshooting for the migration logic.
33
+
34
+ = 1.5.13 =
35
+ - Fixed: Free label in Freemius.
36
+
37
+ = 1.5.12 =
38
+ - Fixed: Security issue.
39
+
40
+ = 1.5.11 =
41
+ - Added: Important codes for the Freemius switch.
42
+
43
+ = 1.5.10 =
44
+ - Fixed: Errors issue with the updater.php file.
45
+
46
+ = 1.5.8 =
47
+ - Tweak: Gutenberg support removed for the My Library post type to avoid conflict with Ocean Hooks.
48
+
49
+ = 1.5.7 =
50
+ - Added: Gutenberg support.
51
+
52
+ = 1.5.6 =
53
+ - Added: Some codes for an upcoming release.
54
+
55
+ = 1.5.5 =
56
+ - Tweak: Small improvement on the setup wizard.
57
+
58
+ = 1.5.4 =
59
+ - Tweak: Import demo improved.
60
+
61
+ = 1.5.3 =
62
+ - Fixed: White screen error with older PHP version.
63
+
64
+ = 1.5.2 =
65
+ - Fixed: White screen error.
66
+
67
+ = 1.5.1 =
68
+ - Added: Meta tags directly added to this plugin as it is not allowed in a theme.
69
+
70
+ = 1.5.0 =
71
+ - Added: Setup Wizard to help you to create very easily your website.
72
+ - Tweak: You can now select a post type for the [oceanwp_search] shortcode.
73
+ - Tweak: The WooCommerce shortcodes take into account the taxes calculation if activated.
74
+ - Fixed: Import issue with the contact form of the demos.
75
+ - Fixed: WPML issue to translate pages.
76
+ - Fixed: The MailChimp and Social Share JS files are now only loaded if the widgets are used on a post.
77
+ - Removed: First box in Theme Panel sidebar.
78
+
79
+ = 1.4.29 =
80
+ - Tweak: Some tweaks for an upcoming big update.
81
+
82
+ = 1.4.28 =
83
+ - Tweak: Notices will not be displayed if Ocean White Label is used (you don't need to update if you don't use this white label plugin).
84
+
85
+ = 1.4.27 =
86
+ - Added: Dismiss button for the theme panel rating box so you can easily remove it.
87
+
88
+ = 1.4.26 =
89
+ - Fixed: Missing CSS issue.
90
+
91
+ = 1.4.25 =
92
+ - Tweak: Contact Forms 7 replaced by WPForms for all free demos, which is a much better and flexible form plugin.
93
+
94
+ = 1.4.24 =
95
+ - Fixed: Issue with the [oceanwp_woo_free_shipping_left} shortcode.
96
+
97
+ = 1.4.23 =
98
+ - Fixed: White screen if PHP under 5.6 is used.
99
+
100
+ = 1.4.22 =
101
+ - Tweak: Slick script in Theme Panel > Scripts & Styles.
102
+
103
+ = 1.4.21 =
104
+ - Fixed: Issue with the About Me widget in the customizer.
105
+
106
+ = 1.4.20 =
107
+ - Added: New setting in OceanWP Settings to select a custom footer per page/post.
108
+ - Tweak: Sticky Header notice automatically removed if one premium extension is activated.
109
+
110
+ = 1.4.19 =
111
+ - Tweak: New setting for the Custom Menu widget to allow you to open the sub menus at the parent link hover or via an icon click.
112
+
113
+ = 1.4.18 =
114
+ - Fixed: issue with some shortcodes and Yoast SEO.
115
+
116
+ = 1.4.17 =
117
+ - Tweak: Theme Panel sidebar improved.
118
+
119
+ = 1.4.16 =
120
+ - Fixed: Social Share widget not displayed in the widget page.
121
+
122
+ = 1.4.15 =
123
+ - Added: New widget Social Share.
124
+ - Added: New premium extension Full Screen in the extensions page.
125
+
126
+ = 1.4.14 =
127
+ - Added: New premium extension "Ocean Cookie Notice" in the Extensions admin page.
128
+
129
+ = 1.4.13 =
130
+ - Tweak: MailChimp widget improved, you just need to add your MailChimp API Key and List ID in Theme Panel > Integration, and the form will don't redirect anymore.
131
+
132
+ = 1.4.12 =
133
+ - Added: Typography settings for the Menu in the OceanWP Settings metabox.
134
+ - Removed: Push Monkey integration, if you used it in the Theme Panel, you just need to install the official plugin: https://wordpress.org/plugins/push-monkey-desktop-push-notifications/
135
+
136
+ = 1.4.11 =
137
+ -Tweak: Theme Panel edited.
138
+
139
+ = 1.4.10 =
140
+ -Tweak: OceanWP dashboard widget display the theme version.
141
+
142
+ = 1.4.9 =
143
+ -Added: OceanWP News & Updates widget in the WordPress dashboard so you can see the latest news of the theme.
144
+ -Tweak: Licenses tab moved to an admin panel, more easier to access, Theme Panel > Licenses.
145
+ -Fixed: Color picker that close on Safari browser.
146
+ -Fixed: $hashtag and $blocked_users user variables not defined for the Instagram widget.
147
+ -Fixed: Mini cart issue on the Cart and Checkout page if the woo cart icon shortcode is used.
148
+
149
+ = 1.4.8 =
150
+ -Added: Switch button to easily check or un-check every script for the Scripts & Styles page.
151
+ -Added: Upload setting for the Instagram widget if you want to add a profile picture, as it is not possible anymore to get it from the username.
152
+ -Fixed: Instagram widget issue "Images not found".
153
+
154
+ = 1.4.7 =
155
+ -Fixed: Error in Theme Panel > Extensions.
156
+
157
+ = 1.4.6 =
158
+ -Fixed: 500 error on PHP 5.4.
159
+
160
+ = 1.4.5 =
161
+ -Tweak: The activation/deactivation of the scripts and styles work on every hosts now.
162
+ -Removed: Wishlist icon shortcode, with the TI WooCommerce Wishlist plugin you can use their "[ti_wishlist_products_counter]" shortcode, so if you use the theme shortcode, you need to replace it.
163
+ -Removed: Rec. Plugins in Theme Panel, it can be confusing for new users.
164
+
165
+ = 1.4.4 =
166
+ - Added: Cart icon shortcode.
167
+ - Added: Wishlist icon shortcode.
168
+ - Added: Twiiter widget.
169
+ - Fixed: Menu icons issue.
170
+ - Fixed: Font Awesome and Simple Line Icons styles was not disabled if no other styles was not un-checked.
171
+
172
+ = 1.4.3 =
173
+ - Added: Popup Login extension in Theme Panel > Extensions.
174
+
175
+ = 1.4.2 =
176
+ - Added: Core Extensions Bundle block in Theme Panel > Licenses, so now, you just need to add one license to activate all premium extensions.
177
+ - Fixed: Theme Panel issue with PHP 5.6.
178
+
179
+ = 1.4.1 =
180
+ - Fixed: Scripts & Styles issue on the Theme Panel page.
181
+ - Fixed: Licenses issue on mulsite, now you can enable your premium extensions licenses for all your subsites.
182
+
183
+ = 1.4.0 =
184
+ - Added: Integration with Push Monkey, see Theme Panel > Push Notifications.
185
+ - Added: Instagram and White Label extensions added in the extensions tab.
186
+ - Added: New options for the Contact Info widget to add a target to the links.
187
+ - Tweak: Better approch for the Scripts & Styles, now the files are automatically updated after the theme update, no need to do it manually.
188
+ - Fixed: Icons issue of the contact info widget on RTL.
189
+
190
+ = 1.3.10 =
191
+ - Fixed: Small issue on the Scripts & Styles page.
192
+
193
+ = 1.3.9 =
194
+ - Added: New fields in the Contact Info widget to allow you to add a URL for the Address, Phone and Mobile fields.
195
+ - Added: Three styles for the Contact Info widget, default, big icons and no icons.
196
+ - Deleted: Post tab in the OceanWP Settings metabox if it is not the Post post type.
197
+ - Deleted: Admin notice if OceanWP is not the theme used.
198
+
199
+ = 1.3.8 =
200
+ - Added: Color fields in the Social Icons widget.
201
+ - Added: Custom JS textarea in the customizer.
202
+ - Fixed: Issue with the breadcrumb shortcode in the elementor editor mode.
203
+ - Fixed: Issue with the color control on the OceanWP Settings metabox.
204
+ - Fixed: Issue with the Magnific Popup script when you disable a script in the Scripts and Styles page with external plugins who are using the same script.
205
+ - Fixed: Save button for the About Me and Social widgets.
206
+
207
+ = 1.3.7 =
208
+ - Fixed: Issue with some admin pages style.
209
+
210
+ = 1.3.6 =
211
+ - Added: Spanish language, thanks to Angel Julian Mena.
212
+ - Added: Filter to remove the admin notice to get Ocean Hooks.
213
+ - Tweak: The fields to enter your licenses key are now hidden so you can use them for your customers..
214
+ - Fixed: Page header, page header heading and breadcrumb issue if there disabled in the customizer and you want enable them per page/post.
215
+
216
+ = 1.3.5 =
217
+ - Added: OceanWP Settings metabox in Anywhere Elementor post type.
218
+
219
+ = 1.3.4 =
220
+ - Fixed: 500 error issue if you use an outdated OceanWP version.
221
+
222
+ = 1.3.3 =
223
+ - Added: New "Both Sidebars" layout in OceanWP Settings.
224
+ - Added: New option in OceanWP Settings to select a header per page/post, the header style options need to be set via the customizer.
225
+ - Added: New options in OceanWP Settings to add a different logo and retina logo per page/post.
226
+ - Added: New options in OceanWP Settings to add a different max width and max height for your logo per page/post.
227
+ - Added: New options in OceanWP Settings to add different parent menu items color per page/post.
228
+ - Added: New options in the Title tab in OceanWP Settings to disable the page title heading per page/post.
229
+ - Added: New shortcode to display the breadcrumb where you want: [oceanwp_breadcrumb].
230
+ - Added: Parallax Footer script in Theme Panel > Scripts & Styles, so you can disable it.
231
+ - Tweak: Scripts and styles files path.
232
+
233
+ = 1.3.2 =
234
+ - Added: Capabilities for the OceanWP Settings metabox with "manage_options" by default, you can change it with the "ocean_main_metaboxes_capabilities" filter.
235
+ - Tweak: Now you can add HTML code in the text field of the About Me widget.
236
+
237
+ = 1.3.1 =
238
+ - Fixed: Transparent header style issue in the edit mode of elementor.
239
+ - Fixed: Blog entries CSS issue.
240
+
241
+ = 1.3.0 =
242
+ - Added: Shortcode in the My Library post type, now you can create a template via this post type and insert it where you want via the Shortcodes tab of the OceanWP Settings metabox, work with any page builder.
243
+ - Added: Links Effect style in Scripts & Styles.
244
+
245
+ = 1.2.10 =
246
+ - Added: New "My Library" tab in Theme Panel, this post type will be used for your custom header, custom footer, custom error page, etc... The old way (pages select) still work but it is better to import your content directly into this new post type.
247
+ - Added: French translation, thanks a lot to Jean of freepixel.net.
248
+ - Tweak: Your posts can be displayed on the Recent Posts widget even if there is no thumbnails.
249
+ - Tweak: Improvement for the Scripts & Styles feature. If you see that your site's CSS is malfunctioning, go to your WordPress dashboard, click Theme Panel > Scripts & Styles, and click Save Changes. This will create a new JS and CSS files if you have disabled an JS or CSS field.
250
+
251
+ = 1.2.9 =
252
+ - Added: Portfolio extension in the Extensions tab.
253
+
254
+ = 1.2.8 =
255
+ - Fixed: Issue with the top bar menu with the center header style.
256
+
257
+ = 1.2.7 =
258
+ - Added: New Typography control for the metabox to use it in extensions.
259
+ - Fixed: JS error with the Fixed Footer script.
260
+
261
+ = 1.2.6 =
262
+ - Added: Admin notice.
263
+ - Tweak: Some code improvements.
264
+
265
+ = 1.2.5 =
266
+ - Fixed: Double lighbox icon on the single product images.
267
+
268
+ = 1.2.4 =
269
+ - Tweak: Code improvements for the metabox.
270
+
271
+ = 1.2.3 =
272
+ - Added: Ajax for the [oceanwp_woo_free_shipping_left] shortcode, now when you'll add a product on your cart, the free shipping left amount will updated automatically.
273
+ - Added: Review box instead of the affiliate box.
274
+
275
+ = 1.2.2.3 =
276
+ - Fixed: Mobile menu with the Custom Header Nav widget.
277
+
278
+ = 1.2.2.2 =
279
+ - Deleted: Customizer unnecessary sections.
280
+
281
+ = 1.2.2.1 =
282
+ - Fixed: Theme Panel issue.
283
+ - Fixed: Issue when disabling Font Awesome and Simple Line Icons, did not work anymore.
284
+
285
+ = 1.2.2 =
286
+ - Added: New way to add an icon for your menu items, now you can see available icons, change the size, put your icon before/after or above text, hide text, etc.
287
+ - Added: New "Rec. Plugins" tab in Theme Panel to easily allow you to install recommended plugins.
288
+ - Added: New "Shortcodes" tab in the OceanWP Settings metabox to allow you to add shortcodes before/after elements.
289
+ - Added: New "Breadcrumbs" tab and fields in the OceanWP Settings metabox to show/hide and customizer the breadcrumbs per page/post.
290
+ - Added: New WooCommerce shortcode "[oceanwp_woo_total_cart]" to display the total amount of your cart.
291
+ - Added: New WooCommerce shortcode "[oceanwp_woo_cart_items]" to display the total items number of your cart.
292
+ - Added: New WooCommerce shortcode "[oceanwp_woo_free_shipping_left]" to display the amount left to get free shipping.
293
+ - Fixed: Issue when you add the OceanWP widgets in your page with Elementor.
294
+ - Fixed: Issue with disabling customizer's panels via Theme Panel, if you have disabled customizer panels, you have to do it again, sorry for that.
295
+ - Fixed: Issue when you add HTML code in the content of the contact info widget.
296
+ - Tweak: Improved Theme Panel page.
297
+ - Tweak: Improved Extensions admin page.
298
+
299
+ = 1.2.1.2 =
300
+ - Fixed: WooCommerce CSS updated to fix the small issue with the products categories images.
301
+
302
+ = 1.2.1.1 =
303
+ - Fixed: Small issue with some scripts.
304
+
305
+ = 1.2.1 =
306
+ - Added: Scripts Panel tab to allow you to enable or disable any scripts from the theme to improve your loading speed, thank you a lot to Steeve Lefebvre for helping me with this.
307
+ - Added: New shortcode "[oceanwp_current_user]", see the [documentation](http://docs.oceanwp.org/article/433-oceanwpcurrentuser-shortcode).
308
+ - Added: Tags cloud widget, now you can add your own style (background, color, font size, text-transform, etc...).
309
+ - Tweak: Layouts names modified, from No Sidebar to Full Width and Full Screen to 100% Full Width.
310
+ - Fixed: Small issue with the Custom Menu widget.
311
+ - Deleted: oceanwp_insta_square image size, no need anymore.
312
+
313
+ = 1.2.0.1 =
314
+ - Fixed: Small issue with the post type select in the recent post widget.
315
+
316
+ = 1.2.0 =
317
+ - Added: All widgets have been added in this plugin because some things are not allowed in a theme.
318
+
319
+ = 1.1.9 =
320
+ - Added: New shortcodes: [see the documentation](http://docs.oceanwp.org/category/369-shortcodes)
321
+ - Tweak: The [ocean_logo] and [ocean_nav] shortcodes have changed to [oceanwp_logo] and [oceanwp_nav], so if you use its shortcodes on your site, you need to update them.
322
+
323
+ = 1.1.8 =
324
+ - Added: New fields to add image attributs for the background image of the page header.
325
+ - Added: Dynamic date shortcode: [see the documentation](http://docs.oceanwp.org/article/367-add-a-dynamic-date-in-the-footer-bottom)
326
+
327
+ = Added: 1.1.7 =
328
+ - Added: Ocean Sticky Footer in the extension tab.
329
+ - Tweak: Improvement of the licenses fields.
330
+
331
+ = 1.1.6 =
332
+ - Tweak: Select2 script replaced by Selective to prevent conflict.
333
+
334
+ = 1.1.5.1 =
335
+ - Fixed: Error 500 fixed.
336
+
337
+ = 1.1.5 =
338
+ - Added: Ocean Modal Window added in the extension tab.
339
+ - Fixed: Issue with select on the admin product page.
340
+
341
+ = 1.1.4.2 =
342
+ - Tweak: Color picker script moved to use it in all metaboxes.
343
+
344
+ = 1.1.4.1 =
345
+ - Tweak: Admin script loaded only when necessary.
346
+
347
+ = 1.1.4 =
348
+ - Fixed: Import issue with WordPress 4.7.1/4.7.2 bug affecting uploads.
349
+
350
+ = 1.1.3 =
351
+ - Added: New "Sidebar" section in the Theme Panel.
352
+ - Added: New "Ocean Hooks" and "Ocean Posts Slider" extensions in the extensions tab.
353
+ - Deleted: Posts Slider shorcode from this plugin, added directly into the free Ocean Posts Slider extension.
354
+
355
+ = 1.1.2 =
356
+ - Added: New settings to enabled/disabled the top bar, header, footer widgets and footer bottom per page or per post.
357
+ - Tweak: Large improvement of metabox options.
358
+
359
+ = 1.1.1 =
360
+ - Added: OceanWP Settings into the Library post type of Elementor.
361
+ - Added: Shortcodes for the custom header (available in OceanWP 1.1.1).
362
+
363
+ = 1.1.0 =
364
+ - Added: RTL support for the metaboxes.
365
+ - Added: Support OceanWP 1.1.
366
+ - Deleted: Custom CSS tab (Since version 1.0.9 the CSS is imported directly into the customizer).
367
+
368
+ = 1.0.9 =
369
+ - Tweak: Improvement of referral urls for affiliation.
370
+
371
+ = 1.0.8 =
372
+ - Added: New field in the Title tab in the metabox to add a custom color to the overlay title.
373
+ - Tweak: Improved style for the Import/Export tab.
374
+
375
+ = 1.0.7 =
376
+ - Added: New "Ocean Demo Import" extension in the extensions tab.
377
+
378
+ = 1.0.6 =
379
+ - Tweak: Improvement exporter settings.
380
+
381
+ = 1.0.5 =
382
+ - Added: New import/export tab to easily import or export your settings.
383
+
384
+ = 1.0.4 =
385
+ - Tweak: Modified capability to manage options for the Custom CSS tab.
386
+
387
+ = 1.0.3 =
388
+ - Added: New field in the OceanWP Settings meta box to add an overlay to the background image title.
389
+
390
+ = 1.0.2 =
391
+ - Added: New "Custom Sidebar" extension in the extensions tab.
392
+ - Added: New field in the Main tab in the metabox to add shorcode to the top of the page.
393
+ - Added: Posts Slider shortcode, see the documentation for more infos.
394
+
395
+ = 1.0.1 =
396
+ - Added: Add documentation link in the panel.
397
+
398
+ = 1.0.0 =
399
+ - Initial release.
includes/freemius/includes/class-freemius.php CHANGED
@@ -10287,6 +10287,10 @@
10287
 
10288
  $class_name = '';
10289
 
 
 
 
 
10290
  switch ( $option_name ) {
10291
  case 'plugins':
10292
  case 'themes':
10287
 
10288
  $class_name = '';
10289
 
10290
+ if ( fs_starts_with( $option_name, WP_FS__MODULE_TYPE_THEME . '_' ) ) {
10291
+ $option_name = str_replace( WP_FS__MODULE_TYPE_THEME . '_', '', $option_name );
10292
+ }
10293
+
10294
  switch ( $option_name ) {
10295
  case 'plugins':
10296
  case 'themes':
includes/freemius/includes/entities/class-fs-plugin-license.php CHANGED
@@ -1,301 +1,323 @@
1
  <?php
2
- /**
3
- * @package Freemius
4
- * @copyright Copyright (c) 2015, Freemius, Inc.
5
- * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
- * @since 1.0.5
7
- */
8
- if ( ! defined( 'ABSPATH' ) ) {
9
- exit;
10
- }
11
- /**
12
- * Class FS_Plugin_License
13
- */
14
- class FS_Plugin_License extends FS_Entity {
15
- #region Properties
16
  /**
17
- * @var number
 
 
 
18
  */
19
- public $plugin_id;
20
- /**
21
- * @var number
22
- */
23
- public $user_id;
24
- /**
25
- * @var number
26
- */
27
- public $plan_id;
28
- /**
29
- * @author Leo Fajardo (@leorw)
30
- * @since 2.3.0
31
- *
32
- * @var string
33
- */
34
- public $parent_plan_name;
35
- /**
36
- * @author Leo Fajardo (@leorw)
37
- * @since 2.3.0
38
- *
39
- * @var string
40
- */
41
- public $parent_plan_title;
42
- /**
43
- * @author Leo Fajardo (@leorw)
44
- * @since 2.3.0
45
- *
46
- * @var number
47
- */
48
- public $parent_license_id;
49
- /**
50
- * @author Leo Fajardo (@leorw)
51
- * @since 2.3.0.4
52
- *
53
- * @var array
54
- */
55
- public $products;
56
- /**
57
- * @var number
58
- */
59
- public $pricing_id;
60
- /**
61
- * @var int|null
62
- */
63
- public $quota;
64
- /**
65
- * @var int
66
- */
67
- public $activated;
68
- /**
69
- * @var int
70
- */
71
- public $activated_local;
72
- /**
73
- * @var string
74
- */
75
- public $expiration;
76
- /**
77
- * @var string
78
- */
79
- public $secret_key;
80
- /**
81
- * @var bool $is_free_localhost Defaults to true. If true, allow unlimited localhost installs with the same
82
- * license.
83
- */
84
- public $is_free_localhost;
85
- /**
86
- * @var bool $is_block_features Defaults to true. If false, don't block features after license expiry - only
87
- * block updates and support.
88
- */
89
- public $is_block_features;
90
- /**
91
- * @var bool
92
- */
93
- public $is_cancelled;
94
- #endregion Properties
95
- /**
96
- * @param stdClass|bool $license
97
- */
98
- function __construct( $license = false ) {
99
- parent::__construct( $license );
100
- }
101
- /**
102
- * Get entity type.
103
- *
104
- * @return string
105
- */
106
- static function get_type() {
107
- return 'license';
108
  }
 
109
  /**
110
- * Check how many site activations left.
111
- *
112
- * @author Vova Feldman (@svovaf)
113
- * @since 1.0.5
114
- *
115
- * @return int
116
  */
117
- function left() {
118
- if ( ! $this->is_features_enabled() ) {
119
- return 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  }
121
- if ( $this->is_unlimited() ) {
122
- return 999;
 
 
 
 
 
 
123
  }
124
- return ( $this->quota - $this->activated - ( $this->is_free_localhost ? 0 : $this->activated_local ) );
125
- }
126
- /**
127
- * Check if single site license.
128
- *
129
- * @author Vova Feldman (@svovaf)
130
- * @since 1.1.8.1
131
- *
132
- * @return bool
133
- */
134
- function is_single_site() {
135
- return ( is_numeric( $this->quota ) && 1 == $this->quota );
136
- }
137
- /**
138
- * @author Vova Feldman (@svovaf)
139
- * @since 1.0.5
140
- *
141
- * @return bool
142
- */
143
- function is_expired() {
144
- return ! $this->is_lifetime() && ( strtotime( $this->expiration ) < WP_FS__SCRIPT_START_TIME );
145
- }
146
- /**
147
- * Check if license is not expired.
148
- *
149
- * @author Vova Feldman (@svovaf)
150
- * @since 1.2.1
151
- *
152
- * @return bool
153
- */
154
- function is_valid() {
155
- return ! $this->is_expired();
156
- }
157
- /**
158
- * @author Vova Feldman (@svovaf)
159
- * @since 1.0.6
160
- *
161
- * @return bool
162
- */
163
- function is_lifetime() {
164
- return is_null( $this->expiration );
165
- }
166
- /**
167
- * @author Vova Feldman (@svovaf)
168
- * @since 1.2.0
169
- *
170
- * @return bool
171
- */
172
- function is_unlimited() {
173
- return is_null( $this->quota );
174
- }
175
- /**
176
- * Check if license is fully utilized.
177
- *
178
- * @author Vova Feldman (@svovaf)
179
- * @since 1.0.6
180
- *
181
- * @param bool|null $is_localhost
182
- *
183
- * @return bool
184
- */
185
- function is_utilized( $is_localhost = null ) {
186
- if ( is_null( $is_localhost ) ) {
187
- $is_localhost = WP_FS__IS_LOCALHOST_FOR_SERVER;
188
  }
189
- if ( $this->is_unlimited() ) {
190
- return false;
 
 
 
 
 
 
 
 
 
191
  }
192
- return ! ( $this->is_free_localhost && $is_localhost ) &&
193
- ( $this->quota <= $this->activated + ( $this->is_free_localhost ? 0 : $this->activated_local ) );
194
- }
195
- /**
196
- * Check if license can be activated.
197
- *
198
- * @author Vova Feldman (@svovaf)
199
- * @since 2.0.0
200
- *
201
- * @param bool|null $is_localhost
202
- *
203
- * @return bool
204
- */
205
- function can_activate( $is_localhost = null ) {
206
- return ! $this->is_utilized( $is_localhost ) && $this->is_features_enabled();
207
- }
208
- /**
209
- * Check if license can be activated on a given number of production and localhost sites.
210
- *
211
- * @author Vova Feldman (@svovaf)
212
- * @since 2.0.0
213
- *
214
- * @param int $production_count
215
- * @param int $localhost_count
216
- *
217
- * @return bool
218
- */
219
- function can_activate_bulk( $production_count, $localhost_count ) {
220
- if ( $this->is_unlimited() ) {
221
- return true;
222
  }
 
223
  /**
224
- * For simplicity, the logic will work as following: when given X sites to activate the license on, if it's
225
- * possible to activate on ALL of them, do the activation. If it's not possible to activate on ALL of them,
226
- * do NOT activate on any of them.
 
 
 
227
  */
228
- return ( $this->quota >= $this->activated + $production_count + ( $this->is_free_localhost ? 0 : $this->activated_local + $localhost_count ) );
229
- }
230
- /**
231
- * @author Vova Feldman (@svovaf)
232
- * @since 1.2.1
233
- *
234
- * @return bool
235
- */
236
- function is_active() {
237
- return ( ! $this->is_cancelled );
238
- }
239
- /**
240
- * Check if license's plan features are enabled.
241
- *
242
- * - Either if plan not expired
243
- * - If expired, based on the configuration to block features or not.
244
- *
245
- * @author Vova Feldman (@svovaf)
246
- * @since 1.0.6
247
- *
248
- * @return bool
249
- */
250
- function is_features_enabled() {
251
- return $this->is_active() && ( ! $this->is_block_features || ! $this->is_expired() );
252
- }
253
- /**
254
- * Subscription considered to be new without any payments
255
- * if the license expires in less than 24 hours
256
- * from the license creation.
257
- *
258
- * @author Vova Feldman (@svovaf)
259
- * @since 1.0.9
260
- *
261
- * @return bool
262
- */
263
- function is_first_payment_pending() {
264
- return ( WP_FS__TIME_24_HOURS_IN_SEC >= strtotime( $this->expiration ) - strtotime( $this->created ) );
265
- }
266
- /**
267
- * @return int
268
- */
269
- function total_activations() {
270
- return ( $this->activated + $this->activated_local );
271
- }
272
 
273
- /**
274
- * @author Vova Feldman (@svovaf)
275
- * @since 2.3.1
276
- *
277
- * @return string
278
- */
279
- function get_html_escaped_masked_secret_key() {
280
- return self::mask_secret_key_for_html( $this->secret_key );
281
- }
282
 
283
- /**
284
- * @author Vova Feldman (@svovaf)
285
- * @since 2.3.1
286
- *
287
- * @param string $secret_key
288
- *
289
- * @return string
290
- */
291
- static function mask_secret_key_for_html( $secret_key ) {
292
- return (
293
- // Initial 6 chars - sk_ABC
294
- htmlspecialchars( substr( $secret_key, 0, 6 ) ) .
295
- // Masking
296
- str_pad( '', ( strlen( $secret_key ) - 9 ) * 6, '&bull;' ) .
297
- // Last 3 chars.
298
- htmlspecialchars( substr( $secret_key, - 3 ) )
299
- );
300
- }
301
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2015, Freemius, Inc.
5
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
+ * @since 1.0.5
7
  */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  }
12
+
13
  /**
14
+ * Class FS_Plugin_License
 
 
 
 
 
15
  */
16
+ class FS_Plugin_License extends FS_Entity {
17
+
18
+ #region Properties
19
+
20
+ /**
21
+ * @var number
22
+ */
23
+ public $plugin_id;
24
+ /**
25
+ * @var number
26
+ */
27
+ public $user_id;
28
+ /**
29
+ * @var number
30
+ */
31
+ public $plan_id;
32
+ /**
33
+ * @author Leo Fajardo (@leorw)
34
+ * @since 2.3.0
35
+ *
36
+ * @var string
37
+ */
38
+ public $parent_plan_name;
39
+ /**
40
+ * @author Leo Fajardo (@leorw)
41
+ * @since 2.3.0
42
+ *
43
+ * @var string
44
+ */
45
+ public $parent_plan_title;
46
+ /**
47
+ * @author Leo Fajardo (@leorw)
48
+ * @since 2.3.0
49
+ *
50
+ * @var number
51
+ */
52
+ public $parent_license_id;
53
+ /**
54
+ * @var number
55
+ */
56
+ public $pricing_id;
57
+ /**
58
+ * @var int|null
59
+ */
60
+ public $quota;
61
+ /**
62
+ * @var int
63
+ */
64
+ public $activated;
65
+ /**
66
+ * @var int
67
+ */
68
+ public $activated_local;
69
+ /**
70
+ * @var string
71
+ */
72
+ public $expiration;
73
+ /**
74
+ * @var string
75
+ */
76
+ public $secret_key;
77
+ /**
78
+ * @var bool
79
+ */
80
+ public $is_whitelabeled;
81
+ /**
82
+ * @var bool $is_free_localhost Defaults to true. If true, allow unlimited localhost installs with the same
83
+ * license.
84
+ */
85
+ public $is_free_localhost;
86
+ /**
87
+ * @var bool $is_block_features Defaults to true. If false, don't block features after license expiry - only
88
+ * block updates and support.
89
+ */
90
+ public $is_block_features;
91
+ /**
92
+ * @var bool
93
+ */
94
+ public $is_cancelled;
95
+
96
+ #endregion Properties
97
+
98
+ /**
99
+ * @param stdClass|bool $license
100
+ */
101
+ function __construct( $license = false ) {
102
+ parent::__construct( $license );
103
  }
104
+
105
+ /**
106
+ * Get entity type.
107
+ *
108
+ * @return string
109
+ */
110
+ static function get_type() {
111
+ return 'license';
112
  }
113
+
114
+ /**
115
+ * Check how many site activations left.
116
+ *
117
+ * @author Vova Feldman (@svovaf)
118
+ * @since 1.0.5
119
+ *
120
+ * @return int
121
+ */
122
+ function left() {
123
+ if ( ! $this->is_features_enabled() ) {
124
+ return 0;
125
+ }
126
+
127
+ if ( $this->is_unlimited() ) {
128
+ return 999;
129
+ }
130
+
131
+ return ( $this->quota - $this->activated - ( $this->is_free_localhost ? 0 : $this->activated_local ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  }
133
+
134
+ /**
135
+ * Check if single site license.
136
+ *
137
+ * @author Vova Feldman (@svovaf)
138
+ * @since 1.1.8.1
139
+ *
140
+ * @return bool
141
+ */
142
+ function is_single_site() {
143
+ return ( is_numeric( $this->quota ) && 1 == $this->quota );
144
  }
145
+
146
+ /**
147
+ * @author Vova Feldman (@svovaf)
148
+ * @since 1.0.5
149
+ *
150
+ * @return bool
151
+ */
152
+ function is_expired() {
153
+ return ! $this->is_lifetime() && ( strtotime( $this->expiration ) < WP_FS__SCRIPT_START_TIME );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  }
155
+
156
  /**
157
+ * Check if license is not expired.
158
+ *
159
+ * @author Vova Feldman (@svovaf)
160
+ * @since 1.2.1
161
+ *
162
+ * @return bool
163
  */
164
+ function is_valid() {
165
+ return ! $this->is_expired();
166
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
167
 
168
+ /**
169
+ * @author Vova Feldman (@svovaf)
170
+ * @since 1.0.6
171
+ *
172
+ * @return bool
173
+ */
174
+ function is_lifetime() {
175
+ return is_null( $this->expiration );
176
+ }
177
 
178
+ /**
179
+ * @author Vova Feldman (@svovaf)
180
+ * @since 1.2.0
181
+ *
182
+ * @return bool
183
+ */
184
+ function is_unlimited() {
185
+ return is_null( $this->quota );
186
+ }
187
+
188
+ /**
189
+ * Check if license is fully utilized.
190
+ *
191
+ * @author Vova Feldman (@svovaf)
192
+ * @since 1.0.6
193
+ *
194
+ * @param bool|null $is_localhost
195
+ *
196
+ * @return bool
197
+ */
198
+ function is_utilized( $is_localhost = null ) {
199
+ if ( is_null( $is_localhost ) ) {
200
+ $is_localhost = WP_FS__IS_LOCALHOST_FOR_SERVER;
201
+ }
202
+
203
+ if ( $this->is_unlimited() ) {
204
+ return false;
205
+ }
206
+
207
+ return ! ( $this->is_free_localhost && $is_localhost ) &&
208
+ ( $this->quota <= $this->activated + ( $this->is_free_localhost ? 0 : $this->activated_local ) );
209
+ }
210
+
211
+ /**
212
+ * Check if license can be activated.
213
+ *
214
+ * @author Vova Feldman (@svovaf)
215
+ * @since 2.0.0
216
+ *
217
+ * @param bool|null $is_localhost
218
+ *
219
+ * @return bool
220
+ */
221
+ function can_activate( $is_localhost = null ) {
222
+ return ! $this->is_utilized( $is_localhost ) && $this->is_features_enabled();
223
+ }
224
+
225
+ /**
226
+ * Check if license can be activated on a given number of production and localhost sites.
227
+ *
228
+ * @author Vova Feldman (@svovaf)
229
+ * @since 2.0.0
230
+ *
231
+ * @param int $production_count
232
+ * @param int $localhost_count
233
+ *
234
+ * @return bool
235
+ */
236
+ function can_activate_bulk( $production_count, $localhost_count ) {
237
+ if ( $this->is_unlimited() ) {
238
+ return true;
239
+ }
240
+
241
+ /**
242
+ * For simplicity, the logic will work as following: when given X sites to activate the license on, if it's
243
+ * possible to activate on ALL of them, do the activation. If it's not possible to activate on ALL of them,
244
+ * do NOT activate on any of them.
245
+ */
246
+ return ( $this->quota >= $this->activated + $production_count + ( $this->is_free_localhost ? 0 : $this->activated_local + $localhost_count ) );
247
+ }
248
+
249
+ /**
250
+ * @author Vova Feldman (@svovaf)
251
+ * @since 1.2.1
252
+ *
253
+ * @return bool
254
+ */
255
+ function is_active() {
256
+ return ( ! $this->is_cancelled );
257
+ }
258
+
259
+ /**
260
+ * Check if license's plan features are enabled.
261
+ *
262
+ * - Either if plan not expired
263
+ * - If expired, based on the configuration to block features or not.
264
+ *
265
+ * @author Vova Feldman (@svovaf)
266
+ * @since 1.0.6
267
+ *
268
+ * @return bool
269
+ */
270
+ function is_features_enabled() {
271
+ return $this->is_active() && ( ! $this->is_block_features || ! $this->is_expired() );
272
+ }
273
+
274
+ /**
275
+ * Subscription considered to be new without any payments
276
+ * if the license expires in less than 24 hours
277
+ * from the license creation.
278
+ *
279
+ * @author Vova Feldman (@svovaf)
280
+ * @since 1.0.9
281
+ *
282
+ * @return bool
283
+ */
284
+ function is_first_payment_pending() {
285
+ return ( WP_FS__TIME_24_HOURS_IN_SEC >= strtotime( $this->expiration ) - strtotime( $this->created ) );
286
+ }
287
+
288
+ /**
289
+ * @return int
290
+ */
291
+ function total_activations() {
292
+ return ( $this->activated + $this->activated_local );
293
+ }
294
+
295
+ /**
296
+ * @author Vova Feldman (@svovaf)
297
+ * @since 2.3.1
298
+ *
299
+ * @return string
300
+ */
301
+ function get_html_escaped_masked_secret_key() {
302
+ return self::mask_secret_key_for_html( $this->secret_key );
303
+ }
304
+
305
+ /**
306
+ * @author Vova Feldman (@svovaf)
307
+ * @since 2.3.1
308
+ *
309
+ * @param string $secret_key
310
+ *
311
+ * @return string
312
+ */
313
+ static function mask_secret_key_for_html( $secret_key ) {
314
+ return (
315
+ // Initial 6 chars - sk_ABC
316
+ htmlspecialchars( substr( $secret_key, 0, 6 ) ) .
317
+ // Masking
318
+ str_pad( '', ( strlen( $secret_key ) - 9 ) * 6, '&bull;' ) .
319
+ // Last 3 chars.
320
+ htmlspecialchars( substr( $secret_key, - 3 ) )
321
+ );
322
+ }
323
+ }
includes/widgets/custom-header-nav.php CHANGED
@@ -46,6 +46,12 @@ if ( ! class_exists( 'Ocean_Extra_Custom_Header_Nav_Widget' ) ) {
46
 
47
  // Add classes
48
  $classes = array( 'custom-header-nav', 'clr' );
 
 
 
 
 
 
49
  $classes[] = $position;
50
  $classes = implode( ' ', $classes );
51
 
46
 
47
  // Add classes
48
  $classes = array( 'custom-header-nav', 'clr' );
49
+
50
+ // Add class for mobile sidebar menu style
51
+ if ( 'sidebar' == get_theme_mod( 'ocean_mobile_menu_style', 'sidebar' ) ) {
52
+ $classes[] = 'mobile-sidebar-menu-style';
53
+ }
54
+
55
  $classes[] = $position;
56
  $classes = implode( ' ', $classes );
57
 
ocean-extra.php CHANGED
@@ -3,10 +3,10 @@
3
  * Plugin Name: Ocean Extra
4
  * Plugin URI: https://oceanwp.org/extension/ocean-extra/
5
  * Description: Add extra features like widgets, metaboxes, import/export and a panel to activate the premium extensions.
6
- * Version: 1.6.0
7
  * Author: OceanWP
8
  * Author URI: https://oceanwp.org/
9
- * Requires at least: 5.0
10
  * Tested up to: 5.3.2
11
  *
12
  * Text Domain: ocean-extra
@@ -86,7 +86,7 @@ final class Ocean_Extra {
86
  $this->token = 'ocean-extra';
87
  $this->plugin_url = plugin_dir_url( __FILE__ );
88
  $this->plugin_path = plugin_dir_path( __FILE__ );
89
- $this->version = '1.6.0';
90
 
91
  define( 'OE_URL', $this->plugin_url );
92
  define( 'OE_PATH', $this->plugin_path );
3
  * Plugin Name: Ocean Extra
4
  * Plugin URI: https://oceanwp.org/extension/ocean-extra/
5
  * Description: Add extra features like widgets, metaboxes, import/export and a panel to activate the premium extensions.
6
+ * Version: 1.6.1
7
  * Author: OceanWP
8
  * Author URI: https://oceanwp.org/
9
+ * Requires at least: 5.3
10
  * Tested up to: 5.3.2
11
  *
12
  * Text Domain: ocean-extra
86
  $this->token = 'ocean-extra';
87
  $this->plugin_url = plugin_dir_url( __FILE__ );
88
  $this->plugin_path = plugin_dir_path( __FILE__ );
89
+ $this->version = '1.6.1';
90
 
91
  define( 'OE_URL', $this->plugin_url );
92
  define( 'OE_PATH', $this->plugin_path );
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
  === Ocean Extra ===
2
  Contributors: oceanwp, apprimit
3
  Tags: widgets, meta box, metaboxes, metabox, oceanwp
4
- Requires at least: 5.0
5
  Tested up to: 5.3.2
6
- Stable tag: 1.6.0
7
  Requires PHP: 7.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
1
  === Ocean Extra ===
2
  Contributors: oceanwp, apprimit
3
  Tags: widgets, meta box, metaboxes, metabox, oceanwp
4
+ Requires at least: 5.3
5
  Tested up to: 5.3.2
6
+ Stable tag: 1.6.1
7
  Requires PHP: 7.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html