File: /var/www/html/triad-infosec/wp-content/themes/Avada/includes/importer/avada-import-functions.php
<?php
/**
* A collection of functions used by the importer.
*
* @author ThemeFusion
* @copyright (c) Copyright by ThemeFusion
* @link https://avada.com
* @package Avada
* @subpackage Importer
* @since 5.2
*/
/**
* Don't resize images.
* Returns an empty array.
*
* @since 5.2
* @param array $sizes We don't really care in this context...
* @return array
*/
function avada_filter_image_sizes( $sizes ) {
return array();
}
/**
* Parsing Widgets Function
*
* @since 5.2
* @see http://wordpress.org/plugins/widget-settings-importexport/
* @param string $widget_data The widget-data, JSON-formatted.
*/
function fusion_import_widget_data( $widget_data ) {
$json_data = json_decode( $widget_data, true );
$sidebar_data = $json_data[0];
$widget_data = $json_data[1];
foreach ( $widget_data as $widget_data_title => $widget_data_value ) {
$widgets[ $widget_data_title ] = array();
foreach ( $widget_data_value as $widget_data_key => $widget_data_array ) {
if ( is_int( $widget_data_key ) ) {
$widgets[ $widget_data_title ][ $widget_data_key ] = 'on';
}
}
}
unset( $widgets[''] ); // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedUnsetVariable
foreach ( $sidebar_data as $title => $sidebar ) {
$count = count( $sidebar );
for ( $i = 0; $i < $count; $i++ ) {
$widget = array();
$widget['type'] = trim( substr( $sidebar[ $i ], 0, strrpos( $sidebar[ $i ], '-' ) ) );
$widget['type-index'] = trim( substr( $sidebar[ $i ], strrpos( $sidebar[ $i ], '-' ) + 1 ) );
if ( ! isset( $widgets[ $widget['type'] ][ $widget['type-index'] ] ) ) {
unset( $sidebar_data[ $title ][ $i ] );
}
}
$sidebar_data[ $title ] = array_values( $sidebar_data[ $title ] );
}
foreach ( $widgets as $widget_title => $widget_value ) {
foreach ( $widget_value as $widget_key => $widget_value ) {
$widgets[ $widget_title ][ $widget_key ] = $widget_data[ $widget_title ][ $widget_key ];
}
}
$sidebar_data = array( array_filter( $sidebar_data ), $widgets );
fusion_parse_import_data( $sidebar_data );
}
/**
* Import data.
*
* @since 5.2
* @param array $import_array The array of data to be imported.
*/
function fusion_parse_import_data( $import_array ) {
global $wp_registered_sidebars;
$sidebars_data = $import_array[0];
$widget_data = $import_array[1];
$current_sidebars = (array) get_option( 'sidebars_widgets' );
$new_widgets = array();
foreach ( $sidebars_data as $import_sidebar => $import_widgets ) {
foreach ( $import_widgets as $import_widget ) {
// If the sidebar exists.
if ( isset( $wp_registered_sidebars[ $import_sidebar ] ) ) {
$title = trim( substr( $import_widget, 0, strrpos( $import_widget, '-' ) ) );
$index = trim( substr( $import_widget, strrpos( $import_widget, '-' ) + 1 ) );
$current_widget_data = get_option( 'widget_' . $title );
$new_widget_name = fusion_get_new_widget_name( $title, $index );
$new_index = trim( substr( $new_widget_name, strrpos( $new_widget_name, '-' ) + 1 ) );
if ( ! empty( $new_widgets[ $title ] ) && is_array( $new_widgets[ $title ] ) ) {
while ( array_key_exists( $new_index, $new_widgets[ $title ] ) ) {
$new_index++;
}
}
$current_sidebars[ $import_sidebar ][] = $title . '-' . $new_index;
if ( array_key_exists( $title, $new_widgets ) ) {
if ( 'nav_menu' === $title & ! is_numeric( $index ) ) {
$menu = wp_get_nav_menu_object( $index );
$menu_id = $menu->term_id;
$new_widgets[ $title ][ $new_index ] = $menu_id;
} else {
$new_widgets[ $title ][ $new_index ] = $widget_data[ $title ][ $index ];
}
$multiwidget = $new_widgets[ $title ]['_multiwidget'];
unset( $new_widgets[ $title ]['_multiwidget'] );
$new_widgets[ $title ]['_multiwidget'] = $multiwidget;
} else {
if ( 'nav_menu' === $title & ! is_numeric( $index ) ) {
$menu = wp_get_nav_menu_object( $index );
$menu_id = $menu->term_id;
$current_widget_data[ $new_index ] = $menu_id;
} else {
$current_widget_data[ $new_index ] = $widget_data[ $title ][ $index ];
}
$current_multiwidget = isset( $current_widget_data['_multiwidget'] ) ? $current_widget_data['_multiwidget'] : false;
$new_multiwidget = isset( $widget_data[ $title ]['_multiwidget'] ) ? $widget_data[ $title ]['_multiwidget'] : false;
$multiwidget = ( $current_multiwidget != $new_multiwidget ) ? $current_multiwidget : 1; // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
unset( $current_widget_data['_multiwidget'] );
$current_widget_data['_multiwidget'] = $multiwidget;
$new_widgets[ $title ] = $current_widget_data;
}
}
}
}
if ( isset( $new_widgets ) && isset( $current_sidebars ) ) {
update_option( 'sidebars_widgets', $current_sidebars );
foreach ( $new_widgets as $title => $content ) {
update_option( 'widget_' . $title, $content );
}
return true;
}
return false;
}
/**
* Get the new widget name.
*
* @since 5.2
* @param string $widget_name The widget-name.
* @param int $widget_index The index of the widget.
* @return array
*/
function fusion_get_new_widget_name( $widget_name, $widget_index ) {
$current_sidebars = (array) get_option( 'sidebars_widgets' );
$all_widget_array = array();
foreach ( $current_sidebars as $sidebar => $widgets ) {
if ( ! empty( $widgets ) && is_array( $widgets ) && 'wp_inactive_widgets' !== $sidebar ) {
foreach ( $widgets as $widget ) {
$all_widget_array[] = $widget;
}
}
}
while ( in_array( $widget_name . '-' . $widget_index, $all_widget_array, true ) ) {
$widget_index++;
}
$new_widget_name = $widget_name . '-' . $widget_index;
return $new_widget_name;
}
/**
* Rename sidebar.
*
* @since 5.2
* @param string $name The name.
* @return string
*/
function avada_name_to_class( $name ) {
$class = str_replace( array( ' ', ',', '.', '"', "'", '/', '\\', '+', '=', ')', '(', '*', '&', '^', '%', '$', '#', '@', '!', '~', '`', '<', '>', '?', '[', ']', '{', '}', '|', ':' ), '', $name );
return $class;
}
/**
* Replaces URLs.
*
* @since 5.2
* @param array $matches The matches.
* @return string
*/
function fusion_fs_importer_replace_url( $matches ) {
// Get the uploads folder.
$wp_upload_dir = wp_upload_dir();
if ( is_array( $matches ) ) {
foreach ( $matches as $key => $match ) {
if ( false !== strpos( $match, 'wp-content/uploads/sites/' ) ) {
$meta_arr = maybe_unserialize( $match );
if ( false !== $meta_arr && is_array( $meta_arr ) ) {
foreach ( $meta_arr as $k => $v ) {
if ( is_string( $v ) && false !== strpos( $v, 'wp-content/uploads/sites/' ) ) {
$parts = explode( 'wp-content/uploads/sites/', $v );
if ( isset( $parts[1] ) ) {
$sub_parts = explode( '/', $parts[1] );
unset( $sub_parts[0] );
$parts[1] = implode( '/', $sub_parts );
// append the url to the uploads url.
$parts[0] = $wp_upload_dir['baseurl'];
$meta_arr[ $k ] = implode( '/', $parts );
}
}
}
return serialize( $meta_arr ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize
} else {
$parts = explode( 'wp-content/uploads/sites/', $match );
if ( isset( $parts[1] ) ) {
$sub_parts = explode( '/', $parts[1] );
unset( $sub_parts[0] );
$parts[1] = implode( '/', $sub_parts );
// append the url to the uploads url.
$parts[0] = $wp_upload_dir['baseurl'];
return implode( '/', $parts );
}
}
}
}
}
return $matches[0];
}
/* Omit closing PHP tag to avoid "Headers already sent" issues. */