$this->options['bypass_shell'] = true; $commandline = $this->prepareWindowsCommandLine($commandline, $env); } elseif (!$this->useFileHandles && $this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { // last exit code is output on the fourth pipe and caught to work around --enable-sigchild $descriptors[3] = array('pipe', 'w'); // See https://unix.stackexchange.com/questions/71205/background-process-pipe-input $commandline = '{ ('.$commandline.') <&3 3<&- 3>/dev/null & } 3<&0;'; $commandline .= 'pid=$!; echo $pid >&3; wait $pid; code=$?; echo $code >&3; exit $code'; // Workaround for the bug, when PTS functionality is enabled. // @see : https://bugs.php.net/69442 $ptsWorkaround = fopen(__FILE__, 'r'); } if (!is_dir($this->cwd)) { @trigger_error('The provided cwd does not exist. Command is currently ran against getcwd(). This behavior is deprecated since version 3.4 and will be removed in 4.0.', E_USER_DEPRECATED); } $this->process = proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $env, $this->options); if (!is_resource($this->process)) { throw new RuntimeException('Unable to launch a new process.'); } $this->status = self::STATUS_STARTED; if (isset($descriptors[3])) { $this->fallbackStatus['pid'] = (int) fgets($this->processPipes->pipes[3]); } if ($this->tty) { return; } $this->updateStatus(false); $this->checkTimeout(); } /** * Restarts the process.
"Array to string conversion"
$this->options['bypass_shell'] = true; $commandline = $this->prepareWindowsCommandLine($commandline, $env); } elseif (!$this->useFileHandles && $this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { // last exit code is output on the fourth pipe and caught to work around --enable-sigchild $descriptors[3] = array('pipe', 'w'); // See https://unix.stackexchange.com/questions/71205/background-process-pipe-input $commandline = '{ ('.$commandline.') <&3 3<&- 3>/dev/null & } 3<&0;'; $commandline .= 'pid=$!; echo $pid >&3; wait $pid; code=$?; echo $code >&3; exit $code'; // Workaround for the bug, when PTS functionality is enabled. // @see : https://bugs.php.net/69442 $ptsWorkaround = fopen(__FILE__, 'r'); } if (!is_dir($this->cwd)) { @trigger_error('The provided cwd does not exist. Command is currently ran against getcwd(). This behavior is deprecated since version 3.4 and will be removed in 4.0.', E_USER_DEPRECATED); } $this->process = proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $env, $this->options); if (!is_resource($this->process)) { throw new RuntimeException('Unable to launch a new process.'); } $this->status = self::STATUS_STARTED; if (isset($descriptors[3])) { $this->fallbackStatus['pid'] = (int) fgets($this->processPipes->pipes[3]); } if ($this->tty) { return; } $this->updateStatus(false); $this->checkTimeout(); } /** * Restarts the process.
"/usr/local/bin/wkhtmltopdf --lowquality --orientation 'portrait' --page-size 'a4' '/tmp/knp_snappy66066281b9ace6.70164058.html' '/tmp/knp_snappy66066281b9b555.35041010.pdf'"
array:3 [ 0 => array:2 [ 0 => "pipe" 1 => "r" ] 1 => array:2 [ 0 => "pipe" 1 => "w" ] 2 => array:2 [ 0 => "pipe" 1 => "w" ] ]
array:3 [ 0 => Closed resource @304 1 => Closed resource @305 2 => Closed resource @306 ]
"/home/flobha/public_html/public"
array:45 [ "USER" => "flobha" "HOME" => "/home/flobha" "SCRIPT_NAME" => "/index.php" "REQUEST_URI" => "/download-pattern/244" "QUERY_STRING" => "" "REQUEST_METHOD" => "GET" "SERVER_PROTOCOL" => "HTTP/1.1" "GATEWAY_INTERFACE" => "CGI/1.1" "REDIRECT_URL" => "/download-pattern/244" "REMOTE_PORT" => "36544" "SCRIPT_FILENAME" => "/home/flobha/public_html/public/index.php" "SERVER_ADMIN" => "webmaster@bharatfloorings.com" "CONTEXT_DOCUMENT_ROOT" => "/home/flobha/public_html/public" "CONTEXT_PREFIX" => "" "REQUEST_SCHEME" => "https" "DOCUMENT_ROOT" => "/home/flobha/public_html/public" "REMOTE_ADDR" => "35.173.125.112" "SERVER_PORT" => "443" "SERVER_ADDR" => "95.216.37.147" "SERVER_NAME" => "www.bharatfloorings.com" "SERVER_SOFTWARE" => "Apache" "SERVER_SIGNATURE" => "" "PATH" => "/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin:/opt/bin" "HTTP_X_HTTPS" => "1" "HTTP_HOST" => "www.bharatfloorings.com" "HTTP_USER_AGENT" => "claudebot" "HTTP_ACCEPT" => "*/*" "proxy-nokeepalive" => "1" "SSL_TLS_SNI" => "www.bharatfloorings.com" "HTTPS" => "on" "SCRIPT_URI" => "https://www.bharatfloorings.com/download-pattern/244" "SCRIPT_URL" => "/download-pattern/244" "UNIQUE_ID" => "ZgZigS6FuqqIaPnX5FNCIAAAAEY" "REDIRECT_STATUS" => "200" "REDIRECT_SSL_TLS_SNI" => "www.bharatfloorings.com" "REDIRECT_HTTPS" => "on" "REDIRECT_SCRIPT_URI" => "https://www.bharatfloorings.com/download-pattern/244" "REDIRECT_SCRIPT_URL" => "/download-pattern/244" "REDIRECT_UNIQUE_ID" => "ZgZigS6FuqqIaPnX5FNCIAAAAEY" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1711694465.6855 "REQUEST_TIME" => 1711694465 "argv" => [] "argc" => 0 ]
array:1 [ "suppress_errors" => true ]
* * The STDOUT and STDERR are also available after the process is finished * via the getOutput() and getErrorOutput() methods. * * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR * @param array $env An array of additional env vars to set when running the process * * @return int The exit status code * * @throws RuntimeException When process can't be launched * @throws RuntimeException When process stopped after receiving signal * @throws LogicException In case a callback is provided and output has been disabled * * @final since version 3.3 */ public function run($callback = null/*, array $env = array()*/) { $env = 1 < func_num_args() ? func_get_arg(1) : null; $this->start($callback, $env); return $this->wait(); } /** * Runs the process. * * This is identical to run() except that an exception is thrown if the process * exits with a non-zero exit code. * * @param callable|null $callback * @param array $env An array of additional env vars to set when running the process * * @return self * * @throws RuntimeException if PHP was compiled with --enable-sigchild and the enhanced sigchild compatibility mode is not enabled * @throws ProcessFailedException if the process didn't terminate successfully * * @final since version 3.3 */
null
null
* Executes the given command via shell and returns the complete output as * a string. * * @param string $command * * @return array(status, stdout, stderr) */ protected function executeCommand($command) { if (method_exists(Process::class, 'fromShellCommandline')) { $process = Process::fromShellCommandline($command, null, $this->env); } else { $process = new Process($command, null, $this->env); } if (false !== $this->timeout) { $process->setTimeout($this->timeout); } $process->run(); return [ $process->getExitCode(), $process->getOutput(), $process->getErrorOutput(), ]; } /** * Prepares the specified output. * * @param string $filename The output filename * @param bool $overwrite Whether to overwrite the file if it already * exist * * @throws Exception\FileAlreadyExistsException * @throws \RuntimeException * @throws \InvalidArgumentException */ protected function prepareOutput($filename, $overwrite)
if (null === $this->binary) { throw new \LogicException( 'You must define a binary prior to conversion.' ); } $this->prepareOutput($output, $overwrite); $command = $this->getCommand($input, $output, $options); $inputFiles = is_array($input) ? implode('", "', $input) : $input; $this->logger->info(sprintf('Generate from file(s) "%s" to file "%s".', $inputFiles, $output), [ 'command' => $command, 'env' => $this->env, 'timeout' => $this->timeout, ]); try { list($status, $stdout, $stderr) = $this->executeCommand($command); $this->checkProcessStatus($status, $stdout, $stderr, $command); $this->checkOutput($output, $command); } catch (\Exception $e) { // @TODO: should be replaced by \Throwable when support for php5.6 is dropped $this->logger->error(sprintf('An error happened while generating "%s".', $output), [ 'command' => $command, 'status' => isset($status) ? $status : null, 'stdout' => isset($stdout) ? $stdout : null, 'stderr' => isset($stderr) ? $stderr : null, ]); throw $e; } $this->logger->info(sprintf('File "%s" has been successfully generated.', $output), [ 'command' => $command, 'stdout' => $stdout, 'stderr' => $stderr, ]); }
"/usr/local/bin/wkhtmltopdf --lowquality --orientation 'portrait' --page-size 'a4' '/tmp/knp_snappy66066281b9ace6.70164058.html' '/tmp/knp_snappy66066281b9b555.35041010.pdf'"
$fetchUrlContent = $option === 'xsl-style-sheet' && $this->isOptionUrl($value); if ($saveToTempFile || $fetchUrlContent) { $fileContent = $fetchUrlContent ? file_get_contents($value) : $value; $options[$option] = $this->createTemporaryFile($fileContent, $this->optionsWithContentCheck[$option]); } } } return $options; } /** * {@inheritdoc} */ public function generate($input, $output, array $options = [], $overwrite = false) { $options = $this->handleOptions($this->mergeOptions($options)); parent::generate($input, $output, $options, $overwrite); } /** * Convert option content or url to file if it is needed. * * @param $option * * @return bool */ protected function isOptionUrl($option) { return (bool) filter_var($option, FILTER_VALIDATE_URL); } /** * {@inheritdoc} */ protected function configure() { $this->addOptions([
array:1 [ 0 => "/tmp/knp_snappy66066281b9ace6.70164058.html" ]
"/tmp/knp_snappy66066281b9b555.35041010.pdf"
array:3 [ "lowquality" => true "orientation" => "portrait" "page-size" => "a4" ]
false
$fileNames = []; if (is_array($html)) { foreach ($html as $htmlInput) { $fileNames[] = $this->createTemporaryFile($htmlInput, 'html'); } } else { $fileNames[] = $this->createTemporaryFile($html, 'html'); } $this->generate($fileNames, $output, $options, $overwrite); } /** * {@inheritdoc} */ public function getOutput($input, array $options = []) { $filename = $this->createTemporaryFile(null, $this->getDefaultExtension()); $this->generate($input, $filename, $options); $result = $this->getFileContents($filename); return $result; } /** * {@inheritdoc} */ public function getOutputFromHtml($html, array $options = []) { $fileNames = []; if (is_array($html)) { foreach ($html as $htmlInput) { $fileNames[] = $this->createTemporaryFile($htmlInput, 'html'); } } else { $fileNames[] = $this->createTemporaryFile($html, 'html'); }
array:1 [ 0 => "/tmp/knp_snappy66066281b9ace6.70164058.html" ]
"/tmp/knp_snappy66066281b9b555.35041010.pdf"
array:3 [ "lowquality" => true "orientation" => "portrait" "page-size" => "a4" ]
$result = $this->getFileContents($filename); return $result; } /** * {@inheritdoc} */ public function getOutputFromHtml($html, array $options = []) { $fileNames = []; if (is_array($html)) { foreach ($html as $htmlInput) { $fileNames[] = $this->createTemporaryFile($htmlInput, 'html'); } } else { $fileNames[] = $this->createTemporaryFile($html, 'html'); } $result = $this->getOutput($fileNames, $options); return $result; } /** * Defines the binary. * * @param string $binary The path/name of the binary */ public function setBinary($binary) { $this->binary = $binary; } /** * Returns the binary. * * @return string */ public function getBinary()
array:1 [ 0 => "/tmp/knp_snappy66066281b9ace6.70164058.html" ]
[]
* @return $this */ public function loadView($view, $data = array(), $mergeData = array()) { $view = View::make($view, $data, $mergeData); return $this->loadHTML($view); } /** * Output the PDF as a string. * * @return string The rendered PDF as string * @throws \InvalidArgumentException */ public function output() { if ($this->html) { return $this->snappy->getOutputFromHtml($this->html, $this->options); } if ($this->file) { return $this->snappy->getOutput($this->file, $this->options); } throw new \InvalidArgumentException('PDF Generator requires a html or file in order to produce output.'); } /** * Save the PDF to a file * * @param $filename * @return $this */ public function save($filename, $overwrite = false) { if ($this->html)
""" <!DOCTYPE html>\n <html lang="en">\n <head>\n <meta charset="utf-8">\n <meta http-equiv="X-UA-Compatible" content="IE=edge">\n <meta name="viewport" content="width=device-width, initial-scale=1">\n <meta name="robots" content="noindex">\n <meta name="csrf-token" content="uZ30jcgw1J9oOgIlC5Bi5bc4XYT1c4HDK4tr2xpw" />\n <meta name="description" content="The Bharat Floorings Group is the leader in quality cement floorings - a reputation held for 90 years">\n <meta name="keywords" content="Bharat, Floorings,premium, quality, tiles, civil, contractors, maintenance.">\n <link href="https://fonts.googleapis.com/css?family=Roboto:400,500,700,900" rel="stylesheet">\n <!-- <link type="text/css" rel="stylesheet" href="https://www.bharatfloorings.com/css/website/all.css"> -->\n <title>PLUMERIA - Bharat Floorings & Tiles Pvt. Ltd.</title>\n <script type="text/javascript">\n window.bft = {\n elements: false,\n };\n </script>\n <style>\n *, ::after, ::before {\n box-sizing: border-box;\n }\n body {\n overflow-x: hidden;\n font-size: 1rem;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n font-family: Roboto,sans-serif;\n overscroll-behavior-y: none;\n overscroll-behavior-x: none;\n }\n .container {\n width: 900px;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n }\n .col-md-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .col-md-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .ml-auto, .mx-auto {\n margin-left: auto!important;\n margin-right: auto!important;\n }\n .text-center {\n text-align: center!important;\n }\n .floor_share_print .logo_share {\n width: 150px;\n }\n .img-fluid {\n max-width: 100%;\n height: auto;\n }\n .floor_share_print h5 {\n border-bottom: 1px solid #000;\n padding-bottom: 7px;\n margin-bottom: 15px;\n font-size: 1.25rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.2;\n }\n .floor_share_content p {\n margin: 0;\n }\n .floor_share_print .floor {\n background: #f6f6f6;\n margin: 30px auto;\n text-align: center;\n padding: 80px;\n }\n .grid__item {\n padding: 1.25rem;\n }\n .col-md-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n position: relative;\n width: 100%;\n min-height: 1px;\n }\n .tile-box {\n background: #f6f6f6;\n padding: 42px 0;\n position: relative;\n text-align: center;\n clear: both;\n overflow: hidden;\n width: 290px;\n height: 290px;\n margin: auto;\n font-size: 0;\n display: inline-block;\n transition: box-shadow 1s ease-in-out;\n box-shadow: 0 0 0 0 rgba(78,84,87,.08);\n }\n .grp-tiles {\n clear: both;\n overflow: hidden;\n font-size: 0;\n text-align: center;\n max-width: 300px;\n margin: auto;\n }\n .floor .grp-tiles .single-tiles-svg {\n width: 50%;\n }\n .single-tiles-svg {\n display: inline-block;\n border-left: 1px solid #fff;\n border-bottom: 1px solid #fff;\n cursor: pointer;\n width: 50%;\n }\n .single-tiles-svg svg {\n width: 144px;\n height: 144px;\n }\n .row {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .col-md-6 {\n // -ms-flex: 0 0 50%;\n // flex: 0 0 50%;\n max-width: 50%;\n width:50%;\n float:left;\n position: relative;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n }\n .floor_share_print .tiles-used-box {\n margin-bottom: 30px;\n }\n .floor_share_print .tiles-used-box h5 {\n font-size: 18px;\n line-height: 26px;\n color: #000;\n border-bottom: 1px solid #000;\n padding-bottom: 7px;\n margin-bottom: 15px;\n font-weight: 500;\n }\n .floor_share_print .tiles-used-box p {\n font-size: 18px;\n line-height: 26px;\n color: #656565;\n margin: 0;\n }\n .small, small {\n font-size: 80%;\n font-weight: 400;\n }\n .list-inline {\n padding-left: 0;\n list-style: none;\n }\n .collection-tiles .list-inline li {\n margin-top: 10px;\n width: 46%;\n }\n .list-inline-item {\n display: inline-block;\n }\n .list-inline-item:not(:last-child) {\n margin-right: .5rem;\n }\n .collection-tiles .list-inline .color-box {\n width: 20px;\n height: 20px;\n margin-right: 10px;\n vertical-align: top;\n display: inline-block;\n }\n .collection-tiles .list-inline label {\n display: inline-block;\n margin-bottom: 0;\n width: calc(100% - 35px);\n font-size: 14px;\n vertical-align: top;\n }\n .floor_share_footer {\n border-top: 1px solid #656565;\n padding: 20px;\n clear:both;\n }\n .floor_share_footer p {\n color: #656565;\n font-size: 14px;\n text-align: center;\n }\n .rotate-0 {\n -webkit-transform: rotate(0deg);\n -moz-transform: rotate(0deg);\n -o-transform: rotate(0deg);\n -ms-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n .rotate-60 {\n -webkit-transform: rotate(60deg);\n -moz-transform: rotate(60deg);\n -o-transform: rotate(60deg);\n -ms-transform: rotate(60deg);\n transform: rotate(60deg);\n }\n .rotate-90 {\n -webkit-transform: rotate(90deg);\n -moz-transform: rotate(90deg);\n -o-transform: rotate(90deg);\n -ms-transform: rotate(90deg);\n transform: rotate(90deg);\n }\n .rotate-120 {\n -webkit-transform: rotate(120deg);\n -moz-transform: rotate(120deg);\n -o-transform: rotate(120deg);\n -ms-transform: rotate(120deg);\n transform: rotate(120deg);\n }\n .rotate-180 {\n -webkit-transform: rotate(180deg);\n -moz-transform: rotate(180deg);\n -o-transform: rotate(180deg);\n -ms-transform: rotate(180deg);\n transform: rotate(180deg);\n }\n .rotate-240 {\n -webkit-transform: rotate(240deg);\n -moz-transform: rotate(240deg);\n -o-transform: rotate(240deg);\n -ms-transform: rotate(240deg);\n transform: rotate(240deg);\n }\n .rotate-270 {\n -webkit-transform: rotate(270deg);\n -moz-transform: rotate(270deg);\n -o-transform: rotate(270deg);\n -ms-transform: rotate(270deg);\n transform: rotate(270deg);\n }\n .rotate-300 {\n -webkit-transform: rotate(300deg);\n -moz-transform: rotate(300deg);\n -o-transform: rotate(300deg);\n -ms-transform: rotate(300deg);\n transform: rotate(300deg);\n }\n .floor-container {\n width: 600px;\n height: 618px;\n overflow: auto;\n margin-bottom: 30px;\n }\n .floor-tiles {\n font-size: 0;\n width: 600px;\n position: relative;\n margin: auto;\n }\n .floor-box {\n position: relative;\n height: auto;\n overflow: hidden;\n }\n .floor-box .border-tiles-content:before {\n content: "Border";\n font-size: 12px;\n position: absolute;\n color: gray;\n left: 20px;\n top: 15px;\n }\n .floor-box .indoor-tiles-content {\n position: absolute;\n top: 0px;\n margin: 50px;\n width: 500px;\n height: 500px;\n background: #fff;\n }\n .floor-tiles .indoor-tiles {\n display: inline-block;\n width: 50px;\n height: 50px;\n background: #dcdcdc;\n border-right: 1px solid #a9a9a9;\n border-bottom: 1px solid #a9a9a9;\n }\n .floor-box .indoor-hexagon-tiles-content {\n position: absolute;\n top: 0px;\n margin: 50px;\n width: 500px;\n height: 500px;\n background: #fff;\n overflow: hidden;\n }\n .floor-box .indoor-hexagon-tiles-content-even {\n position: relative;\n left: -38px;\n top: -13px;\n white-space: nowrap;\n }\n .floor-box .indoor-hexagon-tiles-content-odd {\n position: relative;\n margin-top: -27px;\n margin-left: -13px;\n white-space: nowrap;\n }\n .floor-tiles .indoor-hexagon-tiles {\n display: inline-block;\n width: 50px;\n height: 57.71px;\n margin: 1px 0.5px 0 0.5px;\n }\n .floor-tiles .indoor-hexagon-tiles-content-even .indoor-hexagon-tiles {\n margin: 0px 0.5px 0px 0.5px;\n }\n \n .floor-tiles .indoor-tiles svg,\n .floor-tiles .border-tiles svg {\n width: 100%;\n height: 100%;\n }\n .floor-tiles .border-tiles {\n background: #d2d2d2;\n display: inline-block;\n width: 50px;\n height: 50px;\n border-right: 1px solid #a9a9a9;\n border-bottom: 1px solid #a9a9a9;\n vertical-align: top;\n line-height: 50px;\n }\n .floor-tiles .not-border-tiles {\n background: #fff;\n display: inline-block;\n width: 50px;\n height: 50px;\n border-right: 1px solid #a9a9a9;\n border-bottom: 1px solid #a9a9a9;\n }\n .floor-tiles .border-tiles.vertical-ending {\n border-right: 0;\n }\n .floor-tiles .border-tiles.horizontal-ending {\n border-bottom: 0;\n }\n .single-tiles-collection-hexagon-svg {\n display: inline-block;\n border-left: 0;\n border-bottom: 0;\n cursor: pointer;\n width: 204px;\n line-height: 0;\n height: 204px;\n }\n .tiles-hexagon-pattern {\n overflow: hidden;\n height: 204px;\n }\n .tile-row {\n white-space: nowrap;\n height: 101px;\n font-size: 0;\n }\n .tile-row .tile-col {\n width: 84px;\n height: 96px;\n display: inline-block;\n }\n .tile-row .tile-col svg {\n width: 84px;\n height: 97px;\n }\n .tile-row:nth-child(odd){\n margin-left: -47px;\n margin-top: -29px;\n }\n .tile-row:nth-child(1){\n margin-top: -73px;\n }\n .tile-row:nth-child(even) {\n margin-left: -89px;\n margin-top: -29px;\n }\n .tiles-background {\n white-space: nowrap;\n height: 206px;\n font-size: 0;\n }\n .tiles-background-hexagon {\n margin-top: -54px;\n margin-left: -88px;\n height: 204px;\n }\n .tiles-background-hexagon:nth-child(even){\n margin-top: -51px;\n margin-left: 0px;\n }\n .pattern-watermark {\n position: absolute;\n top: 49%;\n left: 50%;\n /*left: 80px;*/\n -webkit-transform: translate(-50%, -50%);\n -ms-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n text-align: center;\n z-index: 1;\n opacity: 0.8;\n }\n </style>\n </head>\n <body>\n <div class="container floor_share_print">\n <div class="col-md-12 mx-auto">\n <p class="text-center">\n <a href="https://www.bharatfloorings.com" title="Bharat Floorings & Tiles Pvt. Ltd.">\n <img src="https://www.bharatfloorings.com/img/BFT_logo_name.svg" class="img-fluid logo_share" alt="Bharat Floorings & Tiles Pvt. Ltd." />\n </a>\n </p>\n <div class="floor_share_content">\n <h5>Pattern created on www.bharatfloorings.com</h5>\n <p>Pattern Name: PLUMERIA</p>\n <p>Collection Name: BFT+ Designer Tiles</p>\n <p>Sub-Collection Name: Aranya Range</p>\n </div>\n <div class="floor">\n <div class="pattern-watermark">\n <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="100px" height="100px" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd"\n viewBox="0 0 100 100"\n xmlns:xlink="http://www.w3.org/1999/xlink">\n <g id="Layer_x0020_1">\n <metadata id="CorelCorpID_0Corel-Layer"/>\n <g id="_181987400">\n <path id="_181988216" fill="#ffffff" fill-rule="nonzero" d="M38.8952 88.8409l-1.03938 0.809061c-0.118111,0.0944889 -0.230317,0.103938 -0.333073,-0.01063l-0.278742 -0.307089c-0.0897645,-0.108662 -0.0354333,-0.243309 0.0342522,-0.3189l2.03269 -1.96419 0.387405 0c0.139371,0 0.261026,0.131103 0.261026,0.269293l0 9.29535c0,0.150001 -0.121655,0.284648 -0.261026,0.284648l-0.526776 0c-0.155907,0 -0.27638,-0.134647 -0.27638,-0.284648l0 -7.7729z"/>\n <path id="_181988144" fill="#ffffff" fill-rule="nonzero" d="M47.4819 91.3968c0.252758,-1.45867 -0.317719,-3.62247 -2.2949,-3.62247 -1.22245,0 -2.17679,1.05237 -2.17679,2.29962 0,1.25316 0.973236,2.26301 2.18742,2.26301 1.34647,0 2.28427,-0.940165 2.28427,-0.940165zm-3.90357 4.83311c0.649611,-0.219687 3.21617,-1.65474 3.71696,-3.6083 0,0 -0.953157,0.655517 -2.19923,0.655517 -1.63702,0 -3.11459,-1.21655 -3.11459,-3.13821 0,-1.8319 1.46458,-3.32247 3.20554,-3.32247 2.3386,0 3.37089,1.82364 3.37089,4.12208 0,3.85042 -3.30239,5.62327 -4.76579,6.20084 -0.146458,0.0543311 -0.263388,-0.0118111 -0.311813,-0.141733l-0.158269 -0.349609c-0.0779534,-0.172442 -0.02126,-0.32953 0.256301,-0.418114z"/>\n <path id="_181988072" fill="#ffffff" fill-rule="nonzero" d="M49.935 96.1862c1.18465,-1.27442 2.35986,-2.56892 3.5457,-3.83507 0.982685,-1.07245 1.46222,-1.94293 1.46222,-2.62443 0,-0.827959 -0.539768,-1.84017 -2.03033,-1.84017 -0.894102,0 -1.60277,0.60591 -2.05395,1.08544 -0.11693,0.11693 -0.27638,0.11693 -0.39331,0l-0.288191 -0.27638c-0.0897645,-0.0885834 -0.108662,-0.252758 -0.0141733,-0.370869 0,0 1.02757,-1.4197 2.74963,-1.4197 2.07167,0 3.12758,1.30867 3.12758,2.79097 0,1.27324 -0.809061,2.20986 -1.81064,3.28349 -0.930716,0.992134 -1.84962,1.99254 -2.77679,2.96459l4.25909 0c0.140552,0 0.27638,0.137009 0.27638,0.283467l0 0.387405c0,0.144096 -0.135828,0.277561 -0.27638,0.277561l-5.5028 0c-0.160631,0 -0.274018,-0.133466 -0.274018,-0.277561l0 -0.428744z"/>\n <path id="_181988000" fill="#ffffff" fill-rule="nonzero" d="M57.3796 96.1862c1.19174,-1.27442 2.3634,-2.56892 3.5516,-3.83507 0.982685,-1.07245 1.46104,-1.94293 1.46104,-2.62443 0,-0.827959 -0.538587,-1.84017 -2.02915,-1.84017 -0.897645,0 -1.60395,0.60591 -2.05986,1.08544 -0.112206,0.11693 -0.270475,0.11693 -0.390948,0l-0.28701 -0.27638c-0.0874023,-0.0885834 -0.112206,-0.252758 -0.0118111,-0.370869 0,0 1.02875,-1.4197 2.74963,-1.4197 2.06931,0 3.12758,1.30867 3.12758,2.79097 0,1.27324 -0.810243,2.20986 -1.81301,3.28349 -0.928354,0.992134 -1.8508,1.99254 -2.77797,2.96459l4.25673 0c0.145277,0 0.278742,0.137009 0.278742,0.283467l0 0.387405c0,0.144096 -0.133466,0.277561 -0.278742,0.277561l-5.49689 0c-0.161812,0 -0.279923,-0.133466 -0.279923,-0.277561l0 -0.428744z"/>\n <path id="_181987928" fill="#ffffff" fill-rule="nonzero" d="M37.0243 72.1234c0,-0.132285 0.108662,-0.251577 0.253939,-0.251577l5.2276 0c0.145277,0 0.251577,0.119292 0.251577,0.251577l0 0.390948c0,0.126379 -0.1063,0.252758 -0.251577,0.252758l-4.45988 0 0 3.2327 3.81027 0c0.134647,0 0.257482,0.118111 0.257482,0.249215l0 0.389767c0,0.14882 -0.122836,0.249215 -0.257482,0.249215l-3.81027 0 0 3.39097 4.45988 0c0.145277,0 0.251577,0.120473 0.251577,0.249215l0 0.389767c0,0.132285 -0.1063,0.249215 -0.251577,0.249215l-5.2276 0c-0.145277,0 -0.253939,-0.11693 -0.253939,-0.249215l0 -8.79456z"/>\n <path id="_181987856" fill="#ffffff" fill-rule="nonzero" d="M44.02 79.777c0.0720478,-0.0814967 0.131103,-0.175986 0.200789,-0.25512 0.132285,-0.172442 0.282286,-0.278742 0.460634,-0.119292 0.0968512,0.0791345 1.06772,1.01103 2.25002,1.01103 1.07363,0 1.77403,-0.68032 1.77403,-1.4634 0,-0.916543 -0.79725,-1.46458 -2.3197,-2.09647 -1.45631,-0.638981 -2.3386,-1.24017 -2.3386,-2.74608 0,-0.907094 0.708667,-2.36931 2.8264,-2.36931 1.31222,0 2.27364,0.676777 2.27364,0.676777 0.0755911,0.0401578 0.231498,0.199608 0.0755911,0.45709 -0.0496067,0.0685045 -0.107481,0.167718 -0.161812,0.246852 -0.115749,0.187797 -0.251577,0.243309 -0.455909,0.120473 -0.0992134,-0.05315 -0.937803,-0.617721 -1.74686,-0.617721 -1.4008,0 -1.83427,0.910637 -1.83427,1.46812 0,0.889377 0.682683,1.4008 1.79529,1.87561 1.79529,0.727565 2.94687,1.40198 2.94687,2.94569 0,1.3819 -1.31222,2.38821 -2.86538,2.38821 -1.56143,0 -2.62561,-0.917724 -2.79687,-1.07599 -0.114568,-0.0885834 -0.24449,-0.196065 -0.0838589,-0.44646z"/>\n <path id="_181987784" fill="#ffffff" fill-rule="nonzero" d="M52.739 72.7707l-2.30789 0c-0.145277,0 -0.25512,-0.129922 -0.25512,-0.256301l0 -0.392129c0,-0.131103 0.109843,-0.250396 0.25512,-0.250396l5.63154 0c0.142915,0 0.248033,0.119292 0.248033,0.250396l0 0.392129c0,0.126379 -0.105119,0.256301 -0.248033,0.256301l-2.3138 0 0 8.14731c0,0.132285 -0.115749,0.245671 -0.249215,0.245671l-0.51024 0c-0.128741,0 -0.250396,-0.113387 -0.250396,-0.245671l0 -8.14731z"/>\n <path id="_181987712" fill="#ffffff" fill-rule="nonzero" d="M59.8977 77.827c1.45277,0 2.50396,-1.06891 2.50396,-2.52049 0,-1.45159 -1.05119,-2.50159 -2.50396,-2.50159l-1.2945 0 0 5.02209 1.2945 0zm-2.29608 -5.76382c0,-0.101576 0.0755911,-0.192521 0.173623,-0.192521l2.26183 0c1.89923,0 3.45357,1.5508 3.45357,3.43585 0,1.91104 -1.55434,3.45357 -3.45357,3.45357l-2.26183 0c-0.0980323,0 -0.173623,-0.0897645 -0.173623,-0.186616l0 -6.51029z"/>\n <polygon id="_181987640" fill="#ffffff" fill-rule="nonzero" points="63.4895,81.1672 57.6005,81.1672 57.6005,80.325 63.4895,80.325 "/>\n <path id="_181987568" fill="#ffffff" fill-rule="nonzero" d="M19.3183 55.0563c0,-0.852763 -0.328349,-1.52009 -0.976779,-2.01261 -0.657879,-0.504335 -1.70671,-0.751187 -3.16184,-0.751187l-6.47722 0 0 5.59965 6.65556 0c1.23781,0 2.20159,-0.219687 2.90553,-0.676777 0.714573,-0.442917 1.05473,-1.14686 1.05473,-2.08939l0 -0.0696856zm-1.41379 -10.1835c0,-0.843314 -0.315357,-1.4882 -0.948433,-1.9382 -0.624808,-0.454728 -1.54135,-0.675596 -2.72601,-0.675596l-5.5276 0 0 5.38233 5.16618 0c1.23426,0 2.2134,-0.216143 2.94451,-0.636619 0.724021,-0.427562 1.09135,-1.11261 1.09135,-2.05986l0 -0.0720478zm6.2717 14.0044c-0.452366,0.87166 -1.08544,1.5945 -1.92521,2.17561 -0.837408,0.582288 -1.84017,1.02048 -3.00475,1.31694 -1.17402,0.290553 -2.48388,0.428744 -3.90239,0.428744l-12.0946 0 0 -25.4435 11.7993 0c2.61144,0 4.66067,0.592918 6.14887,1.78112 1.48702,1.18465 2.22758,2.78388 2.22758,4.79649l0 0.0696856c0,0.73347 -0.0791345,1.36773 -0.268112,1.92049 -0.178348,0.562209 -0.416932,1.06891 -0.716935,1.51891 -0.302365,0.448822 -0.656698,0.837408 -1.04765,1.17875 -0.394491,0.338979 -0.822054,0.630714 -1.2756,0.874023 1.47285,0.555122 2.62325,1.3134 3.46774,2.27364 0.843314,0.961425 1.26379,2.28427 1.26379,3.97798l0 0.0732289c0,1.16694 -0.222049,2.18033 -0.672053,3.0579z"/>\n <polygon id="_181987496" fill="#ffffff" fill-rule="nonzero" points="89.6688,42.5177 89.6688,62.8009 84.0656,62.8009 84.0656,42.5177 76.3293,42.5177 76.3293,37.3538 97.411,37.3538 97.411,42.5177 "/>\n <polygon id="_181986224" fill="#ffffff" fill-rule="nonzero" points="46.2488,8.07998 46.2488,13.4966 58.3823,13.4966 58.3823,18.5872 46.2488,18.5872 46.2488,28.44 40.6456,28.44 40.6456,2.99176 60.0241,2.99176 60.0241,8.07998 "/>\n <polygon id="_181986416" fill="#ffffff" fill-rule="nonzero" points="97.6874,2.99294 2.99057,97.6838 2.3138,97.0082 97.0082,2.31498 "/>\n <polygon id="_181986632" fill="#ffffff" fill-rule="nonzero" points="97.6874,97.0082 97.0082,97.685 2.3138,2.99176 2.99057,2.31734 "/>\n <polygon id="_181986656" fill="#ffffff" fill-rule="nonzero" points="53.6803,53.678 46.3197,53.678 46.3197,46.3173 53.6803,46.3173 "/>\n </g>\n </g>\n </svg>\n </div>\n <div class="col-md-12 grid__item pattern-container" data-name="Default PLUMERIA">\n <div class="tiles-overlay">\n <div class="tiles-overlay-bg">\n <div class="tile-box" style="height: auto;">\n <div class="grp-tiles">\n <div class="single-tiles-svg top-left-tile no-cursor">\n <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="102px" height="102px" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" viewbox="0 0 529 529" xmlns:xlink="http://www.w3.org/1999/xlink" class="" transform="rotate(0)" style="vertical-align: top;"> <g id="Layer_x0020_1"> <metadata id="CorelCorpID_0Corel-Layer"></metadata> <polygon fill="#B4AFA7" fill-rule="nonzero" points="529,529 -0.0011811,529 -0.0011811,-0.0011811 529,-0.0011811 " class="tile-element" data-element="1"></polygon> <polygon fill="#C6867B" fill-rule="nonzero" points="171.398,173.411 189.762,181.917 196.927,189.088 206.896,199.889 220.663,217.356 241.607,226.264 269.151,229.118 307.498,212.041 280.737,233.038 267.135,256.829 262.544,277.767 265.285,292.94 273.572,307.834 286.448,321.996 292.61,327.709 295.909,333.532 300.612,343.33 304.474,334.033 305.315,324.797 298.655,311.189 303.022,298.426 311.194,280.792 321.104,262.819 325.921,253.3 337.731,234.1 337.286,253.075 346.633,271.385 350.666,278.33 364.043,282.808 379.777,284.599 404.743,285.211 415.888,287.393 426.356,288.573 427.032,276.759 425.74,265.394 418.913,253.97 402.956,231.746 399.54,204.371 392.375,189.982 404.861,170.327 413.147,158.573 423.333,145.811 441.866,132.822 451.44,121.903 459.559,110.651 446.79,108.855 434.926,105.61 411.243,99.6734 395.117,93.6285 380.056,98.8938 370.371,115.35 357.832,136.625 361.693,109.697 355.032,91.8958 346.242,77.06 336.443,69.221 330.008,63.4513 322.392,55.0524 310.744,42.1217 300.838,31.3158 297.759,45.8741 294.175,53.0942 283.819,69.4466 272.9,98.1072 270.884,118.766 281.578,133.938 299.717,159.696 283.091,145.136 264.11,133.938 236.957,139.092 218.148,149.894 203.588,162.213 191.719,169.157 " class="tile-element" data-element="2" data-connected="element_2"></polygon> <polygon fill="#FFC729" fill-rule="nonzero" points="320.489,200.955 315.28,216.352 331.124,207.563 338.799,206.162 356.266,207.058 359.848,189.868 357.156,182.367 366.623,157.004 351.508,167.923 339.023,146.368 337.899,161.315 323.063,174.697 319.652,177.775 316.906,182.478 318.193,189.031 " class="tile-element" data-element="3" data-connected="element_3"></polygon> <polygon fill="#FFC729" fill-rule="nonzero" points="70.1198,253.806 71.5194,274.185 72.3556,286.222 76.2226,304.642 80.7545,327.426 93.8021,333.696 136.182,353.855 128.626,354.804 111.998,372.048 106.175,383.078 98.1675,405.304 113.511,414.485 108.804,439.007 115.915,451.046 133.275,450.762 164.622,439.678 188.472,385.541 182.09,443.763 186.738,466.834 201.853,479.486 210.032,483.348 220.667,487.322 239.423,498.8 243.9,500.815 244.85,495.608 241.659,483.236 235.281,465.879 233.372,452.779 233.265,430.553 227.554,412.693 225.983,406.982 216.468,377.201 225.704,392.985 235.726,409.949 248.213,416.331 253.807,416.277 264.221,411.127 273.517,404.742 308.563,382.962 321.944,377.872 313.547,374.229 309.122,372.552 279.845,359.562 261.142,349.822 248.604,342.152 238.635,329.834 222.345,328.771 224.249,324.015 224.92,307.27 208.294,302.793 204.54,290.307 203.086,284.6 206.391,274.126 213.781,258.9 217.531,245.573 222.345,238.746 214.789,240.199 207.34,241.6 192.506,244.399 181.866,250.389 158.411,263.658 158.803,285.604 169.497,317.574 150.066,296.019 143.293,285.996 126.384,279.002 111.719,271.832 101.247,267.016 86.3576,258.23 " class="tile-element" data-element="4" data-connected="element_3"></polygon> <polygon fill="#C6867B" fill-rule="nonzero" points="156.561,330.06 168.936,340.361 175.595,345.956 174.646,350.382 178.004,355.534 178.004,361.804 184.836,366.169 194.131,366.619 204.261,388.003 207.512,380.729 208.181,359.337 216.188,361.745 207.844,349.877 198.663,342.321 197.88,337.616 188.698,327.539 182.707,334.537 174.812,330.393 168.259,335.879 " class="tile-element" data-element="5" data-connected="element_2"></polygon> </g></svg>\n </div>\n <div class="single-tiles-svg top-right-tile no-cursor">\n <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="102px" height="102px" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" viewbox="0 0 529 529" xmlns:xlink="http://www.w3.org/1999/xlink" class="" transform="rotate(90)" style="vertical-align: top;"> <g id="Layer_x0020_1"> <metadata id="CorelCorpID_0Corel-Layer"></metadata> <polygon fill="#B4AFA7" fill-rule="nonzero" points="529,529 -0.0011811,529 -0.0011811,-0.0011811 529,-0.0011811 " class="tile-element" data-element="1"></polygon> <polygon fill="#C6867B" fill-rule="nonzero" points="171.398,173.411 189.762,181.917 196.927,189.088 206.896,199.889 220.663,217.356 241.607,226.264 269.151,229.118 307.498,212.041 280.737,233.038 267.135,256.829 262.544,277.767 265.285,292.94 273.572,307.834 286.448,321.996 292.61,327.709 295.909,333.532 300.612,343.33 304.474,334.033 305.315,324.797 298.655,311.189 303.022,298.426 311.194,280.792 321.104,262.819 325.921,253.3 337.731,234.1 337.286,253.075 346.633,271.385 350.666,278.33 364.043,282.808 379.777,284.599 404.743,285.211 415.888,287.393 426.356,288.573 427.032,276.759 425.74,265.394 418.913,253.97 402.956,231.746 399.54,204.371 392.375,189.982 404.861,170.327 413.147,158.573 423.333,145.811 441.866,132.822 451.44,121.903 459.559,110.651 446.79,108.855 434.926,105.61 411.243,99.6734 395.117,93.6285 380.056,98.8938 370.371,115.35 357.832,136.625 361.693,109.697 355.032,91.8958 346.242,77.06 336.443,69.221 330.008,63.4513 322.392,55.0524 310.744,42.1217 300.838,31.3158 297.759,45.8741 294.175,53.0942 283.819,69.4466 272.9,98.1072 270.884,118.766 281.578,133.938 299.717,159.696 283.091,145.136 264.11,133.938 236.957,139.092 218.148,149.894 203.588,162.213 191.719,169.157 " class="tile-element" data-element="2" data-connected="element_2"></polygon> <polygon fill="#FFC729" fill-rule="nonzero" points="320.489,200.955 315.28,216.352 331.124,207.563 338.799,206.162 356.266,207.058 359.848,189.868 357.156,182.367 366.623,157.004 351.508,167.923 339.023,146.368 337.899,161.315 323.063,174.697 319.652,177.775 316.906,182.478 318.193,189.031 " class="tile-element" data-element="3" data-connected="element_3"></polygon> <polygon fill="#FFC729" fill-rule="nonzero" points="70.1198,253.806 71.5194,274.185 72.3556,286.222 76.2226,304.642 80.7545,327.426 93.8021,333.696 136.182,353.855 128.626,354.804 111.998,372.048 106.175,383.078 98.1675,405.304 113.511,414.485 108.804,439.007 115.915,451.046 133.275,450.762 164.622,439.678 188.472,385.541 182.09,443.763 186.738,466.834 201.853,479.486 210.032,483.348 220.667,487.322 239.423,498.8 243.9,500.815 244.85,495.608 241.659,483.236 235.281,465.879 233.372,452.779 233.265,430.553 227.554,412.693 225.983,406.982 216.468,377.201 225.704,392.985 235.726,409.949 248.213,416.331 253.807,416.277 264.221,411.127 273.517,404.742 308.563,382.962 321.944,377.872 313.547,374.229 309.122,372.552 279.845,359.562 261.142,349.822 248.604,342.152 238.635,329.834 222.345,328.771 224.249,324.015 224.92,307.27 208.294,302.793 204.54,290.307 203.086,284.6 206.391,274.126 213.781,258.9 217.531,245.573 222.345,238.746 214.789,240.199 207.34,241.6 192.506,244.399 181.866,250.389 158.411,263.658 158.803,285.604 169.497,317.574 150.066,296.019 143.293,285.996 126.384,279.002 111.719,271.832 101.247,267.016 86.3576,258.23 " class="tile-element" data-element="4" data-connected="element_3"></polygon> <polygon fill="#C6867B" fill-rule="nonzero" points="156.561,330.06 168.936,340.361 175.595,345.956 174.646,350.382 178.004,355.534 178.004,361.804 184.836,366.169 194.131,366.619 204.261,388.003 207.512,380.729 208.181,359.337 216.188,361.745 207.844,349.877 198.663,342.321 197.88,337.616 188.698,327.539 182.707,334.537 174.812,330.393 168.259,335.879 " class="tile-element" data-element="5" data-connected="element_2"></polygon> </g></svg>\n </div>\n <div class="single-tiles-svg bottom-left-tile no-cursor">\n <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="102px" height="102px" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" viewbox="0 0 529 529" xmlns:xlink="http://www.w3.org/1999/xlink" class="" transform="rotate(270)" style="vertical-align: top;"> <g id="Layer_x0020_1"> <metadata id="CorelCorpID_0Corel-Layer"></metadata> <polygon fill="#B4AFA7" fill-rule="nonzero" points="529,529 -0.0011811,529 -0.0011811,-0.0011811 529,-0.0011811 " class="tile-element" data-element="1"></polygon> <polygon fill="#C6867B" fill-rule="nonzero" points="171.398,173.411 189.762,181.917 196.927,189.088 206.896,199.889 220.663,217.356 241.607,226.264 269.151,229.118 307.498,212.041 280.737,233.038 267.135,256.829 262.544,277.767 265.285,292.94 273.572,307.834 286.448,321.996 292.61,327.709 295.909,333.532 300.612,343.33 304.474,334.033 305.315,324.797 298.655,311.189 303.022,298.426 311.194,280.792 321.104,262.819 325.921,253.3 337.731,234.1 337.286,253.075 346.633,271.385 350.666,278.33 364.043,282.808 379.777,284.599 404.743,285.211 415.888,287.393 426.356,288.573 427.032,276.759 425.74,265.394 418.913,253.97 402.956,231.746 399.54,204.371 392.375,189.982 404.861,170.327 413.147,158.573 423.333,145.811 441.866,132.822 451.44,121.903 459.559,110.651 446.79,108.855 434.926,105.61 411.243,99.6734 395.117,93.6285 380.056,98.8938 370.371,115.35 357.832,136.625 361.693,109.697 355.032,91.8958 346.242,77.06 336.443,69.221 330.008,63.4513 322.392,55.0524 310.744,42.1217 300.838,31.3158 297.759,45.8741 294.175,53.0942 283.819,69.4466 272.9,98.1072 270.884,118.766 281.578,133.938 299.717,159.696 283.091,145.136 264.11,133.938 236.957,139.092 218.148,149.894 203.588,162.213 191.719,169.157 " class="tile-element" data-element="2" data-connected="element_2"></polygon> <polygon fill="#FFC729" fill-rule="nonzero" points="320.489,200.955 315.28,216.352 331.124,207.563 338.799,206.162 356.266,207.058 359.848,189.868 357.156,182.367 366.623,157.004 351.508,167.923 339.023,146.368 337.899,161.315 323.063,174.697 319.652,177.775 316.906,182.478 318.193,189.031 " class="tile-element" data-element="3" data-connected="element_3"></polygon> <polygon fill="#FFC729" fill-rule="nonzero" points="70.1198,253.806 71.5194,274.185 72.3556,286.222 76.2226,304.642 80.7545,327.426 93.8021,333.696 136.182,353.855 128.626,354.804 111.998,372.048 106.175,383.078 98.1675,405.304 113.511,414.485 108.804,439.007 115.915,451.046 133.275,450.762 164.622,439.678 188.472,385.541 182.09,443.763 186.738,466.834 201.853,479.486 210.032,483.348 220.667,487.322 239.423,498.8 243.9,500.815 244.85,495.608 241.659,483.236 235.281,465.879 233.372,452.779 233.265,430.553 227.554,412.693 225.983,406.982 216.468,377.201 225.704,392.985 235.726,409.949 248.213,416.331 253.807,416.277 264.221,411.127 273.517,404.742 308.563,382.962 321.944,377.872 313.547,374.229 309.122,372.552 279.845,359.562 261.142,349.822 248.604,342.152 238.635,329.834 222.345,328.771 224.249,324.015 224.92,307.27 208.294,302.793 204.54,290.307 203.086,284.6 206.391,274.126 213.781,258.9 217.531,245.573 222.345,238.746 214.789,240.199 207.34,241.6 192.506,244.399 181.866,250.389 158.411,263.658 158.803,285.604 169.497,317.574 150.066,296.019 143.293,285.996 126.384,279.002 111.719,271.832 101.247,267.016 86.3576,258.23 " class="tile-element" data-element="4" data-connected="element_3"></polygon> <polygon fill="#C6867B" fill-rule="nonzero" points="156.561,330.06 168.936,340.361 175.595,345.956 174.646,350.382 178.004,355.534 178.004,361.804 184.836,366.169 194.131,366.619 204.261,388.003 207.512,380.729 208.181,359.337 216.188,361.745 207.844,349.877 198.663,342.321 197.88,337.616 188.698,327.539 182.707,334.537 174.812,330.393 168.259,335.879 " class="tile-element" data-element="5" data-connected="element_2"></polygon> </g></svg>\n </div>\n <div class="single-tiles-svg bottom-right-tile no-cursor">\n <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="102px" height="102px" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" viewbox="0 0 529 529" xmlns:xlink="http://www.w3.org/1999/xlink" class="" transform="rotate(180)" style="vertical-align: top;"> <g id="Layer_x0020_1"> <metadata id="CorelCorpID_0Corel-Layer"></metadata> <polygon fill="#B4AFA7" fill-rule="nonzero" points="529,529 -0.0011811,529 -0.0011811,-0.0011811 529,-0.0011811 " class="tile-element" data-element="1"></polygon> <polygon fill="#C6867B" fill-rule="nonzero" points="171.398,173.411 189.762,181.917 196.927,189.088 206.896,199.889 220.663,217.356 241.607,226.264 269.151,229.118 307.498,212.041 280.737,233.038 267.135,256.829 262.544,277.767 265.285,292.94 273.572,307.834 286.448,321.996 292.61,327.709 295.909,333.532 300.612,343.33 304.474,334.033 305.315,324.797 298.655,311.189 303.022,298.426 311.194,280.792 321.104,262.819 325.921,253.3 337.731,234.1 337.286,253.075 346.633,271.385 350.666,278.33 364.043,282.808 379.777,284.599 404.743,285.211 415.888,287.393 426.356,288.573 427.032,276.759 425.74,265.394 418.913,253.97 402.956,231.746 399.54,204.371 392.375,189.982 404.861,170.327 413.147,158.573 423.333,145.811 441.866,132.822 451.44,121.903 459.559,110.651 446.79,108.855 434.926,105.61 411.243,99.6734 395.117,93.6285 380.056,98.8938 370.371,115.35 357.832,136.625 361.693,109.697 355.032,91.8958 346.242,77.06 336.443,69.221 330.008,63.4513 322.392,55.0524 310.744,42.1217 300.838,31.3158 297.759,45.8741 294.175,53.0942 283.819,69.4466 272.9,98.1072 270.884,118.766 281.578,133.938 299.717,159.696 283.091,145.136 264.11,133.938 236.957,139.092 218.148,149.894 203.588,162.213 191.719,169.157 " class="tile-element" data-element="2" data-connected="element_2"></polygon> <polygon fill="#FFC729" fill-rule="nonzero" points="320.489,200.955 315.28,216.352 331.124,207.563 338.799,206.162 356.266,207.058 359.848,189.868 357.156,182.367 366.623,157.004 351.508,167.923 339.023,146.368 337.899,161.315 323.063,174.697 319.652,177.775 316.906,182.478 318.193,189.031 " class="tile-element" data-element="3" data-connected="element_3"></polygon> <polygon fill="#FFC729" fill-rule="nonzero" points="70.1198,253.806 71.5194,274.185 72.3556,286.222 76.2226,304.642 80.7545,327.426 93.8021,333.696 136.182,353.855 128.626,354.804 111.998,372.048 106.175,383.078 98.1675,405.304 113.511,414.485 108.804,439.007 115.915,451.046 133.275,450.762 164.622,439.678 188.472,385.541 182.09,443.763 186.738,466.834 201.853,479.486 210.032,483.348 220.667,487.322 239.423,498.8 243.9,500.815 244.85,495.608 241.659,483.236 235.281,465.879 233.372,452.779 233.265,430.553 227.554,412.693 225.983,406.982 216.468,377.201 225.704,392.985 235.726,409.949 248.213,416.331 253.807,416.277 264.221,411.127 273.517,404.742 308.563,382.962 321.944,377.872 313.547,374.229 309.122,372.552 279.845,359.562 261.142,349.822 248.604,342.152 238.635,329.834 222.345,328.771 224.249,324.015 224.92,307.27 208.294,302.793 204.54,290.307 203.086,284.6 206.391,274.126 213.781,258.9 217.531,245.573 222.345,238.746 214.789,240.199 207.34,241.6 192.506,244.399 181.866,250.389 158.411,263.658 158.803,285.604 169.497,317.574 150.066,296.019 143.293,285.996 126.384,279.002 111.719,271.832 101.247,267.016 86.3576,258.23 " class="tile-element" data-element="4" data-connected="element_3"></polygon> <polygon fill="#C6867B" fill-rule="nonzero" points="156.561,330.06 168.936,340.361 175.595,345.956 174.646,350.382 178.004,355.534 178.004,361.804 184.836,366.169 194.131,366.619 204.261,388.003 207.512,380.729 208.181,359.337 216.188,361.745 207.844,349.877 198.663,342.321 197.88,337.616 188.698,327.539 182.707,334.537 174.812,330.393 168.259,335.879 " class="tile-element" data-element="5" data-connected="element_2"></polygon> </g></svg>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-6">\n <div class="tiles-used-box">\n <h5>Details</h5>\n <p><small>Size: 20cm x 20cm</small></p>\n </div>\n </div>\n <div class="col-md-6">\n <div class="tiles-used-box">\n <h5>Colours Used</h5>\n <div class="collection-tiles">\n <ul class="list-inline pattern-colors-container">\n <li class="list-inline-item">\n <span class="color-box" style="background: #B4AFA7;"></span>\n <label>Silver Grey</label>\n </li>\n <li class="list-inline-item">\n <span class="color-box" style="background: #C6867B;"></span>\n <label>Dusky Rose</label>\n </li>\n <li class="list-inline-item">\n <span class="color-box" style="background: #FFC729;"></span>\n <label>Sunshine Yellow</label>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n <div class="floor_share_footer">\n <p>\n Disclaimer: Colours and designs are indicative <br/>\n Please check physical sample as colours may vary\n </p>\n </div>\n </div>\n </div>\n <script type="text/javascript" src="/home/flobha/public_html/public/js/website/jquery-3.2.1.min.js"></script>\n <script type="text/javascript">\n $(document).ready(function() {\n var tiles = $('.floor').find('svg');\n \n if (tiles && tiles.length) {\n $.each($(tiles), function(idx, tile) {\n var current_rotation = $(tile).attr('transform');\n \n if (current_rotation) {\n var rotate_degree = parseInt(current_rotation.replace("rotate(", "").replace(")", ""));\n rotate_degree = (rotate_degree == 360) ? 0 : rotate_degree;\n $(tile).addClass('rotate-' + rotate_degree);\n }\n \n if (bft.elements) {\n $.each($(tile).find('polygon, path'), function(e_idx, ele) {\n if ($(ele).data("element")) {\n $.each(bft.elements, function(ele_no, color) {\n if (parseInt($(ele).data("element")) == parseInt(ele_no)) {\n $(ele).attr('fill', color);\n return false;\n }\n });\n }\n });\n }\n });\n }\n });\n </script>\n </body>\n </html>\n """
[]
{ $this->snappy->generateFromHtml($this->html, $filename, $this->options, $overwrite); } elseif ($this->file) { $this->snappy->generate($this->file, $filename, $this->options, $overwrite); } return $this; } /** * Make the PDF downloadable by the user * * @param string $filename * @return \Illuminate\Http\Response */ public function download($filename = 'document.pdf') { return new Response($this->output(), 200, array( 'Content-Type' => 'application/pdf', 'Content-Disposition' => 'attachment; filename="'.$filename.'"' )); } /** * Return a response with the PDF to show in the browser * * @param string $filename * @return \Illuminate\Http\Response */ public function inline($filename = 'document.pdf') { return new Response($this->output(), 200, array( 'Content-Type' => 'application/pdf', 'Content-Disposition' => 'inline; filename="'.$filename.'"', )); } /**
if ($tile) { // return view('website.pattern_pdf', compact('pattern', 'tile', 'elements', 'colors')); $proceed = true; $document_name = $tile->name; $view = View::make('website.pattern_pdf', compact('pattern', 'tile', 'elements', 'colors')); $html = $view->render(); } else { $msg = 'No such pattern found, cannot download'; } } else { $msg = 'No such pattern found, cannot download'; } if ($proceed && $html) { $pdf = PDF::loadHTML($html) ->setPaper('a4', 'portrait') ->setWarnings(false); return $pdf->download($document_name . '.pdf'); } else { return back()->with(['success' => false, 'msg' => $msg], 200); } } }
"PLUMERIA.pdf"
/** * Get the middleware assigned to the controller. * * @return array */ public function getMiddleware() { return $this->middleware; } /** * Execute an action on the controller. * * @param string $method * @param array $parameters * @return \Symfony\Component\HttpFoundation\Response */ public function callAction($method, $parameters) { return call_user_func_array([$this, $method], $parameters); } /** * Handle calls to missing methods on the controller. * * @param string $method * @param array $parameters * @return mixed * * @throws \BadMethodCallException */ public function __call($method, $parameters) { throw new BadMethodCallException("Method [{$method}] does not exist on [".get_class($this).'].'); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
"244"
/** * Get the middleware assigned to the controller. * * @return array */ public function getMiddleware() { return $this->middleware; } /** * Execute an action on the controller. * * @param string $method * @param array $parameters * @return \Symfony\Component\HttpFoundation\Response */ public function callAction($method, $parameters) { return call_user_func_array([$this, $method], $parameters); } /** * Handle calls to missing methods on the controller. * * @param string $method * @param array $parameters * @return mixed * * @throws \BadMethodCallException */ public function __call($method, $parameters) { throw new BadMethodCallException("Method [{$method}] does not exist on [".get_class($this).'].'); } }
array:2 [ 0 => PatternController {#327} 1 => "downloadPattern" ]
array:2 [ 0 => Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" } "id" => "244" ]
{ $this->container = $container; } /** * Dispatch a request to a given controller and method. * * @param \Illuminate\Routing\Route $route * @param mixed $controller * @param string $method * @return mixed */ public function dispatch(Route $route, $controller, $method) { $parameters = $this->resolveClassMethodDependencies( $route->parametersWithoutNulls(), $controller, $method ); if (method_exists($controller, 'callAction')) { return $controller->callAction($method, $parameters); } return $controller->{$method}(...array_values($parameters)); } /** * Get the middleware for the controller instance. * * @param \Illuminate\Routing\Controller $controller * @param string $method * @return array */ public function getMiddleware($controller, $method) { if (! method_exists($controller, 'getMiddleware')) { return []; } return collect($controller->getMiddleware())->reject(function ($data) use ($method) { return static::methodExcludedByOptions($method, $data['options']);
"downloadPattern"
array:2 [ 0 => Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" } "id" => "244" ]
protected function runCallable() { $callable = $this->action['uses']; return $callable(...array_values($this->resolveMethodDependencies( $this->parametersWithoutNulls(), new ReflectionFunction($this->action['uses']) ))); } /** * Run the route action and return the response. * * @return mixed * * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException */ protected function runController() { return $this->controllerDispatcher()->dispatch( $this, $this->getController(), $this->getControllerMethod() ); } /** * Get the controller instance for the route. * * @return mixed */ public function getController() { if (! $this->controller) { $class = $this->parseControllerCallback()[0]; $this->controller = $this->container->make(ltrim($class, '\\')); } return $this->controller; } /**
* * @throws \UnexpectedValueException */ protected function parseAction($action) { return RouteAction::parse($this->uri, $action); } /** * Run the route action and return the response. * * @return mixed */ public function run() { $this->container = $this->container ?: new Container; try { if ($this->isControllerAction()) { return $this->runController(); } return $this->runCallable(); } catch (HttpResponseException $e) { return $e->getResponse(); } } /** * Checks whether the route's action is a controller. * * @return bool */ protected function isControllerAction() { return is_string($this->action['uses']); } /** * Run the route action and return the response.
/** * Run the given route within a Stack "onion" instance. * * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @return mixed */ protected function runRouteWithinStack(Route $route, Request $request) { $shouldSkipMiddleware = $this->container->bound('middleware.disable') && $this->container->make('middleware.disable') === true; $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route); return (new Pipeline($this->container)) ->send($request) ->through($middleware) ->then(function ($request) use ($route) { return $this->prepareResponse( $request, $route->run() ); }); } /** * Gather the middleware for the given route with resolved class names. * * @param \Illuminate\Routing\Route $route * @return array */ public function gatherRouteMiddleware(Route $route) { $middleware = collect($route->gatherMiddleware())->map(function ($name) { return (array) MiddlewareNameResolver::resolve($name, $this->middleware, $this->middlewareGroups); })->flatten(); return $this->sortMiddleware($middleware); } /**
use Symfony\Component\Debug\Exception\FatalThrowableError; /** * This extended pipeline catches any exceptions that occur during each slice. * * The exceptions are converted to HTTP responses for proper middleware handling. */ class Pipeline extends BasePipeline { /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { try { return $destination($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry();
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
*/ public function __construct(Registrar $router) { $this->router = $router; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $this->router->substituteBindings($route = $request->route()); $this->router->substituteImplicitBindings($route); return $next($request); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#328 : "Illuminate\Routing\Pipeline" : Pipeline {#317 …} : { : {} } : { : Closure {#322 …} } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
} /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed * * @throws \Illuminate\Session\TokenMismatchException */ public function handle($request, Closure $next) { if ( $this->isReading($request) || $this->runningUnitTests() || $this->inExceptArray($request) || $this->tokensMatch($request) ) { return $this->addCookieToResponse($request, $next($request)); } throw new TokenMismatchException; } /** * Determine if the HTTP request uses a ‘read’ verb. * * @param \Illuminate\Http\Request $request * @return bool */ protected function isReading($request) { return in_array($request->method(), ['HEAD', 'GET', 'OPTIONS']); } /** * Determine if the application is running unit tests. * * @return bool
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#413 : "Illuminate\Routing\Pipeline" : Pipeline {#317 …} : { : {} } : { : Closure {#328 …} : "Illuminate\Routing\Middleware\SubstituteBindings" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { // If the current session has an "errors" variable bound to it, we will share // its value with all view instances so the views can easily access errors // without having to bind. An empty bag is set when there aren't errors. $this->view->share( 'errors', $request->session()->get('errors') ?: new ViewErrorBag ); // Putting the errors in the view for every view allows the developer to just // assume that some errors are always available, which is convenient since // they don't have to continually run checks for the presence of errors. return $next($request); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#414 : "Illuminate\Routing\Pipeline" : Pipeline {#317 …} : { : {} } : { : Closure {#413 …} : "BFT\Http\Middleware\VerifyCsrfToken" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $this->sessionHandled = true; // If a session driver has been configured, we will need to start the session here // so that the data is ready for an application. Note that the Laravel sessions // do not make use of PHP "native" sessions in any way since they are crappy. if ($this->sessionConfigured()) { $request->setLaravelSession( $session = $this->startSession($request) ); $this->collectGarbage($session); } $response = $next($request); // Again, if the session has been configured we will need to close out the session // so that the attributes may be persisted to some storage medium. We will also // add the session identifier cookie to the application response headers now. if ($this->sessionConfigured()) { $this->storeCurrentUrl($request, $session); $this->addCookieToResponse($response, $session); } return $response; } /** * Perform any final actions for the request lifecycle. * * @param \Illuminate\Http\Request $request * @param \Symfony\Component\HttpFoundation\Response $response * @return void */
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#415 : "Illuminate\Routing\Pipeline" : Pipeline {#317 …} : { : {} } : { : Closure {#414 …} : "Illuminate\View\Middleware\ShareErrorsFromSession" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Create a new CookieQueue instance. * * @param \Illuminate\Contracts\Cookie\QueueingFactory $cookies * @return void */ public function __construct(CookieJar $cookies) { $this->cookies = $cookies; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $response = $next($request); foreach ($this->cookies->getQueuedCookies() as $cookie) { $response->headers->setCookie($cookie); } return $response; } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#416 : "Illuminate\Routing\Pipeline" : Pipeline {#317 …} : { : {} } : { : Closure {#415 …} : "Illuminate\Session\Middleware\StartSession" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Disable encryption for the given cookie name(s). * * @param string|array $cookieName * @return void */ public function disableFor($cookieName) { $this->except = array_merge($this->except, (array) $cookieName); } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { return $this->encrypt($next($this->decrypt($request))); } /** * Decrypt the cookies on the request. * * @param \Symfony\Component\HttpFoundation\Request $request * @return \Symfony\Component\HttpFoundation\Request */ protected function decrypt(Request $request) { foreach ($request->cookies as $key => $c) { if ($this->isDisabled($key)) { continue; } try { $request->cookies->set($key, $this->decryptCookie($c)); } catch (DecryptException $e) { $request->cookies->set($key, null); }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#417 : "Illuminate\Routing\Pipeline" : Pipeline {#317 …} : { : {} } : { : Closure {#416 …} : "Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
public function via($method) { $this->method = $method; return $this; } /** * Run the pipeline with a final destination callback. * * @param \Closure $destination * @return mixed */ public function then(Closure $destination) { $pipeline = array_reduce( array_reverse($this->pipes), $this->carry(), $this->prepareDestination($destination) ); return $pipeline($this->passable); } /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { return $destination($passable); }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @return mixed */ protected function runRouteWithinStack(Route $route, Request $request) { $shouldSkipMiddleware = $this->container->bound('middleware.disable') && $this->container->make('middleware.disable') === true; $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route); return (new Pipeline($this->container)) ->send($request) ->through($middleware) ->then(function ($request) use ($route) { return $this->prepareResponse( $request, $route->run() ); }); } /** * Gather the middleware for the given route with resolved class names. * * @param \Illuminate\Routing\Route $route * @return array */ public function gatherRouteMiddleware(Route $route) { $middleware = collect($route->gatherMiddleware())->map(function ($name) { return (array) MiddlewareNameResolver::resolve($name, $this->middleware, $this->middlewareGroups); })->flatten(); return $this->sortMiddleware($middleware); } /** * Sort the given middleware by priority. *
return $route; } /** * Return the response for the given route. * * @param Route $route * @param Request $request * @return mixed */ protected function runRoute(Request $request, Route $route) { $request->setRouteResolver(function () use ($route) { return $route; }); $this->events->dispatch(new Events\RouteMatched($route, $request)); return $this->prepareResponse($request, $this->runRouteWithinStack($route, $request) ); } /** * Run the given route within a Stack "onion" instance. * * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @return mixed */ protected function runRouteWithinStack(Route $route, Request $request) { $shouldSkipMiddleware = $this->container->bound('middleware.disable') && $this->container->make('middleware.disable') === true; $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route); return (new Pipeline($this->container)) ->send($request) ->through($middleware)
Route {#212}
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse */ public function dispatch(Request $request) { $this->currentRequest = $request; return $this->dispatchToRoute($request); } /** * Dispatch the request to a route and return the response. * * @param \Illuminate\Http\Request $request * @return mixed */ public function dispatchToRoute(Request $request) { return $this->runRoute($request, $this->findRoute($request)); } /** * Find the route matching a given request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Routing\Route */ protected function findRoute($request) { $this->current = $route = $this->routes->match($request); $this->container->instance(Route::class, $route); return $route; } /** * Return the response for the given route. *
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Route {#212}
* @return mixed */ public function respondWithRoute($name) { $route = tap($this->routes->getByName($name))->bind($this->currentRequest); return $this->runRoute($this->currentRequest, $route); } /** * Dispatch the request to the application. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse */ public function dispatch(Request $request) { $this->currentRequest = $request; return $this->dispatchToRoute($request); } /** * Dispatch the request to a route and return the response. * * @param \Illuminate\Http\Request $request * @return mixed */ public function dispatchToRoute(Request $request) { return $this->runRoute($request, $this->findRoute($request)); } /** * Find the route matching a given request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Routing\Route */ protected function findRoute($request)
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* @return void */ public function bootstrap() { if (! $this->app->hasBeenBootstrapped()) { $this->app->bootstrapWith($this->bootstrappers()); } } /** * Get the route dispatcher callback. * * @return \Closure */ protected function dispatchToRouter() { return function ($request) { $this->app->instance('request', $request); return $this->router->dispatch($request); }; } /** * Call the terminate method on any terminable middleware. * * @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Response $response * @return void */ public function terminate($request, $response) { $this->terminateMiddleware($request, $response); $this->app->terminate(); } /** * Call the terminate method on any terminable middleware. *
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
use Symfony\Component\Debug\Exception\FatalThrowableError; /** * This extended pipeline catches any exceptions that occur during each slice. * * The exceptions are converted to HTTP responses for proper middleware handling. */ class Pipeline extends BasePipeline { /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { try { return $destination($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry();
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
{ $this->config = $config; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * * @throws \Symfony\Component\HttpKernel\Exception\HttpException * * @return mixed */ public function handle($request, Closure $next) { $this->setTrustedProxyHeaderNames($request); $this->setTrustedProxyIpAddresses($request); return $next($request); } /** * Sets the trusted proxies on the request to the value of trustedproxy.proxies * * @param \Illuminate\Http\Request $request */ protected function setTrustedProxyIpAddresses($request) { $trustedIps = $this->proxies ?: $this->config->get('trustedproxy.proxies'); // We only trust specific IP addresses if (is_array($trustedIps)) { return $this->setTrustedProxyIpAddressesToSpecificIps($request, $trustedIps); } // We trust any IP address that calls us, but not proxies further // up the forwarding chain. // TODO: Determine if this should only trust the first IP address // Currently it trusts the entire chain (array of IPs),
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#122 : "Illuminate\Routing\Pipeline" : Pipeline {#34 …} : { : {} } : { : Closure {#23 …} } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* The additional attributes passed to the middleware. * * @var array */ protected $attributes = []; /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next, ...$attributes) { $this->attributes = $attributes; $this->clean($request); return $next($request); } /** * Clean the request's data. * * @param \Illuminate\Http\Request $request * @return void */ protected function clean($request) { $this->cleanParameterBag($request->query); if ($request->isJson()) { $this->cleanParameterBag($request->json()); } else { $this->cleanParameterBag($request->request); } } /**
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#223 : "Illuminate\Routing\Pipeline" : Pipeline {#34 …} : { : {} } : { : Closure {#122 …} : "BFT\Http\Middleware\TrustProxies" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* The additional attributes passed to the middleware. * * @var array */ protected $attributes = []; /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next, ...$attributes) { $this->attributes = $attributes; $this->clean($request); return $next($request); } /** * Clean the request's data. * * @param \Illuminate\Http\Request $request * @return void */ protected function clean($request) { $this->cleanParameterBag($request->query); if ($request->isJson()) { $this->cleanParameterBag($request->json()); } else { $this->cleanParameterBag($request->request); } } /**
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#299 : "Illuminate\Routing\Pipeline" : Pipeline {#34 …} : { : {} } : { : Closure {#223 …} : "Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
class ValidatePostSize { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed * * @throws \Illuminate\Http\Exceptions\PostTooLargeException */ public function handle($request, Closure $next) { $max = $this->getPostMaxSize(); if ($max > 0 && $request->server('CONTENT_LENGTH') > $max) { throw new PostTooLargeException; } return $next($request); } /** * Determine the server 'post_max_size' as bytes. * * @return int */ protected function getPostMaxSize() { if (is_numeric($postMaxSize = ini_get('post_max_size'))) { return (int) $postMaxSize; } $metric = strtoupper(substr($postMaxSize, -1)); $postMaxSize = (int) $postMaxSize; switch ($metric) { case 'K': return $postMaxSize * 1024; case 'M':
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#300 : "Illuminate\Routing\Pipeline" : Pipeline {#34 …} : { : {} } : { : Closure {#299 …} : "BFT\Http\Middleware\TrimStrings" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
} /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed * * @throws \Symfony\Component\HttpKernel\Exception\HttpException */ public function handle($request, Closure $next) { if ($this->app->isDownForMaintenance()) { $data = json_decode(file_get_contents($this->app->storagePath().'/framework/down'), true); throw new MaintenanceModeException($data['time'], $data['retry'], $data['message']); } return $next($request); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#301 : "Illuminate\Routing\Pipeline" : Pipeline {#34 …} : { : {} } : { : Closure {#300 …} : "Illuminate\Foundation\Http\Middleware\ValidatePostSize" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
public function via($method) { $this->method = $method; return $this; } /** * Run the pipeline with a final destination callback. * * @param \Closure $destination * @return mixed */ public function then(Closure $destination) { $pipeline = array_reduce( array_reverse($this->pipes), $this->carry(), $this->prepareDestination($destination) ); return $pipeline($this->passable); } /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { return $destination($passable); }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
} /** * Send the given request through the middleware / router. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ protected function sendRequestThroughRouter($request) { $this->app->instance('request', $request); Facade::clearResolvedInstance('request'); $this->bootstrap(); return (new Pipeline($this->app)) ->send($request) ->through($this->app->shouldSkipMiddleware() ? [] : $this->middleware) ->then($this->dispatchToRouter()); } /** * Bootstrap the application for HTTP requests. * * @return void */ public function bootstrap() { if (! $this->app->hasBeenBootstrapped()) { $this->app->bootstrapWith($this->bootstrappers()); } } /** * Get the route dispatcher callback. * * @return \Closure */ protected function dispatchToRouter()
$router->middlewareGroup($key, $middleware); } foreach ($this->routeMiddleware as $key => $middleware) { $router->aliasMiddleware($key, $middleware); } } /** * Handle an incoming HTTP request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function handle($request) { try { $request->enableHttpMethodParameterOverride(); $response = $this->sendRequestThroughRouter($request); } catch (Exception $e) { $this->reportException($e); $response = $this->renderException($request, $e); } catch (Throwable $e) { $this->reportException($e = new FatalThrowableError($e)); $response = $this->renderException($request, $e); } $this->app['events']->dispatch( new Events\RequestHandled($request, $response) ); return $response; } /** * Send the given request through the middleware / router. *
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
*/ $app = require_once __DIR__.'/../bootstrap/app.php'; /* |-------------------------------------------------------------------------- | Run The Application |-------------------------------------------------------------------------- | | Once we have the application, we can handle the incoming request | through the kernel, and send the associated response back to | the client's browser allowing them to enjoy the creative | and wonderful application we have prepared for them. | */ $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); $response = $kernel->handle( $request = Illuminate\Http\Request::capture() ); $response->send(); $kernel->terminate($request, $response);
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/244" #requestUri: "/download-pattern/244" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Key | Value |
USER | "flobha"
|
HOME | "/home/flobha"
|
SCRIPT_NAME | "/index.php"
|
REQUEST_URI | "/download-pattern/244"
|
QUERY_STRING | "" |
REQUEST_METHOD | "GET"
|
SERVER_PROTOCOL | "HTTP/1.1"
|
GATEWAY_INTERFACE | "CGI/1.1"
|
REDIRECT_URL | "/download-pattern/244"
|
REMOTE_PORT | "36544"
|
SCRIPT_FILENAME | "/home/flobha/public_html/public/index.php"
|
SERVER_ADMIN | "webmaster@bharatfloorings.com"
|
CONTEXT_DOCUMENT_ROOT | "/home/flobha/public_html/public"
|
CONTEXT_PREFIX | "" |
REQUEST_SCHEME | "https"
|
DOCUMENT_ROOT | "/home/flobha/public_html/public"
|
REMOTE_ADDR | "35.173.125.112"
|
SERVER_PORT | "443"
|
SERVER_ADDR | "95.216.37.147"
|
SERVER_NAME | "www.bharatfloorings.com"
|
SERVER_SOFTWARE | "Apache"
|
SERVER_SIGNATURE | "" |
PATH | "/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin:/opt/bin"
|
HTTP_X_HTTPS | "1"
|
HTTP_HOST | "www.bharatfloorings.com"
|
HTTP_USER_AGENT | "claudebot"
|
HTTP_ACCEPT | "*/*"
|
proxy-nokeepalive | "1"
|
SSL_TLS_SNI | "www.bharatfloorings.com"
|
HTTPS | "on"
|
SCRIPT_URI | "https://www.bharatfloorings.com/download-pattern/244"
|
SCRIPT_URL | "/download-pattern/244"
|
UNIQUE_ID | "ZgZigS6FuqqIaPnX5FNCIAAAAEY"
|
REDIRECT_STATUS | "200"
|
REDIRECT_SSL_TLS_SNI | "www.bharatfloorings.com"
|
REDIRECT_HTTPS | "on"
|
REDIRECT_SCRIPT_URI | "https://www.bharatfloorings.com/download-pattern/244"
|
REDIRECT_SCRIPT_URL | "/download-pattern/244"
|
REDIRECT_UNIQUE_ID | "ZgZigS6FuqqIaPnX5FNCIAAAAEY"
|
FCGI_ROLE | "RESPONDER"
|
PHP_SELF | "/index.php"
|
REQUEST_TIME_FLOAT | 1711694465.6855
|
REQUEST_TIME | 1711694465
|
argv | [] |
argc | 0
|