![]() Server : Apache/2.4.62 (Unix) OpenSSL/1.0.2k-fips System : Linux server1.richineiserver.com 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : fdshops ( 1003) PHP Version : 8.2.21 Disable Function : NONE Directory : /home/fdshops/public_html/vendor/barryvdh/laravel-debugbar/src/DataCollector/ |
<?php namespace Barryvdh\Debugbar\DataCollector; use Barryvdh\Debugbar\DataFormatter\SimpleFormatter; use DebugBar\Bridge\Twig\TwigCollector; use Illuminate\View\View; use InvalidArgumentException; class ViewCollector extends TwigCollector { protected $name; protected $templates = []; protected $collect_data; protected $exclude_paths; /** * A list of known editor strings. * * @var array */ protected $editors = [ 'sublime' => 'subl://open?url=file://%file&line=%line', 'textmate' => 'txmt://open?url=file://%file&line=%line', 'emacs' => 'emacs://open?url=file://%file&line=%line', 'macvim' => 'mvim://open/?url=file://%file&line=%line', 'phpstorm' => 'phpstorm://open?file=%file&line=%line', 'idea' => 'idea://open?file=%file&line=%line', 'vscode' => 'vscode://file/%file:%line', 'vscode-insiders' => 'vscode-insiders://file/%file:%line', 'vscode-remote' => 'vscode://vscode-remote/%file:%line', 'vscode-insiders-remote' => 'vscode-insiders://vscode-remote/%file:%line', 'vscodium' => 'vscodium://file/%file:%line', 'nova' => 'nova://core/open/file?filename=%file&line=%line', 'xdebug' => 'xdebug://%file@%line', 'atom' => 'atom://core/open/file?filename=%file&line=%line', 'espresso' => 'x-espresso://open?filepath=%file&lines=%line', 'netbeans' => 'netbeans://open/?f=%file:%line', ]; /** * Create a ViewCollector * * @param bool $collectData Collects view data when tru * @param string[] $excludePaths Paths to exclude from collection */ public function __construct($collectData = true, $excludePaths = []) { $this->setDataFormatter(new SimpleFormatter()); $this->collect_data = $collectData; $this->templates = []; $this->exclude_paths = $excludePaths; } public function getName() { return 'views'; } public function getWidgets() { return [ 'views' => [ 'icon' => 'leaf', 'widget' => 'PhpDebugBar.Widgets.TemplatesWidget', 'map' => 'views', 'default' => '[]' ], 'views:badge' => [ 'map' => 'views.nb_templates', 'default' => 0 ] ]; } /** * Get the editor href for a given file and line, if available. * * @param string $filePath * @param int $line * * @throws InvalidArgumentException If editor resolver does not return a string * * @return null|string */ protected function getEditorHref($filePath, $line) { if (empty(config('debugbar.editor'))) { return null; } if (empty($this->editors[config('debugbar.editor')])) { throw new InvalidArgumentException( 'Unknown editor identifier: ' . config('debugbar.editor') . '. Known editors:' . implode(', ', array_keys($this->editors)) ); } $filePath = $this->replaceSitesPath($filePath); $url = str_replace(['%file', '%line'], [$filePath, $line], $this->editors[config('debugbar.editor')]); return $url; } /** * Add a View instance to the Collector * * @param \Illuminate\View\View $view */ public function addView(View $view) { $name = $view->getName(); $path = $view->getPath(); $type = ''; if ($path && is_string($path)) { $path = ltrim(str_replace(base_path(), '', realpath($path)), '/'); if (substr($path, -10) == '.blade.php') { $type = 'blade'; } else { $type = pathinfo($path, PATHINFO_EXTENSION); } } elseif (is_object($path)) { $type = get_class($view); $path = ''; } foreach ($this->exclude_paths as $excludePath) { if (strpos($path, $excludePath) !== false) { return; } } if (!$this->collect_data) { $params = array_keys($view->getData()); } else { $data = []; foreach ($view->getData() as $key => $value) { $data[$key] = $this->getDataFormatter()->formatVar($value); } $params = $data; } $template = [ 'name' => $path ? sprintf('%s (%s)', $name, $path) : $name, 'param_count' => count($params), 'params' => $params, 'type' => $type, 'editorLink' => $this->getEditorHref($view->getPath(), 0), ]; if ($this->getXdebugLink($path)) { $template['xdebug_link'] = $this->getXdebugLink(realpath($view->getPath())); } $this->templates[] = $template; } public function collect() { $templates = $this->templates; return [ 'nb_templates' => count($templates), 'templates' => $templates, ]; } /** * Replace remote path * * @param string $filePath * * @return string */ protected function replaceSitesPath($filePath) { return str_replace(config('debugbar.remote_sites_path'), config('debugbar.local_sites_path'), $filePath); } }