commit 307dde3bfbf0e52ebc5fba41055658689f7452a6
Author: Bill Wu <bill.wu@wulei.ca>
Date:   Thu Jun 2 15:46:46 2016 -0400

    Issue #2736089: How to disable this module?

diff --git a/config/install/impression.settings.yml b/config/install/impression.settings.yml
new file mode 100644
index 0000000..e592733
--- /dev/null
+++ b/config/install/impression.settings.yml
@@ -0,0 +1,2 @@
+interval: 604800
+capture: true
diff --git a/impression.module b/impression.module
index a8db9ba..34b135e 100644
--- a/impression.module
+++ b/impression.module
@@ -36,7 +36,13 @@
  * Create entity for callback impression.
  */
 function impression_create_a_new_entity($key, $action) {
-  print 'kjskdfskdjflsf';
+
+  // Stop here if capture function is turned off.
+  $active = \Drupal::config('impression.settings')->get('capture');
+  if (!$active) {
+    return;
+  }
+
   $user = \Drupal::currentUser();
   if (isset($user->uid)) {
     $uid = $user->uid;
@@ -71,8 +77,8 @@ function impression_page_attachments(array &$attachments) {
  */
 function impression_cron() {
 
-  $cron_config = \Drupal::configFactory()->getEditable('examples.cron');
-  $interval = $cron_config->get('interval');
+  $interval = \Drupal::config('impression.settings')->get('interval');
+
   $daysdelete = !empty($interval) ? $interval : 0;
 
   if (intval($daysdelete) > 0) {
diff --git a/src/EventSubscriber/ImpressionSubscriber.php b/src/EventSubscriber/ImpressionSubscriber.php
index 8546fa5..240e3ca 100644
--- a/src/EventSubscriber/ImpressionSubscriber.php
+++ b/src/EventSubscriber/ImpressionSubscriber.php
@@ -17,7 +17,17 @@ class ImpressionSubscriber implements EventSubscriberInterface {
     return [KernelEvents::REQUEST => ['onEvent', 0]];
   }
 
+  /**
+   * {@inheritdoc}
+   */
   public function onEvent(\Symfony\Component\HttpKernel\Event\GetResponseEvent $event) {
+
+    // Stop here if capture function is turned off.
+    $active = \Drupal::config('impression.settings')->get('capture');
+    if (!$active) {
+      return;
+    }
+
     $position = stripos($_SERVER['REQUEST_URI'], '/impression');
     $user = \Drupal::currentUser();
     if (isset($user->uid)) {
diff --git a/src/Form/SettingForm.php b/src/Form/SettingForm.php
index f83d138..8802b12 100644
--- a/src/Form/SettingForm.php
+++ b/src/Form/SettingForm.php
@@ -85,7 +85,7 @@ class SettingForm extends ConfigFormBase {
    * {@inheritdoc}
    */
   public function buildForm(array $form, FormStateInterface $form_state) {
-    $config = $this->configFactory->get('impression.settings');
+    $config = $this->config('impression.settings');
 
     $form['configuration'] = [
       '#type' => 'details',
@@ -106,6 +106,11 @@ class SettingForm extends ConfigFormBase {
         31536000 => $this->t('1 year'),
       ],
     ];
+    $form['configuration']['impression_start'] = [
+      '#type' => 'checkbox',
+      '#title' => $this->t('Start capture impression data.'),
+      '#default_value' => $config->get('capture'),
+    ];
 
     return parent::buildForm($form, $form_state);
   }
@@ -117,8 +122,9 @@ class SettingForm extends ConfigFormBase {
     // Update the interval as stored in configuration. This will be read when
     // this modules hook_cron function fires and will be used to ensure that
     // action is taken only after the appropiate time has elapsed.
-    $this->configFactory->getEditable('impression.settings')
+    $this->config('impression.settings')
       ->set('interval', $form_state->getValue('impression_interval'))
+      ->set('capture', $form_state->getValue('impression_start'))
       ->save();
 
     parent::submitForm($form, $form_state);
