/**
  * If we use a
  *
  */
 public function onBeforeUseMemberAddress()
 {
     if ($this->owner->onlyDownloadable()) {
         $id = $this->owner->request->param("ID");
         $otherid = $this->owner->request->param("OtherID");
         $data = array();
         $address = MemberAddress::get()->byID($id);
         if ($address) {
             $data = array();
             $data['DeliveryFirstnames'] = $address->FirstName;
             $data['DeliverySurname'] = $address->Surname;
             $data['DeliveryAddress1'] = $address->Address1;
             $data['DeliveryAddress2'] = $address->Address2;
             $data['DeliveryCity'] = $address->City;
             $data['DeliveryPostCode'] = $address->PostCode;
             $data['DeliveryCountry'] = $address->Country;
             Session::set("Checkout.DeliveryDetailsForm.data", $data);
         }
     }
 }
 /**
  * Method responsible for saving (or adding) a member's address.
  * If the ID field is set, the method assums we are saving
  * an address.
  *
  * If the ID field is not set, we assume a new address is being
  * created.
  *
  */
 public function doSaveAddress($data, $form)
 {
     if (!$data["ID"]) {
         $address = MemberAddress::create();
     } else {
         $address = MemberAddress::get()->byID($data["ID"]);
     }
     if ($address) {
         $form->saveInto($address);
         $address->write();
         $this->owner->setSessionMessage("success", _t("Checkout.AddressSaved", "Address Saved"));
     } else {
         $this->owner->setSessionMessage("error", _t("Checkout.Error", "There was an error"));
     }
     return $this->owner->redirect($this->owner->Link("addresses"));
 }
 /**
  * Use the address provided via the $ID param in the URL. The
  * $OtherID param is used to determine if the address is billing
  * or delivery.
  *
  * If no $ID or $OtherID is provided, we return an error.
  *
  * @return redirect
  */
 public function usememberaddress()
 {
     $allowed_otherids = array("billing", "delivery");
     $id = $this->request->param("ID");
     $otherid = $this->request->param("OtherID");
     $data = array();
     $member = Member::currentUser();
     $address = MemberAddress::get()->byID($id);
     $action = "billing";
     // If our required details are not set, return a server error
     if (!$address || !$member || $address && !$address->canView($member) || !in_array($otherid, $allowed_otherids)) {
         return $this->httpError(404, "There was an error selecting your address");
     }
     // Set the session data
     if ($otherid == "billing") {
         $data["FirstName"] = $address->FirstName;
         $data["Surname"] = $address->Surname;
         $data["Address1"] = $address->Address1;
         $data["Address2"] = $address->Address2;
         $data["City"] = $address->City;
         $data["PostCode"] = $address->PostCode;
         $data["Country"] = $address->Country;
         $data["Email"] = $member->Email;
         $data["PhoneNumber"] = $member->PhoneNumber;
         $data["Company"] = $address->Company;
         Session::set("Checkout.BillingDetailsForm.data", $data);
         $action = "delivery";
     }
     if ($otherid == "delivery") {
         $data['DeliveryCompany'] = $address->Company;
         $data['DeliveryFirstnames'] = $address->FirstName;
         $data['DeliverySurname'] = $address->Surname;
         $data['DeliveryAddress1'] = $address->Address1;
         $data['DeliveryAddress2'] = $address->Address2;
         $data['DeliveryCity'] = $address->City;
         $data['DeliveryPostCode'] = $address->PostCode;
         $data['DeliveryCountry'] = $address->Country;
         Session::set("Checkout.DeliveryDetailsForm.data", $data);
         $action = "finish";
     }
     $this->extend("onBeforeUseMemberAddress");
     return $this->redirect($this->Link($action));
 }