ToolbarController.php

Namespace

Drupal\webprofiler\Controller

File

webprofiler/src/Controller/ToolbarController.php

View source
<?php

namespace Drupal\webprofiler\Controller;

use Drupal\Component\Serialization\Json;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Render\RendererInterface;
use Drupal\webprofiler\Profiler\Profiler;
use Drupal\webprofiler\Profiler\TemplateManager;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Profiler\Profile;

/**
 * Class ToolbarController
 */
class ToolbarController extends ControllerBase {
    
    /**
     * @var \Drupal\webprofiler\Profiler\Profiler
     */
    private $profiler;
    
    /**
     * @var \Drupal\webprofiler\Profiler\TemplateManager
     */
    private $templateManager;
    
    /**
     * @var \Drupal\Core\Render\RendererInterface
     */
    private $renderer;
    
    /**
     * {@inheritdoc}
     */
    public static function create(ContainerInterface $container) {
        return new static($container->get('profiler'), $container->get('template_manager'), $container->get('renderer'));
    }
    
    /**
     * Constructs a new WebprofilerController.
     *
     * @param \Drupal\webprofiler\Profiler\Profiler $profiler
     * @param \Drupal\webprofiler\Profiler\TemplateManager $templateManager
     * @param \Drupal\Core\Render\RendererInterface $renderer
     */
    public function __construct(Profiler $profiler, TemplateManager $templateManager, RendererInterface $renderer) {
        $this->profiler = $profiler;
        $this->templateManager = $templateManager;
        $this->renderer = $renderer;
    }
    
    /**
     * Generates the toolbar.
     *
     * @param Profile $profile
     *
     * @return \Symfony\Component\HttpFoundation\Response
     *
     * @throws \Exception
     */
    public function toolbarAction(Profile $profile) {
        $this->profiler
            ->disable();
        $templates = $this->templateManager
            ->getTemplates($profile);
        $rendered = '';
        foreach ($templates as $name => $template) {
            $rendered .= $template->renderBlock('toolbar', [
                'collector' => $profile->getcollector($name),
                'token' => $profile->getToken(),
                'name' => $name,
            ]);
        }
        $toolbar = [
            '#theme' => 'webprofiler_toolbar',
            '#toolbar' => $rendered,
            '#token' => $profile->getToken(),
        ];
        return new Response($this->renderer
            ->render($toolbar));
    }
    
    /**
     * @param \Symfony\Component\HttpKernel\Profiler\Profile $profile
     * @param \Symfony\Component\HttpFoundation\Request $request
     *
     * @return \Symfony\Component\HttpFoundation\JsonResponse
     */
    public function savePerformanceTimingAction(Profile $profile, Request $request) {
        $this->profiler
            ->disable();
        $data = Json::decode($request->getContent());
        
        /** @var  $collector */
        $collector = $profile->getCollector('performance_timing');
        $collector->setData($data);
        $this->profiler
            ->updateProfile($profile);
        return new JsonResponse([
            'success' => TRUE,
        ]);
    }

}

Classes

Title Deprecated Summary
ToolbarController Class ToolbarController