/** * *@return SQLQuery **/ public function apply(DataQuery $query) { $this->model = $query->applyRelation($this->relation); $value = $this->getValue(); $billingAddressesIDs = array(-1 => -1); $billingAddresses = BillingAddress::get()->where("\r\n\t\t\t\"FirstName\" LIKE '%{$value}%' OR\r\n\t\t\t\"Surname\" LIKE '%{$value}%' OR\r\n\t\t\t\"Email\" LIKE '%{$value}%' OR\r\n\t\t\t\"Address\" LIKE '%{$value}%' OR\r\n\t\t\t\"Address2\" LIKE '%{$value}%' OR\r\n\t\t\t\"City\" LIKE '%{$value}%' OR\r\n\t\t\t\"PostalCode\" LIKE '%{$value}%' OR\r\n\t\t\t\"Phone\" LIKE '%{$value}%'\r\n\t\t"); if ($billingAddresses->count()) { $billingAddressesIDs = $billingAddresses->map("ID", "ID")->toArray(); } $where[] = "\"BillingAddressID\" IN (" . implode(",", $billingAddressesIDs) . ")"; $shippingAddressesIDs = array(-1 => -1); $shippingAddresses = ShippingAddress::get()->where("\r\n\t\t\t\"ShippingFirstName\" LIKE '%{$value}%' OR\r\n\t\t\t\"ShippingSurname\" LIKE '%{$value}%' OR\r\n\t\t\t\"ShippingAddress\" LIKE '%{$value}%' OR\r\n\t\t\t\"ShippingAddress2\" LIKE '%{$value}%' OR\r\n\t\t\t\"ShippingCity\" LIKE '%{$value}%' OR\r\n\t\t\t\"ShippingPostalCode\" LIKE '%{$value}%' OR\r\n\t\t\t\"ShippingPhone\" LIKE '%{$value}%'\r\n\t\t"); if ($shippingAddresses->count()) { $shippingAddressesIDs = $shippingAddresses->map("ID", "ID")->toArray(); } $where[] = "\"ShippingAddressID\" IN (" . implode(",", $shippingAddressesIDs) . ")"; $memberIDs = array(-1 => -1); $members = Member::get()->where("\r\n\t\t\t\"FirstName\" LIKE '%{$value}%' OR\r\n\t\t\t\"Surname\" LIKE '%{$value}%' OR\r\n\t\t\t\"Email\" LIKE '%{$value}%'\r\n\t\t"); if ($members->count()) { $memberIDs = $members->map("ID", "ID")->toArray(); } $where[] = "\"MemberID\" IN (" . implode(",", $memberIDs) . ")"; $query = $query->where("(" . implode(") OR (", $where) . ")"); return $query; }
/** * Standard SS method * @param Member $member * @return Boolean */ function canDelete($member = null) { if (ShippingAddress::get()->filter(array("ShippingCountry" => $this->Code))->count()) { return false; } if (BillingAddress::get()->filter(array("Country" => $this->Code))->count()) { return false; } if (Permission::checkMember($member, Config::inst()->get("EcommerceRole", "admin_permission_code"))) { return true; } return parent::canEdit($member); }
public function getCountry() { $countryCodes = array("Billing" => "", "Shipping" => ""); if ($this->BillingAddressID) { $billingAddress = BillingAddress::get()->byID($this->BillingAddressID); if ($billingAddress) { if ($billingAddress->Country) { $countryCodes["Billing"] = $billingAddress->Country; } } } if ($this->ShippingAddressID && $this->UseShippingAddress) { $shippingAddress = BillingAddress::get()->byID($this->ShippingAddressID); if ($shippingAddress) { if ($shippingAddress->ShippingCountry) { $countryCodes["Shipping"] = $shippingAddress->ShippingCountry; } } } if (EcommerceConfig::get("OrderAddress", "use_shipping_address_for_main_region_and_country") && $countryCodes["Shipping"] || !$countryCodes["Billing"] && $countryCodes["Shipping"]) { return $countryCodes["Shipping"]; } elseif ($countryCodes["Billing"]) { return $countryCodes["Billing"]; } else { return EcommerceCountry::get_country_from_ip(); } }
/** * Ensures member unique id stays unique and other basic stuff... * @param array $data = Form Data * @return Boolean */ function php($data) { $valid = parent::php($data); $checkoutPage = CheckoutPage::get()->First(); if ($checkoutPage && $checkoutPage->TermsAndConditionsMessage) { if (isset($data["ReadTermsAndConditions"])) { if (!$data["ReadTermsAndConditions"]) { $this->validationError("ReadTermsAndConditions", $checkoutPage->TermsAndConditionsMessage, "required"); $valid = false; } } } $order = ShoppingCart::current_order(); if (!$order) { $this->validationError("Order", _t("OrderForm.ORDERNOTFOUND", "There was an error in processing your order, please try again or contact the administrator."), "required"); $valid = false; } $billingAddress = BillingAddress::get()->byID($order->BillingAddressID); if (!$billingAddress) { $this->validationError("BillingAddress", _t("OrderForm.MUSTHAVEBILLINGADDRESS", "All orders must have a billing address, please go back and add your details."), "required"); $valid = false; } return $valid; }