dvf-2.x-dev/src/DvfHelpers.php

src/DvfHelpers.php
<?php

namespace Drupal\dvf;

use Drupal\Component\Render\FormattableMarkup;

/**
 * Provide helpers functions for the whole module.
 */
class DvfHelpers {

  /**
   * The help page base path.
   *
   * @var string
   */
  protected $helpPageBasePath;

  /**
   * Constructs a new DvfHelpers object.
   */
  public function __construct() {
    $this->helpPageBasePath = '/dvf/help/';
  }

  /**
   * Transforms a regular string into a machine_name.
   *
   * @param string $string
   *   The regular string.
   *
   * @return string
   *   The machine name version of the string.
   */
  public function transformMachineName($string) {
    return preg_replace('/[^A-Za-z0-9\-\_]/', '', strtolower(trim(str_replace(' ', '_', $string))));
  }

  /**
   * Returns a help page link, using the base path defined above.
   *
   * @param string $template_name
   *   The name of the template to link to.
   *
   *   E.g. "label-overrides" loads templates/help/label-overrides.html.twig.
   *
   * @return string
   *   The link.
   */
  public function getHelpPageLink($template_name) {
    return new FormattableMarkup('<span class="dvf-admin-popup"><a href="/dvf/help/@template_name">Help</a> &#x29c9;</span>', ['@template_name' => $template_name]);
  }

  /**
   * Check if a value is correctly formatted JSON.
   *
   * @param string $raw_json
   *   The JSON string.
   *
   * @return bool
   *   True if JSON, false if not.
   */
  public function validateJson($raw_json) {
    return (json_decode($raw_json, TRUE) == NULL) ? FALSE : TRUE;
  }

  /**
   * Recursively removes empty elements from nested array.
   *
   * @param array $array
   *   The array to remove the empty elements from.
   *
   * @return array
   *   The filtered array.
   */
  public function filterArrayRecursive(array $array) {
    foreach ($array as $key => $value) {
      if (is_array($value)) {
        $array[$key] = self::filterArrayRecursive($array[$key]);
      }

      if (empty($array[$key])) {
        unset($array[$key]);
      }
    }

    return $array;
  }

  /**
   * Helper to transform a config string to an associative array.
   *
   * @param string $config_string
   *   A string, generally from a textarea input. Each line becomes an array
   *   item, on each line, key/value are separated with a pipe (|).
   *
   * @return array
   *   Associative array
   */
  public function configStringToArray(string $config_string) {
    $array = [];
    if (empty(trim($config_string))) {
      return $array;
    }

    $items = preg_split("(\r\n?|\n)", $config_string);
    foreach ($items as $item) {
      [$key, $value] = explode('|', trim($item), 2);
      $array[$key] = $value;
    }

    return $array;
  }

}

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

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