Changeset 3410294
- Timestamp:
- 12/04/2025 02:26:33 AM (3 months ago)
- Location:
- pb-shipping/tags/5.0.19
- Files:
-
- 2 edited
- 4 copied
-
. (copied) (copied from pb-shipping/trunk)
-
pb_functions.php (copied) (copied from pb-shipping/trunk/pb_functions.php) (12 diffs)
-
pb_queue.php (copied) (copied from pb-shipping/trunk/pb_queue.php) (6 diffs)
-
pb_report.php (modified) (1 diff)
-
pb_ship.php (modified) (1 diff)
-
readme.txt (copied) (copied from pb-shipping/trunk/readme.txt) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
pb-shipping/tags/5.0.19/pb_functions.php
r3360685 r3410294 6 6 Author: RLDD 7 7 Author URI: https://richardlerma.com/contact/ 8 Version: 5.0.1 88 Version: 5.0.19 9 9 Copyright: (c) 2020-2025 rldd.net - All Rights Reserved 10 10 License: GPLv3 or later 11 11 License URI: http://www.gnu.org/licenses/gpl-3.0.html 12 12 WC requires at least: 8.0 13 WC tested up to: 10. 113 WC tested up to: 10.3 14 14 */ 15 15 16 global $espb_version; $espb_version='5.0.1 8';16 global $espb_version; $espb_version='5.0.19'; 17 17 if(!defined('ABSPATH')) exit; 18 18 … … 737 737 } 738 738 739 add_action('woocommerce_thankyou',function($order_id){ 740 if(!$order_id)return; 741 update_option('pb_refresh',time()); 742 },10,1); 743 744 add_action('wp_ajax_pb_latest_order','pb_latest_order'); 745 function pb_latest_order(){if(!current_user_can('edit_shop_orders'))wp_die('0');echo(int)get_option('pb_refresh',0);wp_die();} 746 747 739 748 function espb_order_data($order_id) { 740 749 if(!$order_id>0) return; … … 752 761 ,(SELECT GROUP_CONCAT(DISTINCT REPLACE(meta_key,'_pb_label_meta_','')) FROM wp_postmeta WHERE post_id=o.ID AND meta_key LIKE '_pb_label_meta_%' AND LENGTH(meta_value)>6)label_history 753 762 ,LEFT(o.date_created_gmt,10)date_created 754 ,REPLACE(GROUP_CONCAT(DISTINCT CONCAT('<li class=\'itm\' id=\'',p.ID,'x',po.product_qty+IFNULL(pr.product_qty,0),'\' onclick=\'toggle_item(this);\' title=\'',IFNULL(a.length,0),'x',IFNULL(a.width,0),'x',IFNULL(a.height,0),'\\n',a.weight,'$weight_unit','\'>',po.product_qty+IFNULL(pr.product_qty,0),' x ',p.post_title ) SEPARATOR ';'),';','')product_list763 ,REPLACE(GROUP_CONCAT(DISTINCT CONCAT('<li class=\'itm\' id=\'',p.ID,'x',po.product_qty+IFNULL(pr.product_qty,0),'\' onclick=\'toggle_item(this);\' title=\'',IFNULL(a.length,0),'x',IFNULL(a.width,0),'x',IFNULL(a.height,0),'\\n',a.weight,'$weight_unit','\'>',po.product_qty+IFNULL(pr.product_qty,0),' x ',p.post_title,a.meta) SEPARATOR ';'),';','')product_list 755 764 ,GROUP_CONCAT(DISTINCT CONCAT(IFNULL(NULLIF(po.variation_id,0),po.product_id),'x',po.product_qty+IFNULL(pr.product_qty,0)))variation_cache 756 765 ,GROUP_CONCAT(CONCAT(po.product_id,'x',po.product_qty+IFNULL(pr.product_qty,0)))product_cache … … 783 792 LEFT JOIN ( 784 793 SELECT IFNULL(NULLIF(po.variation_id,0),po.product_id) product_id 794 ,(SELECT CONCAT('<div class=\'meta\'>',GROUP_CONCAT(DISTINCT CONCAT(UCASE(SUBSTRING(m.meta_key,1,1)),SUBSTRING(m.meta_key,2),':',m.meta_value) SEPARATOR ' | '),'</div>') FROM wp_wc_order_product_lookup pl JOIN wp_woocommerce_order_itemmeta m ON m.order_item_id=pl.order_item_id WHERE pl.order_item_id=po.order_item_id AND pl.variation_id=IFNULL(NULLIF(po.variation_id,0),po.product_id) AND m.meta_key NOT LIKE '\_%' AND m.meta_value IS NOT NULL)meta 785 795 ,IFNULL((SELECT NULLIF(NULLIF(meta_value,''),0) FROM wp_postmeta WHERE post_id=NULLIF(po.variation_id,0) AND meta_key='_weight'),(SELECT NULLIF(NULLIF(meta_value,''),0) FROM wp_postmeta WHERE post_id=NULLIF(po.product_id,0) AND meta_key='_weight'))weight 786 796 ,IFNULL((SELECT NULLIF(NULLIF(meta_value,''),0) FROM wp_postmeta WHERE post_id=NULLIF(po.variation_id,0) AND meta_key='_length'),(SELECT NULLIF(NULLIF(meta_value,''),0) FROM wp_postmeta WHERE post_id=NULLIF(po.product_id,0) AND meta_key='_length'))length … … 802 812 ,(SELECT GROUP_CONCAT(DISTINCT REPLACE(meta_key,'_pb_label_meta_','')) FROM wp_postmeta WHERE post_id=o.ID AND meta_key LIKE '_pb_label_meta_%' AND LENGTH(meta_value)>6)label_history 803 813 ,LEFT(o.post_date,10)date_created 804 ,REPLACE(GROUP_CONCAT(DISTINCT CONCAT('<li class=\'itm\' id=\'',p.ID,'x',po.product_qty+IFNULL(pr.product_qty,0),'\' onclick=\'toggle_item(this);\' title=\'',IFNULL(a.length,0),'x',IFNULL(a.width,0),'x',IFNULL(a.height,0),'\\n',a.weight,'$weight_unit','\'>',po.product_qty+IFNULL(pr.product_qty,0),' x ',p.post_title, CASE WHEN p.post_parent>0 AND p.post_title NOT LIKE CONCAT('%',RIGHT(p.post_excerpt,LOCATE(':',REVERSE(p.post_excerpt))-1)) THEN IFNULL(CONCAT('<br>',p.post_excerpt),'') ELSE '' END) SEPARATOR ';'),';','')product_list814 ,REPLACE(GROUP_CONCAT(DISTINCT CONCAT('<li class=\'itm\' id=\'',p.ID,'x',po.product_qty+IFNULL(pr.product_qty,0),'\' onclick=\'toggle_item(this);\' title=\'',IFNULL(a.length,0),'x',IFNULL(a.width,0),'x',IFNULL(a.height,0),'\\n',a.weight,'$weight_unit','\'>',po.product_qty+IFNULL(pr.product_qty,0),' x ',p.post_title,a.meta,CASE WHEN p.post_parent>0 AND p.post_title NOT LIKE CONCAT('%',RIGHT(p.post_excerpt,LOCATE(':',REVERSE(p.post_excerpt))-1)) THEN IFNULL(CONCAT('<br>',p.post_excerpt),'') ELSE '' END) SEPARATOR ';'),';','')product_list 805 815 ,GROUP_CONCAT(DISTINCT CONCAT(IFNULL(NULLIF(po.variation_id,0),po.product_id),'x',po.product_qty+IFNULL(pr.product_qty,0)))variation_cache 806 816 ,GROUP_CONCAT(CONCAT(po.product_id,'x',po.product_qty+IFNULL(pr.product_qty,0)))product_cache … … 834 844 LEFT JOIN ( 835 845 SELECT IFNULL(NULLIF(po.variation_id,0),po.product_id) product_id 846 ,(SELECT CONCAT('<div class=\'meta\'>',GROUP_CONCAT(DISTINCT CONCAT(UCASE(SUBSTRING(m.meta_key,1,1)),SUBSTRING(m.meta_key,2),':',m.meta_value) SEPARATOR ' | '),'</div>') FROM wp_wc_order_product_lookup pl JOIN wp_woocommerce_order_itemmeta m ON m.order_item_id=pl.order_item_id WHERE pl.order_item_id=po.order_item_id AND pl.variation_id=IFNULL(NULLIF(po.variation_id,0),po.product_id) AND m.meta_key NOT LIKE '\_%' AND m.meta_value IS NOT NULL)meta 836 847 ,IFNULL((SELECT NULLIF(NULLIF(meta_value,''),0) FROM wp_postmeta WHERE post_id=NULLIF(po.variation_id,0) AND meta_key='_weight'),(SELECT NULLIF(NULLIF(meta_value,''),0) FROM wp_postmeta WHERE post_id=NULLIF(po.product_id,0) AND meta_key='_weight'))weight 837 848 ,IFNULL((SELECT NULLIF(NULLIF(meta_value,''),0) FROM wp_postmeta WHERE post_id=NULLIF(po.variation_id,0) AND meta_key='_length'),(SELECT NULLIF(NULLIF(meta_value,''),0) FROM wp_postmeta WHERE post_id=NULLIF(po.product_id,0) AND meta_key='_length'))length … … 841 852 WHERE po.order_id=$order_id 842 853 )a ON a.product_id=IFNULL(NULLIF(po.variation_id,0),po.product_id) 843 LEFT JOIN wp_posts p ON p.ID= IFNULL(NULLIF(po.variation_id,0),po.product_id)854 LEFT JOIN wp_posts p ON p.ID=po.product_id 844 855 WHERE o.post_type IN ('shop_order','import_order') 845 856 AND o.post_status IN ('wc-processing','wc-completed') … … 1544 1555 .pb_rpt td a.pb_remove{background:transparent!important;border:none!important;color:#ddd!important} 1545 1556 .pb_rpt td a.pb_remove:hover{color:#fff!important;background:red!important} 1557 .pb_rpt .prd{margin-bottom:1em} 1558 .prd .meta,.itm .meta{font-size:.9em;padding:.5em 0 0 1em} 1546 1559 .module.slip .logo{display:block;margin:0 0 1em} 1547 1560 .module .title{float:left;margin:-1.05em -2.7em;background:var(--bg_mod_clr);padding:1em .25em;color:var(--txt_clr);border:1px solid #555;border-left:none;font-family:sans-serif;writing-mode:vertical-lr;-webkit-transform:rotate(-180deg)} … … 1864 1877 1865 1878 foreach($shipments as $s) { 1866 $exception=$reship= $rtn_del=0;1879 $exception=$reship=0; 1867 1880 $max_id=$s->meta_id; 1868 $msg=$sms=$phone=$new_status=$status=$rtn_ accp='';1881 $msg=$sms=$phone=$new_status=$status=$rtn_sent=$rtn_del=$delivery_date=''; 1869 1882 $dir=$s->dir; 1870 1883 $fname=ucwords(strtolower($s->fname)); … … 1889 1902 if(!empty($new_status) && $new_status!=$status) { 1890 1903 1891 if($dir=='outbound' && $channel=='shop_order' && stripos('InTransit,Acceptance',$new_status)!==false) {1904 if($dir=='outbound' && $channel=='shop_order' && (stripos($new_status,'InTransit')!==false || stripos($new_status,'Acceptance')!==false)) { 1892 1905 if($order_status=='wc-completed' && $email_updates>0 && empty(get_transient("completed_email_sent_$order_id")) && (stripos('Manifest,Pending',$status)!==false || empty($status))) { // Send Tracking email for reships 1893 1906 if($to==$email || stripos($email,'@')===false) continue; … … 1918 1931 if($exception>0 && $admin_exc_updates>0) { 1919 1932 $subject=$msg; 1920 $body="Hi PB Shipping Admin,<br><br>$msg<br><br>$carrier tracking number: <a href='$track_url' target='_blank'>$tracking_num</a><br><br>This is an automated notification related to order ID $order_id.";1933 $body="Hi Shipper,<br><br>$msg<br><br>$carrier tracking number: <a href='$track_url' target='_blank'>$tracking_num</a><br><br>This is an automated notification related to order ID $order_id."; 1921 1934 wp_mail($admin_email,$subject,$body,$headers); //$to,$subject,$body,$headers 1922 1935 } … … 1941 1954 } 1942 1955 1943 if($dir=='inbound' && stripos('InTransit,Acceptance,Delivered',$new_status)!==false) {1956 if($dir=='inbound' && (stripos($new_status,'InTransit')!==false || stripos($new_status,'Acceptance')!==false || stripos($new_status,'Delivered')!==false)) { 1944 1957 if(stripos($new_status,',')!==false) {$delivery_date=substr($new_status,-10); $new_status=str_replace(", $delivery_date","",$new_status);} 1958 if(empty($delivery_date)) $delivery_date=get_post_meta($order_id,"delivery_est_days"); 1945 1959 if(function_exists('espb_track_url')) $track_url=espb_track_url('',$tracking_num); else $track_url="https://parcelsapp.com/en/tracking/$tracking_num"; 1946 1960 $new_status=trim(preg_replace('/(?<!\ )[A-Z]/',' $0',$new_status)); // Parse into separate words 1947 1948 if(stripos($new_status,'Delivered')!==false) {$msg="Your $site_name return has been $new_status!";$rtn_del=1;} 1949 elseif(stripos($new_status,'Acceptance')!==false) $msg="Your $site_name return is now in transit."; 1950 elseif(stripos($new_status,'InTransit')!==false) $msg="Your $site_name return is now in transit."; 1951 if(empty($msg)) {$msg="Your $site_name shipment has a new event, $new_status:";$rtn_del=1;} 1952 1953 if($admin_rtn_updates>0) { 1961 $rtn_sent=get_transient("return_sent_$order_id"); 1962 $rtn_del=get_transient("return_del_$order_id"); 1963 1964 if(stripos($new_status,'Delivered')!==false) {$msg="Your $site_name return has been $new_status!"; if(empty($rtn_del)){$rtn_del=$current_time;set_transient("return_del_$order_id",$current_time,604800);}} 1965 elseif(stripos($new_status,'Acceptance')!==false) {$msg="Your $site_name return is now in transit."; if(empty($rtn_sent)){$rtn_sent=$current_time;set_transient("return_sent_$order_id",$current_time,604800);}} 1966 elseif(stripos($new_status,'InTransit')!==false) {$msg="Your $site_name return is now in transit."; if(empty($rtn_sent)){$rtn_sent=$current_time;set_transient("return_sent_$order_id",$current_time,604800);}} 1967 if(empty($msg)) {$msg="Your $site_name shipment has a new event, $new_status";} 1968 1969 if($admin_rtn_updates>0 && ($rtn_sent==$current_time || $rtn_del==$current_time)) { 1954 1970 $subject=$msg; 1955 $body="Hi PB Shipping Admin,<br><br>$msg<br><br>$carrier tracking number: <a href='$track_url' target='_blank'>$tracking_num</a><br><br>This is an automated notification related to order ID $order_id."; 1971 if(!empty($delivery_date)) $msg.=", estimated delivery: $delivery_date."; 1972 $body="Hi Shipper,<br><br>$msg<br><br>$carrier tracking number: <a href='$track_url' target='_blank'>$tracking_num</a><br><br>This is an automated notification related to order ID $order_id."; 1956 1973 wp_mail($admin_email,$subject,$body,$headers); //$to,$subject,$body,$headers 1957 $rtn_accp=get_transient("completed_return_sent_$order_id");1958 1974 } 1959 1975 1960 if(empty($rtn_del) && empty($rtn_accp) && $channel=='shop_order' && ($sms_rtn_updates>0 || $email_rtn_updates>0)) { 1961 set_transient("completed_return_sent_$order_id",$current_time,604800); 1976 if($channel=='shop_order' && ($sms_rtn_updates>0 || $email_rtn_updates>0) && $rtn_sent==$current_time) { 1962 1977 if($sms_rtn_updates>0 && strlen($phone)>=10 && date('H',$now)<20) { 1963 1978 $sms="$msg $track_url"; -
pb-shipping/tags/5.0.19/pb_queue.php
r3325152 r3410294 1 1 <?php if(!defined('ABSPATH')) exit; 2 2 3 3 function espb_queue() { 4 4 if(!is_user_logged_in()) {header("Location: ".site_url()."/wp-login.php?redirect_to=".urlencode($_SERVER['REQUEST_URI'])); exit();} … … 81 81 END cutoff 82 82 ,DATE_FORMAT(post_date,'%b %e, %Y<br>%r')order_date 83 ,GROUP_CONCAT(DISTINCT item SEPARATOR '<br>')items 83 ,GROUP_CONCAT(DISTINCT CASE 84 WHEN IFNULL(meta,'')='' THEN item 85 WHEN '$product_id'='variation_id' THEN CONCAT('<span>',item,'<div class=\'meta\'>',REPLACE(meta,' ','<br>'),'</div></span>') 86 ELSE CONCAT('<span title=\"',REPLACE(meta,'\"','"'),'\">',item,'</span>') 87 END SEPARATOR '<br>')items 84 88 ,method 85 89 ,delivery_est … … 89 93 SELECT o.ID, o2.post_type 90 94 ,o.post_date 91 ,REPLACE(CONCAT((SELECT DISTINCT post_title FROM wp_posts WHERE ID= COALESCE(NULLIF(op.$product_id,0),ip.$product_id,op.product_id)),'(',SUM(IFNULL(op.product_qty,ip.product_qty)),')'),'(1)','')item95 ,REPLACE(CONCAT((SELECT DISTINCT post_title FROM wp_posts WHERE ID=op.product_id),'(',SUM(IFNULL(op.product_qty,ip.product_qty)),')'),'(1)','')item 92 96 ,o2.reship 93 97 ,IFNULL((SELECT meta_value FROM wp_postmeta WHERE post_id=o.ID AND meta_key='shipping' LIMIT 1),(SELECT order_item_name FROM wp_woocommerce_order_items WHERE order_id=o.ID AND order_item_type='shipping' LIMIT 1))method 94 98 ,(SELECT NULLIF(m.meta_value,0) FROM wp_woocommerce_order_items oi JOIN wp_woocommerce_order_itemmeta m ON m.order_item_id=oi.order_item_id AND m.meta_key='cost' WHERE oi.order_id=o.ID AND oi.order_item_type='shipping' LIMIT 1)cost 99 ,(SELECT GROUP_CONCAT(DISTINCT CONCAT(UCASE(SUBSTRING(m.meta_key,1,1)),SUBSTRING(m.meta_key,2),': ',m.meta_value) SEPARATOR ' ') FROM wp_wc_order_product_lookup pl JOIN wp_woocommerce_order_itemmeta m ON m.order_item_id=pl.order_item_id WHERE pl.order_id=o.ID AND pl.variation_id=COALESCE(NULLIF(op.variation_id,0),ip.variation_id,0) AND m.meta_key NOT LIKE '\_%' AND m.meta_value IS NOT NULL)meta 95 100 ,(SELECT meta_value FROM wp_postmeta WHERE meta_key='delivery_est' AND post_id=o.ID LIMIT 1)delivery_est 96 101 FROM wp_posts o … … 144 149 END cutoff 145 150 ,DATE_FORMAT(post_date,'%b %e, %Y<br>%r')order_date 146 ,GROUP_CONCAT(DISTINCT item SEPARATOR '<br>')items 151 ,GROUP_CONCAT(DISTINCT CASE 152 WHEN IFNULL(meta,'')='' THEN item 153 WHEN '$product_id'='variation_id' THEN CONCAT('<div class=\'prd\'>',item,'<div class=\'meta\'>',REPLACE(meta,' ','<br>'),'</div></div>') 154 ELSE CONCAT('<div class=\'prd\' title=\"',REPLACE(meta,'\"','"'),'\">',item,'</div>') 155 END SEPARATOR '<br>')items 147 156 ,method 148 157 ,delivery_est … … 152 161 SELECT o.ID, post_type 153 162 ,o.post_date 154 ,REPLACE(CONCAT((SELECT DISTINCT post_title FROM wp_posts WHERE ID= COALESCE(NULLIF(op.$product_id,0),ip.$product_id,op.product_id)),'(',SUM(IFNULL(op.product_qty,ip.product_qty)),')'),'(1)','')item163 ,REPLACE(CONCAT((SELECT DISTINCT post_title FROM wp_posts WHERE ID=op.product_id),'(',SUM(IFNULL(op.product_qty,ip.product_qty)),')'),'(1)','')item 155 164 ,o2.reship 156 165 ,IFNULL((SELECT meta_value FROM wp_postmeta WHERE post_id=o.ID AND meta_key='shipping' LIMIT 1),(SELECT order_item_name FROM wp_woocommerce_order_items WHERE order_id=o.ID AND order_item_type='shipping' LIMIT 1))method 157 166 ,(SELECT NULLIF(m.meta_value,0) FROM wp_woocommerce_order_items oi JOIN wp_woocommerce_order_itemmeta m ON m.order_item_id=oi.order_item_id AND m.meta_key='cost' WHERE oi.order_id=o.ID AND oi.order_item_type='shipping' LIMIT 1)cost 167 ,(SELECT GROUP_CONCAT(DISTINCT CONCAT(UCASE(SUBSTRING(m.meta_key,1,1)),SUBSTRING(m.meta_key,2),': ',m.meta_value) SEPARATOR ' ') FROM wp_wc_order_product_lookup pl JOIN wp_woocommerce_order_itemmeta m ON m.order_item_id=pl.order_item_id WHERE pl.order_id=o.ID AND pl.variation_id=COALESCE(NULLIF(op.variation_id,0),ip.variation_id,0) AND m.meta_key NOT LIKE '\_%' AND m.meta_value IS NOT NULL)meta 158 168 ,(SELECT meta_value FROM wp_postmeta WHERE meta_key='delivery_est' AND post_id=o.ID LIMIT 1)delivery_est 159 169 FROM wp_posts o … … 234 244 <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=2.0"> 235 245 <meta name='robots' content='noindex,nofollow'> 236 <meta http-equiv='refresh' content='120;url=?page=pb-queue'> 246 <?php $last_change=(int)get_option('pb_refresh',0); ?> 247 <script>pb_last_change=<?php echo $last_change;?>;setInterval(()=>{fetch(ajaxurl+'?action=pb_latest_order').then(r=>r.text()).then(t=>{if(+t!=pb_last_change)location.reload()})},300000);</script> 237 248 <script type='text/javascript'> 238 249 function pb_qicon(msg=0) { -
pb-shipping/tags/5.0.19/pb_report.php
r3194351 r3410294 167 167 <td>$client_facility_name</td> 168 168 <td nowrap>$label_dt</td> 169 <td nowrap onclick=\" sdate$order_id.style.display='block';sdate$order_id.focus();\">$ship_dt <input title='Press enter to save' type='search' id='sdate$order_id' onchange='ship_dt($order_id,this.value)'; required value='$ship_dt' style='display:none'></td>169 <td nowrap onclick=\"document.getElementById('sdate$order_id').style.display='block';sdate$order_id.focus();\">$ship_dt <input title='Press enter to save' type='search' id='sdate$order_id' onchange='ship_dt($order_id,this.value)'; required value='$ship_dt' style='display:none'></td> 170 170 <td onclick=\"window.open('".admin_url('admin.php?page=pb-ship&order_id=')."$order_id&override=1','Ship','width=780,height=1005,resizable=yes,scrollbars=yes');\"><span class='dashicons dashicons-external'></span> $order_id</td> 171 171 <td align='right'>{$oz}$weight_unit<br>$$cost</td> -
pb-shipping/tags/5.0.19/pb_ship.php
r3194351 r3410294 302 302 $cache_key="$carrier-$serviceid-$sopt-$parceltype-$adj_ins_value-$length-x-$width-x-$height-$weight-$services-$ins_value-$induction_zip-$city-$state-$zip-$rtn"; 303 303 $label=espb_ship($order_id,$cache_key,$shipment,$client_facility_id,$env,$carrier,$services,$pending,$rtn); 304 if($submit_type==1&&$label&&!stripos($label,'error code'))update_option('pb_refresh',time()); 304 305 } 305 306 } -
pb-shipping/tags/5.0.19/readme.txt
r3360685 r3410294 5 5 License URI: http://www.gnu.org/licenses/gpl-3.0.html 6 6 Requires at least: 4.6 7 Tested up to: 6. 88 Stable tag: 5.0.1 87 Tested up to: 6.9 8 Stable tag: 5.0.19 9 9 10 10 A streamlined US shipping solution for WooCommerce and Pitney Bowes. … … 37 37 38 38 == Changelog == 39 = 5.0.19 = * Compatibility with WC 10.3. Variation improvements to queue and packing slip. 39 40 = 5.0.18 = * Compatibility with WC 10.1. 40 41 = 5.0.17 = * Updates to allow 4 digit ins values.
Note: See TracChangeset
for help on using the changeset viewer.