Commit 3f0f1acd authored by Tim Plunkett's avatar Tim Plunkett
Browse files

Follow-up for #3279663

parent 56f76a43
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

namespace Drupal\project_browser\Controller;

use Drupal\Component\Serialization\Json;
use Drupal\Component\Utility\Xss;
use Drupal\Core\Cache\CacheableResponseInterface;
use Drupal\Core\Controller\ControllerBase;
@@ -81,37 +82,37 @@ class ProjectBrowserEndpointController extends ControllerBase {
      // Page and limit are checked against a valid list in in_array, below.
      'page' => (int) $request->query->get('page', 0),
      'limit' => (int) $request->query->get('limit', 12),
      'sort' => Xss::filter($request->query->get('sort')),
      'sort' => Xss::filter($request->query->get('sort', '')),
      'direction' => in_array($direction, ['ASC', 'DESC']) ? $direction : 'ASC',
    ];

    $title = $request->query->get('search', NULL);
    $title = $request->query->get('search');
    if ($title) {
      $query['search'] = Xss::filter($title);
    }

    $categories = $request->query->get('categories', NULL);
    $categories = $request->query->get('categories');
    if ($categories) {
      $query['categories'] = Xss::filter($categories);
    }

    $maintenance_status = $request->query->get('maintenance_status', NULL);
    $maintenance_status = $request->query->get('maintenance_status');
    if ($maintenance_status) {
      $query['maintenance_status'] = Xss::filter($maintenance_status);
    }

    $development_status = $request->query->get('development_status', NULL);
    $development_status = $request->query->get('development_status');
    if ($development_status) {
      $query['development_status'] = Xss::filter($development_status);
    }

    $security_advisory_coverage = $request->query->get('security_advisory_coverage', NULL);
    $security_advisory_coverage = $request->query->get('security_advisory_coverage');
    if ($security_advisory_coverage) {
      $query['security_advisory_coverage'] = Xss::filter($security_advisory_coverage);
    }

    // Cache only exact query, down to the page number.
    $cache_key = 'project_browser:projects:' . md5(json_encode($query));
    $cache_key = 'project_browser:projects:' . md5(Json::encode($query));
    if ($projects = $this->cacheBin->get($cache_key)) {
      $projects = $projects->data;
    }