HEX
Server: Apache/2.4.65 (Debian)
System: Linux web6 5.10.0-36-amd64 #1 SMP Debian 5.10.244-1 (2025-09-29) x86_64
User: innocamp (1028)
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: /home/hcp/public_html/wp-content/plugins/jupiterx-core/includes/icons.php
<?php

/**
 * Handle the JupiterX custom icons functionality.
 *
 * @since 2.5.0
 */
class JupiterX_Custom_Icons {

	private static $instance = null;

	const POST_TYPE = 'jupiterx-icons';

	const OPTION_NAME = 'jupiterx_custom_icon_sets_config';

	const JX_CUSTOM_ICONS_PANEL_URL = 'admin.php?page=jupiterx#/custom-icons';

	public static function get_instance() {
		if ( null === self::$instance ) {
			self::$instance = new self();
		}
		return self::$instance;
	}

	public function __construct() {
		add_filter( 'elementor/editor/localize_settings', [ $this, 'add_custom_icons_url' ], 15 );
		add_filter( 'elementor/icons_manager/additional_tabs', [ $this, 'register_icon_libraries_control' ] );
	}

	/**
	 * Change the link of custom icon button in elementor editor -> icon library.
	 *
	 * @param $config
	 *
	 * @return mixed
	 * @since 2.5.0
	 */
	public function add_custom_icons_url( $config ) {
		$config['customIconsURL'] = admin_url( self::JX_CUSTOM_ICONS_PANEL_URL );

		return $config;
	}

	/**
	 * Register JX custom icons to elementor icon library
	 *
	 * @param $additional_sets
	 *
	 * @return array
	 * @since 2.5.0
	 */
	public function register_icon_libraries_control( $additional_sets ) {
		return array_merge( $additional_sets, self::get_custom_icons_config() );
	}

	/**
	 * Creates custom icons configurations for icon library
	 *
	 * @return array
	 * @since 2.5.0
	 */
	public static function get_custom_icons_config() {
		$icons = new \WP_Query( [
			'post_type'      => self::POST_TYPE,
			'posts_per_page' => - 1,
			'post_status'    => 'publish',
		] );

		$config = [];
		foreach ( $icons->posts as $icon_set ) {
			$set_config                        = json_decode( $icon_set->post_content, true );
			$set_config['custom_icon_post_id'] = $icon_set->ID;
			$set_config['label']               = $icon_set->post_title;

			$config[ $set_config['name'] ] = $set_config;
		}

		update_option( self::OPTION_NAME, $config );

		return $config;
	}
}

JupiterX_Custom_Icons::get_instance();