/** * @throws ValidationException */ public function setData(Order $order, array $data) { if (Member::currentUserID()) { return; } if (!Checkout::membership_required() && empty($data['Password'])) { return; } $factory = new ShopMemberFactory(); $member = $factory->create($data); $member->write(); $member->extend('onAfterMemberCreate'); $member->logIn(); if ($order->BillingAddressID) { $address = $order->getBillingAddress(); $address->MemberID = $member->ID; $address->write(); $member->DefaultBillingAddressID = $order->BillingAddressID; } if ($order->ShippingAddressID) { $address = $order->getShippingAddress(); $address->MemberID = $member->ID; $address->write(); $member->DefaultShippingAddressID = $order->ShippingAddressID; } if ($member->isChanged()) { $member->write(); } }