cart_contents as $cart_item_key => $cart_item) { if ($cart_item['variation_id']) { $variation_id = $cart_item['variation_id']; } else { $variation_id = $cart_item['product_id']; } if (isset($cart_item["asowp_meta_data"])) { if (isset($cart_item['asowp_meta_data']["recaps"]['custom_price'])) { $item_price = apply_filters('asowp_cart_item_price', $cart_item['asowp_meta_data']["recaps"]['custom_price'], $variation_id); $cart_item['data']->set_price($item_price); } } // Ajout d'un filtre pour mettre à jour le prix total de l'element dans le panier. } } /** * */ public function asowp_change_product_image_in_cart($product_image_code, $values) { if (isset($values['asowp_meta_data']["recaps"])) { $previews = $values['asowp_meta_data']["recaps"]["designImages"]; if (isset($previews["face1"])) { $product_image_code = ""; } else { $product_image_code = ""; } return $product_image_code; } } public function display_previewBtn_editBtn_in_cart($cart_item) { $product = $cart_item['data']; $have_pages_settings = get_option("asowp_config_page"); // Construisez les URL pour les aperçus et les éditions (ajustez selon vos besoins) //$preview_url = get_permalink($product->get_id()); //$preview_data = get_transient( 'preview_' . $product->get_id() ); //$npd_product = new asowp_Product_Config( $product->get_id() ); $product_name = ''; if (isset($cart_item['asowp_meta_data']["recaps"])) { $modal_id = uniqid('asowp-recaps'); ob_start(); ?> get_id(); $product_meta_data = get_post_meta($product_id, 'product-asowp-metas', true); if (isset($product_meta_data[$product_id]['config-id']) && get_post($product_meta_data[$product_id]['config-id'])) { if (!empty($product_meta_data[$product_id]['config-id'])) { $configId = $product_meta_data[$product_id]['config-id']; $config = get_post_meta($configId, "asowp-configs-meta", true); if ($config["data"]["settings"]["generals"]["product"]["displayRecapsOnCheckout"]) { echo wp_kses_post($this->display_custom_recaps($cart_item['asowp_meta_data']["recaps"], false)); } } } } } } private function display_custom_recaps($recaps, $admin = true) { ob_start(); ?>
: :
$face) { ?>
;">
;">
$color) { ?>
isColorCode($color["codeHex"])) { ?>
;">
" style="position:absolute; width:100%; height:100;" />
isColorCode($recaps["sign"]["color"]["value"]["codeHex"])) { ?>
;">
" style="width:100px;" />
0) { ?>
$face) { ?>
$position) { ?>
$text) { ?>
$position) { ?>
0 && $admin) { ?>
$face) { ?>

$position) { ?>
$image) { ?>

$position) { ?>
0) { ?> $value) { ?>
0) { ?> $value) { ?>
$image) { ?>
$face) { foreach ($face as $key => $image) { ?>
id === 'customer_completed_order') { $items = $order->get_items(); foreach ($items as $item) { if (isset($item["asowp_meta_data"]['recaps'])) { if (isset($item["asowp_meta_data"]['zip'])) { array_push($attachments, str_replace(ASOWP_IMAGE_URL, ASOWP_IMAGE_PATH, $item["asowp_meta_data"]['zip'])); } } } } return $attachments; } /** * */ public function get_order_custom_admin_data($item_id, $item, $_product) { $order_data = wc_get_order_item_meta($item_id, 'asowp_meta_data'); $order_id = $item->get_order_id(); if ($order_id && isset($order_data) && !empty($order_data)) { echo wp_kses_post($this->display_custom_recaps($order_data["recaps"], true)); if (isset($order_data["zip"])) { ?>
" download>
$face) { foreach ($face as $key => $image) { array_push($uploads, $image["infos"]); } } } else { if (isset($order_data['recaps']['images']["value"])) { foreach ($order_data['recaps']['images']["value"] as $key => $image) { array_push($uploads, $image["infos"]); } } } $order_id = wc_get_order_id_by_order_item_id($_POST['item_id']); $asowp_zip_file = $this->asowp_zip_file($order_id, $_POST['item_id'], $order_data['recaps']["output"], $order_data['recaps']['designImages'], $uploads, $order_data["recaps"]["sign"]["size"]["value"]); $order_data['zip'] = $asowp_zip_file; wc_update_order_item_meta($_POST['item_id'], "asowp_meta_data", $order_data); wp_send_json(array( 'success' => true, )); } wp_send_json(array( 'success' => false, "message" => "No meta data found on item id" )); } wp_send_json(array( 'success' => false, "message" => "No item id found" )); } wp_send_json(array( 'success' => false, "message" => "nonce invalid" )); } /** * */ function capture_product_metadata_to_order($item, $cart_item_key, $values, $order) { $meta_key = 'asowp_meta_data'; if (isset($values[$meta_key])) { $item->update_meta_data($meta_key, $values[$meta_key]); } } /** * */ function mail_template($item_id, $item, $_product) { $order_data = wc_get_order_item_meta($item_id, 'asowp_meta_data'); /* if (isset($order_data) && !empty($order_data)) { if (is_account_page()) { echo wp_kses_post($this->display_custom_recaps($order_data["recaps"], true)); } } */ if (isset($order_data) && !empty($order_data)) { ob_start(); $recaps = $order_data["recaps"]; include ASOWP_INCLUDES . '/purchase-email.php'; echo wp_kses_post(ob_get_clean()); } } private function asowp_zip_file($order_id, $item_id, $output_settings, $previews, $uploads, $sizes) { $outputOptions = get_option("asowp_output_options", []); $upload_dirs = ASOWP_IMAGE_PATH; wp_mkdir_p($upload_dirs); if (isset($outputOptions["zipName"]) && $outputOptions["zipName"] == true) { if (isset($output_settings["prefix"]) && !empty($output_settings["prefix"])) { $zip_file = "/" . $output_settings["prefix"] . $order_id . "-$item_id.zip"; } else { $zip_file = "/" . $order_id . "-$item_id.zip"; } } else { if (isset($output_settings["prefix"]) && !empty($output_settings["prefix"])) { $zip_file = "/" . $output_settings["prefix"] . "asowp-$item_id.zip"; } else { $zip_file = "/" . "asowp-$item_id.zip"; } } if (!file_exists($upload_dirs . $zip_file)) { $zip = new ZipArchive(); if ($zip->open($upload_dirs . $zip_file, ZipArchive::CREATE) === TRUE) { foreach ($uploads as $index => $upload) { $file = ASOWP_IMAGE_PATH . DIRECTORY_SEPARATOR . $upload["name"]; if (file_exists($file)) { $file_content = file_get_contents($file); $zip->addFromString(basename($file), $file_content); wp_delete_file($file); } } preg_match('/^([\d.]+)\s*(\w*)$/', trim($sizes["width"]["value"]), $matches); $zip->close(); } } return ASOWP_IMAGE_URL . $zip_file; } private function convertToNumber($chaine) { preg_match('/^([\d.]+)\s*(\w*)$/', trim($chaine), $matches); if (count($matches) >= 2) { $nombre = floatval($matches[1]); $unite = isset($matches[2]) ? strtolower($matches[2]) : ''; switch ($unite) { case 'mm': return $nombre; case 'cm': return $nombre * 10; case 'm': return $nombre * 1000; case 'in': return $nombre * 25.4; default: return $nombre; } } else { return 0; } } }