You are here

geocoder_services.services.inc in Geocoder 7.2

File

modules/geocoder_services/geocoder_services.services.inc
View source
<?php

/**
 * Return capabilities of the Geocoder service.
 *
 * @return \stdClass
 */
function geocoder_services_services_capabilities() {
  $object = array();
  foreach (\Drupal\geocoder\Geocoder::getPlugins() as $type => $plugin) {
    $object[$type] = array_keys($plugin);
  }
  return $object;
}

/**
 * Callback for Geocoding service
 *
 * @param string $plugin_id
 * @param string $data
 * @param string $output (optional)
 *
 * @return object
 */
function geocoder_services_geocoder_geocode_callback($plugin_id, $data, $output) {
  geocoder_services_check_request($plugin_id, $output);
  if ($addressCollection = \Drupal\geocoder\Geocoder::geocode($plugin_id, $data)) {
    $data = array(
      'count' => $addressCollection
        ->count(),
    );
    foreach ($addressCollection as $address) {
      $data['collection'][] = array(
        'raw' => $address
          ->toArray(),
        'formatted' => \Drupal\geocoder\Geocoder::getPlugin('Dumper', $output)
          ->dump($address),
      );
    }
  }
  else {
    $data = array(
      'count' => 0,
    );
  }
  return $data;
}

/**
 * Callback for Revere Geocoding service
 *
 * @param string $plugin_id
 * @param string $data
 * @param string $output (optional)
 *
 * @return object
 */
function geocoder_services_geocoder_reverse_callback($plugin_id, $data, $output) {
  geocoder_services_check_request($plugin_id, $output);
  list($latitude, $longitude) = explode(',', $data, 2);
  if ($addressCollection = \Drupal\geocoder\Geocoder::reverse($plugin_id, $latitude, $longitude)) {
    $data = array(
      'count' => $addressCollection
        ->count(),
    );
    foreach ($addressCollection as $address) {
      $data['collection'][] = array(
        'raw' => $address
          ->toArray(),
        'formatted' => \Drupal\geocoder\Geocoder::getPlugin('Dumper', $output)
          ->dump($address),
      );
    }
  }
  else {
    $data = array(
      'count' => 0,
    );
  }
  return $data;
}

/**
 * Access control callback for the service resource: retrieve.
 *
 * @param $plugin_id
 * @param $data
 * @param $output
 *
 * @return bool
 */
function geocoder_services_services_access($plugin_id, $data, $output) {
  return geocoder_services_check_perms($plugin_id);
}

/**
 * Access control callback for the service resource: index.
 *
 * @return bool
 */
function geocoder_services_services_capabilities_ac() {
  return TRUE;
}

/**
 * Geocoder Services Check Request
 *
 * Check to make sure the request to the service is valid. This
 * checks to make sure the plugin and the format exists, and
 * also checks permission
 */
function geocoder_services_check_request($plugin_id, $output) {
  $plugin_id = drupal_strtolower($plugin_id);
  if (!geocoder_services_check_perms($plugin_id)) {
    drupal_access_denied();
    drupal_exit();
  }
  if (!\Drupal\geocoder\Geocoder::getPluginManager()
    ->hasDefinition($plugin_id)) {
    drupal_set_message(t('Could not find provider plugin @plugin_id', array(
      '@plugin_id' => $plugin_id,
    )), 'error');
    drupal_not_found();
    drupal_exit();
  }
  if (!\Drupal\geocoder\Geocoder::getPluginManager()
    ->hasDefinition($output)) {
    drupal_set_message(t('Could not find dumper plugin @plugin_id', array(
      '@plugin_id' => $output,
    )), 'error');
    drupal_not_found();
    drupal_exit();
  }
}

/**
 * Geocoder Services check permissions
 *
 * Given a plugin, check to see if the user has
 * permission to execute it via AJAX / services
 */
function geocoder_services_check_perms($plugin_id) {
  return user_access('bypass_geocoder_services_access') || user_access('geocoder_services_plugin_' . $plugin_id);
}

Functions

Namesort descending Description
geocoder_services_check_perms Geocoder Services check permissions
geocoder_services_check_request Geocoder Services Check Request
geocoder_services_geocoder_geocode_callback Callback for Geocoding service
geocoder_services_geocoder_reverse_callback Callback for Revere Geocoding service
geocoder_services_services_access Access control callback for the service resource: retrieve.
geocoder_services_services_capabilities Return capabilities of the Geocoder service.
geocoder_services_services_capabilities_ac Access control callback for the service resource: index.