OwlCyberSecurity - MANAGER
Edit File: helper-compat-update.php
<?php if ( ! defined( 'ABSPATH' ) ) { exit; } // Exit if accessed directly //update_option( "Enfold_version", "4.5.7" ); // for testing //activate the update script. temp: let it always run, also in frontend. change hook to admin_init after a few versions add_action( 'wp_loaded', array( new avia_update_helper(), 'update_version' ) ); /*all the functions that keep compatibility between theme versions: */ /* * * update for version 2.6: * we need to map the single string that defines which header we are using to the multiple * new options and save them, so the user does not need to manually update the header * * also the post specific layout option that shows/hides the title bar is saved with a new name and value set so it can easily overwrite the global option */ add_action('ava_trigger_updates', 'avia_map_header_setting',10,2); function avia_map_header_setting($prev_version, $new_version) { //if the previous theme version is equal or bigger to 2.6 we don't need to update if(version_compare($prev_version, 2.6, ">=")) return; //set global options global $avia; $theme_options = $avia->options['avia']; //if one of those settings is not available the user has never saved the theme options. No need to change anything if(empty($theme_options) || !isset($theme_options['header_setting'])) return; //set defaults $theme_options['header_layout'] = "logo_left menu_right"; $theme_options['header_size'] = "slim"; $theme_options['header_sticky'] = "header_sticky"; $theme_options['header_shrinking'] = "header_shrinking"; $theme_options['header_social'] = ""; $theme_options['header_secondary_menu'] = ""; $theme_options['header_phone_active'] = ""; if(!empty($theme_options['phone'])) $theme_options['header_phone_active'] = "phone_active_right extra_header_active"; //overwrite defaults based on the selection switch($theme_options['header_setting']) { case 'nonfixed_header': $theme_options['header_sticky'] = ""; $theme_options['header_shrinking'] = ""; $theme_options['header_social'] = ""; break; case 'fixed_header social_header': $theme_options['header_size'] = "large"; $theme_options['header_social'] = "icon_active_left extra_header_active"; $theme_options['header_secondary_menu'] = "secondary_right extra_header_active"; break; case 'nonfixed_header social_header': $theme_options['header_size'] = "large"; $theme_options['header_sticky'] = ""; $theme_options['header_shrinking'] = ""; $theme_options['header_social'] = "icon_active_left extra_header_active"; $theme_options['header_secondary_menu'] = "secondary_right extra_header_active"; break; case 'nonfixed_header social_header bottom_nav_header': $theme_options['header_layout'] = "logo_left bottom_nav_header"; $theme_options['header_sticky'] = ""; $theme_options['header_shrinking'] = ""; $theme_options['header_social'] = "icon_active_main"; $theme_options['header_secondary_menu'] = "secondary_right extra_header_active"; break; } //replace existing options with the new options $avia->options['avia'] = $theme_options; update_option($avia->option_prefix, $avia->options); //update post specific options $getPosts = new WP_Query( array( 'post_type' => array( 'post', 'page', 'portfolio', 'product' ), 'post_status' => 'publish', 'posts_per_page'=>-1, 'meta_query' => array( array( 'key' => 'header' ) ) )); if(!empty($getPosts->posts)) { foreach($getPosts->posts as $post) { $header_setting = get_post_meta( $post->ID, 'header', true ); switch($header_setting) { case "yes": update_post_meta($post->ID, 'header_title_bar', ''); ; break; case "no": update_post_meta($post->ID, 'header_title_bar', 'hidden_title_bar'); ; break; } } } } /* * * update for version 3.0: updates responsive option and splits it into multiple fields for more flexibility * */ add_action('ava_trigger_updates', 'avia_update_grid_system',11,2); function avia_update_grid_system($prev_version, $new_version) { //if the previous theme version is equal or bigger to 3.0 we don't need to update if(version_compare($prev_version, 3.0, ">=")) return; //set global options global $avia; $theme_options = $avia->options['avia']; //if one of those settings is not available the user has never saved the theme options. No need to change anything if(empty($theme_options) ) return; if(empty($theme_options['responsive_layout'])) $theme_options['responsive_layout'] = "responsive responsive_large"; $responsive = "enabled"; $size = "1130px"; switch($theme_options['responsive_layout']) { case "responsive" : $responsive = "enabled"; break; case "responsive responsive_large" : $responsive = "enabled"; $size = "1310px"; break; case "static_layout" : $responsive = "disabled"; break; } $theme_options['responsive_active'] = $responsive; $theme_options['responsive_size'] = $size; //replace existing options with the new options $avia->options['avia'] = $theme_options; update_option($avia->option_prefix, $avia->options); } /* * * update for version 3.1: updates the main menu seperator setting in case a user had a bottom nav main menu * also adds the values for meta and heading to the theme options array so they can be set manually * */ add_action('ava_trigger_updates', 'avia_update_seperator_main',12,2); function avia_update_seperator_main($prev_version, $new_version) { //if the previous theme version is equal or bigger to 3.1 we don't need to update if(version_compare($prev_version, 3.1, ">=")) return; //set global options global $avia, $avia_config; $theme_options = $avia->options['avia']; //if one of those settings is not available the user has never saved the theme options. No need to change anything if(empty( $theme_options )) return; if(strpos($theme_options['header_layout'],'bottom_nav_header') !== false) { $theme_options['header_menu_border'] = "seperator_big_border"; } //removes the old calculated meta and heading colors and changes it to a custom color that can be set by the user $colorsets = $avia_config['color_sets']; if(!empty($colorsets)) { foreach($colorsets as $set_key => $set_value) { if(isset($avia_config['backend_colors']['color_set'][$set_key])) { if(isset($avia_config['backend_colors']['color_set'][$set_key]['meta'])) { $theme_options["colorset-$set_key-meta"] = $avia_config['backend_colors']['color_set'][$set_key]['meta']; } if(isset($avia_config['backend_colors']['color_set'][$set_key]['heading'])) { $new_heading = $avia_config['backend_colors']['color_set'][$set_key]['heading']; if('footer_color' == $set_key) { $new_heading = $avia_config['backend_colors']['color_set'][$set_key]['meta']; } $theme_options["colorset-$set_key-heading"] = $new_heading; } } } } //replace existing options with the new options $avia->options['avia'] = $theme_options; update_option($avia->option_prefix, $avia->options); } /* * * update for version 3.1.4: update the widget locations to avoid error notice in 4.2 and to prevent the sorting bugs * */ add_action('ava_trigger_updates', 'avia_update_widget',13,2); function avia_update_widget($prev_version, $new_version) { //if the previous theme version is equal or bigger to 3.1 we don't need to update if(version_compare($prev_version, '3.1.4', ">=")) return; $map = array('av_everywhere', 'av_blog', 'av_pages'); if(class_exists( 'woocommerce' )) { $map[] = 'av_shop_overview'; $map[] = 'av_shop_single'; } for ($i = 1; $i <= avia_get_option('footer_columns','5'); $i++) { $map[] = 'av_footer_'.$i; } if(class_exists( 'bbPress' )) { $map[] = 'av_forum'; } $dynamic = get_option('avia_sidebars'); if(is_array($dynamic) && !empty($dynamic)) { foreach($dynamic as $key => $value) { $map[] = avia_backend_safe_string($value,'-'); } } $current_sidebars = get_option('sidebars_widgets'); if(!empty($current_sidebars) && isset($current_sidebars['sidebar-1'])) { $new_sidebars = array('wp_inactive_widgets' => $current_sidebars['wp_inactive_widgets']); foreach($map as $key => $sidebar) { if( isset( $current_sidebars['sidebar-'. ($key + 1)] ) ) { $new_sidebars[ $sidebar ] = $current_sidebars['sidebar-'. ($key + 1)]; } } update_option('sidebars_widgets', $new_sidebars); } } /* * * update for version 4.0: updates the old layerslider datastructure to the new one so we can use the latest version of the slider * */ add_action('ava_trigger_updates', 'avia_update_layerslider_data_structure',14,2); function avia_update_layerslider_data_structure($prev_version, $new_version) { //if the previous theme version is equal or bigger to 3.0 we don't need to update if(version_compare($prev_version, 4.0, ">=")) return; // Get WPDB Object global $wpdb; // Table name $table_name = $wpdb->prefix . "layerslider"; // Get sliders $sliders = $wpdb->get_results( "SELECT * FROM $table_name ORDER BY date_c ASC LIMIT 300" ); if(empty($sliders)) return; $easy_mapping = array( "easingin", "easingout", "delayin", "delayout", "durationin", "durationout", "showuntil", "rotateout", "rotatein", ); foreach($sliders as $key => $item) { // we presume that no update is necessary. only after we check each slide data and the subslides we know if the transition property is available. // if it is not we need to update $update_necessary = false; $id = $item->id; $layers = false; $test_update_all = false; // testing - update everything $uploaded_imgs = array(); if(isset($item->data)) { $data = json_decode($item->data); if(is_object($data) && !empty($data->layers)) $layers = $data->layers; } if($layers) { foreach($layers as $layer) { //update the subslides if(!empty($layer->sublayers)) { foreach ($layer->sublayers as $sublayer ) { if(empty($sublayer->transition) || $test_update_all ) { $update_necessary = true; $sublayer->transition = array(); //first map the easy conditions to the new slider. those are 1:1 translateable because the got the same key foreach($easy_mapping as $key) { if(!empty($sublayer->$key)){ $sublayer->transition[$key] = $sublayer->$key; } } //now map the complicated stuff //slideIndirection if(!empty($sublayer->slidedirection)) { if(in_array($sublayer->slidedirection, array('left','right','auto'))) { $sublayer->transition['offsetxin'] = $sublayer->slidedirection; $sublayer->transition['offsetyin'] = "0"; } else { $sublayer->transition['offsetyin'] = $sublayer->slidedirection; $sublayer->transition['offsetxin'] = "0"; } } //slideOutdirection if(!empty($sublayer->slideoutdirection)) { if(in_array($sublayer->slideoutdirection, array('left','right','auto'))) { $sublayer->transition['offsetxout'] = $sublayer->slideoutdirection; $sublayer->transition['offsetyout'] = "0"; } else { $sublayer->transition['offsetyout'] = $sublayer->slideoutdirection; $sublayer->transition['offsetxout'] = "0"; } } $sublayer->transition = json_encode($sublayer->transition); } //update image links for old demo sliders in case they are still used by some users //eg old: http://wpoffice/layerslider-test-2/wp-content/themes/enfold/config-layerslider/LayerSlider/avia-samples/slide1_Layer_2.png //to new: http://www.kriesi.at/themes/wp-content/uploads/avia-sample-layerslides/slide1_Layer_2.png if(!empty($sublayer->image) && strpos($sublayer->image, "/config-layerslider/LayerSlider/") !== false) { update_option('enfold_layerslider_compat_update', 1); /* set_time_limit ( 0 ); $image_name = basename($sublayer->image); if(isset($uploaded_imgs[$image_name])) { $sublayer->image = $new_url; $update_necessary = true; } else { $full_url = "http://www.kriesi.at/themes/wp-content/uploads/avia-sample-layerslides/" . $image_name; $new_url = media_sideload_image( $full_url , false, null, 'src'); if(!is_object($new_url) && !empty($new_url)) { $uploaded_imgs[$image_name] = $new_url; $sublayer->image = $new_url; $update_necessary = true; } } */ } } } //update images for the main slides if(isset($layer->properties)) { if(isset($layer->properties->background) && strpos($layer->properties->background, "/config-layerslider/LayerSlider/") !== false) { update_option('enfold_layerslider_compat_update', 1); /* set_time_limit ( 0 ); $image_name = basename($layer->properties->background); if(isset($uploaded_imgs[$image_name])) { $sublayer->image = $new_url; $update_necessary = true; } else { $full_url = "http://www.kriesi.at/themes/wp-content/uploads/avia-sample-layerslides/" . $image_name; $new_url = media_sideload_image( $full_url , false, null, 'src'); if(!is_object($new_url) && !empty($new_url)) { $uploaded_imgs[$image_name] = $new_url; $layer->properties->background = $new_url; $update_necessary = true; } } */ } } } } if($update_necessary) { $wpdb->update($table_name, array( 'data' => json_encode($data), ), array('id' => $id), array('%s') ); } } } /* * * update for version 4.1: update the main menu icon and move the scale and color from advanced editor to a normal option * */ add_action('ava_trigger_updates', 'avia_update_menu_icon_advanced',15,2); function avia_update_menu_icon_advanced($prev_version, $new_version) { //if the previous theme version is equal or bigger to 4.1 we don't need to update if(version_compare($prev_version, '4.1', ">=")) return; //fetch advanced data global $avia; $theme_options = $avia->options['avia']; $advanced = avia_get_option('advanced_styling'); if(isset($theme_options['menu_display']) && $theme_options['menu_display'] == 'burger_menu') { $theme_options['overlay_style'] = 'av-overlay-full'; $theme_options['submenu_clone'] = 'av-submenu-noclone'; $theme_options['submenu_visibility'] = 'av-submenu-hidden av-submenu-display-hover'; } else { $theme_options['overlay_style'] = 'av-overlay-side av-overlay-side-classic'; if(isset($theme_options['header_mobile_behavior']) && $theme_options['header_mobile_behavior'] != "") { $theme_options['submenu_visibility'] = 'av-submenu-hidden av-submenu-display-click'; } else { $theme_options['submenu_visibility'] = ''; } $theme_options['submenu_clone'] = 'av-submenu-noclone'; } if(!empty($advanced)) { foreach($advanced as $rule) { if(isset($rule) && $rule['id'] == 'main_menu_icon_style') { if(!empty($rule['color'])) $theme_options['burger_color'] = $rule['color']; if(!empty($rule['size'])) $theme_options['burger_size'] = 'av-small-burger-icon'; break; } } } //replace existing options with the new options $avia->options['avia'] = $theme_options; update_option($avia->option_prefix, $avia->options); } /* * * update for version 4.3: set caching and file merging to be deactivated for installations that get updated. new installations will have it enabled by default * will reduce errors with legacy installs */ add_action('ava_trigger_updates', 'avia_update_performance',16,2); function avia_update_performance($prev_version, $new_version) { //if the previous theme version is equal or bigger to 4.3 we don't need to update if(version_compare($prev_version, '4.3', ">=")) return; //set global options global $avia; $theme_options = $avia->options['avia']; if(!empty($theme_options)) { if(!isset($theme_options['merge_css'])) $theme_options['merge_css'] = "none"; if(!isset($theme_options['merge_js'])) $theme_options['merge_js'] = "none"; if(!isset($theme_options['disable_alb_elements'])) $theme_options['disable_alb_elements'] = "load_all"; //replace existing options with the new options $avia->options['avia'] = $theme_options; update_option($avia->option_prefix, $avia->options); //set admin notice update_option('avia_admin_notice', 'performance_update'); } Avia_Builder()->element_manager()->handler_after_import_demo(); } /* * * update for version 4.4: we change the cookie consent buttons to a group element and users can add unlimited buttons. need to port data structure of old buttons */ add_action('ava_trigger_updates', 'avia_update_cookie_consent_data_structure',17,2); function avia_update_cookie_consent_data_structure($prev_version, $new_version) { //if the previous theme version is equal or bigger to 4.4 we don't need to update if(version_compare($prev_version, '4.4', ">=")) return; //set global options global $avia; $theme_options = $avia->options['avia']; if(!empty($theme_options)) { $theme_options['msg_bar_buttons'] = array(); //cookie linktext if( isset($theme_options['cookie_infolink']) && $theme_options['cookie_infolink'] == 'cookie_infolink') { $theme_options['msg_bar_buttons'][] = array( 'msg_bar_button_label' => $theme_options['cookie_linktext'], 'msg_bar_button_action' => 'link', 'msg_bar_button_link' => $theme_options['cookie_linksource'] ); } if(isset($theme_options['cookie_buttontext'])) { //dismiss button $theme_options['msg_bar_buttons'][] = array( 'msg_bar_button_label' => $theme_options['cookie_buttontext'], 'msg_bar_button_action' => '', 'msg_bar_button_link' => '' ); } //replace existing options with the new options $avia->options['avia'] = $theme_options; update_option($avia->option_prefix, $avia->options); //check if we can set an admin notice. version 4.3 is more important so only set if its empty ;) //set admin notice if(!get_option('avia_admin_notice')) { update_option('avia_admin_notice', 'gdpr_update'); } } } /* * * update for version 4.4.1: remove the mirzepapa username and api key that somehot ended up in a demo import file from all installations */ add_action('ava_trigger_updates', 'avia_remove_wrong_update_credentials',18,2); function avia_remove_wrong_update_credentials($prev_version, $new_version) { //if the previous theme version is equal or bigger to 4.4.1 we don't need to update if(version_compare($prev_version, '4.4.1', ">=")) return; if(avia_get_option('updates_username') == "mirzepapa") { avia_delete_option('updates_api_key'); avia_delete_option('updates_username'); } } add_action( 'ava_trigger_updates', 'avia_remove_google_plus', 19, 2 ); function avia_remove_google_plus( $prev_version, $new_version ) { //if the previous theme version is equal or bigger to 4.5.7.2 we don't need to update if( version_compare( $prev_version, '4.5.7.2', ">=") ) { return; } //set global options global $avia; $theme_options = $avia->options['avia']; $social_icons = isset( $theme_options['social_icons'] ) ? $theme_options['social_icons'] : array(); $new_icons = array(); foreach( $social_icons as $key => $icon ) { if( isset( $icon['social_icon'] ) && ( 'gplus' == $icon['social_icon'] ) ) { continue; } $new_icons[] = $icon; } $theme_options['social_icons'] = $new_icons; if( '' == $theme_options['developer_options'] ) { $theme_options['developer_options'] = 'hide'; } //replace existing options with the new options $avia->options['avia'] = $theme_options; update_option( $avia->option_prefix, $avia->options ); } add_action( 'ava_trigger_updates', 'avia_add_gdpr2_notice', 20, 2 ); function avia_add_gdpr2_notice( $prev_version, $new_version ) { //if the previous theme version is equal or bigger to 4.6.2 we don't need to update if( version_compare( $prev_version, '4.6.2', ">=") ) { return; } update_option( 'avia_admin_notice', 'gdpr_update_2' ); }