X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=lib%2Forder.php;h=74306d918d8f1d72502fe5f22ab6ab6f36e3e453;hb=cf4cf65ff0e729c6ba52cede471b7c5ae2b837ba;hp=40b645debb0375e522add4bbc49cf46d5d82d2dc;hpb=b0b9828b27e140f88fb0b7867388376b329959cc;p=readifood.git diff --git a/lib/order.php b/lib/order.php index 40b645d..74306d9 100644 --- a/lib/order.php +++ b/lib/order.php @@ -244,7 +244,14 @@ echo "\n"; echo " Delivery\n"; /* XXX: Find suitable dates from area. */ - echo " "; show_date_form("date", $order->getDate()); echo "\n"; + echo " "; + show_date_form("date", $order->getDate()); + if (! $order->getDate()) { + echo " and recur for weeks"; + } + echo "\n"; echo "\n"; /* Referrer. */ @@ -373,7 +380,11 @@ $state = $_POST['state']; if (! $state) $state = $GLOBALS['STATE_PLACED']; - if (! $date) $date = time(); + if ($date) { + list($y, $m, $d) = explode('-', $date); + $then = mktime(0, 0, 0, $m, $d, $y); + } + else $then = time(); /* XXX: check date */ $requester = get_contact_by_id($requester_id); @@ -401,28 +412,41 @@ return false; } - $order->setDate($date); - $order->setRequesterId($requester_id); - $order->setBeneficiaryId($beneficiary_id); - $order->setHubId($hub_id); - $order->setQuantity($quantity); + if ($new && isset($_POST['recurrence'])) $recurrence = $_POST['recurrence']; + if (! $recurrence) $recurrence = 0; - try { - $order->save(); + $now = time(); + for ($i = 0; $i <= $recurrence; $i++) { + if ($i) { + echo "

Creating recurrence $i.

\n"; + $order = new Order; + } - $order_state = new OrderState; - $order_state->setUpdated(time()); - $order_state->setOrderId($order->getId()); - $order_state->setUserId($user_id); - $order_state->setDriverId($driver_id); - $order_state->setState($state); + $order->setDate($then + 7 * 86400 * $i); + $order->setRequesterId($requester_id); + $order->setBeneficiaryId($beneficiary_id); + $order->setHubId($hub_id); + $order->setQuantity($quantity); - $order_state->save(); - } - catch (Exception $e) { - if ($new) echo "

Error placing order.

\n"; - else echo "

Error updating order.

\n"; - return false; + /* XXX: begin/commit */ + try { + $order->save(); + + $order_state = new OrderState; + $order_state->setUpdated($now); + $order_state->setOrderId($order->getId()); + $order_state->setUserId($user_id); + $order_state->setDriverId($driver_id); + $order_state->setState($state); + + $order_state->save(); + } + catch (Exception $e) { + if ($new) echo "

Error placing order.

\n"; + else echo "

Error updating order.

\n"; + echo "

" . $e->getMessage() . "

\n"; + return false; + } } return true;