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);
}
