/**
  * Form action handler for Order_CancelForm.
  *
  * Take the order that this was to be change on,
  * and set the status that was requested from
  * the form request data.
  *
  * @param array $data The form request data submitted
  * @param Form $form The {@link Form} this was submitted on
  */
 function doCancel($data, $form)
 {
     $SQL_data = Convert::raw2sql($data);
     $order = DataObject::get_by_id('Order', $SQL_data['OrderID']);
     $order->Status = 'MemberCancelled';
     $order->write();
     //TODO: notify people via email?? Make it optional.
     if (self::$email_notification) {
         $email = new Email(Email::getAdminEmail(), Email::getAdminEmail(), sprintf(_t('Order.CANCELSUBJECT', 'Order #%d cancelled by member'), $order->ID), $order->renderWith('Order'));
         $email->send();
     }
     if (Member::currentUser() && ($link = AccountPage::find_link())) {
         //TODO: set session message "order successfully cancelled".
         Director::redirect($link);
         //TODO: can't redirect to account page when not logged in
     } else {
         $form->Controller()->setSessionMessage(_t("OrderForm.ORDERCANCELLED", "Order sucessfully cancelled"), 'warning');
         //assumes controller has OrderManipulation extension
         Director::redirectBack();
     }
     return;
 }