HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //proc/self/cwd/wp-content/plugins/elementor/core/app/modules/import-export/directories/base.php
<?php
namespace Elementor\Core\App\Modules\ImportExport\Directories;

use Elementor\Core\App\Modules\ImportExport\Export;
use Elementor\Core\App\Modules\ImportExport\Import;
use Elementor\Core\App\Modules\ImportExport\Iterator;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Base {

	/**
	 * @var Base[]
	 */
	private $sub_directories = [];

	/**
	 * @var Base
	 */
	private $parent;

	/**
	 * @var Iterator
	 */
	protected $iterator;

	/**
	 * @var Export
	 */
	protected $exporter;

	/**
	 * @var Import
	 */
	protected $importer;

	abstract protected function get_name();

	public function __construct( Iterator $iterator, Base $parent = null ) {
		$this->iterator = $iterator;

		if ( $iterator instanceof Export ) {
			$this->exporter = $iterator;
		} else {
			$this->importer = $iterator;
		}

		$this->parent = $parent;

		$this->register_directories();
	}

	final public function get_path() {
		$path = $this->get_name();

		if ( $this->parent ) {
			$parent_name = $this->parent->get_name();

			if ( $parent_name ) {
				$parent_name .= '/';
			}

			$path = $parent_name . $path;
		}

		return $path;
	}

	final public function run_export() {
		$this->exporter->set_current_archive_path( $this->get_path() );

		$manifest_data = $this->export();

		foreach ( $this->sub_directories as $sub_directory ) {
			$manifest_data[ $sub_directory->get_name() ] = $sub_directory->run_export();
		}

		return $manifest_data;
	}

	final public function run_import( array $settings ) {
		$this->importer->set_current_archive_path( $this->get_path() );

		$meta_data = $this->import( $settings );

		foreach ( $this->sub_directories as $sub_directory ) {
			$sub_directory_name = $sub_directory->get_name();

			if ( ! isset( $settings[ $sub_directory_name ] ) ) {
				continue;
			}

			$meta_data[ $sub_directory_name ] = $sub_directory->run_import( $settings[ $sub_directory_name ] );
		}

		return $meta_data;
	}

	/**
	 * @return array
	 */
	protected function export() {
		return [];
	}

	/**
	 * @param array $import_settings
	 *
	 * @return array
	 */
	protected function import( array $import_settings ) {
		return [];
	}

	protected function get_default_sub_directories() {
		return [];
	}

	private function register_directories() {
		$sub_directories = $this->get_default_sub_directories();
		$path = $this->get_path();

		/**
		 * Kit sub directories.
		 *
		 * Filters sub directories when importing/exporting kits.
		 *
		 * The dynamic portion of the hook name, `$path`, refers to the directory path.
		 *
		 * @param array $sub_directories A list of sub directories.
		 * @param Elementor\Core\App\Modules\ImportExport\Directories\Base $this The base class instance.
		 */
		$sub_directories = apply_filters( "elementor/kit/import-export/directory/{$path}", $sub_directories, $this );

		$this->sub_directories = $sub_directories;
	}
}