views_add_button-8.x-1.x-dev/src/Plugin/views/ViewsAddButtonTrait.php

src/Plugin/views/ViewsAddButtonTrait.php
<?php

namespace Drupal\views_add_button\Plugin\views;

/**
 * Views Add Button trait.
 */
trait ViewsAddButtonTrait {

  /**
   * Get Replacement Characters.
   *
   * @return array
   *   Replacement characters.
   */
  public function viewsAddButtonGetReplacementCharacters() {
    return [
      '%5B' => '[',
      '%5D' => ']',
      '%7B' => '{',
      '%7D' => '}',
      '&amp;' => '&',
    ];
  }

  /**
   * Cleans up special characters in a string.
   *
   * @param string $str
   *   String to perform character replacement.
   *
   * @return string
   *   Transformed string
   */
  public function viewsAddButtonCleanupSpecialCharacters($str = '') {
    $replace = $this->viewsAddButtonGetReplacementCharacters();

    return strtr($str, $replace);
  }

  /**
   * Parses the query string option and returns an associative array.
   *
   * @param null|object $values
   *   Optional values object containing index property for token replacement.
   *
   * @return array
   *   An associative array of query options, where keys are parameters and
   *   values are their values.
   */
  public function getQueryString($values = NULL) {
    $query_string = $this->options['query_string'];
    if (isset($values->index)) {
      $q = $this->options['tokenize'] ? $this->tokenizeValue($query_string, $values->index) : $query_string;
    }
    else {
      $q = $this->options['tokenize'] ? $this->tokenizeValue($query_string) : $query_string;
    }
    $query_opts = [];
    if ($q) {
      $q = $this->viewsAddButtonCleanupSpecialCharacters($q);
      $qparts = explode('&', (string) $q);

      foreach ($qparts as $part) {
        $p = explode('=', $part);
        if (is_array($p) && count($p) > 1) {
          $query_opts[$p[0]] = trim($p[1]);
        }
      }
    }
    return $query_opts;
  }

}

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

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