You are here

MaestroAutoCompleteController.php in Maestro 3.x

Same filename and directory in other branches
  1. 8.2 src/Controller/MaestroAutoCompleteController.php

File

src/Controller/MaestroAutoCompleteController.php
View source
<?php

namespace Drupal\maestro\Controller;

use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Drupal\Core\Controller\ControllerBase;

/**
 * Maestro Autocomplete controller for roles, interactive
 * handlers and batch handlers.
 */
class MaestroAutoCompleteController extends ControllerBase {

  /**
   * Returns response for the autocompletion.
   *
   * @param \Symfony\Component\HttpFoundation\Request $request
   *   The current request object containing the search string.
   *
   * @return \Symfony\Component\HttpFoundation\JsonResponse
   *   A JSON response containing the autocomplete suggestions.
   */
  public function autocompleteRoles(Request $request) {
    $matches = [];
    $string = $request->query
      ->get('q');
    $roles = user_role_names(TRUE);
    foreach ($roles as $rid => $name) {
      if (stristr($name, $string) !== FALSE) {
        $matches[] = $name . " ({$rid})";
      }
    }
    return new JsonResponse($matches);
  }

  /**
   * Returns response for the autocompletion.
   *
   * @param \Symfony\Component\HttpFoundation\Request $request
   *   The current request object containing the search string.
   *
   * @return \Symfony\Component\HttpFoundation\JsonResponse
   *   A JSON response containing the autocomplete suggestions.
   */
  public function autocompleteInteractiveHandlers(Request $request) {
    $handlers = [];
    $matches = [];
    $string = $request->query
      ->get('q');

    // Let modules signal the handlers they wish to share.
    $handlers = \Drupal::moduleHandler()
      ->invokeAll('maestro_interactive_handlers', []);

    // Now what are our matches based on the incoming request.
    foreach ($handlers as $name => $desc) {
      if (stristr($name, $string) !== FALSE) {
        $matches[] = $name;
      }
    }
    return new JsonResponse($matches);
  }

  /**
   * Returns response for the autocompletion.
   *
   * @param \Symfony\Component\HttpFoundation\Request $request
   *   The current request object containing the search string.
   *
   * @return \Symfony\Component\HttpFoundation\JsonResponse
   *   A JSON response containing the autocomplete suggestions.
   */
  public function autocompleteBatchHandlers(Request $request) {
    $handlers = [];
    $matches = [];
    $string = $request->query
      ->get('q');

    // Let modules signal the handlers they wish to share.
    $handlers = \Drupal::moduleHandler()
      ->invokeAll('maestro_batch_handlers', []);

    // Now what are our matches based on the incoming request.
    foreach ($handlers as $name => $desc) {
      if (stristr($name, $string) !== FALSE) {
        $matches[] = $name;
      }
    }
    return new JsonResponse($matches);
  }

}

Classes

Namesort descending Description
MaestroAutoCompleteController Maestro Autocomplete controller for roles, interactive handlers and batch handlers.