HEX
Server: Apache
System: Linux webd006.cluster128.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User: zwafgyp (177615)
PHP: 7.4.33
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/z/w/a/zwafgyp/lacalita/wp-content/plugins/rey-core/inc/libs/importer/tasks/widgets.php
<?php
namespace ReyCore\Libs\Importer\Tasks;

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

use ReyCore\Libs\Importer\Base;
use ReyCore\Libs\Importer\Helper;

class Widgets extends TaskBase
{

	public function get_id(){
		return 'widgets';
	}

	public function get_status(){
		return esc_html__('Process widgets ...', 'rey-core');
	}

	public function run(){

		if( ! ($data = get_transient('rey_demo_data')) ){
			return $this->add_error( 'Cannot retrieve content data.' );
		}

		if( ! ( isset($data['widgets']) && ($widgets_data = $data['widgets']) ) ){
			return $this->add_notice( 'Cannot retrieve widgets data. Most likely not added in this demo.' );
		}

		if( $this->maybe_skip('widgets') ){
			return $this->add_notice( 'Skipping widgets as requested.' );
		}

		global $wp_registered_sidebars;

		$available_widgets = $this->available_widgets();

		$stored_widgets = [];

		foreach ( $available_widgets as $widget_data ) {
			$stored_widgets[ $widget_data['id_base'] ] = get_option( 'widget_' . $widget_data['id_base'] );
		}

		$sidebars_widgets = get_option( 'sidebars_widgets', [] );

		foreach ( $widgets_data as $sidebar_id => $widgets ) {

			if ( 'wp_inactive_widgets' === $sidebar_id ) {
				continue;
			}

			if( ! isset( $wp_registered_sidebars[ $sidebar_id ] ) ){
				$sidebar_id = 'wp_inactive_widgets';
			}

			foreach ( $widgets as $widget_instance_id => $widget ) {

				$id_base = preg_replace( '/-[0-9]+$/', '', $widget_instance_id );
				$maybe_continue = true;

				// Check if widget already exists
				if (
					isset( $available_widgets[ $id_base ], $stored_widgets[ $id_base ], $sidebars_widgets[ $sidebar_id ] )
					&& ($sidebar_widgets = $sidebars_widgets[ $sidebar_id ])
				) {
					foreach ( (array) $stored_widgets[ $id_base ] as $stored_widget_id => $stored_widget_data ) {
						if ( in_array( implode('-', [$id_base, $stored_widget_id]), $sidebar_widgets, true ) && wp_json_encode((array) $widget) === wp_json_encode($stored_widget_data) ) {
							$maybe_continue = false;
							break;
						}
					}
				}

				if ( ! $maybe_continue ) {
					continue;
				}

				$single = get_option( 'widget_' . $id_base );
				$single = ! empty( $single ) ? $single : ['_multiwidget' => 1];
				$single[] = $widget;

				end( $single );
				$new_instance_id_number = key( $single );

				if ( 0 === absint( $new_instance_id_number ) ) {
					$new_instance_id_number = 1;
					$single[ $new_instance_id_number ] = $single[0];
					unset( $single[0] );
				}

				$widget_instance_id = $id_base . '-' . $new_instance_id_number;
				$sidebars_widgets[ $sidebar_id ][] = $widget_instance_id;

				update_option( 'widget_' . $id_base, $single, false );
				update_option( 'sidebars_widgets', $sidebars_widgets, false );

				$this->map[uniqid('widget_')] = implode(':', [$sidebar_id, $widget_instance_id]);

			}
		}

		Base::update_map($this->map);

	}

	public function available_widgets() {

		global $wp_registered_widget_controls;

		$widget_controls = $wp_registered_widget_controls;

		$available_widgets = [];

		foreach ( $widget_controls as $widget ) {
			// No duplicates.
			if ( ! empty( $widget['id_base'] ) && ! isset( $available_widgets[ $widget['id_base'] ] ) ) {
				$available_widgets[ $widget['id_base'] ]['id_base'] = $widget['id_base'];
				$available_widgets[ $widget['id_base'] ]['name']    = $widget['name'];
			}
		}

		return $available_widgets;
	}
}