Version Description
- Extensions are installed on plugin install with TGM
'is_automatic' => true
#2117 - Fixed #2134, #2104, #2106, #1144
Download this release
Release Info
Developer | Unyson |
Plugin | Unyson |
Version | 2.6.8 |
Comparing to | |
See all releases |
Code changes from version 2.6.7 to 2.6.8
- framework/core/components/backend.php +1 -1
- framework/core/components/extensions/manager/class--fw-extensions-manager.php +26 -6
- framework/helpers/class-fw-file-cache.php +6 -1
- framework/helpers/class-fw-wp-filesystem.php +18 -6
- framework/helpers/database.php +5 -2
- framework/helpers/general.php +8 -0
- framework/includes/option-types/multi-upload/class-fw-option-type-multi-upload.php +8 -9
- framework/includes/option-types/popup/class-fw-option-type-popup.php +23 -24
- framework/manifest.php +1 -1
- framework/views/backend-settings-form.php +3 -0
- readme.txt +5 -1
- unyson.php +12 -2
framework/core/components/backend.php
CHANGED
@@ -1169,7 +1169,7 @@ final class _FW_Component_Backend {
|
|
1169 |
*/
|
1170 |
{
|
1171 |
if (
|
1172 |
-
'edit-tags'
|
1173 |
&&
|
1174 |
$current_screen->taxonomy
|
1175 |
) {
|
1169 |
*/
|
1170 |
{
|
1171 |
if (
|
1172 |
+
in_array($current_screen->base, array('edit-tags', 'term'), true)
|
1173 |
&&
|
1174 |
$current_screen->taxonomy
|
1175 |
) {
|
framework/core/components/extensions/manager/class--fw-extensions-manager.php
CHANGED
@@ -55,6 +55,7 @@ final class _FW_Extensions_Manager
|
|
55 |
add_action('upgrader_process_complete', array($this, '_action_theme_available_extensions_restore'), 999, 2);
|
56 |
}
|
57 |
|
|
|
58 |
add_action('fw_after_plugin_activate', array($this, '_action_after_plugin_activate'), 100);
|
59 |
add_action('after_switch_theme', array($this, '_action_theme_switch'));
|
60 |
|
@@ -399,7 +400,7 @@ final class _FW_Extensions_Manager
|
|
399 |
/** @var WP_Filesystem_Base $wp_filesystem */
|
400 |
global $wp_filesystem;
|
401 |
|
402 |
-
if (
|
403 |
return;
|
404 |
}
|
405 |
|
@@ -448,7 +449,7 @@ final class _FW_Extensions_Manager
|
|
448 |
/** @var WP_Filesystem_Base $wp_filesystem */
|
449 |
global $wp_filesystem;
|
450 |
|
451 |
-
if (
|
452 |
return;
|
453 |
}
|
454 |
|
@@ -1124,7 +1125,7 @@ final class _FW_Extensions_Manager
|
|
1124 |
|
1125 |
global $wp_filesystem;
|
1126 |
|
1127 |
-
if (
|
1128 |
return new WP_Error(
|
1129 |
'fs_not_initialized',
|
1130 |
__('WP Filesystem is not initialized', 'fw')
|
@@ -1609,7 +1610,7 @@ final class _FW_Extensions_Manager
|
|
1609 |
/** @var WP_Filesystem_Base $wp_filesystem */
|
1610 |
global $wp_filesystem;
|
1611 |
|
1612 |
-
if (
|
1613 |
return new WP_Error(
|
1614 |
'fs_not_initialized',
|
1615 |
__('WP Filesystem is not initialized', 'fw')
|
@@ -3237,7 +3238,7 @@ final class _FW_Extensions_Manager
|
|
3237 |
/** @var WP_Filesystem_Base $wp_filesystem */
|
3238 |
global $wp_filesystem;
|
3239 |
|
3240 |
-
if (
|
3241 |
return new WP_Error(
|
3242 |
'fs_not_initialized',
|
3243 |
__('WP Filesystem is not initialized', 'fw')
|
@@ -3327,7 +3328,7 @@ final class _FW_Extensions_Manager
|
|
3327 |
/** @var WP_Filesystem_Base $wp_filesystem */
|
3328 |
global $wp_filesystem;
|
3329 |
|
3330 |
-
if (
|
3331 |
return new WP_Error(
|
3332 |
'fs_not_initialized',
|
3333 |
__('WP Filesystem is not initialized', 'fw')
|
@@ -3448,4 +3449,23 @@ final class _FW_Extensions_Manager
|
|
3448 |
fw()->extensions->manager->theme_available_extensions_restore();
|
3449 |
}
|
3450 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3451 |
}
|
55 |
add_action('upgrader_process_complete', array($this, '_action_theme_available_extensions_restore'), 999, 2);
|
56 |
}
|
57 |
|
58 |
+
add_action('fw_plugin_activate', array($this, '_action_plugin_activate_install_compatible_extensions'), 100);
|
59 |
add_action('fw_after_plugin_activate', array($this, '_action_after_plugin_activate'), 100);
|
60 |
add_action('after_switch_theme', array($this, '_action_theme_switch'));
|
61 |
|
400 |
/** @var WP_Filesystem_Base $wp_filesystem */
|
401 |
global $wp_filesystem;
|
402 |
|
403 |
+
if (!FW_WP_Filesystem::is_ready()) {
|
404 |
return;
|
405 |
}
|
406 |
|
449 |
/** @var WP_Filesystem_Base $wp_filesystem */
|
450 |
global $wp_filesystem;
|
451 |
|
452 |
+
if (!FW_WP_Filesystem::is_ready()) {
|
453 |
return;
|
454 |
}
|
455 |
|
1125 |
|
1126 |
global $wp_filesystem;
|
1127 |
|
1128 |
+
if (!FW_WP_Filesystem::is_ready()) {
|
1129 |
return new WP_Error(
|
1130 |
'fs_not_initialized',
|
1131 |
__('WP Filesystem is not initialized', 'fw')
|
1610 |
/** @var WP_Filesystem_Base $wp_filesystem */
|
1611 |
global $wp_filesystem;
|
1612 |
|
1613 |
+
if (!FW_WP_Filesystem::is_ready()) {
|
1614 |
return new WP_Error(
|
1615 |
'fs_not_initialized',
|
1616 |
__('WP Filesystem is not initialized', 'fw')
|
3238 |
/** @var WP_Filesystem_Base $wp_filesystem */
|
3239 |
global $wp_filesystem;
|
3240 |
|
3241 |
+
if (!FW_WP_Filesystem::is_ready()) {
|
3242 |
return new WP_Error(
|
3243 |
'fs_not_initialized',
|
3244 |
__('WP Filesystem is not initialized', 'fw')
|
3328 |
/** @var WP_Filesystem_Base $wp_filesystem */
|
3329 |
global $wp_filesystem;
|
3330 |
|
3331 |
+
if (!FW_WP_Filesystem::is_ready()) {
|
3332 |
return new WP_Error(
|
3333 |
'fs_not_initialized',
|
3334 |
__('WP Filesystem is not initialized', 'fw')
|
3449 |
fw()->extensions->manager->theme_available_extensions_restore();
|
3450 |
}
|
3451 |
}
|
3452 |
+
|
3453 |
+
/**
|
3454 |
+
* Install compatible extensions on plugin install -> activate
|
3455 |
+
*
|
3456 |
+
* In order for this to work, int TGM config must be set: 'is_automatic' => true
|
3457 |
+
* http://tgmpluginactivation.com/configuration/
|
3458 |
+
*
|
3459 |
+
* @internal
|
3460 |
+
*/
|
3461 |
+
public function _action_plugin_activate_install_compatible_extensions() {
|
3462 |
+
if (!FW_WP_Filesystem::is_ready()) {
|
3463 |
+
return;
|
3464 |
+
}
|
3465 |
+
|
3466 |
+
if ($compatible_extensions = $this->get_supported_extensions_for_install()) {
|
3467 |
+
$this->install_extensions($compatible_extensions);
|
3468 |
+
// the result is not used because we don't know here if we can print the errors or not
|
3469 |
+
}
|
3470 |
+
}
|
3471 |
}
|
framework/helpers/class-fw-file-cache.php
CHANGED
@@ -80,7 +80,12 @@ class FW_File_Cache {
|
|
80 |
* Fixes https://github.com/ThemeFuse/Unyson/issues/2029
|
81 |
* Disable entirely file-cache. Maybe in future somebody will find a solution.
|
82 |
*/
|
83 |
-
|
|
|
|
|
|
|
|
|
|
|
84 |
|
85 |
if ( is_null(self::$blog_id) ) {
|
86 |
self::$blog_id = get_current_blog_id();
|
80 |
* Fixes https://github.com/ThemeFuse/Unyson/issues/2029
|
81 |
* Disable entirely file-cache. Maybe in future somebody will find a solution.
|
82 |
*/
|
83 |
+
{
|
84 |
+
if (file_exists(self::get_path())) {
|
85 |
+
unlink(self::get_path());
|
86 |
+
}
|
87 |
+
return false;
|
88 |
+
}
|
89 |
|
90 |
if ( is_null(self::$blog_id) ) {
|
91 |
self::$blog_id = get_current_blog_id();
|
framework/helpers/class-fw-wp-filesystem.php
CHANGED
@@ -145,7 +145,7 @@ class FW_WP_Filesystem
|
|
145 |
$real_path = fw_fix_path($real_path);
|
146 |
|
147 |
foreach (self::get_base_dirs_map() as $base_real_path => $base_wp_filesystem_path) {
|
148 |
-
$prefix_regex = '/^'. preg_quote($base_real_path, '/') .'/';
|
149 |
|
150 |
// check if path is inside base path
|
151 |
if (!preg_match($prefix_regex, $real_path)) {
|
@@ -155,7 +155,7 @@ class FW_WP_Filesystem
|
|
155 |
if ($base_real_path === '/') {
|
156 |
$relative_path = $real_path;
|
157 |
} else {
|
158 |
-
$relative_path = preg_replace($prefix_regex, '', $real_path);
|
159 |
}
|
160 |
|
161 |
return $base_wp_filesystem_path . $relative_path;
|
@@ -182,7 +182,7 @@ class FW_WP_Filesystem
|
|
182 |
$wp_filesystem_path = fw_fix_path($wp_filesystem_path);
|
183 |
|
184 |
foreach (self::get_base_dirs_map() as $base_real_path => $base_wp_filesystem_path) {
|
185 |
-
$prefix_regex = '/^'. preg_quote($base_wp_filesystem_path, '/') .'/';
|
186 |
|
187 |
// check if path is inside base path
|
188 |
if (!preg_match($prefix_regex, $wp_filesystem_path)) {
|
@@ -192,7 +192,7 @@ class FW_WP_Filesystem
|
|
192 |
if ($base_wp_filesystem_path === '/') {
|
193 |
$relative_path = $wp_filesystem_path;
|
194 |
} else {
|
195 |
-
$relative_path = preg_replace($prefix_regex, '', $wp_filesystem_path);
|
196 |
}
|
197 |
|
198 |
return $base_real_path . $relative_path;
|
@@ -254,7 +254,7 @@ class FW_WP_Filesystem
|
|
254 |
$path = false;
|
255 |
|
256 |
foreach (self::get_base_dirs_map() as $base_real_path => $base_wp_filesystem_path) {
|
257 |
-
$prefix_regex = '/^'. preg_quote($base_wp_filesystem_path, '/') .'/';
|
258 |
|
259 |
// check if path is inside base path
|
260 |
if (!preg_match($prefix_regex, $wp_filesystem_dir_path)) {
|
@@ -280,7 +280,7 @@ class FW_WP_Filesystem
|
|
280 |
if ($path === '/') {
|
281 |
$rel_path = $wp_filesystem_dir_path;
|
282 |
} else {
|
283 |
-
$rel_path = preg_replace('/^'. preg_quote($path, '/') .'/', '', $wp_filesystem_dir_path);
|
284 |
}
|
285 |
|
286 |
// improvement: do not check directory for existence if it's known that sure it doesn't exist
|
@@ -309,4 +309,16 @@ class FW_WP_Filesystem
|
|
309 |
|
310 |
return true;
|
311 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
312 |
}
|
145 |
$real_path = fw_fix_path($real_path);
|
146 |
|
147 |
foreach (self::get_base_dirs_map() as $base_real_path => $base_wp_filesystem_path) {
|
148 |
+
$prefix_regex = '/^'. preg_quote($base_real_path, '/') .'($|\/.*)/';
|
149 |
|
150 |
// check if path is inside base path
|
151 |
if (!preg_match($prefix_regex, $real_path)) {
|
155 |
if ($base_real_path === '/') {
|
156 |
$relative_path = $real_path;
|
157 |
} else {
|
158 |
+
$relative_path = preg_replace($prefix_regex, '$1', $real_path);
|
159 |
}
|
160 |
|
161 |
return $base_wp_filesystem_path . $relative_path;
|
182 |
$wp_filesystem_path = fw_fix_path($wp_filesystem_path);
|
183 |
|
184 |
foreach (self::get_base_dirs_map() as $base_real_path => $base_wp_filesystem_path) {
|
185 |
+
$prefix_regex = '/^'. preg_quote($base_wp_filesystem_path, '/') .'($|\/.*)/';
|
186 |
|
187 |
// check if path is inside base path
|
188 |
if (!preg_match($prefix_regex, $wp_filesystem_path)) {
|
192 |
if ($base_wp_filesystem_path === '/') {
|
193 |
$relative_path = $wp_filesystem_path;
|
194 |
} else {
|
195 |
+
$relative_path = preg_replace($prefix_regex, '$1', $wp_filesystem_path);
|
196 |
}
|
197 |
|
198 |
return $base_real_path . $relative_path;
|
254 |
$path = false;
|
255 |
|
256 |
foreach (self::get_base_dirs_map() as $base_real_path => $base_wp_filesystem_path) {
|
257 |
+
$prefix_regex = '/^'. preg_quote($base_wp_filesystem_path, '/') .'($|\/)/';
|
258 |
|
259 |
// check if path is inside base path
|
260 |
if (!preg_match($prefix_regex, $wp_filesystem_dir_path)) {
|
280 |
if ($path === '/') {
|
281 |
$rel_path = $wp_filesystem_dir_path;
|
282 |
} else {
|
283 |
+
$rel_path = preg_replace('/^'. preg_quote($path, '/') .'($|\/.*)/', '$1', $wp_filesystem_dir_path);
|
284 |
}
|
285 |
|
286 |
// improvement: do not check directory for existence if it's known that sure it doesn't exist
|
309 |
|
310 |
return true;
|
311 |
}
|
312 |
+
|
313 |
+
/**
|
314 |
+
* If is initialized and has no errors
|
315 |
+
* @return bool
|
316 |
+
* @since 2.6.8
|
317 |
+
*/
|
318 |
+
public static function is_ready() {
|
319 |
+
/** @var WP_Filesystem_Base $wp_filesystem */
|
320 |
+
global $wp_filesystem;
|
321 |
+
|
322 |
+
return $wp_filesystem && is_wp_error($wp_filesystem->errors) && !$wp_filesystem->errors->get_error_code();
|
323 |
+
}
|
324 |
}
|
framework/helpers/database.php
CHANGED
@@ -589,7 +589,9 @@ class FW_Db_Options_Model_Customizer extends FW_Db_Options_Model {
|
|
589 |
}
|
590 |
|
591 |
// Fixes https://github.com/ThemeFuse/Unyson/issues/2053
|
592 |
-
add_action('customize_preview_init', array($this, '_reset_cache')
|
|
|
|
|
593 |
}
|
594 |
}
|
595 |
new FW_Db_Options_Model_Customizer();
|
@@ -638,7 +640,8 @@ new FW_Db_Options_Model_Customizer();
|
|
638 |
|
639 |
return false;
|
640 |
}
|
641 |
-
|
|
|
642 |
|
643 |
if ( $keys == null ) {
|
644 |
fw_aks( $extension_name, $value, $data );
|
589 |
}
|
590 |
|
591 |
// Fixes https://github.com/ThemeFuse/Unyson/issues/2053
|
592 |
+
add_action('customize_preview_init', array($this, '_reset_cache'),
|
593 |
+
1 // Fixes https://github.com/ThemeFuse/Unyson/issues/2104
|
594 |
+
);
|
595 |
}
|
596 |
}
|
597 |
new FW_Db_Options_Model_Customizer();
|
640 |
|
641 |
return false;
|
642 |
}
|
643 |
+
|
644 |
+
$data = get_user_meta( $user_id, 'fw_data', true );
|
645 |
|
646 |
if ( $keys == null ) {
|
647 |
fw_aks( $extension_name, $value, $data );
|
framework/helpers/general.php
CHANGED
@@ -530,6 +530,13 @@ function fw_locate_theme_path($rel_path) {
|
|
530 |
}
|
531 |
}
|
532 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
533 |
/**
|
534 |
* Safe render a view and return html
|
535 |
* In view will be accessible only passed variables
|
@@ -551,6 +558,7 @@ function fw_render_view($file_path, $view_variables = array(), $return = true) {
|
|
551 |
require $file_path;
|
552 |
}
|
553 |
}
|
|
|
554 |
|
555 |
/**
|
556 |
* Safe load variables from an file
|
530 |
}
|
531 |
}
|
532 |
|
533 |
+
/**
|
534 |
+
* There is a theme which does: if (!defined('FW')): function fw_render_view() { ... } endif;
|
535 |
+
* It works fine, except in this case
|
536 |
+
* https://github.com/ThemeFuse/Unyson/commit/07be8b1f4b50eaf0f1f7e85ea1c6912a0415d241#diff-cf866bf08b8f747e3120221a6b1b07cfR48
|
537 |
+
* it throws fatal error because this function here is defined after that
|
538 |
+
*/
|
539 |
+
if (!function_exists('fw_render_view')):
|
540 |
/**
|
541 |
* Safe render a view and return html
|
542 |
* In view will be accessible only passed variables
|
558 |
require $file_path;
|
559 |
}
|
560 |
}
|
561 |
+
endif;
|
562 |
|
563 |
/**
|
564 |
* Safe load variables from an file
|
framework/includes/option-types/multi-upload/class-fw-option-type-multi-upload.php
CHANGED
@@ -219,19 +219,18 @@ class FW_Option_Type_Multi_Upload extends FW_Option_Type
|
|
219 |
if (empty($input_value)) {
|
220 |
return $option['value'];
|
221 |
} else {
|
222 |
-
return $this->get_attachments_info($input_value);
|
223 |
}
|
224 |
}
|
225 |
|
226 |
-
private function get_attachments_info($attachment_ids)
|
227 |
{
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
) {
|
233 |
-
|
234 |
-
return $defaults['value'];
|
235 |
}
|
236 |
|
237 |
$return_arr = array();
|
219 |
if (empty($input_value)) {
|
220 |
return $option['value'];
|
221 |
} else {
|
222 |
+
return $this->get_attachments_info($input_value, $option);
|
223 |
}
|
224 |
}
|
225 |
|
226 |
+
private function get_attachments_info($attachment_ids, $option)
|
227 |
{
|
228 |
+
if (!(
|
229 |
+
is_string($attachment_ids)
|
230 |
+
&&
|
231 |
+
is_array($decoded_ids = json_decode($attachment_ids, true))
|
232 |
+
)) {
|
233 |
+
return $option['value'];
|
|
|
234 |
}
|
235 |
|
236 |
$return_arr = array();
|
framework/includes/option-types/popup/class-fw-option-type-popup.php
CHANGED
@@ -117,35 +117,34 @@ class FW_Option_Type_Popup extends FW_Option_Type {
|
|
117 |
* @internal
|
118 |
*/
|
119 |
protected function _get_value_from_input( $option, $input_value ) {
|
120 |
-
if ( empty( $
|
121 |
-
|
122 |
-
|
123 |
-
}
|
124 |
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
if (isset($option['value'][$popup_option_id])) {
|
133 |
-
$popup_option['value'] = $option['value'][$popup_option_id];
|
134 |
-
}
|
135 |
-
$popup_options[ $popup_option_id ] = $popup_option;
|
136 |
}
|
|
|
137 |
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
|
|
|
|
|
|
146 |
}
|
147 |
|
148 |
-
return $
|
149 |
}
|
150 |
|
151 |
/**
|
117 |
* @internal
|
118 |
*/
|
119 |
protected function _get_value_from_input( $option, $input_value ) {
|
120 |
+
if ( empty( $option['popup-options'] ) ) {
|
121 |
+
return array();
|
122 |
+
}
|
|
|
123 |
|
124 |
+
if (is_null($input_value)) {
|
125 |
+
$input_value = $option['value'];
|
126 |
+
} else {
|
127 |
+
if (is_array($input_value)) {
|
128 |
+
// Don't decode if we have already an array
|
129 |
+
} else {
|
130 |
+
$input_value = json_decode($input_value, true);
|
|
|
|
|
|
|
|
|
131 |
}
|
132 |
+
}
|
133 |
|
134 |
+
/**
|
135 |
+
* Move each option value in option array default values
|
136 |
+
* because popup <input> contains options db values got from fw.OptionsModal
|
137 |
+
* which can't be used as $input_value in second parameter of fw_get_options_values_from_input()
|
138 |
+
*/
|
139 |
+
$popup_options = array();
|
140 |
+
foreach (fw_extract_only_options($option['popup-options']) as $popup_option_id => $popup_option) {
|
141 |
+
if (isset($input_value[$popup_option_id])) {
|
142 |
+
$popup_option['value'] = $input_value[$popup_option_id];
|
143 |
+
}
|
144 |
+
$popup_options[ $popup_option_id ] = $popup_option;
|
145 |
}
|
146 |
|
147 |
+
return fw_get_options_values_from_input($popup_options, array());
|
148 |
}
|
149 |
|
150 |
/**
|
framework/manifest.php
CHANGED
@@ -4,4 +4,4 @@ $manifest = array();
|
|
4 |
|
5 |
$manifest['name'] = __('Unyson', 'fw');
|
6 |
|
7 |
-
$manifest['version'] = '2.6.
|
4 |
|
5 |
$manifest['name'] = __('Unyson', 'fw');
|
6 |
|
7 |
+
$manifest['version'] = '2.6.8';
|
framework/views/backend-settings-form.php
CHANGED
@@ -17,6 +17,8 @@ function _action_fw_theme_settings_footer_scripts() {
|
|
17 |
(function ($) {
|
18 |
var fwLoadingId = 'fw-theme-settings';
|
19 |
|
|
|
|
|
20 |
{
|
21 |
fw.loading.show(fwLoadingId);
|
22 |
|
@@ -24,6 +26,7 @@ function _action_fw_theme_settings_footer_scripts() {
|
|
24 |
fw.loading.hide(fwLoadingId);
|
25 |
});
|
26 |
}
|
|
|
27 |
|
28 |
$(function ($) {
|
29 |
$(document.body).on({
|
17 |
(function ($) {
|
18 |
var fwLoadingId = 'fw-theme-settings';
|
19 |
|
20 |
+
<?php if (wp_script_is('fw-option-types')): ?>
|
21 |
+
// there are options on the page. show loading now and hide it after the options were initialized
|
22 |
{
|
23 |
fw.loading.show(fwLoadingId);
|
24 |
|
26 |
fw.loading.hide(fwLoadingId);
|
27 |
});
|
28 |
}
|
29 |
+
<?php endif; ?>
|
30 |
|
31 |
$(function ($) {
|
32 |
$(document.body).on({
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: unyson
|
|
3 |
Tags: page builder, grid, layout, responsive, back up, backup, db backup, dump, migrate, schedule, search engine optimization, seo, media, slideshow, shortcode, slide, slideshare, slideshow, google sitemaps, sitemaps, analytics, google analytics, calendar, event, events, google maps, learning, lessons, sidebars, breadcrumbs, review, portfolio, framework
|
4 |
Requires at least: 4.4
|
5 |
Tested up to: 4.6
|
6 |
-
Stable tag: 2.6.
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
@@ -83,6 +83,10 @@ Yes; Unyson will work with any theme.
|
|
83 |
|
84 |
== Changelog ==
|
85 |
|
|
|
|
|
|
|
|
|
86 |
= 2.6.7 =
|
87 |
* Fixed [#2053](https://github.com/ThemeFuse/Unyson/issues/2053), [#2024](https://github.com/ThemeFuse/Unyson/issues/2024)
|
88 |
|
3 |
Tags: page builder, grid, layout, responsive, back up, backup, db backup, dump, migrate, schedule, search engine optimization, seo, media, slideshow, shortcode, slide, slideshare, slideshow, google sitemaps, sitemaps, analytics, google analytics, calendar, event, events, google maps, learning, lessons, sidebars, breadcrumbs, review, portfolio, framework
|
4 |
Requires at least: 4.4
|
5 |
Tested up to: 4.6
|
6 |
+
Stable tag: 2.6.8
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
83 |
|
84 |
== Changelog ==
|
85 |
|
86 |
+
= 2.6.8 =
|
87 |
+
* Extensions are installed on plugin install with TGM `'is_automatic' => true` [#2117](https://github.com/ThemeFuse/Unyson/issues/2117)
|
88 |
+
* Fixed [#2134](https://github.com/ThemeFuse/Unyson/pull/2134), [#2104](https://github.com/ThemeFuse/Unyson/issues/2104), [#2106](https://github.com/ThemeFuse/Unyson/issues/2106), [#1144](https://github.com/ThemeFuse/Unyson/issues/1144#issuecomment-250257511)
|
89 |
+
|
90 |
= 2.6.7 =
|
91 |
* Fixed [#2053](https://github.com/ThemeFuse/Unyson/issues/2053), [#2024](https://github.com/ThemeFuse/Unyson/issues/2024)
|
92 |
|
unyson.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: Unyson
|
4 |
* Plugin URI: http://unyson.io/
|
5 |
* Description: A free drag & drop framework that comes with a bunch of built in extensions that will help you develop premium themes fast & easy.
|
6 |
-
* Version: 2.6.
|
7 |
* Author: ThemeFuse
|
8 |
* Author URI: http://themefuse.com
|
9 |
* License: GPL2+
|
@@ -16,7 +16,6 @@ if (defined('FW')) {
|
|
16 |
* The plugin was already loaded (maybe as another plugin with different directory name)
|
17 |
*/
|
18 |
} else {
|
19 |
-
|
20 |
{
|
21 |
/** @internal */
|
22 |
function _filter_fw_framework_plugin_directory_uri() {
|
@@ -39,6 +38,17 @@ if (defined('FW')) {
|
|
39 |
/** @internal */
|
40 |
function _action_fw_plugin_activate() {
|
41 |
update_option('_fw_plugin_activated', true, false); // add special option (is used in another action)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
}
|
43 |
register_activation_hook( __FILE__, '_action_fw_plugin_activate' );
|
44 |
|
3 |
* Plugin Name: Unyson
|
4 |
* Plugin URI: http://unyson.io/
|
5 |
* Description: A free drag & drop framework that comes with a bunch of built in extensions that will help you develop premium themes fast & easy.
|
6 |
+
* Version: 2.6.8
|
7 |
* Author: ThemeFuse
|
8 |
* Author URI: http://themefuse.com
|
9 |
* License: GPL2+
|
16 |
* The plugin was already loaded (maybe as another plugin with different directory name)
|
17 |
*/
|
18 |
} else {
|
|
|
19 |
{
|
20 |
/** @internal */
|
21 |
function _filter_fw_framework_plugin_directory_uri() {
|
38 |
/** @internal */
|
39 |
function _action_fw_plugin_activate() {
|
40 |
update_option('_fw_plugin_activated', true, false); // add special option (is used in another action)
|
41 |
+
|
42 |
+
if (
|
43 |
+
did_action('after_setup_theme') // @see framework/bootstrap.php
|
44 |
+
&&
|
45 |
+
!did_action('fw_init') // must not be loaded
|
46 |
+
) {
|
47 |
+
_action_init_framework(); // load (prematurely) the plugin
|
48 |
+
|
49 |
+
/** @since 2.6.8 */
|
50 |
+
do_action('fw_plugin_activate');
|
51 |
+
}
|
52 |
}
|
53 |
register_activation_hook( __FILE__, '_action_fw_plugin_activate' );
|
54 |
|