/** * Updates the addresses of the cart * * validate billing address first. If this address is okay, * continue with the shipping address. This works for the customer * since there is also client side validation available * * @param EventgalleryLibraryCart $cart * * @return array Errors */ public function updateAddresses(EventgalleryLibraryCart $cart = NULL) { $errors = array(); if ($cart == NULL) { $cart = $this->getCart(); } $xmlPath = JPATH_SITE . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_eventgallery' . DIRECTORY_SEPARATOR . 'models' . DIRECTORY_SEPARATOR . 'forms' . DIRECTORY_SEPARATOR; /** * USERDATA UPDATES */ $userdataform = JForm::getInstance('billing', $xmlPath . 'billingaddress.xml'); $userdataform->bind(JRequest::get('post')); $userdatavalidation = $userdataform->validate(JRequest::get('post')); if ($userdatavalidation !== true) { $errors = array_merge($errors, $userdataform->getErrors()); } else { $phone = JRequest::getString('phone', NULL); if ($phone != NULL) { $cart->setPhone($phone); } $email = JRequest::getString('email', NULL); if ($email != NULL) { $cart->setEMail($email); } $message = JRequest::getString('message', NULL); if ($message != NULL) { $cart->setMessage($message); } } /** * ADDRESS UPDATE * */ $addressFactory = new EventgalleryLibraryFactoryAddress(); /** * @var JForm $billingform */ $billingform = JForm::getInstance('billing', $xmlPath . 'billingaddress.xml'); $billingform->bind(JRequest::get('post')); $billingvalidation = $billingform->validate(JRequest::get('post')); if ($billingvalidation !== true) { $errors = array_merge($errors, $billingform->getErrors()); } else { $billingdata = array(); foreach ($billingform->getFieldset() as $field) { $billingdata[$field->name] = $field->value; } /** * @var EventgalleryLibraryAddress $billingAddress */ $billingAddress = $cart->getBillingAddress(); if ($billingAddress != NULL) { $billingdata['id'] = $billingAddress->getId(); } $billingAddress = $addressFactory->createStaticAddress($billingdata, 'billing_'); $cart->setBillingAddress($billingAddress); $shiptodifferentaddress = JRequest::getString('shiptodifferentaddress', NULL); if ($shiptodifferentaddress == 'true') { /** * @var JForm $shippingform */ $shippingform = JForm::getInstance('shipping', $xmlPath . 'shippingaddress.xml'); $shippingform->bind(JRequest::get('post')); $shippingvalidation = $shippingform->validate(JRequest::get('post')); if ($shippingvalidation !== true) { $errors = array_merge($errors, $shippingform->getErrors()); } else { $shippingdata = array(); foreach ($shippingform->getFieldset() as $field) { $shippingdata[$field->name] = $field->value; } $shippingAddress = $cart->getShippingAddress(); if ($shippingAddress != NULL && $shippingAddress->getId() != $billingAddress->getId()) { $shippingdata['id'] = $shippingAddress->getId(); } /** * @var EventgalleryLibraryAddress $shippingAddress */ $shippingAddress = $addressFactory->createStaticAddress($shippingdata, 'shipping_'); $cart->setShippingAddress($shippingAddress); } } elseif ($shiptodifferentaddress == 'false') { $cart->setShippingAddress($billingAddress); } } return $errors; }