filebrowser-8.x-2.x-dev/src/Services/FilebrowserValidator.php

src/Services/FilebrowserValidator.php
<?php

namespace Drupal\filebrowser\Services;


use Drupal\filebrowser\Filebrowser;

class FilebrowserValidator {

  /**
   * FilebrowserValidator constructor.
   */
  public function __construct() {
  }

  /**
   * Helper function to match a pattern on the path
   * @param string $path to process
   * @param array $patterns to search (separated by cr)
   * @return TRUE if at least one pattern is found
   */
  public function matchPath($path, $patterns) {
    static $regexps = NULL;
    //var_dump($path);

    if (!isset($regexps[$patterns])) {
      $regexps[$patterns] = '/^(' . preg_replace([
          '/(\r\n?|\n)/',
          '/\\\\\*/'
        ], [
          '|',
          '.*'
        ], preg_quote($patterns, '/')) . ')$/i';
    }
    $result = preg_match($regexps[$patterns], $this->safeBaseName($path)) == 1;
    return $result;
  }

  public function whiteListed($file, $pattern) {
      return trim($pattern) == '' || $this->matchPath($file, $pattern);
  }

  public function blackListed($file, $pattern) {
    return trim($pattern) != '' && $this->matchPath($file, $pattern);
  }

  public function exploreSubdirs($path, $node) {
    if (is_dir($path)) {
      return $node->filebrowser->exploreSubdirs;
    }
    else {
      return true;
    }
  }

  public function safeBaseName($path) {
    $path = rtrim($path, '/');
    $path = explode('/', $path);
    return end($path);
  }

  public function safeDirName($path) {
    $path = rtrim($path, '/');
    $path = explode('/', $path);
    array_pop($path);
    $result = implode("/", $path);
    if ($result == '') {
      return '/';
    }
    return $result;
  }

  /**
   * @param string $folder_path
   * @return string tokenized folder path
   */
  public function getNodeRoot($folder_path) {
    // fixme: token support broken
    // token_replace is in D7 core *** if (module_exists("token")) {
    // $folder_path = \Drupal::token()->replace($path, ['type' => 'global', 'object' => NULL, 'leading' => '[',
    // $trailing = ']']);
    return $folder_path;
  }

  public function encodingToFs($encoding, $string) {
    return strcasecmp($encoding, 'UTF-8') == 0 ? $string : mb_convert_encoding($string, $encoding, "UTF-8");
  }
}

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

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