/** * *@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; }
/** * *@return GridField **/ protected function getShippingAddressField() { $this->CreateOrReturnExistingAddress("ShippingAddress"); $gridFieldConfig = GridFieldConfig::create()->addComponents(new GridFieldToolbarHeader(), new GridFieldSortableHeader(), new GridFieldDataColumns(), new GridFieldPaginator(10), new GridFieldEditButton(), new GridFieldDetailForm()); //$source = $this->ShippingAddress(); $source = ShippingAddress::get()->filter(array("OrderID" => $this->ID)); return new GridField("ShippingAddress", _t("BillingAddress.SINGULARNAME", "Shipping Address"), $source, $gridFieldConfig); }
/** * 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); }