HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux wordpress-ubuntu-s-2vcpu-4gb-fra1-01 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64
User: root (0)
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/1526/task/1529/cwd/shoetique/wp-content/plugins/prdctfltr25/lib/pf-attribute-thumbnails.php
<?php


/**
 * Product Filter attributes thumbnails
 */
class PF_Attribute_Images {

	private $taxonomy;
	private $pf_meta;
	private $image_size = 'shop_thumb';
	private $image_width = 32;
	private $image_height = 32;

	public function __construct($attribute_image_key = 'thumbnail_id', $image_size = 'shop_thumb') {
		$this->pf_meta = $attribute_image_key;
		$this->image_size = $image_size;

		if (is_admin()) {
			add_action('admin_enqueue_scripts', array(&$this, 'pf_admin_scripts'));
			add_action('current_screen', array(&$this, 'pf_init_attribute_image'));

			add_action('created_term', array(&$this, 'pf_attribute_image_save'), 10, 3);
			add_action('edit_term', array(&$this, 'pf_attribute_image_save'), 10, 3);
		}
	}


	public function pf_admin_scripts() {
		global $woocommerce_pf_thumbs;
		$screen = get_current_screen();
		if (strpos($screen->id, 'pa_') !== false) :
			wp_enqueue_script('thickbox');
			wp_enqueue_style('thickbox');
			wp_enqueue_media();
		endif;
	}


	public function pf_init_attribute_image() {
		global $woocommerce, $_wp_additional_image_sizes;
		$screen = get_current_screen();

		if (strpos($screen->id, 'pa_') !== false) :

			$this->taxonomy = $_REQUEST['taxonomy'];

			if (taxonomy_exists($_REQUEST['taxonomy'])) {
				$term_id = term_exists(isset($_REQUEST['tag_ID']) ? $_REQUEST['tag_ID'] : 0, $_REQUEST['taxonomy']);
				$term = 0;
				if ($term_id) {
					$term = get_term($term_id, $_REQUEST['taxonomy']);
				}

				$this->image_size = apply_filters('woocommerce_get_pf_thumbs_image_size', $this->image_size, $_REQUEST['taxonomy'], $term_id);
			}

			$the_size = isset($_wp_additional_image_sizes[$this->image_size]) ? $_wp_additional_image_sizes[$this->image_size] : $_wp_additional_image_sizes['shop_thumbnail'];

			if (isset($the_size['width']) && isset($the_size['height'])) {
				$this->image_width = $the_size['width'];
				$this->image_height = $the_size['height'];
			} else {
				$this->image_width = 32;
				$this->image_height = 32;
			}


			$attribute_taxonomies = wc_get_attribute_taxonomies();
			if ($attribute_taxonomies) {
				foreach ($attribute_taxonomies as $tax) {

					add_action('pa_' . $tax->attribute_name . '_add_form_fields', array(&$this, 'pf_add_attribute_image'), 10, 2);
					add_action('pa_' . $tax->attribute_name . '_edit_form_fields', array(&$this, 'pf_edit_attribute_image'), 10, 2);

					add_filter('manage_edit-pa_' . $tax->attribute_name . '_columns', array(&$this, 'pf_attribute_columns'));
					add_filter('manage_pa_' . $tax->attribute_name . '_custom_column', array(&$this, 'pf_attribute_column'), 10, 3);
				}
			}

		endif;
	}

	public function pf_add_attribute_image() {
		global $woocommerce;
		?>
		<div class="form-field pf_thumb-field pf_thumb-field-photo" style="overflow:visible;">
			<div id="pf_thumb-photo" class="<?php echo sanitize_title($this->pf_meta); ?>-photo">
				<label><?php _e('Thumbnail', 'woocommerce'); ?></label>
				<div id="pf_thumbnail_<?php echo $this->pf_meta; ?>" style="float:left;margin-right:10px;">
					<img src="<?php echo $woocommerce->plugin_url() . '/assets/images/placeholder.png' ?>" width="<?php echo $this->image_width; ?>px" height="<?php echo $this->image_height; ?>px" />
				</div>
				<div style="line-height:60px;">
					<input type="hidden" id="pf_<?php echo $this->pf_meta; ?>" name="pf_meta[<?php echo $this->pf_meta; ?>][photo]" />
					<button type="submit" class="upload_image_button button"><?php _e('Upload/Add image', 'woocommerce'); ?></button>
					<button type="submit" class="remove_image_button button"><?php _e('Remove image', 'woocommerce'); ?></button>
				</div>
				<script type="text/javascript">

					var file_frame;

					jQuery(document).on( 'click', '.upload_image_button', function( event ){

						event.preventDefault();

						if ( file_frame ) {
							file_frame.open();
							return;
						}

						file_frame = wp.media.frames.downloadable_file = wp.media({
							title: 'Choose an image',
							button: {
								text: 'Use image',
							},
							multiple: false
						});

						file_frame.on( 'select', function() {
							attachment = file_frame.state().get('selection').first().toJSON();

							jQuery('#pf_<?php echo $this->pf_meta; ?>').val(attachment.id);
							jQuery('#pf_thumbnail_<?php echo $this->pf_meta; ?> img').attr('src', attachment.url);
							jQuery('.remove_image_button').show();
						});

						file_frame.open();
					});

					jQuery(document).on( 'click', '.remove_image_button', function( event ){
						jQuery('#pf_thumbnail_<?php echo $this->pf_meta; ?> img').attr('src', '<?php echo PRDCTFLTR_URL . 'lib/images/pf-placeholder.gif'; ?>');
						jQuery('#pf_<?php echo $this->pf_meta; ?>').val('');
						jQuery('.remove_image_button').hide();
						return false;
					});

				</script>
				<div class="clear"></div>
			</div>
		</div>
		<?php
	}

	public function pf_edit_attribute_image($term, $taxonomy) {
		global $woocommerce;

		$pf_thumb_term = new PF_Attribute_Image($this->pf_meta, $term->term_id, $taxonomy, false, $this->image_size);
		$image = '';
		?>
		<tr class="form-field pf_thumb-field pf_thumb-field-photo" style="overflow:visible;">
			<th scope="row" valign="top"><label><?php _e('Photo', 'prdctfltr'); ?></label></th>
			<td>
				<div id="pf_thumbnail_<?php echo $this->pf_meta; ?>" style="float:left;margin-right:10px;">
					<img src="<?php echo $pf_thumb_term->pf_image_src(); ?>"  width="<?php echo $pf_thumb_term->pf_get_width(); ?>px" height="<?php echo $pf_thumb_term->pf_get_height(); ?>px" />
				</div>
				<div style="line-height:60px;">
					<input type="hidden" id="pf_<?php echo $this->pf_meta; ?>" name="pf_meta[<?php echo $this->pf_meta; ?>][photo]" value="<?php echo $pf_thumb_term->pf_image_id(); ?>" />
					<button type="submit" class="upload_image_button button"><?php _e('Upload/Add image', 'woocommerce'); ?></button>
					<button type="submit" class="remove_image_button button"><?php _e('Remove image', 'woocommerce'); ?></button>
				</div>
				<script type="text/javascript">

					var file_frame;

					jQuery(document).on( 'click', '.upload_image_button', function( event ){

						event.preventDefault();

						if ( file_frame ) {
							file_frame.open();
							return;
						}

						file_frame = wp.media.frames.downloadable_file = wp.media({
							title: 'Choose an image',
							button: {
								text: 'Use image',
							},
							multiple: false
						});

						file_frame.on( 'select', function() {
							attachment = file_frame.state().get('selection').first().toJSON();

							jQuery('#pf_<?php echo $this->pf_meta; ?>').val(attachment.id);
							jQuery('#pf_thumbnail_<?php echo $this->pf_meta; ?> img').attr('src', attachment.url);
							jQuery('.remove_image_button').show();
						});

						file_frame.open();
					});

					jQuery(document).on( 'click', '.remove_image_button', function( event ){
						jQuery('#pf_thumbnail_<?php echo $this->pf_meta; ?> img').attr('src', '<?php echo PRDCTFLTR_URL . 'lib/images/pf-placeholder.gif'; ?>');
						jQuery('#pf_<?php echo $this->pf_meta; ?>').val('');
						jQuery('.remove_image_button').hide();
						return false;
					});


				</script>
				<div class="clear"></div>
			</td>
		</tr>
		<?php
	}


	public function pf_attribute_image_save($term_id, $tt_id, $taxonomy) {
		if (isset($_POST['pf_meta'])) {

			$metas = $_POST['pf_meta'];
			if (isset($metas[$this->pf_meta])) {
				$data = $metas[$this->pf_meta];

				$photo = isset($data['photo']) ? $data['photo'] : '';


				update_woocommerce_term_meta($term_id, $taxonomy . '_' . $this->pf_meta . '_photo', $photo);
			}
		}
	}


	public function pf_attribute_columns($columns) {
		$new_columns = array();
		$new_columns['cb'] = $columns['cb'];
		$new_columns[$this->pf_meta] = __('Thumbnail', 'prdctfltr');
		unset($columns['cb']);
		$columns = array_merge($new_columns, $columns);
		return $columns;
	}

	public function pf_attribute_column($columns, $column, $id) {
		if ($column == $this->pf_meta) :
			$pf_thumb_term = new PF_Attribute_Image($this->pf_meta, $id, $this->taxonomy, false, $this->image_size);
			$columns .= $pf_thumb_term->pf_get_output();
		endif;
		return $columns;
	}

}

class PF_Attribute_Image {

	public $attribute_pf_meta;
	public $term_id;
	public $term;
	public $term_label;
	public $term_slug;
	public $taxonomy_slug;
	public $selected;
	public $thumbnail_src;
	public $thumbnail_id;
	public $size;
	public $width = 32;
	public $height = 32;

	public function __construct($attribute_data_key, $term_id, $taxonomy, $selected = false, $size = 'shop_thumbnail') {

		$this->attribute_pf_meta = $attribute_data_key;
		$this->term_id = $term_id;
		$this->term = get_term($term_id, $taxonomy);
		$this->term_label = $this->term->name;
		$this->term_slug = $this->term->slug;
		$this->taxonomy_slug = $taxonomy;
		$this->selected = $selected;
		$this->size = $size;

		$this->pf_init();
	}

	public function pf_init() {
		global $woocommerce, $_wp_additional_image_sizes;

		$this->pf_init_size($this->size);

		$this->thumbnail_id = get_woocommerce_term_meta($this->term_id, $this->pf_meta() . '_photo', true);

		$this->thumbnail_src = PRDCTFLTR_URL . 'lib/images/pf-placeholder.gif';


			if ($this->thumbnail_id) {
			$imgsrc = wp_get_attachment_image_src($this->thumbnail_id, $this->size);
				if ($imgsrc && is_array($imgsrc)) {
					$this->thumbnail_src = current($imgsrc);
				} else {
					$this->thumbnail_src = PRDCTFLTR_URL . 'lib/images/pf-placeholder.gif';
				}
			} else {
				$this->thumbnail_src = PRDCTFLTR_URL . 'lib/images/pf-placeholder.gif';
			}

	}

	public function pf_init_size($size) {
		global $woocommerce, $_wp_additional_image_sizes;
		$this->size = $size;
		$the_size = isset($_wp_additional_image_sizes[$size]) ? $_wp_additional_image_sizes[$size] : $_wp_additional_image_sizes['shop_thumbnail'];
		if (isset($the_size['width']) && isset($the_size['height'])) {
			$this->width = $the_size['width'];
			$this->height = $the_size['height'];
		} else {
			$this->width = 32;
			$this->height = 32;
		}
	}

	public function pf_get_output($placeholder = true, $placeholder_src = 'default') {
		global $woocommerce;

		$picker = '';

		$href = apply_filters('woocommerce_pf_thumbs_get_pf_thumb_href', '#', $this);
		$anchor_class = apply_filters('woocommerce_pf_thumbs_get_pf_thumb_anchor_css_class', 'pf_thumb-anchor', $this);
		$image_class = apply_filters('woocommerce_pf_thumbs_get_pf_thumb_image_css_class', 'pf_thumb-img', $this);
		$image_alt = apply_filters('woocommerce_pf_thumbs_get_pf_thumb_image_alt', 'thumbnail', $this);

		if ( isset($this->thumbnail_src)) {
			$picker .= '<a href="' . $href . '" title="' . $this->term_label . '" class="' . $anchor_class . '">';
			$picker .= '<img src="' . apply_filters('woocommerce_pf_thumbs_get_pf_thumb_image', $this->thumbnail_src, $this->term_slug, $this->taxonomy_slug, $this) . '" alt="' . $image_alt . '" class="wp-post-image pf_thumb-photo' . $this->pf_meta() . ' ' . $image_class . '" width="32" height="32"/>';
			$picker .= '</a>';
		} elseif ($placeholder) {
			if ($placeholder_src == 'default') {
				$src = PRDCTFLTR_URL . 'lib/images/pf-placeholder.gif';
			} else {
				$src = $placeholder_src;
			}

			$picker .= '<a href="' . $href . '" style="width:' . $this->width . 'px;height:' . $this->height . 'px;" title="' . $this->term_label . '"  class="' . $anchor_class . '">';
			$picker .= '<img src="' . $src . '" alt="' . $image_alt . '" class="wp-post-image pf_thumb-photo' . $this->pf_meta() . ' ' . $image_class . '" width="' . $this->width . '" height="' . $this->height . '"/>';
			$picker .= '</a>';
		} else {
			return '';
		}

		$out = '<div class="select-option pf_thumb-wrapper" data-value="' . $this->term_slug . '" ' . ($this->selected ? 'data-default="true"' : '') . '>';
		$out .= apply_filters('woocommerce_pf_thumbs_picker_html', $picker, $this);
		$out .= '</div>';

		return $out;
	}

	public function pf_image_src() {
		return $this->thumbnail_src;
	}

	public function pf_image_id() {
		return $this->thumbnail_id;
	}

	public function pf_get_width() {
		return $this->width;
	}

	public function pf_get_height() {
		return $this->height;
	}

	public function pf_meta() {
		return $this->taxonomy_slug . '_' . $this->attribute_pf_meta;
	}

}

new PF_Attribute_Images();

?>