示例#1
0
 /**
  * Collect information from Twig
  *
  * @param Request    $request   The Request Object
  * @param Response   $response  The Response Object
  * @param \Exception $exception The Exception
  */
 public function collect(Request $request, Response $response, \Exception $exception = null)
 {
     $filters = array();
     $tests = array();
     $extensions = array();
     $functions = array();
     foreach ($this->getTwig()->getExtensions() as $extensionName => $extension) {
         $extensions[] = array('name' => $extensionName, 'class' => get_class($extension));
         foreach ($extension->getFilters() as $filterName => $filter) {
             if ($filter instanceof \Twig_FilterInterface) {
                 $call = $filter->compile();
                 if (is_array($call) && is_callable($call)) {
                     $call = 'Method ' . $call[1] . ' of an object ' . get_class($call[0]);
                 }
             } else {
                 $call = $filter->getName();
             }
             $filters[] = array('name' => $filterName, 'extension' => $extensionName, 'call' => $call);
         }
         foreach ($extension->getTests() as $testName => $test) {
             if ($test instanceof \Twig_TestInterface) {
                 $call = $test->compile();
             } else {
                 $call = $test->getName();
             }
             $tests[] = array('name' => $testName, 'extension' => $extensionName, 'call' => $call);
         }
         foreach ($extension->getFunctions() as $functionName => $function) {
             if ($function instanceof \Twig_FunctionInterface) {
                 $call = $function->compile();
             } else {
                 $call = $function->getName();
             }
             $functions[] = array('name' => $functionName, 'extension' => $extensionName, 'call' => $call);
         }
     }
     $this->data = array('extensions' => $extensions, 'tests' => $tests, 'filters' => $filters, 'functions' => $functions, 'templates' => hackislyParseRegexTemplates($this->app['twig.loader']), 'templatechosen' => $this->app['log']->getValue('templatechosen'), 'templateerror' => $this->app['log']->getValue('templateerror'));
 }
示例#2
0
            return "";
        }
        $queries = array();
        $querycount = 0;
        $querytime = 0;
        foreach ($logger->queries as $query) {
            // Skip "PRAGMA .." queries by SQLITE.
            if (strpos($query['sql'], "PRAGMA ") === 0) {
                continue;
            }
            $queries[] = array('query' => $query['sql'], 'params' => $query['params'], 'types' => $query['types'], 'duration' => sprintf("%0.2f", $query['executionMS']));
            $querycount++;
            $querytime += $query['executionMS'];
        }
        $twig = $app['twig.loader'];
        $templates = hackislyParseRegexTemplates($twig);
        $route = $request->get('_route');
        $route_params = $request->get('_route_params');
        $log = $app['log']->getMemorylog();
        // echo "<pre>\n" . util::var_dump($log, true) . "</pre>\n";
        $servervars = array('cookies <small>($_COOKIES)</small>' => $request->cookies->all(), 'headers' => makeValuepairs($request->headers->all(), '', '0'), 'query <small>($_GET)</small>' => $request->query->all(), 'request <small>($_POST)</small>' => $request->request->all(), 'session <small>($_SESSION)</small>' => $request->getSession()->all(), 'server <small>($_SERVER)</small>' => $request->server->all(), 'response' => makeValuepairs($response->headers->all(), '', '0'), 'statuscode' => $response->getStatusCode());
        echo $app['twig']->render('debugbar.twig', array('timetaken' => timeTaken(), 'memtaken' => getMem(), 'memtaken' => getMaxMem(), 'querycount' => $querycount, 'querytime' => sprintf("%0.2f", $querytime), 'queries' => $queries, 'servervars' => $servervars, 'templates' => $templates, 'log' => $log, 'route' => "/" . $route, 'route_params' => $route_params, 'editlink' => $app['editlink'], 'paths' => getPaths($app['config'])));
    });
}
$app->after(function (Request $request, Response $response) use($app) {
    $end = !empty($app['end']) ? $app['end'] : false;
    if ($end == "frontend") {
        $html = $response->getContent();
        // Insert our 'generator' after the last <meta ..> tag.
        $app['extensions']->insertSnippet('aftermeta', '<meta name="generator" content="Bolt">');
        $html = $app['extensions']->processSnippetQueue($html);
示例#3
0
 public function initAfterHandler()
 {
     // On 'after' attach the debug-bar, if debug is enabled..
     if ($this['debug'] && ($this['session']->has('user') || $this['config']->get('general/debug_show_loggedoff'))) {
         // Set the error_reporting to the level specified in config.yml
         error_reporting($this['config']->get('general/debug_error_level'));
         // Register Whoops, to handle errors for logged in users only.
         if ($this['config']->get('general/debug_enable_whoops')) {
             $this->register(new WhoopsServiceProvider());
         }
         $this->register(new Silex\Provider\ServiceControllerServiceProvider());
         // Register the Silex/Symfony web debug toolbar.
         $this->register(new Silex\Provider\WebProfilerServiceProvider(), array('profiler.cache_dir' => $this['resources']->getPath('cache') . '/profiler', 'profiler.mount_prefix' => '/_profiler'));
         // Register the toolbar item for our Database query log.
         $this->register(new Provider\DatabaseProfilerServiceProvider());
         // Register the toolbar item for our bolt nipple.
         $this->register(new Provider\BoltProfilerServiceProvider());
         // Register the toolbar item for the Twig toolbar item.
         $this->register(new Provider\TwigProfilerServiceProvider());
         $this['twig.loader.filesystem']->addPath(BOLT_PROJECT_ROOT_DIR . '/vendor/symfony/web-profiler-bundle/Symfony/Bundle/WebProfilerBundle/Resources/views', 'WebProfiler');
         $this['twig.loader.filesystem']->addPath(__DIR__ . '/../../view', 'BoltProfiler');
         // PHP 5.3 does not allow 'use ($this)' in closures.
         $app = $this;
         $this->after(function () use($app) {
             foreach (hackislyParseRegexTemplates($app['twig.loader.filesystem']) as $template) {
                 $app['twig.logger']->collectTemplateData($template);
             }
         });
     } else {
         error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_USER_DEPRECATED);
     }
     $this->after(array($this, 'afterHandler'));
 }