ipToLocations[$ip])) { $result = $this->ipToLocations[$ip]; } else { if (!isset(self::$locations[$this->currentLocation])) { throw new \Exception("Unknown location index in mock LocationProvider {$this->currentLocation}. This " . "shouldn't ever happen, it is likely something is using the mock LocationProvider when it should be using a real one."); } $result = self::$locations[$this->currentLocation]; $this->currentLocation = ($this->currentLocation + 1) % count(self::$locations); $this->ipToLocations[$ip] = $result; } $this->completeLocationResult($result); return $result; } public function getInfo() { return array('id' => self::ID, 'title' => 'mock provider', 'description' => 'mock provider', 'order' => 10); } public function isAvailable() { return true; } public function isWorking() { return true; } public function getSupportedLocationInfo() { return array(); // unimplemented } }