cloud-8.x-2.0-beta1/modules/cloud_service_providers/aws_cloud/aws_cloud.tokens.inc

modules/cloud_service_providers/aws_cloud/aws_cloud.tokens.inc
<?php

/**
 * @file
 * Builds placeholder replacement tokens for aws-related data.
 */

use Drupal\Core\Render\BubbleableMetadata;

/**
 * Implements hook_token_info().
 */
function aws_cloud_token_info() {
  $types['aws_cloud_instance'] = [
    'name' => t('AWS Cloud Instances'),
    'description' => t('Tokens related to individual AWS Cloud Instances.'),
    'needs-data' => 'aws_cloud_instance',
  ];
  $instance['name'] = [
    'name' => t('Instance Name'),
    'description' => t('The name of the Instance entity'),
  ];
  $instance['id'] = [
    'name' => t('Instance ID'),
    'description' => t('AWS Instance ID'),
  ];
  $instance['launch_time'] = [
    'name' => t('Launch Time'),
    'description' => t('The time the instance launched'),
  ];
  $instance['instance_state'] = [
    'name' => t('Instance State'),
    'description' => t('The current state of the instance'),
  ];
  $instance['availability_zone'] = [
    'name' => t('Availability Zone'),
    'description' => t('Zone the instance is in'),
  ];
  $instance['private_ip'] = [
    'name' => t('Private IP Address'),
    'description' => t('The instance private IP'),
  ];
  $instance['public_ip'] = [
    'name' => t('Public IP Address'),
    'description' => t('The instance public IP'),
  ];
  $instance['elastic_ip'] = [
    'name' => t('Elastic IP Address'),
    'description' => t('The instance Elastic IP address'),
  ];
  $instance['instance_link'] = [
    'name' => t('Instance Link'),
    'description' => t('Absolute link to the instance'),
  ];
  $instance['instance_edit_link'] = [
    'name' => t('Edit Instance Link'),
    'description' => t('Absolute link to edit the instance'),
  ];

  $types['aws_cloud_volume'] = [
    'name' => t('AWS Cloud Volume'),
    'description' => t('Tokens related to individual AWS Cloud Volumes.'),
    'needs-data' => 'aws_cloud_volume',
  ];
  $volume['name'] = [
    'name' => t('Volume Name'),
    'description' => t('The name of the volume entity'),
  ];
  $volume['volume_link'] = [
    'name' => t('Volume Link'),
    'description' => t('Absolute link to volume'),
  ];
  $volume['volume_edit_link'] = [
    'name' => t('Volume Edit Link'),
    'description' => t('Absolute link to edit the volume'),
  ];
  $volume['created'] = [
    'name' => t('Create date'),
    'description' => t('The volume create date'),
  ];

  $types['aws_cloud_snapshot'] = [
    'name' => t('AWS Cloud Snapshot'),
    'description' => t('Tokens related to individual AWS Cloud Snapshots.'),
    'needs-data' => 'aws_cloud_snapshot',
  ];
  $snapshot['name'] = [
    'name' => t('Snapshot Name'),
    'description' => t('The name of the snapshot entity'),
  ];
  $volume['snapshot_link'] = [
    'name' => t('Snapshot Link'),
    'description' => t('Absolute link to snapshot'),
  ];
  $volume['volume_snapshot_link'] = [
    'name' => t('Snapshot Edit Link'),
    'description' => t('Absolute link to edit the snapshot'),
  ];
  $volume['created'] = [
    'name' => t('Create date'),
    'description' => t('The snapshot create date'),
  ];

  $types['aws_cloud_instance_email'] = [
    'name' => t('AWS Cloud Instance Email'),
    'description' => t('Tokens related to individual AWS Cloud Instance Email.'),
    'needs-data' => 'aws_cloud_instance_email',
  ];
  $instance_email['instances'] = [
    'name' => t('List of instances'),
    'description' => t('List of instances to display to user.'),
  ];

  $types['aws_cloud_volume_email'] = [
    'name' => t('AWS Cloud Volume Email'),
    'description' => t('Tokens related to individual AWS Cloud Volume Email.'),
    'needs-data' => 'aws_cloud_volume_email',
  ];
  $volume_email['volumes'] = [
    'name' => t('List of volumes'),
    'description' => t('List of volumes to display to user.'),
  ];

  $types['aws_cloud_snapshot_email'] = [
    'name' => t('AWS Cloud Snapshot Email'),
    'description' => t('Tokens related to individual AWS Cloud Snapshot Email.'),
    'needs-data' => 'aws_cloud_snapshot_email',
  ];
  $snapshot_email['snapshots'] = [
    'name' => t('List of snapshots'),
    'description' => t('List of snapshots to display to user.'),
  ];

  return [
    'types' => $types,
    'tokens' => [
      'aws_cloud_instance' => $instance,
      'aws_cloud_volume' => $volume,
      'aws_cloud_snapshot' => $snapshot,
      'aws_cloud_instance_email' => $instance_email,
      'aws_cloud_volume_email' => $volume_email,
      'aws_cloud_snapshot_email' => $snapshot_email,
    ],
  ];
}

/**
 * Implements hook_tokens().
 */
function aws_cloud_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {

  $replacements = [];
  if ($type == 'aws_cloud_instance' && !empty($data['aws_cloud_instance'])) {
    $replacements = aws_cloud_instance_tokens($tokens, $data);
  }
  elseif ($type == 'aws_cloud_volume' && !empty($data['aws_cloud_volume'])) {
    $replacements = aws_cloud_volume_tokens($tokens, $data);
  }
  elseif ($type == 'aws_cloud_snapshot' && !empty($data['aws_cloud_snapshot'])) {
    $replacements = aws_cloud_snapshot_tokens($tokens, $data);
  }
  elseif ($type == 'aws_cloud_instance_email') {
    $replacements = aws_cloud_instance_email_tokens($tokens, $data);
  }
  elseif ($type == 'aws_cloud_volume_email') {
    $replacements = aws_cloud_volume_email_tokens($tokens, $data);
  }
  elseif ($type == 'aws_cloud_snapshot_email') {
    $replacements = aws_cloud_snapshot_email_tokens($tokens, $data);
  }
  return $replacements;
}

/**
 * Setup instance email token substitution.
 *
 * @param array $tokens
 *   Tokens array.
 * @param array $data
 *   Data array.
 *
 * @return array
 *   The initialized replacement array.
 */
function aws_cloud_instance_email_tokens(array $tokens, array $data) {
  $replacements = [];
  foreach ($tokens as $name => $original) {
    switch ($name) {
      case 'instances':
        $replacements[$original] = $data['instances'];
        break;
    }
  }
  return $replacements;
}

/**
 * Setup volume email token substitution.
 *
 * @param array $tokens
 *   Tokens array.
 * @param array $data
 *   Data array.
 *
 * @return array
 *   The initialized replacement array.
 */
function aws_cloud_volume_email_tokens(array $tokens, array $data) {
  $replacements = [];
  foreach ($tokens as $name => $original) {
    switch ($name) {
      case 'volumes':
        $replacements[$original] = $data['volumes'];
        break;
    }
  }
  return $replacements;
}

/**
 * Setup snapshot email token substitution.
 *
 * @param array $tokens
 *   Tokens array.
 * @param array $data
 *   Data array.
 *
 * @return array
 *   The initialized replacement array.
 */
function aws_cloud_snapshot_email_tokens(array $tokens, array $data) {
  $replacements = [];
  foreach ($tokens as $name => $original) {
    switch ($name) {
      case 'snapshots':
        $replacements[$original] = $data['snapshots'];
        break;
    }
  }
  return $replacements;
}

/**
 * Setup volume token substitution.
 *
 * @param array $tokens
 *   Tokens array.
 * @param array $data
 *   Data array.
 *
 * @return array
 *   The initialized replacement array.
 */
function aws_cloud_volume_tokens(array $tokens, array $data) {
  $replacements = [];
  /* @var \Drupal\aws_cloud\Entity\Ec2\Volume $volume */
  $volume = $data['aws_cloud_volume'];
  foreach ($tokens as $name => $original) {
    switch ($name) {
      case 'name':
        $replacements[$original] = $volume->getName();
        break;

      case 'volume_link':
        $replacements[$original] = $volume->toUrl('canonical', ['absolute' => TRUE])->toString();
        break;

      case 'volume_link_edit':
        $replacements[$original] = $volume->toUrl('edit-form', ['absolute' => TRUE])
          ->toString();
        break;

      case 'created':
        $replacements[$original] = \Drupal::service('date.formatter')->format($volume->created->value, 'custom', 'Y-m-d H:i:s O');
        break;
    }
  }
  return $replacements;
}

/**
 * Setup snapshot token substitution.
 *
 * @param array $tokens
 *   Tokens array.
 * @param array $data
 *   Data array.
 *
 * @return array
 *   The initialized replacement array.
 */
function aws_cloud_snapshot_tokens(array $tokens, array $data) {
  $replacements = [];
  /* @var \Drupal\aws_cloud\Entity\Ec2\Snapshot $snapshot */
  $snapshot = $data['aws_cloud_snapshot'];
  foreach ($tokens as $name => $original) {
    switch ($name) {
      case 'name':
        $replacements[$original] = $snapshot->getName();
        break;

      case 'snapshot_link':
        $replacements[$original] = $snapshot->toUrl('canonical', ['absolute' => TRUE])->toString();
        break;

      case 'snapshot_link_edit':
        $replacements[$original] = $snapshot->toUrl('edit-form', ['absolute' => TRUE])
          ->toString();
        break;

      case 'created':
        $replacements[$original] = \Drupal::service('date.formatter')->format($snapshot->created->value, 'custom', 'Y-m-d H:i:s O');
        break;
    }
  }
  return $replacements;
}

/**
 * Setup instance token substitution.
 *
 * @param array $tokens
 *   Tokens array.
 * @param array $data
 *   Data array.
 *
 * @return array
 *   The initialized replacement array.
 */
function aws_cloud_instance_tokens(array $tokens, array $data) {
  $replacements = [];
  /** @var \Drupal\aws_cloud\Entity\Ec2\Instance $instance */
  $instance = $data['aws_cloud_instance'];

  foreach ($tokens as $name => $original) {
    switch ($name) {
      case 'name':
        $replacements[$original] = $instance->getName();
        break;

      case 'id':
        $replacements[$original] = $instance->getInstanceId();
        break;

      case 'launch_time':
        $replacements[$original] = \Drupal::service('date.formatter')
          ->format($instance->getLaunchTime(), 'custom', 'Y-m-d H:i:s O');
        break;

      case 'instance_state':
        $replacements[$original] = $instance->getInstanceState();
        break;

      case 'availability_zone':
        $replacements[$original] = $instance->getAvailabilityZone();
        break;

      case 'private_ip':
        $replacements[$original] = $instance->getPrivateIps();
        break;

      case 'public_ip':
        $replacements[$original] = $instance->getPublicIp();
        break;

      case 'elastic_ip':
        $replacements[$original] = $instance->getElasticIp();
        break;

      case 'instance_link':
        $replacements[$original] = $instance->toUrl('canonical', ['absolute' => TRUE])
          ->toString();
        break;

      case 'instance_edit_link':
        $replacements[$original] = $instance->toUrl('edit-form', ['absolute' => TRUE])
          ->toString();
        break;

    }
  }
  return $replacements;
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc