You are here

geocoder_services.module in Geocoder 7.2

Geocoder Services module.

File

modules/geocoder_services/geocoder_services.module
View source
<?php

/**
 * @file
 * Geocoder Services module.
 */

/**
 * Implements hook_permission().
 *
 * We define permissions for accessing geocoder over AJAX / services.
 * There is one global permission which gives access to everything,
 * and one permission per handler. The site-administrator can therefore
 * fine tune which handlers are accessible. Note that to use AJAX with
 * geocoder these permissions need to be set.
 */
function geocoder_services_permission() {
  $perms = array(
    'bypass_geocoder_services_access' => array(
      'title' => t('Bypass geocoder access control'),
    ),
  );
  foreach (\Drupal\geocoder\Geocoder::getPlugins('Provider') as $plugin_id) {
    $perms['geocoder_services_plugin_' . $plugin_id] = array(
      'title' => t('Can geocode using @plugin_id through AJAX / service', array(
        '@plugin_id' => $plugin_id,
      )),
    );
  }
  return $perms;
}

/**
 * Implements hook_services_resources().
 */
function geocoder_services_services_resources() {
  return array(
    'geocoder_geocode' => array(
      'retrieve' => array(
        'help' => 'Geocode data',
        'file' => array(
          'type' => 'inc',
          'module' => 'geocoder_services',
          'name' => 'geocoder_services.services',
        ),
        'callback' => 'geocoder_services_geocoder_geocode_callback',
        'access callback' => 'geocoder_services_services_access',
        'access arguments append' => TRUE,
        'args' => array(
          array(
            'name' => 'plugin',
            'type' => 'string',
            'description' => 'The geocoder plugin to use',
            'source' => array(
              'path' => '0',
            ),
            'optional' => FALSE,
          ),
          array(
            'name' => 'data',
            'type' => 'string',
            'description' => 'Value to geocode',
            'source' => array(
              'param' => 'data',
            ),
            'optional' => FALSE,
          ),
          array(
            'name' => 'output',
            'type' => 'string',
            'description' => 'Output format',
            'source' => array(
              'param' => 'output',
            ),
            'optional' => TRUE,
            'default value' => 'geojson',
          ),
        ),
      ),
      'index' => array(
        'help' => 'List Geocoder Capabilities',
        'file' => array(
          'type' => 'inc',
          'module' => 'geocoder_services',
          'name' => 'geocoder_services.services',
        ),
        'callback' => 'geocoder_services_services_capabilities',
        'access callback' => 'geocoder_services_services_capabilities_ac',
      ),
    ),
    'geocoder_reverse' => array(
      'retrieve' => array(
        'help' => 'Reverse geocode data',
        'file' => array(
          'type' => 'inc',
          'module' => 'geocoder_services',
          'name' => 'geocoder_services.services',
        ),
        'callback' => 'geocoder_services_geocoder_reverse_callback',
        'access callback' => 'geocoder_services_services_access',
        'access arguments append' => TRUE,
        'args' => array(
          array(
            'name' => 'plugin',
            'type' => 'string',
            'description' => 'The geocoder plugin to use',
            'source' => array(
              'path' => '0',
            ),
            'optional' => FALSE,
          ),
          array(
            'name' => 'data',
            'type' => 'string',
            'description' => 'Value to reverse geocode',
            'source' => array(
              'param' => 'data',
            ),
            'optional' => FALSE,
          ),
          array(
            'name' => 'output',
            'type' => 'string',
            'description' => 'Output format',
            'source' => array(
              'param' => 'output',
            ),
            'optional' => TRUE,
            'default value' => 'geojson',
          ),
        ),
      ),
      'index' => array(
        'help' => 'List Geocoder Capabilities',
        'file' => array(
          'type' => 'inc',
          'module' => 'geocoder_services',
          'name' => 'geocoder_services.services',
        ),
        'callback' => 'geocoder_services_services_capabilities',
        'access callback' => 'geocoder_services_services_capabilities_ac',
      ),
    ),
  );
}