AnonSec Team
Server IP : 10.2.73.233  /  Your IP : 216.73.216.223
Web Server : Apache/2.4.59 (Debian)
System : Linux polon 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64
User : www-data ( 33)
PHP Version : 5.6.40-64+0~20230107.71+debian10~1.gbp673146
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /home/ifk/web/prado4.3.2/Util/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/ifk/web/prado4.3.2/Util/TFirebugLogRoute.php
<?php
/**
 * TLogRouter, TLogRoute, TFileLogRoute, TEmailLogRoute class file
 *
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @link https://github.com/pradosoft/prado
 * @license https://github.com/pradosoft/prado/blob/master/LICENSE
 */

namespace Prado\Util;

use Prado\Exceptions\TException;
use Prado\Web\Javascripts\TJavaScript;
use Prado\Web\UI\ActiveControls\TActivePageAdapter;

/**
 * TFirebugLogRoute class.
 *
 * TFirebugLogRoute prints selected log messages in the firebug log console.
 *
 * {@link http://www.getfirebug.com/ FireBug Website}
 *
 * @author Enrico Stahn <mail@enricostahn.com>, Christophe Boulain <Christophe.Boulain@gmail.com>
 * @since 3.1.2
 * @method \Prado\Web\Services\TPageService getService()
 */
class TFirebugLogRoute extends TBrowserLogRoute
{
	public function processLogs($logs)
	{
		$page = $this->getService()->getRequestedPage();
		if (empty($logs) || $this->getApplication()->getMode() === 'Performance') {
			return;
		}
		$first = $logs[0][3];
		$even = true;

		$blocks = [['info', 'Tot Time', 'Time    ', '[Level] [Category] [Message]']];
		for ($i = 0, $n = count($logs); $i < $n; ++$i) {
			if ($i < $n - 1) {
				$timing['delta'] = $logs[$i + 1][3] - $logs[$i][3];
				$timing['total'] = $logs[$i + 1][3] - $first;
			} else {
				$timing['delta'] = '?';
				$timing['total'] = $logs[$i][3] - $first;
			}
			$timing['even'] = !($even = !$even);
			$blocks[] = $this->renderMessageCallback($logs[$i], $timing);
		}

		try {
			$blocks = TJavaScript::jsonEncode($blocks);
		} catch (\Exception $e) {
			// strip everythin not 7bit ascii
			$blocks = preg_replace('/[^(\x20-\x7F)]*/', '', serialize($blocks));
		}

		// the response has already been flushed
		$response = $this->getApplication()->getResponse();
		if ($page->getIsCallback()) {
			$content = $response->createHtmlWriter();
			$content->getWriter()->setBoundary(TActivePageAdapter::CALLBACK_DEBUG_HEADER);
			$content->write($blocks);
			$response->write($content);
		}
	}

	protected function renderHeader()
	{
		$page = $this->getService()->getRequestedPage();
		if ($page->getIsCallback()) {
			return <<<EOD

<script>
/*<![CDATA[*/
if (typeof(console) == 'object')
{
	var groupFunc = blocks.length < 10 ? 'group': 'groupCollapsed';
	if(typeof log[groupFunc] === "function")
		log[groupFunc]("Callback logs ("+blocks.length+" entries)");

	console.log ("[Tot Time] [Time    ] [Level] [Category] [Message]");

EOD;
		}
		return '';
	}

	protected function renderMessage($log, $info)
	{
		$logfunc = 'console.' . $this->getFirebugLoggingFunction($log[1]);
		$total = sprintf('%0.6f', $info['total']);
		$delta = sprintf('%0.6f', $info['delta']);
		$msg = trim($this->formatLogMessage($log[0], $log[1], $log[2], ''));
		$msg = preg_replace('/\(line[^\)]+\)$/', '', $msg); //remove line number info
		$msg = "[{$total}] [{$delta}] " . $msg; // Add time spent and cumulated time spent
		$string = $logfunc . '(\'' . addslashes($msg) . '\');' . "\n";

		return $string;
	}

	protected function renderMessageCallback($log, $info)
	{
		$logfunc = $this->getFirebugLoggingFunction($log[1]);
		$total = sprintf('%0.6f', $info['total']);
		$delta = sprintf('%0.6f', $info['delta']);
		$msg = trim($this->formatLogMessage($log[0], $log[1], $log[2], ''));
		$msg = preg_replace('/\(line[^\)]+\)$/', '', $msg); //remove line number info

		return [$logfunc, $total, $delta, $msg];
	}

	protected function renderFooter()
	{
		$string = <<<EOD

	if(typeof console.groupEnd === "function")
		console.groupEnd();

}
</script>

EOD;

		return $string;
	}

	protected function getFirebugLoggingFunction($level)
	{
		switch ($level) {
			case TLogger::DEBUG:
			case TLogger::INFO:
			case TLogger::NOTICE:
				return 'info';
			case TLogger::WARNING:
				return 'warn';
			case TLogger::ERROR:
			case TLogger::ALERT:
			case TLogger::FATAL:
				return 'error';
			default:
				return 'log';
		}
	}
}

AnonSec - 2021