/**
  * If the flag has been set from the provided array, create a new
  * address and assign to the current user.
  *
  * @param $data Form data submitted
  */
 private function save_address($data)
 {
     // If the user ticked "save address" then add to their account
     if (array_key_exists('SaveAddress', $data) && $data['SaveAddress']) {
         $address = MemberAddress::create();
         $address->FirstName = $data['FirstName'];
         $address->Surname = $data['Surname'];
         $address->Address1 = $data['Address1'];
         $address->Address2 = $data['Address2'];
         $address->City = $data['City'];
         $address->PostCode = $data['PostCode'];
         $address->Country = $data['Country'];
         $address->OwnerID = Member::currentUserID();
         $address->write();
     }
 }
 public function doContinue($data)
 {
     Session::set("Commerce.DeliveryDetailsForm.data", $data);
     // If the user ticked "save address" then add to their account
     if (array_key_exists('SaveAddress', $data) && $data['SaveAddress']) {
         $address = MemberAddress::create();
         $address->FirstName = $data['DeliveryFirstnames'];
         $address->Surname = $data['DeliverySurname'];
         $address->Address1 = $data['DeliveryAddress1'];
         $address->Address2 = $data['DeliveryAddress2'];
         $address->City = $data['DeliveryCity'];
         $address->PostCode = $data['DeliveryPostCode'];
         $address->Country = $data['DeliveryCountry'];
         $address->OwnerID = Member::currentUserID();
         $address->write();
     }
     $url = $this->controller->Link("finish");
     return $this->controller->redirect($url);
 }
 /**
  * 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);
         }
     }
 }
 /**
  * If the flag has been set from the provided array, create a new
  * address and assign to the current user.
  *
  * @param $data Form data submitted
  */
 private function save_address($data)
 {
     $member = Member::currentUser();
     // If the user ticked "save address" then add to their account
     if ($member && array_key_exists('SaveAddress', $data) && $data['SaveAddress']) {
         // First save the details to the users account if they aren't set
         // We don't save email, as this is used for login
         $member->FirstName = $member->FirstName ? $member->FirstName : $data['FirstName'];
         $member->Surname = $member->Surname ? $member->Surname : $data['Surname'];
         $member->Company = $member->Company ? $member->Company : $data['Company'];
         $member->PhoneNumber = $member->PhoneNumber ? $member->PhoneNumber : $data['PhoneNumber'];
         $member->write();
         $address = MemberAddress::create();
         $address->Company = $data['Company'];
         $address->FirstName = $data['FirstName'];
         $address->Surname = $data['Surname'];
         $address->Address1 = $data['Address1'];
         $address->Address2 = $data['Address2'];
         $address->City = $data['City'];
         $address->PostCode = $data['PostCode'];
         $address->Country = $data['Country'];
         $address->OwnerID = $member->ID;
         $address->write();
     }
 }
 /**
  * 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));
 }