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/lumise/core/admin/pages/product-variation.php
<?php
	
	global $lumise, $current_user;
	
	if(
		!defined('LUMISE') || 
		!$current_user ||
		(!$lumise->caps('lumise_access') && get_user_meta( $current_user->ID, 'dokan_enable_selling' , true ) != 'yes')
	) {
		header('HTTP/1.0 403 Forbidden');
		exit;
	}
	
	if (
		isset($_POST['clear_all_config'])
	) {
		global $wpdb;
		$varis = $wpdb->get_results("SELECT `ID` FROM `{$wpdb->prefix}posts` WHERE `post_parent`=".((int)$_POST['clear_all_config'])." AND `post_type` = 'product_variation' AND `post_status` = 'publish'");
		if (count($varis) > 0) {
			foreach ($varis as $vari) {
				update_post_meta($vari->ID, '_variation_lumise', '');
			}
		}
		exit;
	}
	
	if (
		isset($_POST['data']) &&
		isset($_POST['apply_all_variations']) &&
		$_POST['apply_all_variations'] = 1
	) {
		global $wpdb;
		$varis = $wpdb->get_results("SELECT `ID` FROM `{$wpdb->prefix}posts` WHERE `post_parent`=".((int)$_GET['product_id'])." AND `post_type` = 'product_variation' AND `post_status` = 'publish'");
		if (count($varis) > 0) {
			foreach ($varis as $vari) {
				update_post_meta($vari->ID, '_variation_lumise', $_POST['data']);
			}
		}
		exit;
	}
	
	global $lumise;
	global $lumise_admin;
	
	$lumise->connector->platform = 'php';
	
	if (isset($_POST['data'])) {
		$data = json_decode(urldecode($_POST['data']), true);	
	} else {
		$data = array(
			'stages' => '',
			'printing' => ''
		);
	}
	
	$arg = array(
		array(
			'type' => 'stages',
			'name' => 'stages',
			'value' => isset($data['stages']) ? $data['stages'] : ''
		),
		array(
			'type' => 'printing',
			'name' => 'printings',
			'label' => $lumise->lang('Printing Techniques'),
			'desc' => $lumise->lang('Select Printing Techniques with price calculations for this product').'<br>'.$lumise->lang('Drag to arrange items, the first one will be set as default'),
			'value' => isset($data['printing']) ? $data['printing'] : ''
		)
	);
	
	$fields = $arg;
	
?>
<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title><?php echo (isset($title) ? $title : 'Lumise Control Panel'); ?></title>
		<?php $lumise->do_action('admin-header'); ?>
		<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,500,700,900" rel="stylesheet">
		<link rel="stylesheet" href="<?php echo esc_url(LW()->plugin_url());?>/assets/css/font-awesome.min.css?version=<?php echo LUMISE; ?>">
		<link rel="stylesheet" href="<?php echo esc_url(LW()->plugin_url());?>/assets/css/admin/admin.min.css?version=<?php echo LUMISE; ?>">
		<link rel="stylesheet" href="<?php echo esc_url(LW()->plugin_url());?>/assets/css/admin/responsive.min.css?version=<?php echo LUMISE; ?>">
		<link rel="stylesheet" href="<?php echo esc_url($lumise->cfg->upload_url); ?>user_data/custom.css?version=<?php echo esc_attr($lumise->cfg->settings['last_update']); ?>">
		<link rel="stylesheet" href="<?php echo esc_url(LW()->plugin_url()); ?>/assets/css/admin/iframe.css?version=<?php echo LUMISE; ?>" />
		<script src="<?php echo esc_url($lumise->apply_filters('editor/jquery.min.js', $lumise->cfg->assets_url.'assets/js/jquery.min.js?version='.LUMISE)); ?>"></script>
		<?php $lumise->do_action('editor-header'); ?>
</head>
<body class="LumiseDesign">
	<div class="lumise_wrapper" id="lumise-product-page" style="width: 100%; padding: 0px;">
		<div class="lumise_content" style="width: 100%;padding: 34px 20px 14px;border: 2px solid #f1f1f1;">
			<div class="lumise-variation-btns">
				<button class="lumise-button" is="options-frame">
					<i class="fa fa-ellipsis-h"></i>
					<ul>
						<li data-frame-fn="copy"><?php echo esc_html($lumise->lang('Copy this designs config')); ?></li>
						<li data-frame-fn="paste"><?php echo esc_html($lumise->lang('Paste the copied config')); ?></li>
						<li data-frame-fn="apply"><?php echo esc_html($lumise->lang('Apply this for all variations')); ?></li>
						<li data-frame-fn="remove" style="color:#E91E63;"><?php echo esc_html($lumise->lang('Remove this Lumise config')); ?></li>
					</ul>
				</button>
				<button class="lumise-button" data-frame-fn="close">
					<i class="fa fa-sort-up" data-frame-fn="close"></i>
				</button>
			</div>
			<?php $lumise->views->tabs_render($fields, 'products'); ?>
		</div>
	</div>
<script>
	var LumiseDesign = {
		url : "<?php echo htmlspecialchars_decode($lumise->cfg->url); ?>",
		admin_url : "<?php echo htmlspecialchars_decode($lumise->cfg->admin_url); ?>",
		ajax : "<?php echo htmlspecialchars_decode($lumise->cfg->admin_ajax_url); ?>",
		assets : "<?php echo esc_js($lumise->cfg->assets_url); ?>",
		jquery : "<?php echo esc_js($lumise->cfg->load_jquery); ?>",
		nonce : "<?php echo esc_js(wp_create_nonce( 'lumise_admin_security' )); ?>",
		filter_ajax: function(ops) {
			return ops;
		},
		js_lang : <?php echo wp_json_encode($lumise->cfg->js_lang); ?>
	};
</script>
<script src="<?php echo esc_url(LW()->plugin_url() . '/assets/js/admin/vendors.js?version=' . LUMISE);?>"></script>
<script src="<?php echo esc_url(LW()->plugin_url() . '/assets/js/admin/main.js?version=' . LUMISE);?>"></script>
<?php $lumise->do_action('editor-footer'); ?>
<script type="text/javascript">
(function() {
	if($('body.LumiseDesign').width() <= 1000){
		$('body.LumiseDesign').css('overflow-y', 'scroll');
	}
	let fitIframe = () => {
			inp.val(
				encodeURIComponent(
					JSON.stringify({
						stages: enjson(lumise.product.get_stages($('#lumise-stages-wrp'))),
						printing: encodeURIComponent(JSON.stringify(lumise.product.get_printing(wrp)))
					})
				)
			).change();
		
			if (window.frameElement && !window.frameElement.getAttribute('data-full')) {
				window.frameElement.style.height = document.body.scrollHeight+'px';
				window.frameElement.parentNode.removeAttribute('data-loading');
			};
		},
		wrp = $('#lumise-product-page'),
		inp = window.parent.jQuery(window.parent.window['variable-lumise-<?php echo esc_js(absint($_GET['variation_id'])); ?>']),
		btn = window.parent.jQuery('#lumise-config-<?php echo  esc_js(absint($_GET['variation_id'])); ?>');
		
	$(document).on('click', (e) => {
		
		if (e.target.getAttribute && e.target.getAttribute('data-frame-fn')) {
			
			switch (e.target.getAttribute('data-frame-fn')) {
				case 'close' : 
					fitIframe();
					btn.parent().removeClass('hasFrame');
					return window.frameElement.parentNode.removeChild(window.frameElement);
				break;
				case 'remove' : 
					if (confirm('<?php echo esc_js($lumise->lang('Are you sure that you want to delete this config?')); ?>')) {
						inp.val('').change();
						btn.parent().attr('data-empty', 'true').removeClass('hasFrame');
						return window.frameElement.parentNode.removeChild(window.frameElement);
					} else return;
				break;
				case 'copy': 
					localStorage.setItem('LUMISE-VARIATION-COPY', 
						encodeURIComponent(
							JSON.stringify({
								stages: enjson(lumise.product.get_stages($('#lumise-stages-wrp'))),
								printing: encodeURIComponent(JSON.stringify(lumise.product.get_printing(wrp)))
							})
						)
					);
					alert('<?php echo esc_js($lumise->lang('Your design config has been copied!')); ?>');
				break;
				case 'paste': 
					if (!localStorage.getItem('LUMISE-VARIATION-COPY'))
						return alert('<?php echo esc_js($lumise->lang('Error, You must copy one config before pasting')); ?>');
					
					inp.val(localStorage.getItem('LUMISE-VARIATION-COPY')).change();
					window.frameElement.parentNode.removeChild(window.frameElement);
					
					btn.parent().attr('data-empty', 'false').removeClass('hasFrame');

					inp.val(localStorage.getItem('LUMISE-VARIATION-COPY')).change();
					
				break;
				case 'apply': 
					if (confirm('<?php 
						echo esc_js($lumise->lang('Are you sure that you want to apply this config to all other variations?')); 
					?>')) {
						
						let data = encodeURIComponent(
							JSON.stringify({
								stages: enjson(lumise.product.get_stages($('#lumise-stages-wrp'))),
								printing: encodeURIComponent(JSON.stringify(lumise.product.get_printing(wrp)))
							})
						);
						
						window.parent.jQuery('textarea.lumise-vari-inp').val(data);
						window.parent.jQuery('div.variable_lumise_data').attr('data-empty', 'false');
						window.parent.jQuery('div.variable_lumise_data iframe').each(function() {
							if (this !== window.frameElement) {
								$(this).parent().attr({'data-empty': 'false', 'is': 'nonempty'}).removeClass('hasFrame');
								$(this).remove();
							}
						});
						window.parent.jQuery('div#woocommerce-product-data').append(`<div class="UIloading blockUI blockOverlay" style="z-index: 1000; border: none; margin: 0px; padding: 0px; width: 100%; height: 100%; top: 0px; left: 0px; background: rgb(255, 255, 255); opacity: 0.6; cursor: wait; position: absolute;"></div>`);
						
						$.ajax({
							url: window.location.href,
							method: 'POST',
							data: {
								data	: data,
								apply_all_variations	: 1
							},
							success: (res) => {
								window.parent.jQuery('div#woocommerce-product-data div.UIloading').remove();
								window.parent.jQuery('div#variable_product_options div.toolbar button')
										.attr({'disabled': 'disabled'});
										
							}
						});
						
					}
				break;
			}
			
		};
		
		fitIframe();
		
		setTimeout(fitIframe, 1000);
		
	}).click();

})();
</script>
</body>
</html>