--- ../../uc_expiry-old/uc_expiry.module 2007-07-20 04:41:34.000000000 -0500 +++ uc_expiry.module 2007-11-17 14:23:01.000000000 -0600 @@ -346,16 +347,25 @@ function uc_expiry_order($op, $arg1, $st switch ($op) { // order status updated case 'update': - $order = uc_order_load($arg1); - + // newer versions of ubercart pass the new order object as $arg1 + // whereas older versions provide the order id. + if (is_object($arg1)) { + $order = $arg1; + } + else { + $order = uc_order_load($arg1); + } + + $oldstate = uc_order_status_data($order->order_status, 'state'); + $newstate = uc_order_status_data($status, 'state'); + // event: order payment accepted - if ($order->order_status <= uc_get_order_status_id('awaiting_payment') && $status >= uc_get_order_status_id('post_payment')) { + if ($oldstate != 'completed' && $newstate == 'completed') { foreach ($order->products as $product) { uc_expiry_product_payment_accepted($order, $product); } } - // event: previously accepted payment is cancelled - elseif ($order->order_status <= uc_get_order_status_id('post_payment') && $status >= uc_get_order_status_id('awaiting_payment')) { + else if ($newstate == 'canceled') { foreach ($order->products as $product) { uc_expiry_product_payment_cancelled($order, $product); }