You are here

class Random in Geocoder 8.3

Same name and namespace in other branches
  1. 8.2 src/Plugin/Geocoder/Provider/Random.php \Drupal\geocoder\Plugin\Geocoder\Provider\Random
  2. 7.2 src/Plugin/Geocoder/Provider/Random.php \Drupal\geocoder\Plugin\Geocoder\Provider\Random

Class Random.

Plugin annotation


@GeocoderProvider(
 id = "random",
 name = "Random"
)

Hierarchy

Expanded class hierarchy of Random

File

src/Plugin/Geocoder/Provider/Random.php, line 19

Namespace

Drupal\geocoder\Plugin\Geocoder\Provider
View source
class Random extends ProviderBase {

  /**
   * The address factory.
   *
   * @var \Geocoder\Model\Address
   */
  protected $addressFactory;

  /**
   * The module handler service.
   *
   * @var \Drupal\Core\Extension\ModuleHandlerInterface
   */
  protected $moduleHandler;

  /**
   * {@inheritdoc}
   */
  protected function doGeocode($source) {
    return new AddressCollection([
      $this
        ->getAddressFactory()
        ->createFromArray($this
        ->getRandomResult()),
    ]);
  }

  /**
   * {@inheritdoc}
   */
  public function doReverse($latitude, $longitude) {
    $result = $this
      ->getRandomResult();
    $result['latitude'] = $latitude;
    $result['longitude'] = $longitude;
    return new AddressCollection([
      $this
        ->getAddressFactory()
        ->createFromArray($result),
    ]);
  }

  /**
   * Get Random Country info.
   *
   * @todo [cc]: Tidy-up, document, etc.
   */
  private function getRandomCountryInfo($type = NULL) {
    $manager = new CountryManager($this
      ->getModuleHandler());
    $countries = $manager
      ->getList();
    uksort($countries, function () {
      return rand() > rand();
    });
    $country = array_slice($countries, 0, 1);
    $value = [
      'code' => key($country),
      'name' => reset($country),
    ];
    if (is_null($type)) {
      return $value;
    }
    return isset($value[$type]) ? $value[$type] : $value;
  }

  /**
   * Generate a fake random address array.
   *
   * @todo [cc]: Tidi-up, document, etc.
   *
   * @return array
   *   Return array of dta such as latitude, longitude, etc.
   */
  protected function getRandomResult() {
    $country = $this
      ->getRandomCountryInfo();
    $streetTypes = [
      'street',
      'avenue',
      'square',
      'road',
      'way',
      'drive',
      'lane',
      'place',
      'hill',
      'gardens',
      'park',
    ];
    return [
      'latitude' => mt_rand(0, 90) + mt_rand() / mt_getrandmax(),
      'longitude' => mt_rand(-180, 180) + mt_rand() / mt_getrandmax(),
      'streetName' => $this
        ->getRandomCountryInfo('name') . ' ' . $streetTypes[mt_rand(0, count($streetTypes) - 1)],
      'streetNumber' => (string) mt_rand(1, 1000),
      'postalCode' => (string) mt_rand(1, 1000),
      'locality' => sha1(mt_rand() / mt_getrandmax()),
      'country' => (string) $country['name'],
      'countryCode' => $country['code'],
    ];
  }

  /**
   * Returns the address factory.
   *
   * @return \Geocoder\Model\Address
   *   Return the address Factory.
   */
  protected function getAddressFactory() {
    if (!isset($this->addressFactory)) {
      $this->addressFactory = new Address('', new AdminLevelCollection());
    }
    return $this->addressFactory;
  }

  /**
   * Returns the module handler service.
   *
   * @return \Drupal\Core\Extension\ModuleHandlerInterface
   *   Return the module Handler.
   */
  protected function getModuleHandler() {
    if (!isset($this->moduleHandler)) {
      $this->moduleHandler = \Drupal::moduleHandler();
    }
    return $this->moduleHandler;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
ProviderBase::$cacheBackend protected property The cache backend used to cache geocoding data.
ProviderBase::$configFactory protected property The config factory service.
ProviderBase::$languageManager protected property The configurable language manager.
ProviderBase::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create 2
ProviderBase::geocode public function Geocode a source string. Overrides ProviderInterface::geocode
ProviderBase::getCacheId protected function Builds a cached id.
ProviderBase::process protected function Provides a helper callback for geocode() and reverse().
ProviderBase::reverse public function Reverse geocode latitude and longitude. Overrides ProviderInterface::reverse
ProviderBase::__construct public function Constructs a geocoder provider plugin object. Overrides PluginBase::__construct 1
Random::$addressFactory protected property The address factory.
Random::$moduleHandler protected property The module handler service.
Random::doGeocode protected function Performs the geocoding. Overrides ProviderBase::doGeocode
Random::doReverse public function Performs the reverse geocode. Overrides ProviderBase::doReverse
Random::getAddressFactory protected function Returns the address factory.
Random::getModuleHandler protected function Returns the module handler service.
Random::getRandomCountryInfo private function Get Random Country info.
Random::getRandomResult protected function Generate a fake random address array.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.