diff --git a/src/Symfony/Bundle/WebProfilerBundle/Controller/ProfilerController.php b/src/Symfony/Bundle/WebProfilerBundle/Controller/ProfilerController.php
index df02962a9d..8ce9670788 100644
--- a/src/Symfony/Bundle/WebProfilerBundle/Controller/ProfilerController.php
+++ b/src/Symfony/Bundle/WebProfilerBundle/Controller/ProfilerController.php
@@ -191,22 +191,25 @@ class ProfilerController extends ContainerAware
$profiler->disable();
if (null === $session = $this->container->get('request')->getSession()) {
- $ip =
- $url =
- $limit =
- $token = null;
+ $ip =
+ $method =
+ $url =
+ $limit =
+ $token = null;
} else {
- $ip = $session->get('_profiler_search_ip');
- $url = $session->get('_profiler_search_url');
- $limit = $session->get('_profiler_search_limit');
- $token = $session->get('_profiler_search_token');
+ $ip = $session->get('_profiler_search_ip');
+ $method = $session->get('_profiler_search_method');
+ $url = $session->get('_profiler_search_url');
+ $limit = $session->get('_profiler_search_limit');
+ $token = $session->get('_profiler_search_token');
}
return $this->container->get('templating')->renderResponse('WebProfilerBundle:Profiler:search.html.twig', array(
- 'token' => $token,
- 'ip' => $ip,
- 'url' => $url,
- 'limit' => $limit,
+ 'token' => $token,
+ 'ip' => $ip,
+ 'method' => $method,
+ 'url' => $url,
+ 'limit' => $limit,
));
}
@@ -223,15 +226,17 @@ class ProfilerController extends ContainerAware
$profile = $profiler->loadProfile($token);
- $ip = $this->container->get('request')->query->get('ip');
- $url = $this->container->get('request')->query->get('url');
- $limit = $this->container->get('request')->query->get('limit');
+ $ip = $this->container->get('request')->query->get('ip');
+ $method = $this->container->get('request')->query->get('method');
+ $url = $this->container->get('request')->query->get('url');
+ $limit = $this->container->get('request')->query->get('limit');
return $this->container->get('templating')->renderResponse('WebProfilerBundle:Profiler:results.html.twig', array(
'token' => $token,
'profile' => $profile,
- 'tokens' => $profiler->find($ip, $url, $limit),
+ 'tokens' => $profiler->find($ip, $url, $limit, $method),
'ip' => $ip,
+ 'method' => $method,
'url' => $url,
'limit' => $limit,
'panel' => null,
@@ -250,13 +255,15 @@ class ProfilerController extends ContainerAware
$request = $this->container->get('request');
- $ip = preg_replace('/[^\d\.]/', '', $request->query->get('ip'));
- $url = $request->query->get('url');
- $limit = $request->query->get('limit');
- $token = $request->query->get('token');
+ $ip = preg_replace('/[^\d\.]/', '', $request->query->get('ip'));
+ $method = $request->query->get('method');
+ $url = $request->query->get('url');
+ $limit = $request->query->get('limit');
+ $token = $request->query->get('token');
if (null !== $session = $request->getSession()) {
$session->set('_profiler_search_ip', $ip);
+ $session->set('_profiler_search_method', $method);
$session->set('_profiler_search_url', $url);
$session->set('_profiler_search_limit', $limit);
$session->set('_profiler_search_token', $token);
@@ -266,20 +273,21 @@ class ProfilerController extends ContainerAware
return new RedirectResponse($this->container->get('router')->generate('_profiler', array('token' => $token)));
}
- $tokens = $profiler->find($ip, $url, $limit);
+ $tokens = $profiler->find($ip, $url, $limit, $method);
return new RedirectResponse($this->container->get('router')->generate('_profiler_search_results', array(
- 'token' => $tokens ? $tokens[0]['token'] : 'empty',
- 'ip' => $ip,
- 'url' => $url,
- 'limit' => $limit,
+ 'token' => $tokens ? $tokens[0]['token'] : 'empty',
+ 'ip' => $ip,
+ 'method' => $method,
+ 'url' => $url,
+ 'limit' => $limit,
)));
}
protected function getTemplateNames($profiler)
{
$templates = array();
- foreach ($this->container->getParameter('data_collector.templates') as $id => $arguments) {
+ foreach ($this->container->getParameter('data_collector.templates') as $arguments) {
if (null === $arguments) {
continue;
}
diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/results.html.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/results.html.twig
index b71ece6158..d143f36beb 100644
--- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/results.html.twig
+++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/results.html.twig
@@ -8,6 +8,7 @@
Token |
IP |
+ Method |
URL |
Time |
@@ -15,6 +16,7 @@
{{ elements.token }} |
{{ elements.ip }} |
+ {{ elements.method }} |
{{ elements.url }} |
{{ elements.time|date('r') }} |
diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/search.html.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/search.html.twig
index 6de59db247..d308240649 100644
--- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/search.html.twig
+++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/search.html.twig
@@ -7,6 +7,13 @@
+
+
+
diff --git a/src/Symfony/Component/HttpKernel/Profiler/FileProfilerStorage.php b/src/Symfony/Component/HttpKernel/Profiler/FileProfilerStorage.php
index 2898826f15..33a1ac4910 100644
--- a/src/Symfony/Component/HttpKernel/Profiler/FileProfilerStorage.php
+++ b/src/Symfony/Component/HttpKernel/Profiler/FileProfilerStorage.php
@@ -46,7 +46,7 @@ class FileProfilerStorage implements ProfilerStorageInterface
/**
* {@inheritdoc}
*/
- public function find($ip, $url, $limit)
+ public function find($ip, $url, $limit, $method)
{
$file = $this->getIndexFilename();
@@ -66,26 +66,27 @@ class FileProfilerStorage implements ProfilerStorageInterface
break;
}
- if ($line === "") {
+ if ($line === '') {
continue;
}
- list($csvToken, $csvIp, $csvUrl, $csvTime, $csvParent) = str_getcsv($line);
+ list($csvToken, $csvIp, $csvMethod, $csvUrl, $csvTime, $csvParent) = str_getcsv($line);
- if ($ip && false === strpos($csvIp, $ip) || $url && false === strpos($csvUrl, $url)) {
+ if ($ip && false === strpos($csvIp, $ip) || $url && false === strpos($csvUrl, $url) || $method && false === strpos($csvMethod, $method)) {
continue;
}
$row = array(
'token' => $csvToken,
'ip' => $csvIp,
+ 'method' => $csvMethod,
'url' => $csvUrl,
'time' => $csvTime,
'parent' => $csvParent,
);
$result[] = $row;
- $limit--;
+ --$limit;
}
fclose($file);
@@ -143,6 +144,7 @@ class FileProfilerStorage implements ProfilerStorageInterface
'children' => array_map(function ($p) { return $p->getToken(); }, $profile->getChildren()),
'data' => $profile->getCollectors(),
'ip' => $profile->getIp(),
+ 'method' => $profile->getMethod(),
'url' => $profile->getUrl(),
'time' => $profile->getTime(),
);
@@ -159,6 +161,7 @@ class FileProfilerStorage implements ProfilerStorageInterface
fputcsv($file, array(
$profile->getToken(),
$profile->getIp(),
+ $profile->getMethod(),
$profile->getUrl(),
$profile->getTime(),
$profile->getParent() ? $profile->getParent()->getToken() : null,
@@ -219,7 +222,7 @@ class FileProfilerStorage implements ProfilerStorageInterface
break;
}
- $str = $char . $str;
+ $str = $char.$str;
if (ftell($file) === 1) {
// All file is read, so we move cursor to the position 0
@@ -237,6 +240,7 @@ class FileProfilerStorage implements ProfilerStorageInterface
{
$profile = new Profile($token);
$profile->setIp($data['ip']);
+ $profile->setMethod($data['method']);
$profile->setUrl($data['url']);
$profile->setTime($data['time']);
$profile->setCollectors($data['data']);
diff --git a/src/Symfony/Component/HttpKernel/Profiler/MongoDbProfilerStorage.php b/src/Symfony/Component/HttpKernel/Profiler/MongoDbProfilerStorage.php
index f326c419f1..4769b0cf2c 100644
--- a/src/Symfony/Component/HttpKernel/Profiler/MongoDbProfilerStorage.php
+++ b/src/Symfony/Component/HttpKernel/Profiler/MongoDbProfilerStorage.php
@@ -37,9 +37,9 @@ class MongoDbProfilerStorage implements ProfilerStorageInterface
*
* @return array An array of tokens
*/
- public function find($ip, $url, $limit)
+ public function find($ip, $url, $limit, $method)
{
- $cursor = $this->getMongo()->find($this->buildQuery($ip, $url), array('_id', 'parent', 'ip', 'url', 'time'))->sort(array('time' => -1))->limit($limit);
+ $cursor = $this->getMongo()->find($this->buildQuery($ip, $url, $method), array('_id', 'parent', 'ip', 'method', 'url', 'time'))->sort(array('time' => -1))->limit($limit);
$tokens = array();
foreach ($cursor as $profile) {
@@ -93,6 +93,7 @@ class MongoDbProfilerStorage implements ProfilerStorageInterface
'parent' => $profile->getParent() ? $profile->getParent()->getToken() : null,
'data' => serialize($profile->getCollectors()),
'ip' => $profile->getIp(),
+ 'method' => $profile->getMethod(),
'url' => $profile->getUrl(),
'time' => $profile->getTime()
);
@@ -165,9 +166,10 @@ class MongoDbProfilerStorage implements ProfilerStorageInterface
/**
* @param string $ip
* @param string $url
+ * @param string $method
* @return array
*/
- private function buildQuery($ip, $url)
+ private function buildQuery($ip, $url, $method)
{
$query = array();
@@ -179,6 +181,10 @@ class MongoDbProfilerStorage implements ProfilerStorageInterface
$query['url'] = $url;
}
+ if (!empty($method)) {
+ $query['method'] = $method;
+ }
+
return $query;
}
@@ -192,6 +198,7 @@ class MongoDbProfilerStorage implements ProfilerStorageInterface
'token' => $data['_id'],
'parent' => isset($data['parent']) ? $data['parent'] : null,
'ip' => isset($data['ip']) ? $data['ip'] : null,
+ 'method' => isset($data['method']) ? $data['method'] : null,
'url' => isset($data['url']) ? $data['url'] : null,
'time' => isset($data['time']) ? $data['time'] : null,
'data' => isset($data['data']) ? $data['data'] : null,
@@ -206,6 +213,7 @@ class MongoDbProfilerStorage implements ProfilerStorageInterface
{
$profile = new Profile($data['token']);
$profile->setIp($data['ip']);
+ $profile->setMethod($data['method']);
$profile->setUrl($data['url']);
$profile->setTime($data['time']);
$profile->setCollectors(unserialize($data['data']));
diff --git a/src/Symfony/Component/HttpKernel/Profiler/MysqlProfilerStorage.php b/src/Symfony/Component/HttpKernel/Profiler/MysqlProfilerStorage.php
index c78f836ec7..a647bc2cc9 100644
--- a/src/Symfony/Component/HttpKernel/Profiler/MysqlProfilerStorage.php
+++ b/src/Symfony/Component/HttpKernel/Profiler/MysqlProfilerStorage.php
@@ -33,7 +33,7 @@ class MysqlProfilerStorage extends PdoProfilerStorage
}
$db = new \PDO($this->dsn, $this->username, $this->password);
- $db->exec('CREATE TABLE IF NOT EXISTS sf_profiler_data (token VARCHAR(255) PRIMARY KEY, data LONGTEXT, ip VARCHAR(64), url VARCHAR(255), time INTEGER UNSIGNED, parent VARCHAR(255), created_at INTEGER UNSIGNED, KEY (created_at), KEY (ip), KEY (url), KEY (parent))');
+ $db->exec('CREATE TABLE IF NOT EXISTS sf_profiler_data (token VARCHAR(255) PRIMARY KEY, data LONGTEXT, ip VARCHAR(64), method VARCHAR(6), url VARCHAR(255), time INTEGER UNSIGNED, parent VARCHAR(255), created_at INTEGER UNSIGNED, KEY (created_at), KEY (ip), KEY (method), KEY (url), KEY (parent))');
$this->db = $db;
}
@@ -44,7 +44,7 @@ class MysqlProfilerStorage extends PdoProfilerStorage
/**
* {@inheritdoc}
*/
- protected function buildCriteria($ip, $url, $limit)
+ protected function buildCriteria($ip, $url, $limit, $method)
{
$criteria = array();
$args = array();
@@ -59,6 +59,11 @@ class MysqlProfilerStorage extends PdoProfilerStorage
$args[':url'] = '%'.addcslashes($url, '%_\\').'%';
}
+ if ($method) {
+ $criteria[] = 'method = :method';
+ $args[':method'] = $method;
+ }
+
return array($criteria, $args);
}
}
diff --git a/src/Symfony/Component/HttpKernel/Profiler/PdoProfilerStorage.php b/src/Symfony/Component/HttpKernel/Profiler/PdoProfilerStorage.php
index 118abba3ce..1322c0343d 100644
--- a/src/Symfony/Component/HttpKernel/Profiler/PdoProfilerStorage.php
+++ b/src/Symfony/Component/HttpKernel/Profiler/PdoProfilerStorage.php
@@ -45,14 +45,14 @@ abstract class PdoProfilerStorage implements ProfilerStorageInterface
/**
* {@inheritdoc}
*/
- public function find($ip, $url, $limit)
+ public function find($ip, $url, $limit, $method)
{
- list($criteria, $args) = $this->buildCriteria($ip, $url, $limit);
+ list($criteria, $args) = $this->buildCriteria($ip, $url, $limit, $method);
$criteria = $criteria ? 'WHERE '.implode(' AND ', $criteria) : '';
$db = $this->initDb();
- $tokens = $this->fetch($db, 'SELECT token, ip, url, time, parent FROM sf_profiler_data '.$criteria.' ORDER BY time DESC LIMIT '.((integer) $limit), $args);
+ $tokens = $this->fetch($db, 'SELECT token, ip, method, url, time, parent FROM sf_profiler_data '.$criteria.' ORDER BY time DESC LIMIT '.((integer) $limit), $args);
$this->close($db);
return $tokens;
@@ -65,7 +65,7 @@ abstract class PdoProfilerStorage implements ProfilerStorageInterface
{
$db = $this->initDb();
$args = array(':token' => $token);
- $data = $this->fetch($db, 'SELECT data, parent, ip, url, time FROM sf_profiler_data WHERE token = :token LIMIT 1', $args);
+ $data = $this->fetch($db, 'SELECT data, parent, ip, method, url, time FROM sf_profiler_data WHERE token = :token LIMIT 1', $args);
$this->close($db);
if (isset($data[0]['data'])) {
return $this->createProfileFromData($token, $data[0]);
@@ -85,6 +85,7 @@ abstract class PdoProfilerStorage implements ProfilerStorageInterface
':parent' => $profile->getParent() ? $profile->getParent()->getToken() : '',
':data' => base64_encode(serialize($profile->getCollectors())),
':ip' => $profile->getIp(),
+ ':method' => $profile->getMethod(),
':url' => $profile->getUrl(),
':time' => $profile->getTime(),
':created_at' => time(),
@@ -92,7 +93,7 @@ abstract class PdoProfilerStorage implements ProfilerStorageInterface
if ($this->read($profile->getToken())) {
try {
- $this->exec($db, 'UPDATE sf_profiler_data SET parent = :parent, data = :data, ip = :ip, url = :url, time = :time, created_at = :created_at WHERE token = :token', $args);
+ $this->exec($db, 'UPDATE sf_profiler_data SET parent = :parent, data = :data, ip = :ip, method = :method, url = :url, time = :time, created_at = :created_at WHERE token = :token', $args);
$this->cleanup();
$status = true;
} catch (\Exception $e) {
@@ -100,7 +101,7 @@ abstract class PdoProfilerStorage implements ProfilerStorageInterface
}
} else {
try {
- $this->exec($db, 'INSERT INTO sf_profiler_data (token, parent, data, ip, url, time, created_at) VALUES (:token, :parent, :data, :ip, :url, :time, :created_at)', $args);
+ $this->exec($db, 'INSERT INTO sf_profiler_data (token, parent, data, ip, method, url, time, created_at) VALUES (:token, :parent, :data, :ip, :method, :url, :time, :created_at)', $args);
$this->cleanup();
$status = true;
} catch (\Exception $e) {
@@ -129,10 +130,11 @@ abstract class PdoProfilerStorage implements ProfilerStorageInterface
* @param string $ip The IP
* @param string $url The URL
* @param string $limit The maximum number of tokens to return
+ * @param string $method The request method
*
* @return array An array with (criteria, args)
*/
- abstract protected function buildCriteria($ip, $url, $limit);
+ abstract protected function buildCriteria($ip, $url, $limit, $method);
/**
* Initializes the database
@@ -197,11 +199,12 @@ abstract class PdoProfilerStorage implements ProfilerStorageInterface
{
$profile = new Profile($token);
$profile->setIp($data['ip']);
+ $profile->setMethod($data['method']);
$profile->setUrl($data['url']);
$profile->setTime($data['time']);
$profile->setCollectors(unserialize(base64_decode($data['data'])));
- if (!$parent && isset($data['parent']) && $data['parent']) {
+ if (!$parent && !empty($data['parent'])) {
$parent = $this->read($data['parent']);
}
@@ -218,13 +221,14 @@ abstract class PdoProfilerStorage implements ProfilerStorageInterface
* Reads the child profiles for the given token.
*
* @param string $token The parent token
+ * @param string $parent The parent instance
*
* @return array An array of Profile instance
*/
protected function readChildren($token, $parent)
{
$db = $this->initDb();
- $data = $this->fetch($db, 'SELECT token, data, ip, url, time FROM sf_profiler_data WHERE parent = :token', array(':token' => $token));
+ $data = $this->fetch($db, 'SELECT token, data, ip, method, url, time FROM sf_profiler_data WHERE parent = :token', array(':token' => $token));
$this->close($db);
if (!$data) {
diff --git a/src/Symfony/Component/HttpKernel/Profiler/Profile.php b/src/Symfony/Component/HttpKernel/Profiler/Profile.php
index 0dc27035db..0c5c866f3e 100644
--- a/src/Symfony/Component/HttpKernel/Profiler/Profile.php
+++ b/src/Symfony/Component/HttpKernel/Profiler/Profile.php
@@ -23,11 +23,17 @@ class Profile implements \Serializable
private $token;
private $collectors;
private $ip;
+ private $method;
private $url;
private $time;
private $parent;
private $children;
+ /**
+ * Constructor.
+ *
+ * @param string $token The token
+ */
public function __construct($token)
{
$this->token = $token;
@@ -90,6 +96,21 @@ class Profile implements \Serializable
$this->ip = $ip;
}
+ /**
+ * Returns the request method.
+ *
+ * @return string The request method
+ */
+ public function getMethod()
+ {
+ return $this->method;
+ }
+
+ public function setMethod($method)
+ {
+ $this->method = $method;
+ }
+
/**
* Returns the URL.
*
@@ -138,6 +159,11 @@ class Profile implements \Serializable
}
}
+ /**
+ * Adds the child token
+ *
+ * @param Profile $child The child Profile
+ */
public function addChild(Profile $child)
{
$this->children[] = $child;
@@ -178,11 +204,11 @@ class Profile implements \Serializable
public function serialize()
{
- return serialize(array($this->token, $this->parent, $this->children, $this->collectors, $this->ip, $this->url, $this->time));
+ return serialize(array($this->token, $this->parent, $this->children, $this->collectors, $this->ip, $this->method, $this->url, $this->time));
}
public function unserialize($data)
{
- list($this->token, $this->parent, $this->children, $this->collectors, $this->ip, $this->url, $this->time) = unserialize($data);
+ list($this->token, $this->parent, $this->children, $this->collectors, $this->ip, $this->method, $this->url, $this->time) = unserialize($data);
}
}
diff --git a/src/Symfony/Component/HttpKernel/Profiler/Profiler.php b/src/Symfony/Component/HttpKernel/Profiler/Profiler.php
index d66b70f84d..966111c459 100644
--- a/src/Symfony/Component/HttpKernel/Profiler/Profiler.php
+++ b/src/Symfony/Component/HttpKernel/Profiler/Profiler.php
@@ -82,7 +82,7 @@ class Profiler
/**
* Saves a Profile.
*
- * @param Profile A Profile instance
+ * @param Profile $profile A Profile instance
*
* @return Boolean
*/
@@ -106,6 +106,8 @@ class Profiler
/**
* Exports the current profiler data.
*
+ * @param Profile $profile A Profile instance
+ *
* @return string The exported data
*/
public function export(Profile $profile)
@@ -136,15 +138,16 @@ class Profiler
/**
* Finds profiler tokens for the given criteria.
*
- * @param string $ip The IP
- * @param string $url The URL
- * @param string $limit The maximum number of tokens to return
+ * @param string $ip The IP
+ * @param string $url The URL
+ * @param string $limit The maximum number of tokens to return
+ * @param string $method The request method
*
* @return array An array of tokens
*/
- public function find($ip, $url, $limit)
+ public function find($ip, $url, $limit, $method)
{
- return $this->storage->find($ip, $url, $limit);
+ return $this->storage->find($ip, $url, $limit, $method);
}
/**
@@ -166,11 +169,11 @@ class Profiler
$profile->setTime(time());
$profile->setUrl($request->getUri());
$profile->setIp($request->server->get('REMOTE_ADDR'));
+ $profile->setMethod($request->getMethod());
$response->headers->set('X-Debug-Token', $profile->getToken());
- $collectors = array();
- foreach ($this->collectors as $name => $collector) {
+ foreach ($this->collectors as $collector) {
$collector->collect($request, $response, $exception);
// forces collectors to become "read/only" (they loose their object dependencies)
@@ -217,6 +220,8 @@ class Profiler
* Returns true if a Collector for the given name exists.
*
* @param string $name A collector name
+ *
+ * @return Boolean
*/
public function has($name)
{
diff --git a/src/Symfony/Component/HttpKernel/Profiler/ProfilerStorageInterface.php b/src/Symfony/Component/HttpKernel/Profiler/ProfilerStorageInterface.php
index f4209a3aa4..3acf65c875 100644
--- a/src/Symfony/Component/HttpKernel/Profiler/ProfilerStorageInterface.php
+++ b/src/Symfony/Component/HttpKernel/Profiler/ProfilerStorageInterface.php
@@ -21,13 +21,14 @@ interface ProfilerStorageInterface
/**
* Finds profiler tokens for the given criteria.
*
- * @param string $ip The IP
- * @param string $url The URL
- * @param string $limit The maximum number of tokens to return
+ * @param string $ip The IP
+ * @param string $url The URL
+ * @param string $limit The maximum number of tokens to return
+ * @param string $method The request method
*
* @return array An array of tokens
*/
- function find($ip, $url, $limit);
+ function find($ip, $url, $limit, $method);
/**
* Reads data associated with the given token.
diff --git a/src/Symfony/Component/HttpKernel/Profiler/SqliteProfilerStorage.php b/src/Symfony/Component/HttpKernel/Profiler/SqliteProfilerStorage.php
index cb46ad98a9..11bc8717d1 100644
--- a/src/Symfony/Component/HttpKernel/Profiler/SqliteProfilerStorage.php
+++ b/src/Symfony/Component/HttpKernel/Profiler/SqliteProfilerStorage.php
@@ -41,9 +41,10 @@ class SqliteProfilerStorage extends PdoProfilerStorage
}
$db->exec('PRAGMA temp_store=MEMORY; PRAGMA journal_mode=MEMORY;');
- $db->exec('CREATE TABLE IF NOT EXISTS sf_profiler_data (token STRING, data STRING, ip STRING, url STRING, time INTEGER, parent STRING, created_at INTEGER)');
+ $db->exec('CREATE TABLE IF NOT EXISTS sf_profiler_data (token STRING, data STRING, ip STRING, method STRING, url STRING, time INTEGER, parent STRING, created_at INTEGER)');
$db->exec('CREATE INDEX IF NOT EXISTS data_created_at ON sf_profiler_data (created_at)');
$db->exec('CREATE INDEX IF NOT EXISTS data_ip ON sf_profiler_data (ip)');
+ $db->exec('CREATE INDEX IF NOT EXISTS data_method ON sf_profiler_data (method)');
$db->exec('CREATE INDEX IF NOT EXISTS data_url ON sf_profiler_data (url)');
$db->exec('CREATE INDEX IF NOT EXISTS data_parent ON sf_profiler_data (parent)');
$db->exec('CREATE UNIQUE INDEX IF NOT EXISTS data_token ON sf_profiler_data (token)');
@@ -97,7 +98,7 @@ class SqliteProfilerStorage extends PdoProfilerStorage
/**
* {@inheritdoc}
*/
- protected function buildCriteria($ip, $url, $limit)
+ protected function buildCriteria($ip, $url, $limit, $method)
{
$criteria = array();
$args = array();
@@ -112,6 +113,11 @@ class SqliteProfilerStorage extends PdoProfilerStorage
$args[':url'] = '%'.addcslashes($url, '%_\\').'%';
}
+ if ($method) {
+ $criteria[] = 'method = :method';
+ $args[':method'] = $method;
+ }
+
return array($criteria, $args);
}
diff --git a/tests/Symfony/Tests/Component/HttpKernel/Profiler/FileProfilerStorageTest.php b/tests/Symfony/Tests/Component/HttpKernel/Profiler/FileProfilerStorageTest.php
index 341d9a4051..b91dfee47f 100644
--- a/tests/Symfony/Tests/Component/HttpKernel/Profiler/FileProfilerStorageTest.php
+++ b/tests/Symfony/Tests/Component/HttpKernel/Profiler/FileProfilerStorageTest.php
@@ -25,8 +25,7 @@ class FileProfilerStorageTest extends \PHPUnit_Framework_TestCase
$iterator = new \RecursiveDirectoryIterator(self::$tmpDir, $flags);
$iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::SELF_FIRST);
- foreach ($iterator as $file)
- {
+ foreach ($iterator as $file) {
if (is_file($file)) {
unlink($file);
}
@@ -58,9 +57,10 @@ class FileProfilerStorageTest extends \PHPUnit_Framework_TestCase
$profile = new Profile('token_'.$i);
$profile->setIp('127.0.0.1');
$profile->setUrl('http://foo.bar');
+ $profile->setMethod('GET');
self::$storage->write($profile);
}
- $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar', 20)), 10, '->write() stores data in the database');
+ $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar', 20, 'GET')), 10, '->write() stores data in the database');
}
@@ -130,12 +130,13 @@ class FileProfilerStorageTest extends \PHPUnit_Framework_TestCase
{
$profile = new Profile('token');
$profile->setIp('127.0.0.1');
+ $profile->setMethod('GET');
self::$storage->write($profile);
- $this->assertEquals(count(self::$storage->find('127.0.0.1', '', 10)), 1, '->find() retrieve a record by IP');
- $this->assertEquals(count(self::$storage->find('127.0.%.1', '', 10)), 0, '->find() does not interpret a "%" as a wildcard in the IP');
- $this->assertEquals(count(self::$storage->find('127.0._.1', '', 10)), 0, '->find() does not interpret a "_" as a wildcard in the IP');
+ $this->assertEquals(count(self::$storage->find('127.0.0.1', '', 10, 'GET')), 1, '->find() retrieve a record by IP');
+ $this->assertEquals(count(self::$storage->find('127.0.%.1', '', 10, 'GET')), 0, '->find() does not interpret a "%" as a wildcard in the IP');
+ $this->assertEquals(count(self::$storage->find('127.0._.1', '', 10, 'GET')), 0, '->find() does not interpret a "_" as a wildcard in the IP');
}
public function testRetrieveByUrl()
@@ -143,38 +144,44 @@ class FileProfilerStorageTest extends \PHPUnit_Framework_TestCase
$profile = new Profile('simple_quote');
$profile->setIp('127.0.0.1');
$profile->setUrl('http://foo.bar/\'');
+ $profile->setMethod('GET');
self::$storage->write($profile);
$profile = new Profile('double_quote');
$profile->setIp('127.0.0.1');
$profile->setUrl('http://foo.bar/"');
+ $profile->setMethod('GET');
self::$storage->write($profile);
$profile = new Profile('backslash');
$profile->setIp('127.0.0.1');
$profile->setUrl('http://foo\\bar/');
+ $profile->setMethod('GET');
self::$storage->write($profile);
$profile = new Profile('percent');
$profile->setIp('127.0.0.1');
$profile->setUrl('http://foo.bar/%');
+ $profile->setMethod('GET');
self::$storage->write($profile);
$profile = new Profile('underscore');
$profile->setIp('127.0.0.1');
$profile->setUrl('http://foo.bar/_');
+ $profile->setMethod('GET');
self::$storage->write($profile);
$profile = new Profile('semicolon');
$profile->setIp('127.0.0.1');
$profile->setUrl('http://foo.bar/;');
+ $profile->setMethod('GET');
self::$storage->write($profile);
- $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar/\'', 10)), 1, '->find() accepts single quotes in URLs');
- $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar/"', 10)), 1, '->find() accepts double quotes in URLs');
- $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo\\bar/', 10)), 1, '->find() accepts backslash in URLs');
- $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar/;', 10)), 1, '->find() accepts semicolon in URLs');
- $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar/%', 10)), 1, '->find() does not interpret a "%" as a wildcard in the URL');
- $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar/_', 10)), 1, '->find() does not interpret a "_" as a wildcard in the URL');
+ $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar/\'', 10, 'GET')), 1, '->find() accepts single quotes in URLs');
+ $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar/"', 10, 'GET')), 1, '->find() accepts double quotes in URLs');
+ $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo\\bar/', 10, 'GET')), 1, '->find() accepts backslash in URLs');
+ $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar/;', 10, 'GET')), 1, '->find() accepts semicolon in URLs');
+ $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar/%', 10, 'GET')), 1, '->find() does not interpret a "%" as a wildcard in the URL');
+ $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar/_', 10, 'GET')), 1, '->find() does not interpret a "_" as a wildcard in the URL');
}
}
diff --git a/tests/Symfony/Tests/Component/HttpKernel/Profiler/SqliteProfilerStorageTest.php b/tests/Symfony/Tests/Component/HttpKernel/Profiler/SqliteProfilerStorageTest.php
index 1d525ec2e9..c3d0205e0d 100644
--- a/tests/Symfony/Tests/Component/HttpKernel/Profiler/SqliteProfilerStorageTest.php
+++ b/tests/Symfony/Tests/Component/HttpKernel/Profiler/SqliteProfilerStorageTest.php
@@ -47,9 +47,10 @@ class SqliteProfilerStorageTest extends \PHPUnit_Framework_TestCase
$profile = new Profile('token_'.$i);
$profile->setIp('127.0.0.1');
$profile->setUrl('http://foo.bar');
+ $profile->setMethod('GET');
self::$storage->write($profile);
}
- $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar', 20)), 10, '->write() stores data in the database');
+ $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar', 20, 'GET')), 10, '->write() stores data in the database');
}
public function testStoreSpecialCharsInUrl()
@@ -89,12 +90,13 @@ class SqliteProfilerStorageTest extends \PHPUnit_Framework_TestCase
{
$profile = new Profile('token');
$profile->setIp('127.0.0.1');
+ $profile->setMethod('GET');
self::$storage->write($profile);
- $this->assertEquals(count(self::$storage->find('127.0.0.1', '', 10)), 1, '->find() retrieve a record by IP');
- $this->assertEquals(count(self::$storage->find('127.0.%.1', '', 10)), 0, '->find() does not interpret a "%" as a wildcard in the IP');
- $this->assertEquals(count(self::$storage->find('127.0._.1', '', 10)), 0, '->find() does not interpret a "_" as a wildcard in the IP');
+ $this->assertEquals(count(self::$storage->find('127.0.0.1', '', 10, 'GET')), 1, '->find() retrieve a record by IP');
+ $this->assertEquals(count(self::$storage->find('127.0.%.1', '', 10, 'GET')), 0, '->find() does not interpret a "%" as a wildcard in the IP');
+ $this->assertEquals(count(self::$storage->find('127.0._.1', '', 10, 'GET')), 0, '->find() does not interpret a "_" as a wildcard in the IP');
}
public function testRetrieveByUrl()
@@ -102,32 +104,37 @@ class SqliteProfilerStorageTest extends \PHPUnit_Framework_TestCase
$profile = new Profile('simple_quote');
$profile->setIp('127.0.0.1');
$profile->setUrl('http://foo.bar/\'');
+ $profile->setMethod('GET');
self::$storage->write($profile);
$profile = new Profile('double_quote');
$profile->setIp('127.0.0.1');
$profile->setUrl('http://foo.bar/"');
+ $profile->setMethod('GET');
self::$storage->write($profile);
$profile = new Profile('backslash');
$profile->setIp('127.0.0.1');
$profile->setUrl('http://foo\\bar/');
+ $profile->setMethod('GET');
self::$storage->write($profile);
$profile = new Profile('percent');
$profile->setIp('127.0.0.1');
$profile->setUrl('http://foo.bar/%');
+ $profile->setMethod('GET');
self::$storage->write($profile);
$profile = new Profile('underscore');
$profile->setIp('127.0.0.1');
$profile->setUrl('http://foo.bar/_');
+ $profile->setMethod('GET');
self::$storage->write($profile);
- $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar/\'', 10)), 1, '->find() accepts single quotes in URLs');
- $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar/"', 10)), 1, '->find() accepts double quotes in URLs');
- $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo\\bar/', 10)), 1, '->find() accepts backslash in URLs');
- $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar/%', 10)), 1, '->find() does not interpret a "%" as a wildcard in the URL');
- $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar/_', 10)), 1, '->find() does not interpret a "_" as a wildcard in the URL');
+ $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar/\'', 10, 'GET')), 1, '->find() accepts single quotes in URLs');
+ $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar/"', 10, 'GET')), 1, '->find() accepts double quotes in URLs');
+ $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo\\bar/', 10, 'GET')), 1, '->find() accepts backslash in URLs');
+ $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar/%', 10, 'GET')), 1, '->find() does not interpret a "%" as a wildcard in the URL');
+ $this->assertEquals(count(self::$storage->find('127.0.0.1', 'http://foo.bar/_', 10, 'GET')), 1, '->find() does not interpret a "_" as a wildcard in the URL');
}
}