You are here

FileAutocompleteController.php in Ubercart 8.4

File

uc_file/src/Controller/FileAutocompleteController.php
View source
<?php

namespace Drupal\uc_file\Controller;

use Drupal\Component\Utility\Tags;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;

/**
 * Utility functions for autocompleting file download filenames.
 */
class FileAutocompleteController {

  /**
   * Returns autocompletion content for file name textfield.
   *
   * @param \Symfony\Component\HttpFoundation\Request $request
   *   The request of the page.
   *
   * @return \Symfony\Component\HttpFoundation\JsonResponse
   *   A JSON response.
   */
  public function autocompleteFilename(Request $request) {
    $matches = [];

    // Get the typed string from the URL, if it exists.
    if ($input = $request->query
      ->get('q')) {
      $typed_string = Tags::explode($input);
      $typed_string = mb_strtolower(array_pop($typed_string));
      $filenames = \Drupal::database()
        ->select('uc_files', 'f')
        ->fields('f', [
        'filename',
      ])
        ->condition('filename', '%' . \Drupal::database()
        ->escapeLike($typed_string) . '%', 'LIKE')
        ->execute();
      while ($name = $filenames
        ->fetchField()) {
        $matches[] = [
          'value' => $name,
        ];
      }
    }
    return new JsonResponse($matches);
  }

}

Classes

Namesort descending Description
FileAutocompleteController Utility functions for autocompleting file download filenames.