You are here

twig_tweak_test.module in Twig Tweak 3.1.x

Primary module hooks for Twig Tweak test module.

File

tests/twig_tweak_test/twig_tweak_test.module
View source
<?php

/**
 * @file
 * Primary module hooks for Twig Tweak test module.
 */
use Drupal\block\BlockInterface;
use Drupal\Core\Access\AccessResult;
use Drupal\Core\Access\AccessResultInterface;
use Drupal\file\FileInterface;
use Drupal\node\Entity\Node;
use Drupal\node\NodeInterface;
use Twig\TwigFilter;
use Twig\TwigFunction;
use Twig\TwigTest;

/**
 * Implements hook_page_bottom().
 */
function twig_tweak_test_page_bottom() : void {
  Drupal::service('messenger')
    ->addMessage('Hello world!');
}

/**
 * Implements hook_theme().
 */
function twig_tweak_test_theme() : array {
  return [
    'twig_tweak_test' => [
      'variables' => [],
    ],
  ];
}

/**
 * Prepares variables for twig-tweak-test template.
 */
function template_preprocess_twig_tweak_test(array &$vars) : void {
  $vars['node'] = Node::load(1);
}

/**
 * Implements hook_block_access().
 *
 * @see \Drupal\Tests\twig_tweak\Kernel\RegionViewBuilderTest
 */
function twig_tweak_test_block_access(BlockInterface $block) : AccessResultInterface {
  $result = AccessResult::forbiddenIf($block
    ->id() == 'private_block');
  $result
    ->cachePerUser();
  $result
    ->addCacheTags([
    'tag_for_' . $block
      ->id(),
  ]);
  $result
    ->setCacheMaxAge(123);
  return $result;
}

/**
 * Implements hook_node_access().
 *
 * @see \Drupal\Tests\twig_tweak\Kernel\EntityViewBuilderTest
 */
function twig_tweak_test_node_access(NodeInterface $node) : AccessResultInterface {
  $result = AccessResult::forbiddenIf($node
    ->getTitle() == 'Private node');
  $result
    ->addCacheTags([
    'tag_from_' . __FUNCTION__,
  ]);
  $result
    ->cachePerUser();
  $result
    ->setCacheMaxAge(50);
  return $result;
}

/**
 * Implements hook_file_access().
 *
 * @see \Drupal\Tests\twig_tweak\Kernel\ImageViewBuilderTest
 */
function twig_tweak_test_file_access(FileInterface $file) : AccessResultInterface {
  $is_public = parse_url($file
    ->getFileUri(), PHP_URL_SCHEME) == 'public';
  $result = AccessResult::allowedIf($is_public);
  $result
    ->cachePerUser();
  $result
    ->addCacheTags([
    'tag_for_' . $file
      ->getFileUri(),
  ]);
  $result
    ->setCacheMaxAge(70);
  return $result;
}

/**
 * Implements hook_twig_tweak_functions_alter().
 */
function twig_tweak_test_twig_tweak_functions_alter(array &$functions) {
  $functions[] = new TwigFunction('foo', function (string $value) : string {
    return "-={$value}=-";
  });
}

/**
 * Implements hook_twig_tweak_filters_alter().
 */
function twig_tweak_test_twig_tweak_filters_alter(array &$filters) {
  $filters[] = new TwigFilter('bar', function (string $input) : string {
    return str_replace('foo', 'bar', $input);
  });
}

/**
 * Implements hook_twig_tweak_tests_alter().
 */
function twig_tweak_test_twig_tweak_tests_alter(array &$tests) {
  $tests[] = new TwigTest('ok', function ($input) : bool {
    return $input == 'ok';
  });
}