You are here

honeypot.install in Honeypot 8

Same filename and directory in other branches
  1. 6 honeypot.install
  2. 7 honeypot.install
  3. 2.0.x honeypot.install

Contains install and update functions for Honeypot.

File

honeypot.install
View source
<?php

/**
 * @file
 * Contains install and update functions for Honeypot.
 */
use Drupal\Core\Url;

/**
 * Implements hook_schema().
 */
function honeypot_schema() {
  $schema['honeypot_user'] = [
    'description' => 'Table that stores failed attempts to submit a form.',
    'fields' => [
      'uid' => [
        'description' => 'Foreign key to {users}.uid; uniquely identifies a Drupal user to whom this ACL data applies.',
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
      ],
      'hostname' => [
        'type' => 'varchar',
        'length' => 128,
        'not null' => TRUE,
        'description' => 'Hostname of user that that triggered honeypot.',
      ],
      'timestamp' => [
        'description' => 'Date/time when the form submission failed, as Unix timestamp.',
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
      ],
    ],
    'indexes' => [
      'uid' => [
        'uid',
      ],
      'timestamp' => [
        'timestamp',
      ],
    ],
  ];
  return $schema;
}

/**
 * Implements hook_install().
 */
function honeypot_install() {
  if (PHP_SAPI !== 'cli') {
    $config_url = Url::fromUri('base://admin/config/content/honeypot');
    \Drupal::messenger()
      ->addMessage(t('Honeypot installed successfully. Please <a href=":url">configure Honeypot</a> to protect your forms from spam bots.', [
      ':url' => $config_url
        ->toString(),
    ]));
  }
}

/**
 * Implements hook_uninstall().
 */
function honeypot_uninstall() {

  // Clear the bootstrap cache.
  \Drupal::cache('bootstrap')
    ->deleteAll();
  \Drupal::configFactory()
    ->getEditable('honeypot.settings.yml')
    ->delete();
}

/**
 * Adds the 'hostname' column to the {honeypot_user} table.
 */
function honeypot_update_8100() {
  $schema = honeypot_schema();
  $spec = $schema['honeypot_user']['fields']['hostname'];
  $spec['initial'] = '';
  \Drupal::database()
    ->schema()
    ->addField('honeypot_user', 'hostname', $spec);
}

Functions

Namesort descending Description
honeypot_install Implements hook_install().
honeypot_schema Implements hook_schema().
honeypot_uninstall Implements hook_uninstall().
honeypot_update_8100 Adds the 'hostname' column to the {honeypot_user} table.