Changeset 3461082
- Timestamp:
- 02/13/2026 10:01:11 PM (3 weeks ago)
- Location:
- view-carts/tags/1.0.6
- Files:
-
- 3 copied
-
. (copied) (copied from view-carts/trunk)
-
readme.txt (copied) (copied from view-carts/trunk/readme.txt) (3 diffs)
-
vc_functions.php (copied) (copied from view-carts/trunk/vc_functions.php) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
view-carts/tags/1.0.6/readme.txt
r3417631 r3461082 6 6 Requires at least: 6.6 7 7 Tested up to: 6.9 8 Stable tag: 1.0. 58 Stable tag: 1.0.6 9 9 10 10 A simple, fast, lightweight admin tool to share or recreate recent WooCommerce carts. Label carts, adjust pricing, and manage coupons. … … 18 18 ☑ **Custom Prices** — Enter a custom price per product 19 19 20 ☑ **Coupon Editor** — Add/remove applied coupons for a saved cart20 ☑ **Coupon Updates** — Add/remove applied coupons for a saved cart 21 21 22 22 ☑ **Share/Open Cart Link** — Copy or open a cart link … … 37 37 38 38 == Changelog == 39 = 1.0.6 = * Fix cart save when variation selected 39 40 = 1.0.5 = * Only display unexpired coupons in admin dropdown 40 41 = 1.0.3 = * Public release -
view-carts/tags/1.0.6/vc_functions.php
r3417631 r3461082 9 9 Author URI: https://richardlerma.com/contact/ 10 10 Requires Plugins: woocommerce 11 Version: 1.0. 511 Version: 1.0.6 12 12 Text Domain: view-carts 13 13 Copyright: (c) 2019-2025 rldd.net - All Rights Reserved … … 19 19 20 20 function wcvsc_sid(){ 21 if(function_exists('WC')&&WC()->session){ 22 $sid=WC()->session->get('wcvsc_sid'); 23 if(!$sid){$sid=bin2hex(random_bytes(8)).dechex(time());WC()->session->set('wcvsc_sid',$sid);} 24 return$sid; 25 } 26 return bin2hex(random_bytes(8)).dechex(time()); 27 } 21 static $sid=null;if($sid!==null)return$sid; 22 $sid=isset($_COOKIE['wcvsc_sid'])?sanitize_text_field(wp_unslash($_COOKIE['wcvsc_sid'])):''; 23 if(!$sid||!preg_match('/^[a-f0-9]{16,}$/',$sid))$sid=bin2hex(random_bytes(8)).dechex(time()); 24 $expiry=(int)get_option('wcvsc_cart_expiry',WEEK_IN_SECONDS); 25 $ok=[WEEK_IN_SECONDS,MONTH_IN_SECONDS,3*MONTH_IN_SECONDS,6*MONTH_IN_SECONDS,YEAR_IN_SECONDS]; 26 if(!in_array($expiry,$ok,true))$expiry=DAY_IN_SECONDS; 27 $exp=time()+$expiry; 28 if(empty($_COOKIE['wcvsc_sid'])||$_COOKIE['wcvsc_sid']!==$sid){ 29 if(PHP_VERSION_ID>=70300)setcookie('wcvsc_sid',$sid,['expires'=>$exp,'path'=>'/','secure'=>is_ssl(),'httponly'=>false,'samesite'=>'Lax']); 30 else setcookie('wcvsc_sid',$sid,$exp,'/',COOKIE_DOMAIN,is_ssl(),false); 31 $_COOKIE['wcvsc_sid']=$sid; 32 } 33 if(function_exists('WC')&&WC()->session)WC()->session->set('wcvsc_sid',$sid); 34 return$sid; 35 } 36 28 37 29 38 function wcvsc_cart_key(){return 'wcvsc_cart_'.wcvsc_sid();} … … 66 75 function wcvsc_save_cart(){ 67 76 if(is_admin()||wp_doing_cron()||!function_exists('WC')||!WC()->cart)return; 77 if(defined('REST_REQUEST')&&REST_REQUEST)return; 78 if(function_exists('wp_is_json_request')&&wp_is_json_request())return; 68 79 if(empty($_COOKIE['wcvsc_active'])||$_COOKIE['wcvsc_active']!=='1')return; 80 if(WC()->session&&!WC()->session->has_session())WC()->session->set_customer_session_cookie(true); 69 81 $c=WC()->cart->get_cart();if(!$c)return; 70 if(WC()->session&&!WC()->session->has_session())WC()->session->set_customer_session_cookie(true);71 82 $ip=wcvsc_ip(); 72 83 $k=wcvsc_cart_key(); … … 98 109 } 99 110 add_action('woocommerce_cart_updated','wcvsc_save_cart'); 111 add_action('woocommerce_update_cart_action_cart_updated','wcvsc_save_cart'); 100 112 add_action('woocommerce_add_to_cart','wcvsc_save_cart'); 101 add_action('woocommerce_remove_cart_item','wcvsc_save_cart'); 113 add_action('woocommerce_cart_item_removed','wcvsc_save_cart'); 114 add_action('woocommerce_cart_item_restored','wcvsc_save_cart'); 115 add_action('woocommerce_after_cart_item_quantity_update','wcvsc_save_cart',10,4); 116 add_action('woocommerce_applied_coupon','wcvsc_save_cart'); 117 add_action('woocommerce_removed_coupon','wcvsc_save_cart'); 118 102 119 103 120 function wcvsc_adjust_cart_prices($cart){ … … 187 204 wp_register_style('wcvsc_admin','',[],'1.0.1'); 188 205 wp_enqueue_style('wcvsc_admin'); 189 wp_add_inline_style('wcvsc_admin',".view-carts .cart-item-row{position:relative;padding:1em;margin-bottom:.5em;background:#343b3f1f;border-radius:5px;overflow:hidden;cursor:default}.view-carts .open-cart,.view-carts .copy-link,.view-carts .del-cart{background:#f0f0f1;border-color:#bcbcbc;color:#2c3338}.view-carts .open-cart:hover,.view-carts .copy-link:hover{background:#e6e7e9;border-color:#a7a7a7;color:#1d2327}.view-carts .del-cart:hover{background:#fff;border-color:red!important;color:red!important}.view-carts .button.view-order{background:#251bd1;border-color:#251bd1;color:#ddd!important;margin:1em 0}.view-carts .button.view-order:hover{background:#135e96!important;border-color:#135e96;color:#fff}.view-carts ::placeholder{font-weight:normal;opacity:.5}.view-carts .price-wrap{position:relative;float:right;margin:1em 0 0}.view-carts .currency-symbol{position:absolute;left:6px;top:50%;transform:translateY(-50%);opacity:.7}.view-carts .label-input{color:#3a3ae9!important;font-weight:bold;font-size:1.1em!important;border:1px solid #bcbcbc!important}.view-carts .price-input{text-align:right;width:8em}.view-carts .price-input,.label-input,.coupon-input{border-radius:3px;padding:.25em .45em;font-size:13px;box-sizing:border-box;transition:border-color .1s}.view-carts #wcvsc-expiry{border-radius:3px}.view-carts .price-input:not(.saved):hover,.price-input:not(.saved):focus,.coupon-input:not(.saved):hover,.coupon-input:not(.saved):focus,.label-input.hasval:not(.saved):hover,.label-input.hasval:not(.saved):focus,#wcvsc-expiry:not(.saved):hover,#wcvsc-expiry:not(.saved):focus{border-color:#1d5e8d!important;transform:scale(1.01);outline:none}.view-carts .saved,.label-input.saved,.label-input.hasval.saved,.label-input.saved:hover,.label-input.saved:focus{border-color:#4caf50!important;background-color:#00ff0026!important;transform:scale(1.01);}.view-carts .coupon-edit,.label-edit{display:flex;gap:.4em}.view-carts .coupon-edit{margin-top:.5em}.view-carts .label-edit{margin-bottom:.3em}.view-carts .coupon-edit input,.label-input{min-width:220px}.view-carts .wcvsc-expiry{float:right;margin:1em 0}.view-carts .button{border:1px solid #3a3ae9;background:#fff;border-radius:5px}.view-carts .button:not(.del-cart):hover,.view-carts .button:focus{color:#00f;border-color:#1d5e8d!important;background:#fff;transform:scale(1.01);outline:none}.view-carts td.cart-action .button{font-weight:normal!important;margin:0 .5em .5em 0}.view-carts .id-meta small a{color:#4d7ae2}.view-carts a:not(.button){color:#4d7ae2}.view-carts a:not(.button):hover{color:#00f!important}");206 wp_add_inline_style('wcvsc_admin',".view-carts .cart-item-row{position:relative;padding:1em;margin-bottom:.5em;background:#343b3f1f;border-radius:5px;overflow:hidden;cursor:default}.view-carts tr.wcvsc-del>td{background:#ff00001f!important}.view-carts .open-cart,.view-carts .copy-link,.view-carts .del-cart{background:#f0f0f1;border-color:#bcbcbc;color:#2c3338}.view-carts .open-cart:hover,.view-carts .copy-link:hover{background:#e6e7e9;border-color:#a7a7a7;color:#1d2327}.view-carts .del-cart:hover{background:#fff;border-color:red!important;color:red!important}.view-carts .button.view-order{background:#251bd1;border-color:#251bd1;color:#ddd!important;margin:1em 0}.view-carts .button.view-order:hover{background:#135e96!important;border-color:#135e96;color:#fff}.view-carts ::placeholder{font-weight:normal;opacity:.5}.view-carts .price-wrap{position:relative;float:right;margin:1em 0 0}.view-carts .currency-symbol{position:absolute;left:6px;top:50%;transform:translateY(-50%);opacity:.7}.view-carts .label-input{color:#3a3ae9!important;font-weight:bold;font-size:1.1em!important;border:1px solid #bcbcbc!important}.view-carts .price-input{text-align:right;width:8em}.view-carts .price-input,.label-input,.coupon-input{border-radius:3px;padding:.25em .45em;font-size:13px;box-sizing:border-box;transition:border-color .1s}.view-carts #wcvsc-expiry{border-radius:3px}.view-carts .price-input:not(.saved):hover,.price-input:not(.saved):focus,.coupon-input:not(.saved):hover,.coupon-input:not(.saved):focus,.label-input.hasval:not(.saved):hover,.label-input.hasval:not(.saved):focus,#wcvsc-expiry:not(.saved):hover,#wcvsc-expiry:not(.saved):focus{border-color:#1d5e8d!important;transform:scale(1.01);outline:none}.view-carts .saved,.label-input.saved,.label-input.hasval.saved,.label-input.saved:hover,.label-input.saved:focus{border-color:#4caf50!important;background-color:#00ff0026!important;transform:scale(1.01);}.view-carts .coupon-edit,.label-edit{display:flex;gap:.4em}.view-carts .coupon-edit{margin-top:.5em}.view-carts .label-edit{margin-bottom:.3em}.view-carts .coupon-edit input,.label-input{min-width:220px}.view-carts .wcvsc-expiry{float:right;margin:1em 0}.view-carts .button{border:1px solid #3a3ae9;background:#fff;border-radius:5px}.view-carts .button:not(.del-cart):hover,.view-carts .button:focus{color:#00f;border-color:#1d5e8d!important;background:#fff;transform:scale(1.01);outline:none}.view-carts td.cart-action .button{font-weight:normal!important;margin:0 .5em .5em 0}.view-carts .id-meta small a{color:#4d7ae2}.view-carts a:not(.button){color:#4d7ae2}.view-carts a:not(.button):hover{color:#00f!important}"); 190 207 wp_register_script('wcvsc_admin','',[],'1.0.1',true); 191 208 wp_enqueue_script('wcvsc_admin'); … … 216 233 var c=e.target.closest('.copy-link');if(c){navigator.clipboard&&navigator.clipboard.writeText(c.dataset.url).then(()=>{c.disabled=1;var t=c.textContent;c.textContent='Copied';setTimeout(()=>{c.disabled=0;c.textContent=t},800)});return;} 217 234 var del=e.target.closest('.del-cart'); 218 if(del){if(!confirm('Delete this saved cart?'))return;235 if(del){if(!confirm('Delete this saved cart?\\n\\nThis only removes it from the admin list and does not affect the customer cart.'))return; 219 236 var f=new FormData();f.append('action','wcvsc_del_cart');f.append('k',del.dataset.key);f.append('_ajax_nonce',wcvsc_nonce); 220 fetch(ajaxurl,{method:'POST',body:f,credentials:'same-origin'}).then(()=>{var r=del.closest('tr') ,tb=r&&r.parentNode;del.disabled=1;tb&&tb.removeChild(r);if(!document.querySelector('.view-carts tbody tr')){var tr=document.createElement('tr');tr.innerHTML='<td colspan=\"4\">No recent carts.</td>';document.querySelector('.view-carts tbody').appendChild(tr);}});237 fetch(ajaxurl,{method:'POST',body:f,credentials:'same-origin'}).then(()=>{var r=del.closest('tr');if(!r)return;del.disabled=1;r.classList.add('wcvsc-del');r.style.transition='opacity .15s,transform .45s';r.style.transformOrigin='top';r.style.opacity='1';r.style.transform='scaleY(1)';setTimeout(()=>{r.style.opacity='0';r.style.transform='scaleY(0)';},20);setTimeout(()=>{var tb=r.parentNode;tb&&tb.removeChild(r);if(!document.querySelector('.view-carts tbody tr')){var tr=document.createElement('tr');tr.innerHTML='<td colspan=\"4\">No recent carts.</td>';document.querySelector('.view-carts tbody').appendChild(tr);}},500);}); 221 238 } 222 239 });"); … … 327 344 function wcvsc_check_cart(){ 328 345 if(is_admin()||wp_doing_cron()||!function_exists('WC')||!WC()->cart)return; 346 $uri=$_SERVER['REQUEST_URI']??''; 347 if($uri&&(stripos($uri,'/wp-json/wc/store/')!==false||stripos($uri,'/wc/store/')!==false))return; 348 if(!empty($_GET['rest_route'])&&stripos((string)$_GET['rest_route'],'/wc/store/')!==false)return; 349 329 350 if(function_exists('WC')&&WC()->session&&!WC()->session->has_session())WC()->session->set_customer_session_cookie(true); 330 351 if(!function_exists('WC')||!WC()->session||!method_exists(WC()->session,'get'))return; 331 352 $k=WC()->session->get('wcvsc_key'); 332 353 if(!$k)return; 333 $c=WC()->cart->get_cart();if(!$c)return; 354 $c=[]; 355 if(function_exists('WC')&&WC()->session&&method_exists(WC()->session,'get')){ 356 $sc=WC()->session->get('cart'); 357 if(is_array($sc)&&$sc)$c=$sc; 358 } 359 if(!$c)$c=WC()->cart->get_cart(); 360 if(!$c)return; 334 361 $u=get_transient("wcvsc_update_$k"); 335 362 if($u){wcvsc_load_cart($k);delete_transient("wcvsc_update_$k");}
Note: See TracChangeset
for help on using the changeset viewer.