Plugin Directory

Changeset 3461082


Ignore:
Timestamp:
02/13/2026 10:01:11 PM (3 weeks ago)
Author:
rermis
Message:

v1.0.6 = * Fix cart save when variation selected

Location:
view-carts/tags/1.0.6
Files:
3 copied

Legend:

Unmodified
Added
Removed
  • view-carts/tags/1.0.6/readme.txt

    r3417631 r3461082  
    66Requires at least: 6.6
    77Tested up to: 6.9
    8 Stable tag: 1.0.5
     8Stable tag: 1.0.6
    99
    1010A simple, fast, lightweight admin tool to share or recreate recent WooCommerce carts. Label carts, adjust pricing, and manage coupons.
     
    1818☑ **Custom Prices** — Enter a custom price per product
    1919
    20 ☑ **Coupon Editor** — Add/remove applied coupons for a saved cart
     20☑ **Coupon Updates** — Add/remove applied coupons for a saved cart
    2121
    2222☑ **Share/Open Cart Link** — Copy or open a cart link
     
    3737
    3838== Changelog ==
     39= 1.0.6 = * Fix cart save when variation selected
    3940= 1.0.5 = * Only display unexpired coupons in admin dropdown
    4041= 1.0.3 = * Public release
  • view-carts/tags/1.0.6/vc_functions.php

    r3417631 r3461082  
    99Author URI: https://richardlerma.com/contact/
    1010Requires Plugins: woocommerce
    11 Version: 1.0.5
     11Version: 1.0.6
    1212Text Domain: view-carts
    1313Copyright: (c) 2019-2025 rldd.net - All Rights Reserved
     
    1919
    2020function 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
    2837
    2938function wcvsc_cart_key(){return 'wcvsc_cart_'.wcvsc_sid();}
     
    6675function wcvsc_save_cart(){
    6776  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;
    6879  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);
    6981  $c=WC()->cart->get_cart();if(!$c)return;
    70   if(WC()->session&&!WC()->session->has_session())WC()->session->set_customer_session_cookie(true);
    7182  $ip=wcvsc_ip();
    7283  $k=wcvsc_cart_key();
     
    98109}
    99110add_action('woocommerce_cart_updated','wcvsc_save_cart');
     111add_action('woocommerce_update_cart_action_cart_updated','wcvsc_save_cart');
    100112add_action('woocommerce_add_to_cart','wcvsc_save_cart');
    101 add_action('woocommerce_remove_cart_item','wcvsc_save_cart');
     113add_action('woocommerce_cart_item_removed','wcvsc_save_cart');
     114add_action('woocommerce_cart_item_restored','wcvsc_save_cart');
     115add_action('woocommerce_after_cart_item_quantity_update','wcvsc_save_cart',10,4);
     116add_action('woocommerce_applied_coupon','wcvsc_save_cart');
     117add_action('woocommerce_removed_coupon','wcvsc_save_cart');
     118
    102119
    103120function wcvsc_adjust_cart_prices($cart){
     
    187204  wp_register_style('wcvsc_admin','',[],'1.0.1');
    188205  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}");
    190207  wp_register_script('wcvsc_admin','',[],'1.0.1',true);
    191208  wp_enqueue_script('wcvsc_admin');
     
    216233  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;}
    217234  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;
    219236    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);});
    221238  }
    222239});");
     
    327344function wcvsc_check_cart(){
    328345  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
    329350  if(function_exists('WC')&&WC()->session&&!WC()->session->has_session())WC()->session->set_customer_session_cookie(true);
    330351  if(!function_exists('WC')||!WC()->session||!method_exists(WC()->session,'get'))return;
    331352  $k=WC()->session->get('wcvsc_key');
    332353  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;
    334361  $u=get_transient("wcvsc_update_$k");
    335362  if($u){wcvsc_load_cart($k);delete_transient("wcvsc_update_$k");}
Note: See TracChangeset for help on using the changeset viewer.