static function find_country() { $member = Member::currentUser(); if ($member && $member->Country) { $country = $member->Country; } else { if ($country = ShoppingCart::get_country()) { return $country; } // HACK Avoid CLI tests from breaking (GeoIP gets in the way of unbiased tests!) // @todo Introduce a better way of disabling GeoIP as needed (Geoip::disable() ?) if (Director::is_cli()) { $country = null; } else { $country = Geoip::visitor_country(); } } return $country; }
/** * Returns the correct shipping address. If there is an alternate * shipping country then it uses that. Failing that, it returns * the country of the member. * * @TODO This is pretty complicated code. It can be simplified. * * @param boolean $codeOnly If true, returns only the country code, instead * of the full name. * @return string */ function findShippingCountry($codeOnly = false) { if (!$this->ID) { $country = ShoppingCart::has_country() ? ShoppingCart::get_country() : EcommerceRole::find_country(); } elseif (!$this->UseShippingAddress || !($country = $this->ShippingCountry)) { $country = EcommerceRole::find_country(); } return $codeOnly ? $country : EcommerceRole::find_country_title($country); }