token_or-8.x-1.x-dev/modules/token_or_webform/src/TokenOrWebformTokenManager.php

modules/token_or_webform/src/TokenOrWebformTokenManager.php
<?php

namespace Drupal\token_or_webform;

use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Render\BubbleableMetadata;
use Drupal\webform\WebformTokenManager;

/**
 * Tokens Pre Alter Service.
 *
 * @property \Drupal\Core\Utility\Token $token
 */
class TokenOrWebformTokenManager extends WebformTokenManager {

  /**
   * {@inheritdoc}
   */
  public function replace($text, ?EntityInterface $entity = NULL, array $data = [], array $options = [], ?BubbleableMetadata $bubbleable_metadata = NULL) {
    if (!$text) {
      return $text;
    }

    if (is_array($text) || strpos($text, '|') === FALSE) {
      return parent::replace($text, $entity, $data, $options, $bubbleable_metadata);
    }
    $options['clear'] = 1;

    // For anonymous users remove all [current-user] tokens to prevent
    // anonymous user properties from being displayed.
    // For example, the [current-user:display-name] token will return
    // 'Anonymous', which is not an expected behavior.
    //
    // Updated to handle token_or's | syntax.
    if ($this->currentUser->isAnonymous() && strpos($text, '[current-user:') !== FALSE) {
      $text = preg_replace('/\[current-user:[^|]+\|/', '[', $text);
      // Removing current-user: might leave a single string token.
      // Let's clean that up.
      $text = preg_replace('/\["([^]"]+)"\]/', '$1', $text);
    }

    return parent::replace($text, $entity, $data, $options, $bubbleable_metadata);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc