From 14eebab94ad64860d2f1b4ff53f0f5d796ac4ad3 Mon Sep 17 00:00:00 2001 From: Peter Coles Date: Tue, 18 Sep 2012 05:54:41 +0200 Subject: [PATCH 01/14] Correct broken links in docs --- laravel/documentation/contrib/github.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/laravel/documentation/contrib/github.md b/laravel/documentation/contrib/github.md index ceeac76e..6d459917 100644 --- a/laravel/documentation/contrib/github.md +++ b/laravel/documentation/contrib/github.md @@ -42,5 +42,5 @@ ## Pull Requests *Further Reading* - - [Contributing to Laravel via Command-Line](docs/contrib/command-line) - - [Contributing to Laravel using TortoiseGit](docs/contrib/tortoisegit) + - [Contributing to Laravel via Command-Line](#contrib/command-line) + - [Contributing to Laravel using TortoiseGit](#contrib/tortoisegit) From 184b2989e2050f7c83089bd1c10693d5dd6e9fbf Mon Sep 17 00:00:00 2001 From: Peter Coles Date: Tue, 18 Sep 2012 11:59:11 +0200 Subject: [PATCH 02/14] Correct correction --- laravel/documentation/contrib/github.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/laravel/documentation/contrib/github.md b/laravel/documentation/contrib/github.md index 6d459917..7d3687ec 100644 --- a/laravel/documentation/contrib/github.md +++ b/laravel/documentation/contrib/github.md @@ -42,5 +42,5 @@ ## Pull Requests *Further Reading* - - [Contributing to Laravel via Command-Line](#contrib/command-line) - - [Contributing to Laravel using TortoiseGit](#contrib/tortoisegit) + - [Contributing to Laravel via Command-Line](/docs/contrib/command-line) + - [Contributing to Laravel using TortoiseGit](/docs/contrib/tortoisegit) From 2b787763aa755f2c2d84d0d3cbfb6586ce29e692 Mon Sep 17 00:00:00 2001 From: Duru Can Celasun Date: Thu, 20 Sep 2012 10:13:01 +0300 Subject: [PATCH 03/14] Fix a tiny typo --- laravel/documentation/database/redis.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel/documentation/database/redis.md b/laravel/documentation/database/redis.md index 8abdd5cc..42c6d90e 100644 --- a/laravel/documentation/database/redis.md +++ b/laravel/documentation/database/redis.md @@ -43,7 +43,7 @@ ## Usage $values = $redis->lrange('names', 5, 10); -Notice the arguments to the comment are simply passed into the magic method. Of course, you are not required to use the magic methods, you may also pass commands to the server using the **run** method: +Notice the arguments to the command are simply passed into the magic method. Of course, you are not required to use the magic methods, you may also pass commands to the server using the **run** method: $values = $redis->run('lrange', array(5, 10)); From 02cb96a00842a082d240b34101d5c5ddbd97e02b Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Thu, 27 Sep 2012 17:44:03 -0400 Subject: [PATCH 04/14] fix bug in eloquent model. --- laravel/database/eloquent/model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel/database/eloquent/model.php b/laravel/database/eloquent/model.php index bdcf6daf..8ae74f6b 100644 --- a/laravel/database/eloquent/model.php +++ b/laravel/database/eloquent/model.php @@ -544,7 +544,7 @@ public function get_dirty() */ public function get_key() { - return array_get($this->original, static::$key); + return array_get($this->attributes, static::$key); } /** From d1c1fe4446aecb33de3344b237e68448ba9466b2 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Thu, 27 Sep 2012 17:45:12 -0400 Subject: [PATCH 05/14] fix bug in eloquent model and update version. --- artisan | 2 +- laravel/documentation/changes.md | 12 ++++++++++++ public/index.php | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/artisan b/artisan index 9200cb9a..1c2ba63c 100644 --- a/artisan +++ b/artisan @@ -4,7 +4,7 @@ * Laravel - A PHP Framework For Web Artisans * * @package Laravel - * @version 3.2.9 + * @version 3.2.10 * @author Taylor Otwell * @link http://laravel.com */ diff --git a/laravel/documentation/changes.md b/laravel/documentation/changes.md index 417e4f85..bd13f962 100644 --- a/laravel/documentation/changes.md +++ b/laravel/documentation/changes.md @@ -2,6 +2,8 @@ # Laravel Change Log ## Contents +- [Laravel 3.2.10](#3.2.10) +- [Upgrading From 3.2.9](#upgrade-3.2.10) - [Laravel 3.2.9](#3.2.9) - [Upgrading From 3.2.8](#upgrade-3.2.9) - [Laravel 3.2.8](#3.2.8) @@ -43,6 +45,16 @@ ## Contents - [Laravel 3.1](#3.1) - [Upgrading From 3.0](#upgrade-3.1) + +## Laravel 3.2.10 + +- Fix bug in Eloquent model. + + +### Upgrading From 3.2.9 + +- Replace the **laravel** folder. + ## Laravel 3.2.9 diff --git a/public/index.php b/public/index.php index f58e72f6..2b7a80c3 100644 --- a/public/index.php +++ b/public/index.php @@ -3,7 +3,7 @@ * Laravel - A PHP Framework For Web Artisans * * @package Laravel - * @version 3.2.9 + * @version 3.2.10 * @author Taylor Otwell * @link http://laravel.com */ From 4d3c68129b89c6bc8131aca765a63dba8fee92b0 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Thu, 27 Sep 2012 17:55:19 -0400 Subject: [PATCH 06/14] Fix version in path file. --- paths.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paths.php b/paths.php index bd870438..2ac7848c 100644 --- a/paths.php +++ b/paths.php @@ -3,7 +3,7 @@ * Laravel - A PHP Framework For Web Artisans * * @package Laravel - * @version 3.2.8 + * @version 3.2.10 * @author Taylor Otwell * @link http://laravel.com */ From 54397e1bf27049958f28fac94ba6e0808271fee6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20B=C3=B8ndergaard?= Date: Fri, 28 Sep 2012 10:10:35 +0200 Subject: [PATCH 07/14] Fixed wrong return type in phpdoc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel Bøndergaard --- laravel/asset.php | 2 +- laravel/database/eloquent/model.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/laravel/asset.php b/laravel/asset.php index 6bc36478..57b45465 100644 --- a/laravel/asset.php +++ b/laravel/asset.php @@ -107,7 +107,7 @@ public function __construct($name) * @param string $source * @param array $dependencies * @param array $attributes - * @return void + * @return Asset_Container */ public function add($name, $source, $dependencies = array(), $attributes = array()) { diff --git a/laravel/database/eloquent/model.php b/laravel/database/eloquent/model.php index 8ae74f6b..914f94ed 100644 --- a/laravel/database/eloquent/model.php +++ b/laravel/database/eloquent/model.php @@ -333,7 +333,7 @@ public function belongs_to($model, $foreign = null) * @param string $table * @param string $foreign * @param string $other - * @return Relationship + * @return Has_Many_And_Belongs_To */ public function has_many_and_belongs_to($model, $table = null, $foreign = null, $other = null) { From 2d5cc12b7b7a915c533a2674c474424407fe0927 Mon Sep 17 00:00:00 2001 From: Nathan Malcolm Date: Wed, 3 Oct 2012 00:53:20 +0100 Subject: [PATCH 08/14] Fixes XSS vulnerability in Profiler --- laravel/profiling/profiler.php | 1 + 1 file changed, 1 insertion(+) diff --git a/laravel/profiling/profiler.php b/laravel/profiling/profiler.php index 360e4702..a26396ee 100644 --- a/laravel/profiling/profiler.php +++ b/laravel/profiling/profiler.php @@ -148,6 +148,7 @@ public static function query($sql, $bindings, $time) $binding = Database::connection()->pdo->quote($binding); $sql = preg_replace('/\?/', $binding, $sql, 1); + $sql = htmlspecialchars($sql); } static::$data['queries'][] = array($sql, $time); From 00d1baf69e3d4a9cdc8fdf79e99028415b541de5 Mon Sep 17 00:00:00 2001 From: tillsanders Date: Wed, 3 Oct 2012 15:35:34 +0300 Subject: [PATCH 09/14] Update laravel/helpers.php The e-helper and the __-Helper used the core-classes. So if I would like to override them, the helpers would still use the core-classes. See this thread for further explanation: http://forums.laravel.com/viewtopic.php?id=2656 --- laravel/helpers.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/laravel/helpers.php b/laravel/helpers.php index 589669ce..33160dd7 100644 --- a/laravel/helpers.php +++ b/laravel/helpers.php @@ -10,7 +10,7 @@ */ function e($value) { - return Laravel\HTML::entities($value); + return HTML::entities($value); } /** @@ -23,7 +23,7 @@ function e($value) */ function __($key, $replacements = array(), $language = null) { - return Laravel\Lang::line($key, $replacements, $language); + return Lang::line($key, $replacements, $language); } /** From f36446bd10f5478f349a7a11068a794d92862d56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vini=CC=81cius=20Fragoso?= Date: Fri, 5 Oct 2012 10:35:48 -0300 Subject: [PATCH 10/14] Improving laravel relationship performance --- .../eloquent/relationships/belongs_to.php | 15 ++++++++------- .../eloquent/relationships/has_many.php | 16 ++++++++++------ .../relationships/has_many_and_belongs_to.php | 16 ++++++++++------ .../database/eloquent/relationships/has_one.php | 17 ++++++++++++----- 4 files changed, 40 insertions(+), 24 deletions(-) diff --git a/laravel/database/eloquent/relationships/belongs_to.php b/laravel/database/eloquent/relationships/belongs_to.php index ef257836..ea3a3495 100644 --- a/laravel/database/eloquent/relationships/belongs_to.php +++ b/laravel/database/eloquent/relationships/belongs_to.php @@ -87,16 +87,17 @@ public function match($relationship, &$children, $parents) { $foreign = $this->foreign_key(); - foreach ($children as &$child) + $parents_hash = array(); + foreach ($parents as $parent) { - $parent = array_first($parents, function($k, $v) use (&$child, $foreign) - { - return $v->get_key() == $child->$foreign; - }); + $parents_hash[$parent->get_key()] = $parent; + } - if ( ! is_null($parent)) + foreach ($children as $child) + { + if (array_key_exists($child->$foreign, $parents_hash)) { - $child->relationships[$relationship] = $parent; + $child->relationships[$relationship] = $parents_hash[$child->$foreign]; } } } diff --git a/laravel/database/eloquent/relationships/has_many.php b/laravel/database/eloquent/relationships/has_many.php index 726bef20..c83eea15 100644 --- a/laravel/database/eloquent/relationships/has_many.php +++ b/laravel/database/eloquent/relationships/has_many.php @@ -91,14 +91,18 @@ public function match($relationship, &$parents, $children) { $foreign = $this->foreign_key(); - foreach ($parents as &$parent) + $children_hash = array(); + foreach ($children as $child) { - $matching = array_filter($children, function($v) use (&$parent, $foreign) - { - return $v->$foreign == $parent->get_key(); - }); + $children_hash[$child->$foreign][] = $child; + } - $parent->relationships[$relationship] = array_values($matching); + foreach ($parents as $parent) + { + if (array_key_exists($parent->get_key(), $children_hash)) + { + $parent->relationships[$relationship] = $children_hash[$parent->get_key()]; + } } } diff --git a/laravel/database/eloquent/relationships/has_many_and_belongs_to.php b/laravel/database/eloquent/relationships/has_many_and_belongs_to.php index e46d5f96..88a4ff99 100644 --- a/laravel/database/eloquent/relationships/has_many_and_belongs_to.php +++ b/laravel/database/eloquent/relationships/has_many_and_belongs_to.php @@ -328,14 +328,18 @@ public function match($relationship, &$parents, $children) { $foreign = $this->foreign_key(); - foreach ($parents as &$parent) + $children_hash = array(); + foreach ($children as $child) { - $matching = array_filter($children, function($v) use (&$parent, $foreign) - { - return $v->pivot->$foreign == $parent->get_key(); - }); + $children_hash[$child->pivot->$foreign][] = $child; + } - $parent->relationships[$relationship] = array_values($matching); + foreach ($parents as $parent) + { + if (array_key_exists($parent->get_key(), $children_hash)) + { + $parent->relationships[$relationship] = $children_hash[$parent->get_key()]; + } } } diff --git a/laravel/database/eloquent/relationships/has_one.php b/laravel/database/eloquent/relationships/has_one.php index 8d1e4ff9..fa4d12f8 100644 --- a/laravel/database/eloquent/relationships/has_one.php +++ b/laravel/database/eloquent/relationships/has_one.php @@ -38,14 +38,21 @@ public function match($relationship, &$parents, $children) { $foreign = $this->foreign_key(); - foreach ($parents as &$parent) + $children_hash = array(); + foreach ($children as $child) { - $matching = array_first($children, function($k, $v) use (&$parent, $foreign) + if (array_key_exists($child->pivot->$foreign, $children_hash)) { - return $v->$foreign == $parent->get_key(); - }); + continue; + } - $parent->relationships[$relationship] = $matching; + $children_hash[$child->pivot->$foreign] = $child; + } + + foreach ($parents as $parent) + { + if (array_key_exists($parent->get_key(), $children_hash)) + $parent->relationships[$relationship] = $children_hash[$parent->get_key()]; } } From 165da94aee498b96a3303264dbcdd24e8c1cd53d Mon Sep 17 00:00:00 2001 From: Dejan Geci Date: Sun, 7 Oct 2012 13:55:32 +0200 Subject: [PATCH 11/14] Added a getInner method for retrieving the inner exception Signed-off-by: Dejan Geci --- laravel/database/exception.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/laravel/database/exception.php b/laravel/database/exception.php index a116ad70..d8f425a5 100644 --- a/laravel/database/exception.php +++ b/laravel/database/exception.php @@ -24,6 +24,16 @@ public function __construct($sql, $bindings, \Exception $inner) $this->setMessage($sql, $bindings); } + /** + * Get the inner exception. + * + * @return Exception + */ + public function getInner() + { + return $this->inner; + } + /** * Set the exception message to include the SQL and bindings. * From f6c7cf2dcd08e1fbe26c4995dd87bd966201605f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vini=CC=81cius=20Fragoso?= Date: Sun, 7 Oct 2012 12:15:57 -0300 Subject: [PATCH 12/14] Fixing pivot on has_one aswell as properly indenting --- laravel/database/eloquent/relationships/has_one.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/laravel/database/eloquent/relationships/has_one.php b/laravel/database/eloquent/relationships/has_one.php index fa4d12f8..cd8a84ca 100644 --- a/laravel/database/eloquent/relationships/has_one.php +++ b/laravel/database/eloquent/relationships/has_one.php @@ -41,18 +41,20 @@ public function match($relationship, &$parents, $children) $children_hash = array(); foreach ($children as $child) { - if (array_key_exists($child->pivot->$foreign, $children_hash)) + if (array_key_exists($child->$foreign, $children_hash)) { continue; } - $children_hash[$child->pivot->$foreign] = $child; + $children_hash[$child->$foreign] = $child; } foreach ($parents as $parent) { if (array_key_exists($parent->get_key(), $children_hash)) + { $parent->relationships[$relationship] = $children_hash[$parent->get_key()]; + } } } From 341650619459bd0caeef23451d7fbe6db6b86194 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Sun, 7 Oct 2012 14:04:29 -0500 Subject: [PATCH 13/14] increment version. refactor eloquent eager loading matching. --- artisan | 2 +- .../database/eloquent/relationships/belongs_to.php | 9 +++++---- .../database/eloquent/relationships/has_many.php | 9 +++++---- .../relationships/has_many_and_belongs_to.php | 9 +++++---- .../database/eloquent/relationships/has_one.php | 14 +++++--------- laravel/documentation/changes.md | 12 ++++++++++++ paths.php | 2 +- public/index.php | 2 +- 8 files changed, 35 insertions(+), 24 deletions(-) diff --git a/artisan b/artisan index 1c2ba63c..0c651ff4 100644 --- a/artisan +++ b/artisan @@ -4,7 +4,7 @@ * Laravel - A PHP Framework For Web Artisans * * @package Laravel - * @version 3.2.10 + * @version 3.2.11 * @author Taylor Otwell * @link http://laravel.com */ diff --git a/laravel/database/eloquent/relationships/belongs_to.php b/laravel/database/eloquent/relationships/belongs_to.php index ea3a3495..79802ee9 100644 --- a/laravel/database/eloquent/relationships/belongs_to.php +++ b/laravel/database/eloquent/relationships/belongs_to.php @@ -87,17 +87,18 @@ public function match($relationship, &$children, $parents) { $foreign = $this->foreign_key(); - $parents_hash = array(); + $dictionary = array(); + foreach ($parents as $parent) { - $parents_hash[$parent->get_key()] = $parent; + $dictionary[$parent->get_key()] = $parent; } foreach ($children as $child) { - if (array_key_exists($child->$foreign, $parents_hash)) + if (array_key_exists($child->$foreign, $dictionary)) { - $child->relationships[$relationship] = $parents_hash[$child->$foreign]; + $child->relationships[$relationship] = $dictionary[$child->$foreign]; } } } diff --git a/laravel/database/eloquent/relationships/has_many.php b/laravel/database/eloquent/relationships/has_many.php index c83eea15..b791a542 100644 --- a/laravel/database/eloquent/relationships/has_many.php +++ b/laravel/database/eloquent/relationships/has_many.php @@ -91,17 +91,18 @@ public function match($relationship, &$parents, $children) { $foreign = $this->foreign_key(); - $children_hash = array(); + $dictionary = array(); + foreach ($children as $child) { - $children_hash[$child->$foreign][] = $child; + $dictionary[$child->$foreign][] = $child; } foreach ($parents as $parent) { - if (array_key_exists($parent->get_key(), $children_hash)) + if (array_key_exists($key = $parent->get_key(), $dictionary)) { - $parent->relationships[$relationship] = $children_hash[$parent->get_key()]; + $parent->relationships[$relationship] = $dictionary[$key]; } } } diff --git a/laravel/database/eloquent/relationships/has_many_and_belongs_to.php b/laravel/database/eloquent/relationships/has_many_and_belongs_to.php index 88a4ff99..1c0d3e03 100644 --- a/laravel/database/eloquent/relationships/has_many_and_belongs_to.php +++ b/laravel/database/eloquent/relationships/has_many_and_belongs_to.php @@ -328,17 +328,18 @@ public function match($relationship, &$parents, $children) { $foreign = $this->foreign_key(); - $children_hash = array(); + $dictionary = array(); + foreach ($children as $child) { - $children_hash[$child->pivot->$foreign][] = $child; + $dictionary[$child->pivot->$foreign][] = $child; } foreach ($parents as $parent) { - if (array_key_exists($parent->get_key(), $children_hash)) + if (array_key_exists($key = $parent->get_key(), $dictionary)) { - $parent->relationships[$relationship] = $children_hash[$parent->get_key()]; + $parent->relationships[$relationship] = $dictionary[$key]; } } } diff --git a/laravel/database/eloquent/relationships/has_one.php b/laravel/database/eloquent/relationships/has_one.php index cd8a84ca..5a9ea760 100644 --- a/laravel/database/eloquent/relationships/has_one.php +++ b/laravel/database/eloquent/relationships/has_one.php @@ -38,22 +38,18 @@ public function match($relationship, &$parents, $children) { $foreign = $this->foreign_key(); - $children_hash = array(); + $dictionary = array(); + foreach ($children as $child) { - if (array_key_exists($child->$foreign, $children_hash)) - { - continue; - } - - $children_hash[$child->$foreign] = $child; + $dictionary[$child->$foreign] = $child; } foreach ($parents as $parent) { - if (array_key_exists($parent->get_key(), $children_hash)) + if (array_key_exists($key = $parent->get_key(), $dictionary)) { - $parent->relationships[$relationship] = $children_hash[$parent->get_key()]; + $parent->relationships[$relationship] = $dictionary[$key]; } } } diff --git a/laravel/documentation/changes.md b/laravel/documentation/changes.md index bd13f962..bac7c82b 100644 --- a/laravel/documentation/changes.md +++ b/laravel/documentation/changes.md @@ -2,6 +2,8 @@ # Laravel Change Log ## Contents +- [Laravel 3.2.11](#3.2.11) +- [Upgrading From 3.2.10](#upgrade-3.2.11) - [Laravel 3.2.10](#3.2.10) - [Upgrading From 3.2.9](#upgrade-3.2.10) - [Laravel 3.2.9](#3.2.9) @@ -45,6 +47,16 @@ ## Contents - [Laravel 3.1](#3.1) - [Upgrading From 3.0](#upgrade-3.1) + +## Laravel 3.2.11 + +- Improve performance of Eloquent eager load matching. + + +### Upgrading From 3.2.10 + +- Replace the **laravel** folder. + ## Laravel 3.2.10 diff --git a/paths.php b/paths.php index 2ac7848c..b9ab9229 100644 --- a/paths.php +++ b/paths.php @@ -3,7 +3,7 @@ * Laravel - A PHP Framework For Web Artisans * * @package Laravel - * @version 3.2.10 + * @version 3.2.11 * @author Taylor Otwell * @link http://laravel.com */ diff --git a/public/index.php b/public/index.php index 2b7a80c3..d133794a 100644 --- a/public/index.php +++ b/public/index.php @@ -3,7 +3,7 @@ * Laravel - A PHP Framework For Web Artisans * * @package Laravel - * @version 3.2.10 + * @version 3.2.11 * @author Taylor Otwell * @link http://laravel.com */ From 2e8364994f456a1406b67e9cbde9c2d3d39b4a97 Mon Sep 17 00:00:00 2001 From: Shawn McCool Date: Thu, 11 Oct 2012 08:14:55 +0200 Subject: [PATCH 14/14] changed date format in validation documentation to match ISO8601 --- laravel/documentation/validation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/laravel/documentation/validation.md b/laravel/documentation/validation.md index 0f17dec0..c717276a 100644 --- a/laravel/documentation/validation.md +++ b/laravel/documentation/validation.md @@ -196,11 +196,11 @@ ### Dates #### Validate that a date attribute is before a given date: - 'birthdate' => 'before:1986-28-05'; + 'birthdate' => 'before:1986-05-28'; #### Validate that a date attribute is after a given date: - 'birthdate' => 'after:1986-28-05'; + 'birthdate' => 'after:1986-05-28'; > **Note:** The **before** and **after** validation rules use the **strtotime** PHP function to convert your date to something the rule can understand.