![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/clinic.corals.io/vendor/facade/ignition/src/Views/Engines/ |
<?php namespace Facade\Ignition\Views\Engines; use Exception; use Facade\Ignition\Exceptions\ViewException; use Facade\Ignition\Exceptions\ViewExceptionWithSolution; use Facade\Ignition\Views\Compilers\BladeSourceMapCompiler; use Facade\Ignition\Views\Concerns\CollectsViewExceptions; use Facade\IgnitionContracts\ProvidesSolution; use Illuminate\Filesystem\Filesystem; use Illuminate\Support\Arr; use Illuminate\Support\Collection; use ReflectionProperty; use Throwable; class CompilerEngine extends \Illuminate\View\Engines\CompilerEngine { use CollectsViewExceptions; protected $currentPath = null; /** * Get the evaluated contents of the view. * * @param string $path * @param array $data * * @return string */ public function get($path, array $data = []) { $this->currentPath = $path; $this->collectViewData($path, $data); return parent::get($path, $data); } /** * Handle a view exception. * * @param \Throwable $baseException * @param int $obLevel * * @return void * * @throws \Throwable */ protected function handleViewException(Throwable $baseException, $obLevel) { while (ob_get_level() > $obLevel) { ob_end_clean(); } if ($baseException instanceof ViewException) { throw $baseException; } $viewExceptionClass = ViewException::class; if ($baseException instanceof ProvidesSolution) { $viewExceptionClass = ViewExceptionWithSolution::class; } $exception = new $viewExceptionClass( $this->getMessage($baseException), 0, 1, $this->getCompiledViewName($baseException->getFile()), $this->getBladeLineNumber($baseException->getFile(), $baseException->getLine()), $baseException ); if ($baseException instanceof ProvidesSolution) { $exception->setSolution($baseException->getSolution()); } $this->modifyViewsInTrace($exception); $exception->setView($this->getCompiledViewName($baseException->getFile())); $exception->setViewData($this->getCompiledViewData($baseException->getFile())); throw $exception; } protected function getBladeLineNumber(string $compiledPath, int $exceptionLineNumber): int { $viewPath = $this->getCompiledViewName($compiledPath); if (! $viewPath) { return $exceptionLineNumber; } $sourceMapCompiler = new BladeSourceMapCompiler(app(Filesystem::class), 'not-needed'); return $sourceMapCompiler->detectLineNumber($viewPath, $exceptionLineNumber); } protected function modifyViewsInTrace(ViewException $exception) { $trace = Collection::make($exception->getPrevious()->getTrace()) ->map(function ($trace) { if ($compiledData = $this->findCompiledView(Arr::get($trace, 'file', ''))) { $trace['file'] = $compiledData['path']; $trace['line'] = $this->getBladeLineNumber($trace['file'], $trace['line']); } return $trace; })->toArray(); $traceProperty = new ReflectionProperty('Exception', 'trace'); $traceProperty->setAccessible(true); $traceProperty->setValue($exception, $trace); } }