Further modules included.
[yaffs-website] / web / modules / contrib / linkchecker / linkchecker.install
diff --git a/web/modules/contrib/linkchecker/linkchecker.install b/web/modules/contrib/linkchecker/linkchecker.install
new file mode 100644 (file)
index 0000000..8a9c3ce
--- /dev/null
@@ -0,0 +1,199 @@
+<?php
+
+/**
+ * @file
+ * Installation file for Link Checker module.
+ */
+
+use Drupal\user\Entity\User;
+
+/**
+ * Implements hook_install().
+ */
+function linkchecker_install() {
+  $linkchecker_default_impersonate_account = User::load(1);
+  \Drupal::configFactory()->getEditable('linkchecker.settings')->set('error.impersonate_account', $linkchecker_default_impersonate_account->getAccountName())->save();
+}
+
+/**
+ * Implements hook_schema().
+ */
+function linkchecker_schema() {
+
+  $schema['linkchecker_block_custom'] = array(
+    'description' => 'Stores all link references for custom blocks.',
+    'fields' => array(
+      'bid'  => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'description' => 'Primary Key: Unique {block_custom}.bid.',
+      ),
+      'lid' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'description' => 'Primary Key: Unique {linkchecker_link}.lid.',
+      ),
+    ),
+    'primary key' => array('bid', 'lid'),
+    'foreign keys' => array(
+      'bid' => array(
+        'table' => 'block_custom',
+        'columns' => array('bid' => 'bid'),
+      ),
+      'lid' => array(
+        'table' => 'linkchecker_link',
+        'columns' => array('lid' => 'lid'),
+      ),
+    ),
+    'indexes' => array('lid' => array('lid')),
+  );
+
+  $schema['linkchecker_comment'] = array(
+    'description' => 'Stores all link references for comments.',
+    'fields' => array(
+      'cid'  => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'description' => 'Primary Key: Unique {comment}.cid.',
+      ),
+      'lid' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'description' => 'Primary Key: Unique {linkchecker_link}.lid.',
+      ),
+    ),
+    'primary key' => array('cid', 'lid'),
+    'foreign keys' => array(
+      'cid' => array(
+        'table' => 'comment',
+        'columns' => array('cid' => 'cid'),
+      ),
+      'lid' => array(
+        'table' => 'linkchecker_link',
+        'columns' => array('lid' => 'lid'),
+      ),
+    ),
+    'indexes' => array('lid' => array('lid')),
+  );
+
+  $schema['linkchecker_node'] = array(
+    'description' => 'Stores all link references for nodes.',
+    'fields' => array(
+      'nid'  => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'description' => 'Primary Key: Unique {node}.nid.',
+      ),
+      'lid' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'description' => 'Primary Key: Unique {linkchecker_link}.lid.',
+      ),
+    ),
+    'primary key' => array('nid', 'lid'),
+    'foreign keys' => array(
+      'nid' => array(
+        'table' => 'node',
+        'columns' => array('nid' => 'nid'),
+      ),
+      'lid' => array(
+        'table' => 'linkchecker_link',
+        'columns' => array('lid' => 'lid'),
+      ),
+    ),
+    'indexes' => array('lid' => array('lid')),
+  );
+
+  $schema['linkchecker_link'] = array(
+    'description' => 'Stores all links.',
+    'fields' => array(
+      'lid'  => array(
+        'type' => 'serial',
+        'not null' => TRUE,
+        'description' => 'Primary Key: Unique link ID.',
+      ),
+      'urlhash' => array(
+        'type' => 'varchar',
+        'length' => 64,
+        'not null' => TRUE,
+        'description' => 'The indexable hash of the {linkchecker_link}.url.',
+      ),
+      'url' => array(
+        'type' => 'text',
+        'not null' => TRUE,
+        'description' => 'The full qualified link.',
+      ),
+      'method' => array(
+        'type' => 'varchar',
+        'length' => 4,
+        'default' => 'HEAD',
+        'not null' => TRUE,
+        'description' => 'The method for checking links (HEAD, GET, POST).',
+      ),
+      'code' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => -1,
+        'description' => 'HTTP status code from link checking.',
+      ),
+      'error' => array(
+        'type' => 'text',
+        'not null' => FALSE,
+        'description' => 'The error message received from the remote server while doing link checking.',
+      ),
+      'fail_count' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+        'description' => 'Fail count of unsuccessful link checks. No flapping detection. (Successful = 0, Unsuccessful = fail_count+1).',
+      ),
+      'last_checked' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+        'description' => 'Timestamp of the last link check.',
+      ),
+      'status' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 1,
+        'description' => 'Boolean indicating if a link should be checked or not.',
+      ),
+    ),
+    'primary key' => array('lid'),
+    'unique keys' => array('urlhash' => array('urlhash')),
+    'indexes' => array(
+      'method' => array('method'),
+      'code' => array('code'),
+      'fail_count' => array('fail_count'),
+      'last_checked' => array('last_checked'),
+      'status' => array('status'),
+    ),
+  );
+
+  return $schema;
+}
+
+/**
+ * Implements hook_modules_uninstalled().
+ *
+ * If the core modules are disabled the integration need to be disabled.
+ */
+function linkchecker_modules_uninstalled($modules) {
+  // Disable link checks for custom blocks.
+  if (in_array('block', $modules)) {
+    \Drupal::config('linkchecker.settings')->set('scan_blocks', 0);
+    drupal_set_message(t('Link checks for blocks have been disabled.'));
+  }
+
+  // Disable link checks for comments.
+  if (in_array('comment', $modules)) {
+    foreach (node_type_get_names() as $type => $name) {
+      // @fixme: This is incorrect. The variable is inside node.type.*.third_party.linkchecker
+      //\Drupal::config('node.type.' . $type .  '.third_party.linkchecker')->clear('scan_comment');
+      //\Drupal::service('config.manager');
+      //$type->unsetThirdPartySetting('linkchecker', 'scan_comment', $form_state->getValue('scan_comment'));
+    }
+    drupal_set_message(t('Link checks for comments have been disabled.'));
+  }
+}