GhostManSec
Server: LiteSpeed
System: Linux premium197.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: parhudrw (1725)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: //home/parhudrw/anqa.it/wp-content/themes/essentials/inc/config/plugins.php
<?php
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

if ( ! class_exists( 'PixFort_Plugins_Setup' ) ) {
	/**
	 * Envato_Theme_Setup_Wizard class
	 */
	class PixFort_Plugins_Setup {

        private static $instance = null;

        /**
		 * The class version number.
		 *
		 * @since 1.1.1
		 * @access private
		 *
		 * @var string
		 */
		protected $version = '1.0';

        /** @var string Current theme name, used as namespace in actions. */
		protected $theme_name = 'essentials';

        /**
		 * TGMPA instance storage
		 *
		 * @var object
		 */
		protected $tgmpa_instance;

		/**
		 * TGMPA Menu slug
		 *
		 * @var string
		 */
		protected $tgmpa_menu_slug = 'tgmpa-install-plugins';

		/**
		 * TGMPA Menu url
		 *
		 * @var string
		 */
		protected $tgmpa_url = 'themes.php?page=tgmpa-install-plugins';
        /**
		 * Relative plugin path
		 *
		 * @since 1.1.2
		 *
		 * @var string
		 */
		protected $plugin_path = '';

		/**
		 * Relative plugin url for this plugin folder, used when enquing scripts
		 *
		 * @since 1.1.2
		 *
		 * @var string
		 */
		protected $plugin_url = '';



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

			return self::$instance;
		}

        public function __construct() {

            $this->init_globals();
            $this->init_actions();
		}


        public function init_globals() {

			//set relative plugin path url
			$this->plugin_path = trailingslashit( $this->cleanFilePath( dirname( __FILE__ ) ) );
			$relative_url      = str_replace( $this->cleanFilePath( get_template_directory() ), '', $this->plugin_path );
			$this->plugin_url  = trailingslashit( get_template_directory_uri() . $relative_url );
		}

        public function setup_wizard() {
            wp_enqueue_script( 'pixfort-plugins-setup', get_template_directory_uri() . '/inc/config/js/plugin-setup.js', array(
				'jquery'
			), $this->version );
            wp_localize_script( 'pixfort-plugins-setup', 'envato_setup_params', array(
				'tgm_plugin_nonce' => array(
					'update'  => wp_create_nonce( 'tgmpa-update' ),
					'install' => wp_create_nonce( 'tgmpa-install' ),
				),
				'tgm_bulk_url'     => admin_url( $this->tgmpa_url ),
				'ajaxurl'          => admin_url( 'admin-ajax.php' ),
				'wpnonce'          => wp_create_nonce( 'envato_setup_nonce' ),
				'verify_text'      => esc_attr__( '...verifying', 'essentials' ),
			) );
            ob_start();

        }

        public function init_actions() {
			if ( current_user_can( 'manage_options' ) ) {
				if ( class_exists( 'TGM_Plugin_Activation' ) && isset( $GLOBALS['tgmpa'] ) ) {
					add_action( 'init', array( $this, 'get_tgmpa_instanse' ), 30 );
					add_action( 'init', array( $this, 'set_tgmpa_url' ), 40 );
				}
				add_filter( 'tgmpa_load', array( $this, 'tgmpa_load' ), 10, 1 );
				add_action( 'wp_ajax_envato_setup_plugins', array( $this, 'ajax_plugins' ) );
			}
		}

        public function envato_setup_default_plugins() {
            tgmpa_load_bulk_installer();
			// install plugins with TGM.
			if ( ! class_exists( 'TGM_Plugin_Activation' ) || ! isset( $GLOBALS['tgmpa'] ) ) {
				die( 'Failed to find TGM' );
			}
			$url     = wp_nonce_url( add_query_arg( array( 'plugins' => 'go' ) ), 'envato-setup' );
			$plugins = $this->_get_plugins();

            $method = ''; // Leave blank so WP_Filesystem can populate it as necessary.
			$fields = array_keys( $_POST ); // Extra fields to pass to WP_Filesystem.

			if ( false === ( $creds = request_filesystem_credentials( esc_url_raw( $url ), $method, false, false, $fields ) ) ) {
				return true; // Stop the normal page form from displaying, credential request form will be shown.
			}

			// Now we have some credentials, setup WP_Filesystem.
			if ( ! WP_Filesystem( $creds ) ) {
				// Our credentials were no good, ask the user for them again.
				request_filesystem_credentials( esc_url_raw( $url ), $method, true, false, $fields );

				return true;
			}

            /* If we arrive here, we have the filesystem */
            $this->setup_wizard();
            wp_print_scripts( 'pixfort-plugins-setup' );
			?>

			<form method="post">

				<?php
				$plugins = $this->_get_plugins();
				$req_count = 0;
				$builders = array('js_composer', 'elementor');
				$builders_count = 0;
				foreach ( $plugins['all'] as $slug => $plugin ) {
					// if($plugin['required']){
					if(!empty($plugin['pix_dashboard']) && $plugin['pix_dashboard']){
						$req_count++;
					}
					if(in_array($slug, $builders)){
						$builders_count++;
					}
				}
				if ( $req_count>0 ) {
					?>
					<p class="box-text"><?php esc_html_e( 'Your website needs a few essential plugins. The following selected plugins will be installed or updated:', 'essentials' ); ?></p>
					<ul class="envato-wizard-plugins">

						<?php

						// Builders
						$have_active_builder = false;
						if($builders_count){
							if($builders_count==2){
								?><li class="pix-plugin-install-title-sm">Builder (Choose one)</li><?php
							}elseif($builders_count==1){
								$have_active_builder = true;
								?><li  class="pix-plugin-install-title-sm">Builder (You already have another active builder)</li><?php
							}


						foreach ( $plugins['all'] as $slug => $plugin ) {
							if(in_array($slug, $builders)){
							if(!empty($plugin['pix_dashboard']) && $plugin['pix_dashboard']){
							?>
							<li class="pix-plugin-item" data-slug="<?php echo esc_attr( $slug ); ?>">
								<?php
								$is_recommended = '';
								if(!empty($plugin['pix_recommended'])){
									if($plugin['pix_recommended']){
										$is_recommended = 'checked';
									}
								}
								if($have_active_builder){
									$is_recommended = '';
								}
								 ?>
								<input class="pix-plugin-check" type="checkbox" id="check_<?php echo esc_attr($slug); ?>" name="check_<?php echo esc_attr($slug); ?>" <?php echo esc_attr($is_recommended); ?> value="check_<?php echo esc_attr($slug); ?>">
								<label for="check_<?php echo esc_attr($slug); ?>" class="plugin-name"><?php echo esc_html( $plugin['name'] ); ?></label>
								<span class="plugin-install-status">
									<?php

								    $keys = array();
								    if ( isset( $plugins['install'][ $slug ] ) ) {
									    $keys[] = 'Not Installed';
								    }
								    if ( isset( $plugins['update'][ $slug ] ) ) {
									    $keys[] = 'Needs Update';
								    }
								    if ( isset( $plugins['activate'][ $slug ] ) ) {
									    $keys[] = 'Not Active';
								    }
								    // echo implode( ' and ', $keys ) . ' required';
								    echo implode( '', $keys );
								    ?>
    							</span>
								<div class="spinner"></div>
							</li>
						<?php
							}
							}
						}
						}


						?>
						<li  class="pix-plugin-install-title-sm">Other Plugins</li>
						<?php

						foreach ( $plugins['all'] as $slug => $plugin ) {
							// if($plugin['required']){
							if(!in_array($slug, $builders)){
							if(!empty($plugin['pix_dashboard']) && $plugin['pix_dashboard']){
							?>
							<li class="pix-plugin-item" data-slug="<?php echo esc_attr( $slug ); ?>">
								<?php
								$is_recommended = '';
								if(!empty($plugin['pix_recommended'])){
									if($plugin['pix_recommended']){
										$is_recommended = 'checked';
									}
								}
								 ?>
								<input class="pix-plugin-check" type="checkbox" id="check_<?php echo esc_attr($slug); ?>" name="check_<?php echo esc_attr($slug); ?>" <?php echo esc_attr($is_recommended); ?> value="check_<?php echo esc_attr($slug); ?>">
								<label for="check_<?php echo esc_attr($slug); ?>" class="plugin-name"><?php echo esc_html( $plugin['name'] ); ?></label>
								<span class="plugin-install-status">
    								<?php

								    $keys = array();
								    if ( isset( $plugins['install'][ $slug ] ) ) {
									    $keys[] = 'Not Installed';
								    }
								    if ( isset( $plugins['update'][ $slug ] ) ) {
									    $keys[] = 'Needs Update';
								    }
								    if ( isset( $plugins['activate'][ $slug ] ) ) {
									    $keys[] = 'Not Active';
								    }
								    // echo implode( ' and ', $keys ) . ' required';
								    echo implode( '', $keys );
								    ?>
    							</span>
								<div class="spinner"></div>
							</li>
						<?php
							}
							}
						}
						?>
					</ul>
                    <p class="box-text"><?php esc_html_e( 'You can add and remove plugins later on from within WordPress.', 'essentials' ); ?></p>
					<br />
                    <a class="pixfort-install-plugins pix-btn btn-primary" href="#">Install plugins</a>
                    <a class="pixfort-skip pixfort-install-plugins-skip pix-btn btn-link" href="#pix-verification">Skip this step</a>
					<?php
				} else {
					?>
					<p class="box-text text-center">
						<strong><?php echo esc_html_e( 'Good news!', 'essentials' ); ?></strong><br />
						<?php echo esc_html_e( 'All required plugins are already installed and up to date.', 'essentials' ); ?>
					</p>
					<a class="pixfort-skip pix-btn btn-link" href="#pix-verification">Next step</a>
					<?php
				} ?>



			</form>
			<?php

        }
        public function tgmpa_load( $status ) {
			return is_admin() || current_user_can( 'install_themes' );
		}

        /**
		 * Get configured TGMPA instance
		 *
		 * @access public
		 * @since 1.1.2
		 */
		public function get_tgmpa_instanse() {
			$this->tgmpa_instance = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) );
		}

        /**
		 * Update $tgmpa_menu_slug and $tgmpa_parent_slug from TGMPA instance
		 *
		 * @access public
		 * @since 1.1.2
		 */
		public function set_tgmpa_url() {

			$this->tgmpa_menu_slug = ( property_exists( $this->tgmpa_instance, 'menu' ) ) ? $this->tgmpa_instance->menu : $this->tgmpa_menu_slug;
			$this->tgmpa_menu_slug = apply_filters( $this->theme_name . '_theme_setup_wizard_tgmpa_menu_slug', $this->tgmpa_menu_slug );

			$tgmpa_parent_slug = ( property_exists( $this->tgmpa_instance, 'parent_slug' ) && $this->tgmpa_instance->parent_slug !== 'themes.php' ) ? 'admin.php' : 'themes.php';

			$this->tgmpa_url = apply_filters( $this->theme_name . '_theme_setup_wizard_tgmpa_url', $tgmpa_parent_slug . '?page=' . $this->tgmpa_menu_slug );

		}

		private function pix_check_plugin_is_active($slug){
			switch ($slug) {
				case 'pixfort-core':
					if(function_exists('essentials_core_plugin')) return true;
					break;
				case 'one-click-demo-import-plugin':
					if(class_exists('OCDI_Plugin')) return true;
					break;
				case 'js_composer':
					if( function_exists('vc_set_as_theme') ) return true;
					break;
				case 'revslider':
					if(class_exists('RevSliderFront')) return true;
					break;
				case 'masterslider':
					if(function_exists('masterslider')) return true;
					break;
				case 'pixfort-likes':
					if(class_exists('PixFortLikes')) return true;
					break;
				case 'envato-market':
					if(function_exists('envato_market')) return true;
					break;
				case 'elementor':
					if(class_exists( '\Elementor\Plugin' )) return true;
					break;
				case 'contact-form-7':
					if(function_exists( 'wpcf7_plugin_path' )) return true;
					break;
			}
			return false;
		}

        private function _get_plugins() {
			$instance = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) );
			$plugins  = array(
				'all'      => array(), // Meaning: all plugins which still have open actions.
				'install'  => array(),
				'update'   => array(),
				'activate' => array(),
			);

			foreach ( $instance->plugins as $slug => $plugin ) {
				if ( $this->pix_check_plugin_is_active( $slug ) && false === $instance->does_plugin_have_update( $slug ) ) {
					// No need to display plugins if they are installed, up-to-date and active.
					continue;
				} else {
					$plugins['all'][ $slug ] = $plugin;

					if ( ! $instance->is_plugin_installed( $slug ) ) {
						$plugins['install'][ $slug ] = $plugin;
					} else {
						if ( false !== $instance->does_plugin_have_update( $slug ) ) {
							$plugins['update'][ $slug ] = $plugin;
						}

						if ( $instance->can_plugin_activate( $slug ) ) {
							$plugins['activate'][ $slug ] = $plugin;
						}
					}
				}
			}


			return $plugins;
		}

        public function ajax_plugins() {
			if ( ! check_ajax_referer( 'envato_setup_nonce', 'wpnonce' ) || empty( $_POST['slug'] ) ) {
				wp_send_json_error( array( 'error' => 1, 'message' => esc_attr__( 'No Slug Found', 'essentials' ) ) );
			}
			$json = array();
			// send back some json we use to hit up TGM
			$plugins = $this->_get_plugins();
			// what are we doing with this plugin?
			foreach ( $plugins['activate'] as $slug => $plugin ) {
				if ( $_POST['slug'] == $slug ) {
					$json = array(
						'url'           => admin_url( $this->tgmpa_url ),
						'plugin'        => array( $slug ),
						'tgmpa-page'    => $this->tgmpa_menu_slug,
						'plugin_status' => 'all',
						'_wpnonce'      => wp_create_nonce( 'bulk-plugins' ),
						'action'        => 'tgmpa-bulk-activate',
						'action2'       => - 1,
						'message'       => esc_attr__( 'Activating Plugin', 'essentials' ),
					);
					break;
				}
			}
			foreach ( $plugins['update'] as $slug => $plugin ) {
				if ( $_POST['slug'] == $slug ) {
					$json = array(
						'url'           => admin_url( $this->tgmpa_url ),
						'plugin'        => array( $slug ),
						'tgmpa-page'    => $this->tgmpa_menu_slug,
						'plugin_status' => 'all',
						'_wpnonce'      => wp_create_nonce( 'bulk-plugins' ),
						'action'        => 'tgmpa-bulk-update',
						'action2'       => - 1,
						'message'       => esc_attr__( 'Updating Plugin', 'essentials' ),
					);
					break;
				}
			}
			foreach ( $plugins['install'] as $slug => $plugin ) {
				if ( $_POST['slug'] == $slug ) {
					$json = array(
						'url'           => admin_url( $this->tgmpa_url ),
						'plugin'        => array( $slug ),
						'tgmpa-page'    => $this->tgmpa_menu_slug,
						'plugin_status' => 'all',
						'_wpnonce'      => wp_create_nonce( 'bulk-plugins' ),
						'action'        => 'tgmpa-bulk-install',
						'action2'       => - 1,
						'message'       => esc_attr__( 'Installing Plugin', 'essentials' ),
					);
					break;
				}
			}

			if ( $json ) {
				$json['hash'] = md5( serialize( $json ) ); // used for checking if duplicates happen, move to next plugin
				wp_send_json( $json );
			} else {
				wp_send_json( array( 'done' => 1, 'message' => esc_attr__( 'Success', 'essentials' ) ) );
			}
			exit;

		}




        public static function cleanFilePath( $path ) {
			$path = str_replace( '', '', str_replace( array( '\\', '\\\\', '//' ), '/', $path ) );
			if ( $path[ strlen( $path ) - 1 ] === '/' ) {
				$path = rtrim( $path, '/' );
			}

			return $path;
		}
    }
}

add_action( 'after_setup_theme', 'pixfort_plugins_setup_wizard', 10 );
if ( ! function_exists( 'pixfort_plugins_setup_wizard' ) ) :
	function pixfort_plugins_setup_wizard() {
		PixFort_Plugins_Setup::get_instance();
	}
endif;


 ?>