recurly-8.x-1.x-dev/recurly.install

recurly.install
<?php

/**
 * @file
 * Install hooks for Recurly module.
 */

use Drupal\Component\Utility\Crypt;

/**
 * Implements hook_requirements().
 */
function recurly_requirements($phase) {
  $requirements = [];
  if ($phase == 'runtime') {
    $requirements['recurly'] = [
      'title' => t('Recurly'),
    ];

    if (!class_exists('Recurly_Client')) {
      $requirements['recurly']['value'] = t('The required Recurly PHP library is installed.');
      $requirements['recurly']['severity'] = REQUIREMENT_OK;
    }
    else {
      $requirements['recurly']['value'] = t('Not found');
      $requirements['recurly']['description'] = t(
        'The required Recurly PHP library is <em>not</em> installed. Please follow the installation instructions in the <a href=":doc_link">documentation</a>.', [
          ':doc_link' => 'https://matteobrusa.github.io/md-styler/?url=cgit.drupalcode.org/recurly/plain/README.md',
        ]
      );
      $requirements['recurly']['severity'] = REQUIREMENT_ERROR;
    }
  }

  // Ensure cURL exists if SimpleTest hasn't checked it already.
  if (!\Drupal::moduleHandler()->moduleExists('simpletest') && !function_exists('curl_init')) {
    $requirements['recurly_curl'] = [
      'title' => t('cURL'),
      'severity' => REQUIREMENT_ERROR,
      'description' => t('Recurly module requires the <a href="http://php.net/manual/en/curl.setup.php">PHP cURL library</a>.'),
    ];
  }

  return $requirements;
}

/**
 * Implements hook_schema().
 */
function recurly_schema() {
  $schema = [];

  $schema['recurly_account'] = [
    'description' => 'Recurly account information mapped to Drupal entities.',
    'fields' => [
      'account_code' => [
        'description' => 'The unique identifier of the account in Recurly.',
        'type' => 'varchar',
        'length' => 100,
        'not null' => TRUE,
        'default' => '',
      ],
      'status' => [
        'description' => 'Whether the account is closed or active.',
        'type' => 'varchar',
        'length' => 100,
        'not null' => TRUE,
        'default' => '',
      ],
      'entity_type' => [
        'description' => 'The Drupal entity type this account is associated with, typical "user" or "node".',
        'type' => 'varchar',
        'length' => 100,
        'not null' => TRUE,
        'default' => '',
      ],
      'entity_id' => [
        'description' => 'The Drupal entity ID that maps to this account.',
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ],
      'updated' => [
        'description' => 'The Unix timestamp when the account information was last updated.',
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ],
    ],
    'primary key' => ['account_code'],
    'indexes' => [
      'entity_type_entity_id' => ['entity_type', 'entity_id'],
    ],
  ];

  return $schema;
}

/**
 * Implements hook_install().
 */
function recurly_install() {
  // Initialize the Recurly listener key variable.
  \Drupal::configFactory()->getEditable('recurly.settings')->set('recurly_listener_key', substr(Crypt::hashBase64(\Drupal::time()->getRequestTime()), 0, 8))->save();
}

/**
 * Implements hook_uninstall().
 */
function recurly_uninstall() {
  // Remove the site-wide account settings.
  \Drupal::configFactory()->getEditable('recurly.settings')
    ->clear('recurly_subdomain')
    ->clear('recurly_private_api_key')
    ->clear('recurly_public_key')
    ->clear('recurly_default_currency')
    ->clear('recurly_pages')
    ->clear('recurly_token_mapping')
    ->clear('recurly_subscription_cancel_behavior')
    ->clear('recurly_subscription_display')
    ->clear('recurly_subscription_downgrade_timeframe')
    ->clear('recurly_subscription_max')
    ->clear('recurly_subscription_plans')
    ->clear('recurly_subscription_upgrade_timeframe')
    ->clear('recurly_entity_type')
    ->save();

  foreach (array_keys(\Drupal::entityTypeManager()->getDefinitions()) as $entity_name) {
    \Drupal::configFactory()->getEditable('recurly.settings')->clear('recurly_bundle_' . $entity_name)->save();
  }

  // Remove the push notification settings.
  \Drupal::configFactory()->getEditable('recurly.settings')
    ->clear('recurly_listener_key')
    ->clear('recurly_push_logging')
    ->save();
}

/**
 * Enable the Token module.
 */
function recurly_update_8002() {
  \Drupal::service('module_installer')->install(['token']);
}

/**
 * Adds default entity type configuration.
 */
function recurly_update_8001() {
  $config_factory = \Drupal::configFactory();
  $config = $config_factory->getEditable('recurly.settings');
  if (!$config->get('recurly_entity_type')) {
    $config->set('recurly_entity_type', 'user');
    $config->save(TRUE);
  }
}

/**
 * Add default values for recurly_subscription_plans setting if none exist.
 */
function recurly_update_8003() {
  /** @var \Drupal\Core\Config\ConfigFactory $config_factory */
  $config_factory = \Drupal::configFactory();
  $config = $config_factory->getEditable('recurly.settings');
  $currentData = $config->get('recurly_subscription_plans');
  if (empty($currentData)) {
    $currentData = [];
  }
  $config->set('recurly_subscription_plans', $currentData);
  $config->save(TRUE);
}

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

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