You are here

pcb.module in Permanent Cache Bin 8.2

Same filename and directory in other branches
  1. 8 pcb.module

Module file for pcb.

File

pcb.module
View source
<?php

/**
 * @file
 * Module file for pcb.
 */
use Drupal\Core\Cache\Cache;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Messenger\MessengerInterface;
use Drupal\Core\Routing\RouteMatchInterface;

/**
 * Implements hook_help().
 */
function pcb_help($route_name, RouteMatchInterface $route_match) {
  switch ($route_name) {
    case 'help.page.pcb':
      $output = '';
      $output .= '<h3>' . t('About') . '</h3>';
      $output .= '<p>' . t('This module allows keeping site performance in check but not deleting caches which are not Drupal caches when doing drush cr. See README in module to get more details.') . '</p>';
      return $output;
  }
}

/**
 * Implements hook_form_FORM_ID_alter().
 */
function pcb_form_system_performance_settings_alter(array &$form, FormStateInterface $form_state) {
  $bins = Cache::getBins();
  foreach ($bins as $bin => $object) {
    if (method_exists($object, 'deleteAllPermanent')) {
      $form['clear_cache'][$bin] = [
        '#name' => $bin,
        '#type' => 'submit',
        '#value' => t('Clear permanent cache for @bin', [
          '@bin' => $bin,
        ]),
        '#submit' => [
          'pcb_form_system_performance_settings_submit',
        ],
      ];
    }
  }
}

/**
 * Submit callback for clearing specific permanent cache bins.
 */
function pcb_form_system_performance_settings_submit(array &$form, FormStateInterface $form_state) {
  $element = $form_state
    ->getTriggeringElement();
  $bin = $element['#name'] ?? '';
  if (empty($bin)) {
    return;
  }
  $messenger = \Drupal::messenger();
  try {
    \Drupal::service('cache.' . $bin)
      ->deleteAllPermanent();
    $messenger
      ->addMessage(t('Flushed cache for @bin.', [
      '@bin' => $bin,
    ]));
  } catch (\Exception $e) {
    $messenger
      ->addMessage($e
      ->getMessage(), MessengerInterface::TYPE_ERROR);
  }
}

Functions

Namesort descending Description
pcb_form_system_performance_settings_alter Implements hook_form_FORM_ID_alter().
pcb_form_system_performance_settings_submit Submit callback for clearing specific permanent cache bins.
pcb_help Implements hook_help().