41 lines
981 B
PHP
41 lines
981 B
PHP
<?php namespace Clockwork\DataSource;
|
|
|
|
use Clockwork\Request\Request;
|
|
use Clockwork\Support\Twig\ProfilerClockworkDumper;
|
|
|
|
use Twig_Environment;
|
|
use Twig_Extension_Profiler;
|
|
use Twig_Profiler_Profile;
|
|
|
|
// Data source for Twig, provides rendered views
|
|
class TwigDataSource extends DataSource
|
|
{
|
|
// Twig environment instance
|
|
protected $twig;
|
|
|
|
// Twig profile instance
|
|
protected $profile;
|
|
|
|
// Create a new data source, takes Twig instance as an argument
|
|
public function __construct(Twig_Environment $twig)
|
|
{
|
|
$this->twig = $twig;
|
|
}
|
|
|
|
// Register the Twig profiler extension
|
|
public function listenToEvents()
|
|
{
|
|
$this->twig->addExtension(new Twig_Extension_Profiler($this->profile = new Twig_Profiler_Profile));
|
|
}
|
|
|
|
// Adds rendered views to the request
|
|
public function resolve(Request $request)
|
|
{
|
|
$timeline = (new ProfilerClockworkDumper)->dump($this->profile);
|
|
|
|
$request->viewsData = array_merge($request->viewsData, $timeline->finalize());
|
|
|
|
return $request;
|
|
}
|
|
}
|