|  | <?php | 
						
						
							|  | 	require('../../../includes/prepend.inc.php'); | 
						
						
							|  | 	$intDatabaseIndex = $_POST['intDatabaseIndex']; | 
						
						
							|  | 	$strProfileData = $_POST['strProfileData']; | 
						
						
							|  | 	$strReferrer = $_POST['strReferrer']; | 
						
						
							|  | 
 | 
						
						
							|  | 	$objProfileArray = unserialize(base64_decode($strProfileData)); | 
						
						
							|  | 	$objProfileArray = QType::Cast($objProfileArray, QType::ArrayType); | 
						
						
							|  | 	if ((count($objProfileArray) % 2) != 0) | 
						
						
							|  | 		throw new Exception('Database Profiling data appears to have been corrupted.'); | 
						
						
							|  | ?> | 
						
						
							|  | <html> | 
						
						
							|  | 	<head> | 
						
						
							|  | 		<title>Qcodo Development Framework - Database Profiling Tool</title> | 
						
						
							|  | 		<style> | 
						
						
							|  | 			body { font-family: 'Arial' 'Helvetica' 'sans-serif'; font-size: 14px; } | 
						
						
							|  | 			a:link, a:visited { text-decoration: none; } | 
						
						
							|  | 			a:hover { text-decoration: underline; } | 
						
						
							|  |  | 
						
						
							|  | 			pre { font-family: 'Lucida Console' 'Courier New' 'Courier' 'monospaced'; font-size: 11px; line-height: 13px; } | 
						
						
							|  | 			.page { padding: 10px; } | 
						
						
							|  |  | 
						
						
							|  | 			.headingLeft { | 
						
						
							|  | 				background-color: #446644; | 
						
						
							|  | 				color: #ffffff; | 
						
						
							|  | 				padding: 10px 0px 10px 10px; | 
						
						
							|  | 				font-family: 'Verdana' 'Arial' 'Helvetica' 'sans-serif'; | 
						
						
							|  | 				font-size: 18px; | 
						
						
							|  | 				font-weight: bold; | 
						
						
							|  | 				width: 70%; | 
						
						
							|  | 				vertical-align: middle; | 
						
						
							|  | 			} | 
						
						
							|  | 			.headingLeftSmall { font-size: 10px; } | 
						
						
							|  | 			.headingRight { | 
						
						
							|  | 				background-color: #446644; | 
						
						
							|  | 				color: #ffffff; | 
						
						
							|  | 				padding: 0px 10px 10px 10px; | 
						
						
							|  | 				font-family: 'Verdana' 'Arial' 'Helvetica' 'sans-serif'; | 
						
						
							|  | 				font-size: 10px; | 
						
						
							|  | 				width: 30%; | 
						
						
							|  | 				vertical-align: middle; | 
						
						
							|  | 				text-align: right; | 
						
						
							|  | 			} | 
						
						
							|  | 			.title { font-family: 'Verdana' 'Arial' 'Helvetica' 'sans-serif'; font-size: 19px; font-style: italic; color: #330055; } | 
						
						
							|  | 			.code { background-color: #f4eeff; padding: 1px 10px 1px 10px; } | 
						
						
							|  | 			 | 
						
						
							|  | 			.function { font-family: 'Verdana' 'Arial' 'Helvetica' 'sans-serif'; font-size: 12px; font-weight: bold; } | 
						
						
							|  | 			.function_details { font-family: 'Verdana' 'Arial' 'Helvetica' 'sans-serif'; font-size: 10px; color: #777777; } | 
						
						
							|  | 		</style> | 
						
						
							|  | 		<script type="text/javascript"> | 
						
						
							|  | 			function Toggle(spanId) { | 
						
						
							|  | 				var obj = document.getElementById(spanId); | 
						
						
							|  |  | 
						
						
							|  | 				if (obj) { | 
						
						
							|  | 					if (obj.style.display == "block") { | 
						
						
							|  | 						// Make INVISIBLE | 
						
						
							|  | 						obj.style.display = "none"; | 
						
						
							|  | 					} else { | 
						
						
							|  | 						// Make VISIBLE | 
						
						
							|  | 						obj.style.display = "block"; | 
						
						
							|  | 					} | 
						
						
							|  | 				} | 
						
						
							|  | 			} | 
						
						
							|  | 			 | 
						
						
							|  | 			function ShowAll() { | 
						
						
							|  | 				for (var intIndex = 1; intIndex < <?php _p(count($objProfileArray)); ?>; intIndex = intIndex + 2) { | 
						
						
							|  | 					var obj = document.getElementById('query' + intIndex); | 
						
						
							|  | 					obj.style.display = "block"; | 
						
						
							|  | 				} | 
						
						
							|  | 			} | 
						
						
							|  | 			 | 
						
						
							|  | 			function HideAll() { | 
						
						
							|  | 				for (var intIndex = 1; intIndex < <?php _p(count($objProfileArray)); ?>; intIndex = intIndex + 2) { | 
						
						
							|  | 					var obj = document.getElementById('query' + intIndex); | 
						
						
							|  | 					obj.style.display = "none"; | 
						
						
							|  | 				} | 
						
						
							|  | 			} | 
						
						
							|  | 		</script> | 
						
						
							|  | 	</head> | 
						
						
							|  | 	<body topmargin="0" leftmargin="0" marginheight="0" marginwidth="0">  | 
						
						
							|  |  | 
						
						
							|  | 		<table border="0" cellspacing="0" width="100%"> | 
						
						
							|  | 			<tr> | 
						
						
							|  | 				<td nowrap="nowrap" class="headingLeft"><span class="headingLeftSmall">Qcodo Development Framework <?= QCODO_VERSION ?><br /></span>Database Profiling Tool</div></td> | 
						
						
							|  | 				<td nowrap="nowrap" class="headingRight"> | 
						
						
							|  | 					<b>Database Index:</b> <?php _p($intDatabaseIndex); ?>;  <b>Database Type:</b> <?php _p(QApplication::$Database[$intDatabaseIndex]->Adapter); ?><br /> | 
						
						
							|  | 					<b>Database Server:</b> <?php _p(QApplication::$Database[$intDatabaseIndex]->Server); ?>;  <b>Database Name:</b> <?php _p(QApplication::$Database[$intDatabaseIndex]->Database); ?><br /> | 
						
						
							|  | 					<b>Profile Generated From:</b> <?php _p($strReferrer); ?> | 
						
						
							|  | 				</td> | 
						
						
							|  | 			</tr> | 
						
						
							|  | 		</table><br /> | 
						
						
							|  |  | 
						
						
							|  | 		<div class="page"> | 
						
						
							|  | <?php | 
						
						
							|  | 			$intCount = count($objProfileArray) / 2; | 
						
						
							|  | 			if ($intCount == 0) | 
						
						
							|  | 				_p('<b>There were no queries that were performed.</b>', false); | 
						
						
							|  | 			else if ($intCount == 1) | 
						
						
							|  | 				_p('<b>There was 1 query that was performed.</b>', false); | 
						
						
							|  | 			else | 
						
						
							|  | 				printf('<b>There were %s queries that were performed.</b>', $intCount); | 
						
						
							|  | ?> | 
						
						
							|  | 			<br /> | 
						
						
							|  | 			<a href="javascript: ShowAll()" class="function_details">Show All</a> | 
						
						
							|  | 			   |    | 
						
						
							|  | 			<a href="javascript: HideAll()" class="function_details">Hide All</a> | 
						
						
							|  | 			<br /><br /><br /> | 
						
						
							|  | <?php | 
						
						
							|  | 			for ($intIndex = 0; $intIndex < count($objProfileArray); $intIndex++) { | 
						
						
							|  | 				if ((count($objProfileArray[$intIndex]) > 3) && | 
						
						
							|  | 					(array_key_exists('function', $objProfileArray[$intIndex][2])) && | 
						
						
							|  | 					(($objProfileArray[$intIndex][2]['function'] == 'QueryArray') || | 
						
						
							|  | 					 ($objProfileArray[$intIndex][2]['function'] == 'QuerySingle') || | 
						
						
							|  | 					 ($objProfileArray[$intIndex][2]['function'] == 'QueryCount'))) | 
						
						
							|  | 					$objDebugBacktrace = $objProfileArray[$intIndex][3]; | 
						
						
							|  | 				else | 
						
						
							|  | 					$objDebugBacktrace = $objProfileArray[$intIndex][2]; | 
						
						
							|  | 				$intIndex++; | 
						
						
							|  | 				$strQuery = $objProfileArray[$intIndex]; | 
						
						
							|  |  | 
						
						
							|  | 				$objArgs = (array_key_exists('args', $objDebugBacktrace)) ? $objDebugBacktrace['args'] : array(); | 
						
						
							|  | 				$strClass = (array_key_exists('class', $objDebugBacktrace)) ? $objDebugBacktrace['class'] : null; | 
						
						
							|  | 				$strType = (array_key_exists('type', $objDebugBacktrace)) ? $objDebugBacktrace['type'] : null; | 
						
						
							|  | 				$strFunction = (array_key_exists('function', $objDebugBacktrace)) ? $objDebugBacktrace['function'] : null; | 
						
						
							|  | 				$strFile = (array_key_exists('file', $objDebugBacktrace)) ? $objDebugBacktrace['file'] : null; | 
						
						
							|  | 				$strLine = (array_key_exists('line', $objDebugBacktrace)) ? $objDebugBacktrace['line'] : null; | 
						
						
							|  | ?> | 
						
						
							|  | 				<span class="function"> | 
						
						
							|  | 					Called by <?php _p($strClass . $strType . $strFunction . '(' . implode(', ', $objArgs) . ')'); ?> | 
						
						
							|  | 				</span> | 
						
						
							|  | 				   |    | 
						
						
							|  | 				<a href="javascript: Toggle('query<?php _p($intIndex); ?>')" class="function_details">Show/Hide</a> | 
						
						
							|  | 				<br /> | 
						
						
							|  | 				<span class="function_details"><b>File: </b><?php _p($strFile); ?>;   <b>Line: </b><?php _p($strLine); ?> | 
						
						
							|  | 				</span><br /> | 
						
						
							|  | 				<div class="code" id="query<?php _p($intIndex); ?>" style="display: none"><pre><?php _p($strQuery); ?></pre></div> | 
						
						
							|  | 				<br /><br /> | 
						
						
							|  | <?php | 
						
						
							|  | 			} | 
						
						
							|  | ?> | 
						
						
							|  |  | 
						
						
							|  | 		</div> | 
						
						
							|  | 	</body> | 
						
						
							|  | </html>
 |