HEX
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.30
System: Linux iZj6c1151k3ad370bosnmsZ 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64
User: root (0)
PHP: 7.4.30
Disabled: NONE
Upload Files
File: /var/www/html/sparkle/wp-content/plugins/woo-addon-uploads/includes/class-wau-front-end.php
<?php
/**
 * WooCommerce Addon Uploads Admin Settings Class
 *
 * Contains all admin settings functions and hooks
 *
 * @author      Dhruvin Shah
 * @package     WooCommerce Addon Uploads
 */

if ( ! class_exists( 'wau_front_end_class' ) ) {

	class wau_front_end_class {

		public function __construct() {

			require_once ABSPATH . 'wp-admin/includes/image.php';
			require_once ABSPATH . 'wp-admin/includes/file.php';
			require_once ABSPATH . 'wp-admin/includes/media.php';

			$this->load_scripts();
			add_action( 'woocommerce_before_add_to_cart_button', array( &$this, 'addon_uploads_section' ) );

			add_filter( 'woocommerce_add_cart_item_data', array( &$this, 'wau_add_cart_item_data' ), 10, 2 );
			add_filter( 'woocommerce_get_cart_item_from_session', array( &$this, 'wau_get_cart_item_from_session' ), 10, 2 );
			add_filter( 'woocommerce_get_item_data', array( &$this, 'wau_get_item_data' ), 10, 2 );
			add_action( 'woocommerce_checkout_create_order_line_item', array( &$this, 'wau_add_item_meta_url' ), 10, 4 );

			add_filter( 'wau_category_checks', array( $this, 'wau_check_category_allowed' ), 10, 2 );

			add_action( 'woocommerce_cart_item_removed', array( &$this, 'wau_remove_cart_action' ), 10, 2 );
		}

		function load_scripts(){
			add_action( 'woocommerce_before_single_product', array( &$this, 'wau_front_end_scripts_js' ) );
			add_action( 'woocommerce_before_single_product', array( &$this, 'wau_front_end_scripts_css' ) );
		}

		function wau_front_end_scripts_js() {
			if ( is_product() ) {
				//wp_enqueue_script( 'wau_upload_js', plugins_url('../assets/js/wau_upload_script.js', __FILE__), '', '', false);
				//wp_localize_script( 'wau_upload_js', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
			}
		}

		function wau_front_end_scripts_css(){

			if ( is_product() ){
				wp_enqueue_style( 'wau_upload_css', plugins_url('../assets/css/wau_styles.css', __FILE__ ) , '', '', false );
			}
		}

		function addon_uploads_section() {

			global $product;

			$addon_settings = get_option( 'wau_addon_settings' );

			$product_ids = apply_filters( 'wau_include_product_ids', array() );

			$category_passed = apply_filters( 'wau_category_checks', true, $product );

			$enabled = false;
			if ( ( is_array( $product_ids ) && empty( $product_ids ) ) || in_array( $product->get_id(), $product_ids, true ) ) {
				$enabled = true;
			}

			if ( isset( $addon_settings['wau_enable_addon'] ) && '1' === $addon_settings['wau_enable_addon'] && $enabled && $category_passed ) {

				$upload_label = __( 'Upload an image: ', 'woo-addon-uploads' );

				$file_upload_template =
					'<div class="wau_wrapper_div">
						<label for="wau_file_addon">' . $upload_label . '</label>
						<input type="file" name="wau_file_addon" id="wau_file_addon" accept="image/*" class="wau-auto-width wau-files" />
					</div>';
				echo $file_upload_template;
			}
		}

		function wau_add_cart_item_data( $cart_item_meta, $product_id ){

			$addon_id = array();

			if( isset( $_FILES ) && isset( $_FILES['wau_file_addon'] ) && $_FILES['wau_file_addon']['name'] !== '' ){
				$attach_id = media_handle_upload( 'wau_file_addon', 0 );

				$addon_id['media_id'] = $attach_id;
				$addon_id['media_url'] = wp_get_attachment_url( esc_attr( $attach_id ) );
				$cart_item_meta['wau_addon_ids'][] = $addon_id;
			}

			return $cart_item_meta;
		}

		function wau_get_cart_item_from_session( $cart_item, $values ){

			if( isset( $values['wau_addon_ids'] ) ){
				$cart_item['wau_addon_ids'] = $values['wau_addon_ids'];
			}

			return $cart_item;
		}

		function wau_get_item_data( $other_data, $cart_item ) {
			if ( isset( $cart_item['wau_addon_ids'] ) ) {
				foreach ( $cart_item['wau_addon_ids'] as $addon_id ) {
					$name    = __( 'Uploaded File', 'woo-addon-uploads' );
					$display = $addon_id['media_id'];

					$other_data[] = array(
						'name'    => $name,
						'display' => wp_get_attachment_image( $display, 'thumbnail', 'true', '' )
					);
				}
			}

			return $other_data;
		}

		function wau_add_item_meta_url( $item, $cart_item_key, $values, $order ) {

			if ( empty( $values['wau_addon_ids'] ) ) {
				return;
			}

			foreach ( $values['wau_addon_ids'] as $addon_key => $addon_id ) {
				$media_url = wp_get_attachment_url( esc_attr( $addon_id['media_id'] ) );

				$item->add_meta_data( __( 'Uploaded Media', 'woo-addon-uploads' ), $media_url );
			}
		}

		function wau_remove_cart_action( $cart_item_key, $cart ) {
			$removed_item = $cart->removed_cart_contents[ $cart_item_key ];

			if ( isset( $removed_item['wau_addon_ids'] ) && isset( $removed_item['wau_addon_ids'][0] ) &&
					isset( $removed_item['wau_addon_ids'][0]['media_id'] ) && $removed_item['wau_addon_ids'][0]['media_id'] !== '' ) {

				$media_id = $removed_item['wau_addon_ids'][0]['media_id'];

				$delete_status = wp_delete_attachment( $media_id, true );
			}
		}

		/**
		 * Check if part of allowed categories.
		 *
		 * @param bool       $allowed
		 * @param WC_Product $product
		 * @return bool
		 */
		public function wau_check_category_allowed( $allowed, $product ) {

			$addon_settings     = get_option( 'wau_addon_settings' );
			$allowed_categories = isset( $addon_settings['wau_settings_categories'] ) ? $addon_settings['wau_settings_categories'] : array();
			$product_cats       = $product->get_category_ids();

			if ( empty( $allowed_categories ) || in_array( 'all', $allowed_categories, true ) ) {
				return true;
			}

			$match_cats = array_intersect( $product_cats, $allowed_categories );

			if ( empty( $match_cats ) ) {
				return false;
			} else {
				return true;
			}
		}
	}
}