Server IP : 180.180.241.3 / Your IP : 216.73.216.252 Web Server : Microsoft-IIS/7.5 System : Windows NT NETWORK-NHRC 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586 User : IUSR ( 0) PHP Version : 5.3.28 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /AppServ/www/app/Plugin/DebugKit/Model/ |
Upload File : |
<?php /** * DebugKit ToolbarAccess Model * * Contains logic for accessing DebugKit specific information. * * PHP 5 * * CakePHP(tm) : Rapid Development Framework (http://cakephp.org) * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org) * * Licensed under The MIT License * Redistributions of files must retain the above copyright notice. * * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org) * @link http://cakephp.org CakePHP(tm) Project * @package DebugKit.Model * @since DebugKit 1.3 * @license http://www.opensource.org/licenses/mit-license.php MIT License **/ App::uses('ConnectionManager', 'Model'); /** * Class ToolbarAccess * * @package DebugKit.Model * @since DebugKit 1.3 */ class ToolbarAccess extends Object { /** * Runs an explain on a query if the connection supports EXPLAIN. * currently only PostgreSQL and MySQL are supported. * * @param string $connection Connection name * @param string $query SQL query to explain / find query plan for. * @return array Array of explain information or empty array if connection is unsupported. */ public function explainQuery($connection, $query) { $db = ConnectionManager::getDataSource($connection); $datasource = $db->config['datasource']; $return = array(); if (preg_match('/(Mysql|Postgres)$/', $datasource)) { $explained = $db->query('EXPLAIN ' . $query); if (preg_match('/Postgres$/', $datasource)) { $queryPlan = array(); foreach ($explained as $postgreValue) { $queryPlan[] = array($postgreValue[0]['QUERY PLAN']); } $return = array_merge(array(array('')), $queryPlan); } else { $keys = array_keys($explained[0][0]); foreach ($explained as $mysqlValue) { $queryPlan[] = array_values($mysqlValue[0]); } $return = array_merge(array($keys), $queryPlan); } } return $return; } }