From 524375781e1dc687598dc368037a3180791a688e Mon Sep 17 00:00:00 2001 From: Pavel Date: Sun, 6 May 2012 12:19:13 +0400 Subject: [PATCH 01/92] Added Bundle::expand() method. Signed-off-by: Pavel --- laravel/bundle.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/laravel/bundle.php b/laravel/bundle.php index b6f614e9..2519fb88 100644 --- a/laravel/bundle.php +++ b/laravel/bundle.php @@ -451,4 +451,16 @@ class Bundle { return array_keys(static::$bundles); } + /** + * Expand given bundle path of form "[bundle::]path/...". + * + * @param string $path + * @return string + */ + public static function expand($path) + { + list($bundle, $element) = static::parse($path); + return static::path($bundle).$element; + } + } \ No newline at end of file From 1b2ab309c4b0ae923147dff2bc533ca2e3af74bf Mon Sep 17 00:00:00 2001 From: Kelly Banman Date: Fri, 11 May 2012 22:32:19 -0700 Subject: [PATCH 02/92] Add support for non-string parameters in controller routes Signed-off-by: Kelly Banman --- laravel/routing/controller.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/laravel/routing/controller.php b/laravel/routing/controller.php index 0a780bbc..e81d6b5f 100644 --- a/laravel/routing/controller.php +++ b/laravel/routing/controller.php @@ -179,6 +179,8 @@ abstract class Controller { // controllers with much less code than would be usual. foreach ($parameters as $key => $value) { + if ( ! is_string($value)) continue; + $search = '(:'.($key + 1).')'; $destination = str_replace($search, $value, $destination, $count); From 056e54785514d2d724445f24f304d429e8a4e696 Mon Sep 17 00:00:00 2001 From: Ben Corlett Date: Thu, 17 May 2012 11:47:10 +1000 Subject: [PATCH 03/92] Adding output buffering to allow redirects to work after content has been outputted. Signed-off-by: Ben Corlett --- laravel/core.php | 14 ++++++++++++++ laravel/redirect.php | 19 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/laravel/core.php b/laravel/core.php index 0dcaaca5..e59e8c0b 100644 --- a/laravel/core.php +++ b/laravel/core.php @@ -17,6 +17,20 @@ define('BLADE_EXT', '.blade.php'); define('DEFAULT_BUNDLE', 'application'); define('MB_STRING', (int) function_exists('mb_get_info')); +/* +|-------------------------------------------------------------------------- +| Start Output Buffering +|-------------------------------------------------------------------------- +| +| Output buffering allows us to capture all output at any time, so that we +| can discard it or treat it accordingly. An example of this is if you have +| echoed a string, but want to return a Redirect object. Because Symphony +| only checks if headers have been sent, your redirect just silently fails. +| +*/ + +ob_start(); + /* |-------------------------------------------------------------------------- | Require Core Classes diff --git a/laravel/redirect.php b/laravel/redirect.php index 2678f445..0f47cff8 100644 --- a/laravel/redirect.php +++ b/laravel/redirect.php @@ -165,4 +165,23 @@ class Redirect extends Response { return $this->with('errors', $errors); } + /** + * Send the headers and content of the response to the browser. + * + * @return void + */ + public function send() + { + // Dump all output buffering, this ensures + // that symphony will send our redirect headers + // properly if we've outputted any content from + // within Laravel. + while (ob_get_level() > 0) + { + ob_end_clean(); + } + + return parent::send(); + } + } \ No newline at end of file From 33fdcb4ae7dbbeef851b84ff3fe888ef73186645 Mon Sep 17 00:00:00 2001 From: Ben Corlett Date: Thu, 17 May 2012 13:02:57 +1000 Subject: [PATCH 04/92] Fixing type-o with the spelling of "Symfony". Signed-off-by: Ben Corlett --- laravel/core.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel/core.php b/laravel/core.php index e59e8c0b..f32e40af 100644 --- a/laravel/core.php +++ b/laravel/core.php @@ -24,7 +24,7 @@ define('MB_STRING', (int) function_exists('mb_get_info')); | | Output buffering allows us to capture all output at any time, so that we | can discard it or treat it accordingly. An example of this is if you have -| echoed a string, but want to return a Redirect object. Because Symphony +| echoed a string, but want to return a Redirect object. Because Symfony | only checks if headers have been sent, your redirect just silently fails. | */ From b02fd5232ce1aac73c5c08cf8b5c66ddbe412584 Mon Sep 17 00:00:00 2001 From: Koen Schmeets Date: Thu, 24 May 2012 02:01:24 +0200 Subject: [PATCH 05/92] Fixing a bug that would stop the script execution before the laravel.done event has been fired for php-fastcgi users Signed-off-by: Koen Schmeets --- laravel/laravel.php | 6 +++++- .../vendor/Symfony/Component/HttpFoundation/Response.php | 4 ---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/laravel/laravel.php b/laravel/laravel.php index a1ca2061..c3fef2ee 100644 --- a/laravel/laravel.php +++ b/laravel/laravel.php @@ -178,4 +178,8 @@ $response->send(); | */ -Event::fire('laravel.done', array($response)); \ No newline at end of file +Event::fire('laravel.done', array($response)); + +if (function_exists('fastcgi_finish_request')) { + fastcgi_finish_request(); +} \ No newline at end of file diff --git a/laravel/vendor/Symfony/Component/HttpFoundation/Response.php b/laravel/vendor/Symfony/Component/HttpFoundation/Response.php index 3a0a22e4..dacf4722 100755 --- a/laravel/vendor/Symfony/Component/HttpFoundation/Response.php +++ b/laravel/vendor/Symfony/Component/HttpFoundation/Response.php @@ -292,10 +292,6 @@ class Response $this->sendHeaders(); $this->sendContent(); - if (function_exists('fastcgi_finish_request')) { - fastcgi_finish_request(); - } - return $this; } From 0f3e8eb62ba3f9e849e2ff7b777dd4b3af92a9c1 Mon Sep 17 00:00:00 2001 From: Koen Schmeets Date: Thu, 24 May 2012 11:49:35 +0200 Subject: [PATCH 06/92] Reverting Symfony's Response class to previous version Signed-off-by: Koen Schmeets --- laravel/vendor/Symfony/Component/HttpFoundation/Response.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/laravel/vendor/Symfony/Component/HttpFoundation/Response.php b/laravel/vendor/Symfony/Component/HttpFoundation/Response.php index dacf4722..3a0a22e4 100755 --- a/laravel/vendor/Symfony/Component/HttpFoundation/Response.php +++ b/laravel/vendor/Symfony/Component/HttpFoundation/Response.php @@ -292,6 +292,10 @@ class Response $this->sendHeaders(); $this->sendContent(); + if (function_exists('fastcgi_finish_request')) { + fastcgi_finish_request(); + } + return $this; } From 52fded661d6c1a2faafffe8374f7771f8b351400 Mon Sep 17 00:00:00 2001 From: Koen Schmeets Date: Thu, 24 May 2012 11:50:48 +0200 Subject: [PATCH 07/92] Extending Symfony's Response class and adding & calling the finish method Signed-off-by: Koen Schmeets --- laravel/laravel.php | 4 +- laravel/response.php | 2 +- .../HttpFoundation/LaravelResponse.php | 40 +++++++++++++++++++ 3 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 laravel/vendor/Symfony/Component/HttpFoundation/LaravelResponse.php diff --git a/laravel/laravel.php b/laravel/laravel.php index c3fef2ee..fcdc32c5 100644 --- a/laravel/laravel.php +++ b/laravel/laravel.php @@ -180,6 +180,4 @@ $response->send(); Event::fire('laravel.done', array($response)); -if (function_exists('fastcgi_finish_request')) { - fastcgi_finish_request(); -} \ No newline at end of file +$response->finish(); \ No newline at end of file diff --git a/laravel/response.php b/laravel/response.php index e5472430..539f5649 100644 --- a/laravel/response.php +++ b/laravel/response.php @@ -1,7 +1,7 @@ + * + * @api + */ +class LaravelResponse extends Response +{ + + /** + * Sends HTTP headers and content. + * + * @return Response + * + * @api + */ + public function send() + { + $this->sendHeaders(); + $this->sendContent(); + + return $this; + } + + /** + * Finishes the request for PHP-FastCGI + * + * @return void + */ + public function finish() + { + if (function_exists('fastcgi_finish_request')) { + fastcgi_finish_request(); + } + } + +} From 7f0d709b3bcfa48019059708d7530166bff6646b Mon Sep 17 00:00:00 2001 From: Ben Corlett Date: Tue, 29 May 2012 11:26:27 +1000 Subject: [PATCH 08/92] Adding mb_output_handler as the default callback for output buffering, Thanks @syntaqx --- laravel/core.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel/core.php b/laravel/core.php index f32e40af..202d81b1 100644 --- a/laravel/core.php +++ b/laravel/core.php @@ -29,7 +29,7 @@ define('MB_STRING', (int) function_exists('mb_get_info')); | */ -ob_start(); +ob_start('mb_output_handler'); /* |-------------------------------------------------------------------------- From db351fedf05776480435ebef635dc43716aa5e56 Mon Sep 17 00:00:00 2001 From: Samuel Fitz Date: Tue, 5 Jun 2012 13:31:21 -0600 Subject: [PATCH 09/92] added dblib option to sqlsrv connector class /sam fitz (abigwonderful) simple conditional added to look for dsn type. if set and is dblib, syntax for PDO connection adjusted slightly to allow for mac connection to mssql server (utilizing freetds) --- laravel/database/connectors/sqlserver.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/laravel/database/connectors/sqlserver.php b/laravel/database/connectors/sqlserver.php index 29c6929b..04d9d770 100644 --- a/laravel/database/connectors/sqlserver.php +++ b/laravel/database/connectors/sqlserver.php @@ -28,8 +28,16 @@ class SQLServer extends Connector { // also be used to connect to Azure SQL Server databases. The port is defined // directly after the server name, so we'll create that first. $port = (isset($port)) ? ','.$port : ''; - - $dsn = "sqlsrv:Server={$host}{$port};Database={$database}"; + + //check for dblib for mac users connecting to mssql (utilizes freetds) + if (!empty($dsn_type) and $dsn_type == 'dblib') + { + $dsn = "dblib:host={$host}{$port};dbname={$database}"; + } + else + { + $dsn = "sqlsrv:Server={$host}{$port};Database={$database}"; + } return new PDO($dsn, $username, $password, $this->options($config)); } From e9e8a5b32e78bf2f7b589c181030ec7d3ef6a417 Mon Sep 17 00:00:00 2001 From: Jason Walton Date: Wed, 13 Jun 2012 10:22:27 -0700 Subject: [PATCH 10/92] Adds limit_exact method which will limit a string and its custom ending to a specified length Signed-off-by: Jason Walton --- laravel/documentation/strings.md | 1 + laravel/str.php | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/laravel/documentation/strings.md b/laravel/documentation/strings.md index 002d9148..4164e5ec 100644 --- a/laravel/documentation/strings.md +++ b/laravel/documentation/strings.md @@ -25,6 +25,7 @@ The **Str** class also provides three convenient methods for manipulating string #### Limiting the number of characters in a string: echo Str::limit($string, 10); + echo Str::limit_exact($string, 10); #### Limiting the number of words in a string: diff --git a/laravel/str.php b/laravel/str.php index 964b5d5b..23f2b731 100644 --- a/laravel/str.php +++ b/laravel/str.php @@ -130,6 +130,31 @@ class Str { return substr($value, 0, $limit).$end; } + /** + * Limit the number of chracters in a string including custom ending + * + * + * // Returns "Taylor..." + * echo Str::limit_exact('Taylor Otwell', 9); + * + * // Limit the number of characters and append a custom ending + * echo Str::limit_exact('Taylor Otwell', 9, '---'); + * + * + * @param string $value + * @param int $limit + * @param string $end + * @return string + */ + public static function limit_exact($value, $limit = 100, $end = '...') + { + if (static::length($value) <= $limit) return $value; + + $limit -= static::length($end); + + return static::limit($value, $limit, $end); + } + /** * Limit the number of words in a string. * From 19a3e9dc2b42de476aade6a75d8b457d4a93a425 Mon Sep 17 00:00:00 2001 From: anaxamaxan Date: Wed, 13 Jun 2012 16:23:28 -0700 Subject: [PATCH 11/92] Allow Model instance an id for first argument in Has_Many_And_Belongs_To::attach() and same for ::detach(). Also a typo fix for the docblock on attach(). --- .../relationships/has_many_and_belongs_to.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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 587e504c..cc921861 100644 --- a/laravel/database/eloquent/relationships/has_many_and_belongs_to.php +++ b/laravel/database/eloquent/relationships/has_many_and_belongs_to.php @@ -85,12 +85,14 @@ class Has_Many_And_Belongs_To extends Relationship { /** * Insert a new record into the joining table of the association. * - * @param int $id - * @param array $joining + * @param Model|int $id + * @param array $attributes * @return bool */ public function attach($id, $attributes = array()) { + if ($id instanceof Model) $id = $id->get_key(); + $joining = array_merge($this->join_record($id), $attributes); return $this->insert_joining($joining); @@ -99,12 +101,13 @@ class Has_Many_And_Belongs_To extends Relationship { /** * Detach a record from the joining table of the association. * - * @param int $ids + * @param array|Model|int $ids * @return bool */ public function detach($ids) { - if ( ! is_array($ids)) $ids = array($ids); + if ($ids instanceof Model) $ids = array($ids->get_key()); + elseif ( ! is_array($ids)) $ids = array($ids); return $this->pivot()->where_in($this->other_key(), $ids)->delete(); } From 189f3813d040dcf33b2eb91b0519afa3624e9fe4 Mon Sep 17 00:00:00 2001 From: Koen Schmeets Date: Sat, 16 Jun 2012 13:20:39 +0200 Subject: [PATCH 12/92] Calling the finish method on the right object --- laravel/laravel.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel/laravel.php b/laravel/laravel.php index fcdc32c5..990c8cee 100644 --- a/laravel/laravel.php +++ b/laravel/laravel.php @@ -180,4 +180,4 @@ $response->send(); Event::fire('laravel.done', array($response)); -$response->finish(); \ No newline at end of file +$response->foundation->finish(); \ No newline at end of file From 276f96aec303bb25a714c5ad12d50f2c69aa7ae9 Mon Sep 17 00:00:00 2001 From: Koen Schmeets Date: Wed, 20 Jun 2012 19:27:24 +0200 Subject: [PATCH 13/92] Adding comment to finish call --- laravel/laravel.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/laravel/laravel.php b/laravel/laravel.php index 990c8cee..542c945d 100644 --- a/laravel/laravel.php +++ b/laravel/laravel.php @@ -180,4 +180,16 @@ $response->send(); Event::fire('laravel.done', array($response)); +/* +|-------------------------------------------------------------------------- +| Finish the request for PHP-FastCGI +|-------------------------------------------------------------------------- +| +| Stopping the PHP process for PHP-FastCGI users to speed up some +| PHP queries. Acceleration is possible when there are actions in the +| process of script execution that do not affect server response. +| For example, saving the session in memcached can occur after the page +| has been formed and passed to a web server. +*/ + $response->foundation->finish(); \ No newline at end of file From 9572329c499a2181339769d1d58ec33cc6a35e1c Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Mon, 25 Jun 2012 02:36:20 +0300 Subject: [PATCH 14/92] Allow Auth::login() to work with objects for the Eloquent driver. --- laravel/auth/drivers/eloquent.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/laravel/auth/drivers/eloquent.php b/laravel/auth/drivers/eloquent.php index 8c1c6a80..f90066be 100644 --- a/laravel/auth/drivers/eloquent.php +++ b/laravel/auth/drivers/eloquent.php @@ -7,15 +7,21 @@ class Eloquent extends Driver { * * If the user is a guest, null should be returned. * - * @param int $id + * @param int|object $token * @return mixed|null */ - public function retrieve($id) + public function retrieve($token) { + // We return an object here either if the passed token is an integer (ID) + // or if we are passed a model object of the correct type if (filter_var($id, FILTER_VALIDATE_INT) !== false) { return $this->model()->find($id); } + else if (get_class($id) == Config::get('auth.model')) + { + return $id; + } } /** From 0f5de55d5b4d2fb15049bf2ca208c2d3d7b56730 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Mon, 25 Jun 2012 14:53:15 +0300 Subject: [PATCH 15/92] Fix variable name in retrieve() method for Eloquent auth driver. --- laravel/auth/drivers/eloquent.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/laravel/auth/drivers/eloquent.php b/laravel/auth/drivers/eloquent.php index f90066be..e50a3142 100644 --- a/laravel/auth/drivers/eloquent.php +++ b/laravel/auth/drivers/eloquent.php @@ -14,13 +14,13 @@ class Eloquent extends Driver { { // We return an object here either if the passed token is an integer (ID) // or if we are passed a model object of the correct type - if (filter_var($id, FILTER_VALIDATE_INT) !== false) + if (filter_var($token, FILTER_VALIDATE_INT) !== false) { - return $this->model()->find($id); + return $this->model()->find($token); } - else if (get_class($id) == Config::get('auth.model')) + else if (get_class($token) == Config::get('auth.model')) { - return $id; + return $token; } } From a7c211339ae895a023d847a1eebedacbb1b36787 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Fri, 13 Jul 2012 00:14:03 +0200 Subject: [PATCH 16/92] Import testing bundle to laravel/tests directory. --- laravel/cli/tasks/test/runner.php | 14 +- laravel/tests/application/bundles.php | 36 + .../tests/application/config/application.php | 158 +++++ laravel/tests/application/config/auth.php | 81 +++ laravel/tests/application/config/cache.php | 71 ++ laravel/tests/application/config/database.php | 108 +++ laravel/tests/application/config/error.php | 69 ++ .../application/config/local/database.php | 7 + laravel/tests/application/config/mimes.php | 97 +++ laravel/tests/application/config/session.php | 117 +++ laravel/tests/application/config/strings.php | 187 +++++ .../application/controllers/admin/panel.php | 10 + .../tests/application/controllers/auth.php | 20 + .../tests/application/controllers/filter.php | 65 ++ .../tests/application/controllers/home.php | 42 ++ .../tests/application/controllers/restful.php | 17 + .../controllers/template/basic.php | 12 + .../controllers/template/named.php | 12 + .../controllers/template/override.php | 26 + .../application/dashboard/repository.php | 7 + .../application/language/en/pagination.php | 19 + .../application/language/en/validation.php | 96 +++ .../application/language/sp/validation.php | 7 + .../tests/application/libraries/.gitignore | 0 .../tests/application/migrations/.gitignore | 0 laravel/tests/application/models/.gitignore | 0 .../tests/application/models/autoloader.php | 3 + .../application/models/repositories/user.php | 3 + laravel/tests/application/models/user.php | 3 + laravel/tests/application/routes.php | 93 +++ laravel/tests/application/start.php | 157 ++++ laravel/tests/application/tasks/.gitignore | 0 laravel/tests/application/views/error/404.php | 103 +++ laravel/tests/application/views/error/500.php | 103 +++ .../tests/application/views/home/index.php | 122 ++++ .../tests/application/views/tests/basic.php | 1 + .../tests/application/views/tests/nested.php | 1 + laravel/tests/bundles/.gitignore | 0 .../tests/bundles/dashboard/config/meta.php | 7 + .../bundles/dashboard/controllers/panel.php | 10 + .../bundles/dashboard/models/repository.php | 7 + laravel/tests/bundles/dashboard/routes.php | 8 + laravel/tests/bundles/dummy/routes.php | 6 + laravel/tests/bundles/dummy/start.php | 3 + laravel/tests/cases/asset.test.php | 262 +++++++ laravel/tests/cases/auth.test.php | 259 +++++++ laravel/tests/cases/autoloader.test.php | 102 +++ laravel/tests/cases/blade.test.php | 63 ++ laravel/tests/cases/bundle.test.php | 253 +++++++ laravel/tests/cases/config.test.php | 79 +++ laravel/tests/cases/controller.test.php | 264 +++++++ laravel/tests/cases/cookie.test.php | 94 +++ laravel/tests/cases/database.test.php | 74 ++ laravel/tests/cases/event.test.php | 43 ++ laravel/tests/cases/fluent.test.php | 50 ++ laravel/tests/cases/hash.test.php | 37 + laravel/tests/cases/input.test.php | 174 +++++ laravel/tests/cases/ioc.test.php | 74 ++ laravel/tests/cases/lang.test.php | 68 ++ laravel/tests/cases/messages.test.php | 115 +++ laravel/tests/cases/query.test.php | 48 ++ laravel/tests/cases/redirect.test.php | 143 ++++ laravel/tests/cases/request.test.php | 147 ++++ laravel/tests/cases/response.test.php | 88 +++ laravel/tests/cases/route.test.php | 179 +++++ laravel/tests/cases/routing.test.php | 160 +++++ laravel/tests/cases/session.test.php | 441 ++++++++++++ laravel/tests/cases/str.test.php | 133 ++++ laravel/tests/cases/uri.test.php | 59 ++ laravel/tests/cases/url.test.php | 106 +++ laravel/tests/cases/validator.test.php | 669 ++++++++++++++++++ laravel/tests/cases/view.test.php | 255 +++++++ laravel/tests/storage/cache/.gitignore | 0 .../tests/storage/database/application.sqlite | Bin 0 -> 196608 bytes laravel/tests/storage/files/desert.jpg | Bin 0 -> 845941 bytes laravel/tests/storage/logs/.gitignore | 0 laravel/tests/storage/sessions/.gitignore | 0 laravel/tests/storage/views/.gitignore | 0 78 files changed, 6335 insertions(+), 12 deletions(-) create mode 100644 laravel/tests/application/bundles.php create mode 100644 laravel/tests/application/config/application.php create mode 100644 laravel/tests/application/config/auth.php create mode 100644 laravel/tests/application/config/cache.php create mode 100644 laravel/tests/application/config/database.php create mode 100644 laravel/tests/application/config/error.php create mode 100644 laravel/tests/application/config/local/database.php create mode 100644 laravel/tests/application/config/mimes.php create mode 100644 laravel/tests/application/config/session.php create mode 100644 laravel/tests/application/config/strings.php create mode 100644 laravel/tests/application/controllers/admin/panel.php create mode 100644 laravel/tests/application/controllers/auth.php create mode 100644 laravel/tests/application/controllers/filter.php create mode 100644 laravel/tests/application/controllers/home.php create mode 100644 laravel/tests/application/controllers/restful.php create mode 100644 laravel/tests/application/controllers/template/basic.php create mode 100644 laravel/tests/application/controllers/template/named.php create mode 100644 laravel/tests/application/controllers/template/override.php create mode 100644 laravel/tests/application/dashboard/repository.php create mode 100644 laravel/tests/application/language/en/pagination.php create mode 100644 laravel/tests/application/language/en/validation.php create mode 100644 laravel/tests/application/language/sp/validation.php create mode 100644 laravel/tests/application/libraries/.gitignore create mode 100644 laravel/tests/application/migrations/.gitignore create mode 100644 laravel/tests/application/models/.gitignore create mode 100644 laravel/tests/application/models/autoloader.php create mode 100644 laravel/tests/application/models/repositories/user.php create mode 100644 laravel/tests/application/models/user.php create mode 100644 laravel/tests/application/routes.php create mode 100644 laravel/tests/application/start.php create mode 100644 laravel/tests/application/tasks/.gitignore create mode 100644 laravel/tests/application/views/error/404.php create mode 100644 laravel/tests/application/views/error/500.php create mode 100644 laravel/tests/application/views/home/index.php create mode 100644 laravel/tests/application/views/tests/basic.php create mode 100644 laravel/tests/application/views/tests/nested.php create mode 100644 laravel/tests/bundles/.gitignore create mode 100644 laravel/tests/bundles/dashboard/config/meta.php create mode 100644 laravel/tests/bundles/dashboard/controllers/panel.php create mode 100644 laravel/tests/bundles/dashboard/models/repository.php create mode 100644 laravel/tests/bundles/dashboard/routes.php create mode 100644 laravel/tests/bundles/dummy/routes.php create mode 100644 laravel/tests/bundles/dummy/start.php create mode 100644 laravel/tests/cases/asset.test.php create mode 100644 laravel/tests/cases/auth.test.php create mode 100644 laravel/tests/cases/autoloader.test.php create mode 100644 laravel/tests/cases/blade.test.php create mode 100644 laravel/tests/cases/bundle.test.php create mode 100644 laravel/tests/cases/config.test.php create mode 100644 laravel/tests/cases/controller.test.php create mode 100644 laravel/tests/cases/cookie.test.php create mode 100644 laravel/tests/cases/database.test.php create mode 100644 laravel/tests/cases/event.test.php create mode 100644 laravel/tests/cases/fluent.test.php create mode 100644 laravel/tests/cases/hash.test.php create mode 100644 laravel/tests/cases/input.test.php create mode 100644 laravel/tests/cases/ioc.test.php create mode 100644 laravel/tests/cases/lang.test.php create mode 100644 laravel/tests/cases/messages.test.php create mode 100644 laravel/tests/cases/query.test.php create mode 100644 laravel/tests/cases/redirect.test.php create mode 100644 laravel/tests/cases/request.test.php create mode 100644 laravel/tests/cases/response.test.php create mode 100644 laravel/tests/cases/route.test.php create mode 100644 laravel/tests/cases/routing.test.php create mode 100644 laravel/tests/cases/session.test.php create mode 100644 laravel/tests/cases/str.test.php create mode 100644 laravel/tests/cases/uri.test.php create mode 100644 laravel/tests/cases/url.test.php create mode 100644 laravel/tests/cases/validator.test.php create mode 100644 laravel/tests/cases/view.test.php create mode 100644 laravel/tests/storage/cache/.gitignore create mode 100644 laravel/tests/storage/database/application.sqlite create mode 100644 laravel/tests/storage/files/desert.jpg create mode 100644 laravel/tests/storage/logs/.gitignore create mode 100644 laravel/tests/storage/sessions/.gitignore create mode 100644 laravel/tests/storage/views/.gitignore diff --git a/laravel/cli/tasks/test/runner.php b/laravel/cli/tasks/test/runner.php index 953c9857..853f76b0 100644 --- a/laravel/cli/tasks/test/runner.php +++ b/laravel/cli/tasks/test/runner.php @@ -26,17 +26,7 @@ class Runner extends Task { */ public function core() { - if ( ! is_dir(path('bundle').'laravel-tests')) - { - throw new \Exception("The bundle [laravel-tests] has not been installed!"); - } - - // When testing the Laravel core, we will just stub the path directly - // so the test bundle is not required to be registered in the bundle - // configuration, as it is kind of a unique bundle. - $this->stub(path('bundle').'laravel-tests/cases'); - - $path = path('bundle').'laravel-tests/'; + $this->stub(path('sys').'tests/cases'); $this->test(); } @@ -83,7 +73,7 @@ class Runner extends Task { // fix the spaced directories problem when using the command line // strings with spaces inside should be wrapped in quotes. - $path = escapeshellarg($path) + $path = escapeshellarg($path); passthru('phpunit --configuration '.$path); diff --git a/laravel/tests/application/bundles.php b/laravel/tests/application/bundles.php new file mode 100644 index 00000000..1013f0cf --- /dev/null +++ b/laravel/tests/application/bundles.php @@ -0,0 +1,36 @@ + array( +| 'location' => 'admin', +| 'handles' => 'admin', +| ), +| +| Note that the "location" is relative to the "bundles" directory. +| Now the bundle will be recognized by Laravel and will be able +| to respond to requests beginning with "admin"! +| +| Have a bundle that lives in the root of the bundle directory +| and doesn't respond to any requests? Just add the bundle +| name to the array and we'll take care of the rest. +| +*/ + +return array('dashboard' => array('handles' => 'dashboard'), 'dummy'); \ No newline at end of file diff --git a/laravel/tests/application/config/application.php b/laravel/tests/application/config/application.php new file mode 100644 index 00000000..596baa24 --- /dev/null +++ b/laravel/tests/application/config/application.php @@ -0,0 +1,158 @@ + '', + + /* + |-------------------------------------------------------------------------- + | Application Index + |-------------------------------------------------------------------------- + | + | If you are including the "index.php" in your URLs, you can ignore this. + | + | However, if you are using mod_rewrite to get cleaner URLs, just set + | this option to an empty string and we'll take care of the rest. + | + */ + + 'index' => 'index.php', + + /* + |-------------------------------------------------------------------------- + | Application Key + |-------------------------------------------------------------------------- + | + | This key is used by the encryption and cookie classes to generate secure + | encrypted strings and hashes. It is extremely important that this key + | remain secret and should not be shared with anyone. Make it about 32 + | characters of random gibberish. + | + */ + + 'key' => '', + + /* + |-------------------------------------------------------------------------- + | Application Character Encoding + |-------------------------------------------------------------------------- + | + | The default character encoding used by your application. This encoding + | will be used by the Str, Text, Form, and any other classes that need + | to know what type of encoding to use for your awesome application. + | + */ + + 'encoding' => 'UTF-8', + + /* + |-------------------------------------------------------------------------- + | Application Language + |-------------------------------------------------------------------------- + | + | The default language of your application. This language will be used by + | Lang library as the default language when doing string localization. + | + */ + + 'language' => 'en', + + /* + |-------------------------------------------------------------------------- + | SSL Link Generation + |-------------------------------------------------------------------------- + | + | Many sites use SSL to protect their users data. However, you may not + | always be able to use SSL on your development machine, meaning all HTTPS + | will be broken during development. + | + | For this reason, you may wish to disable the generation of HTTPS links + | throughout your application. This option does just that. All attempts to + | generate HTTPS links will generate regular HTTP links instead. + | + */ + + 'ssl' => true, + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | The default timezone of your application. This timezone will be used when + | Laravel needs a date, such as when writing to a log file or travelling + | to a distant star at warp speed. + | + */ + + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | Here, you can specify any class aliases that you would like registered + | when Laravel loads. Aliases are lazy-loaded, so add as many as you want. + | + | Aliases make it more convenient to use namespaced classes. Instead of + | referring to the class using its full namespace, you may simply use + | the alias defined here. + | + | We have already aliased common Laravel classes to make your life easier. + | + */ + + 'aliases' => array( + 'Auth' => 'Laravel\\Auth', + 'Asset' => 'Laravel\\Asset', + 'Autoloader' => 'Laravel\\Autoloader', + 'Blade' => 'Laravel\\Blade', + 'Bundle' => 'Laravel\\Bundle', + 'Cache' => 'Laravel\\Cache', + 'Config' => 'Laravel\\Config', + 'Controller' => 'Laravel\\Routing\\Controller', + 'Cookie' => 'Laravel\\Cookie', + 'Crypter' => 'Laravel\\Crypter', + 'DB' => 'Laravel\\Database', + 'Event' => 'Laravel\\Event', + 'File' => 'Laravel\\File', + 'Filter' => 'Laravel\\Routing\\Filter', + 'Form' => 'Laravel\\Form', + 'Hash' => 'Laravel\\Hash', + 'HTML' => 'Laravel\\HTML', + 'Input' => 'Laravel\\Input', + 'IoC' => 'Laravel\\IoC', + 'Lang' => 'Laravel\\Lang', + 'Log' => 'Laravel\\Log', + 'Memcached' => 'Laravel\\Memcached', + 'Paginator' => 'Laravel\\Paginator', + 'URL' => 'Laravel\\URL', + 'Redirect' => 'Laravel\\Redirect', + 'Redis' => 'Laravel\\Redis', + 'Request' => 'Laravel\\Request', + 'Response' => 'Laravel\\Response', + 'Route' => 'Laravel\\Routing\\Route', + 'Router' => 'Laravel\\Routing\\Router', + 'Schema' => 'Laravel\\Database\\Schema', + 'Section' => 'Laravel\\Section', + 'Session' => 'Laravel\\Session', + 'Str' => 'Laravel\\Str', + 'Task' => 'Laravel\\CLI\\Tasks\\Task', + 'URI' => 'Laravel\\URI', + 'Validator' => 'Laravel\\Validator', + 'View' => 'Laravel\\View', + ), + +); diff --git a/laravel/tests/application/config/auth.php b/laravel/tests/application/config/auth.php new file mode 100644 index 00000000..d0137583 --- /dev/null +++ b/laravel/tests/application/config/auth.php @@ -0,0 +1,81 @@ + function($id) + { + if (filter_var($id, FILTER_VALIDATE_INT) !== false) + { + return DB::table('users')->find($id); + } + }, + + /* + |-------------------------------------------------------------------------- + | Authenticate User Credentials + |-------------------------------------------------------------------------- + | + | This closure is called by the Auth::attempt() method when attempting to + | authenticate a user that is logging into your application. It's like a + | super buff bouncer to your application. + | + | If the provided credentials are correct, simply return an object that + | represents the user being authenticated. As long as it has a property + | for the "id", any object will work. If the credentials are not valid, + | you don't meed to return anything. + | + */ + + 'attempt' => function($username, $password) + { + $user = DB::table('users')->where_username($username)->first(); + + if ( ! is_null($user) and Hash::check($password, $user->password)) + { + return $user; + } + }, + + /* + |-------------------------------------------------------------------------- + | Logout The Current User + |-------------------------------------------------------------------------- + | + | Here you may do anything that needs to be done when a user logs out of + | your application, such as call the logout method on a third-party API + | you are using for authentication or anything else you desire. + | + */ + + 'logout' => function($user) {}, + + /* + |-------------------------------------------------------------------------- + | "Remember Me" Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may specify the cookie name that will be used for the cookie + | that serves as the "remember me" token. Of course, a sensible default + | has been set for you, so you probably don't need to change it. + | + */ + + 'cookie' => 'laravel_remember', + +); \ No newline at end of file diff --git a/laravel/tests/application/config/cache.php b/laravel/tests/application/config/cache.php new file mode 100644 index 00000000..73fd4c9c --- /dev/null +++ b/laravel/tests/application/config/cache.php @@ -0,0 +1,71 @@ + 'file', + + /* + |-------------------------------------------------------------------------- + | Cache Key + |-------------------------------------------------------------------------- + | + | This key will be prepended to item keys stored using Memcached and APC + | to prevent collisions with other applications on the server. Since the + | memory based stores could be shared by other applications, we need to + | be polite and use a prefix to uniquely identifier our items. + | + */ + + 'key' => 'laravel', + + /* + |-------------------------------------------------------------------------- + | Cache Database + |-------------------------------------------------------------------------- + | + | When using the database cache driver, this database table will be used + | to store the cached item. You may also add a "connection" option to + | the array to specify which database connection should be used. + | + */ + + 'database' => array('table' => 'laravel_cache'), + + /* + |-------------------------------------------------------------------------- + | Memcached Servers + |-------------------------------------------------------------------------- + | + | The Memcached servers used by your application. Memcached is a free and + | open source, high-performance, distributed memory caching system. It is + | generic in nature but intended for use in speeding up web applications + | by alleviating database load. + | + | For more information, check out: http://memcached.org + | + */ + + 'memcached' => array( + + array('host' => '127.0.0.1', 'port' => 11211, 'weight' => 100), + + ), + +); \ No newline at end of file diff --git a/laravel/tests/application/config/database.php b/laravel/tests/application/config/database.php new file mode 100644 index 00000000..b7b9fd96 --- /dev/null +++ b/laravel/tests/application/config/database.php @@ -0,0 +1,108 @@ + 'sqlite', + + /* + |-------------------------------------------------------------------------- + | PDO Fetch Style + |-------------------------------------------------------------------------- + | + | By default, database results will be returned as instances of the PHP + | stdClass object; however, you may wish to retrieve records as arrays + | instead of objects. Here you can control the PDO fetch style of the + | database queries run by your application. + | + */ + + 'fetch' => PDO::FETCH_CLASS, + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | All of the database connections used by your application. Many of your + | applications will no doubt only use one connection; however, you have + | the freedom to specify as many connections as you can handle. + | + | All database work in Laravel is done through the PHP's PDO facilities, + | so make sure you have the PDO drivers for your particlar database of + | choice installed on your machine. + | + | Drivers: 'mysql', 'pgsql', 'sqlsrv', 'sqlite'. + | + */ + + 'connections' => array( + + 'sqlite' => array( + 'driver' => 'sqlite', + 'database' => 'application', + 'prefix' => '', + ), + + 'mysql' => array( + 'driver' => 'mysql', + 'host' => 'localhost', + 'database' => 'database', + 'username' => 'root', + 'password' => 'password', + 'charset' => 'utf8', + 'prefix' => '', + ), + + 'pgsql' => array( + 'driver' => 'pgsql', + 'host' => 'localhost', + 'database' => 'database', + 'username' => 'root', + 'password' => 'password', + 'charset' => 'utf8', + 'prefix' => '', + ), + + 'sqlsrv' => array( + 'driver' => 'sqlsrv', + 'host' => 'localhost', + 'database' => 'database', + 'username' => 'root', + 'password' => 'password', + 'prefix' => '', + ), + + ), + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store. However, it + | provides a richer set of commands than a typical key-value store such as + | APC or memcached. All the cool kids are using it. + | + | To get the scoop on Redis, check out: http://redis.io + | + */ + + 'redis' => array( + + 'default' => array('host' => '127.0.0.1', 'port' => 6379), + + ), + +); \ No newline at end of file diff --git a/laravel/tests/application/config/error.php b/laravel/tests/application/config/error.php new file mode 100644 index 00000000..87db9665 --- /dev/null +++ b/laravel/tests/application/config/error.php @@ -0,0 +1,69 @@ + array(E_NOTICE, E_USER_NOTICE, E_DEPRECATED, E_USER_DEPRECATED), + + /* + |-------------------------------------------------------------------------- + | Error Detail + |-------------------------------------------------------------------------- + | + | Detailed error messages contain information about the file in which an + | error occurs, as well as a PHP stack trace containing the call stack. + | You'll want them when you're trying to debug your application. + | + | If your application is in production, you'll want to turn off the error + | details for enhanced security and user experience since the exception + | stack trace could contain sensitive information. + | + */ + + 'detail' => true, + + /* + |-------------------------------------------------------------------------- + | Error Logging + |-------------------------------------------------------------------------- + | + | When error logging is enabled, the "logger" Closure defined below will + | be called for every error in your application. You are free to log the + | errors however you want. Enjoy the flexibility. + | + */ + + 'log' => false, + + /* + |-------------------------------------------------------------------------- + | Error Logger + |-------------------------------------------------------------------------- + | + | Because of the various ways of managing error logging, you get complete + | flexibility to manage error logging as you see fit. This function will + | be called anytime an error occurs within your application and error + | logging is enabled. + | + | You may log the error message however you like; however, a simple log + | solution has been setup for you which will log all error messages to + | text files within the application storage directory. + | + */ + + 'logger' => function($exception) + { + Log::exception($exception); + }, + +); \ No newline at end of file diff --git a/laravel/tests/application/config/local/database.php b/laravel/tests/application/config/local/database.php new file mode 100644 index 00000000..bd94d7ba --- /dev/null +++ b/laravel/tests/application/config/local/database.php @@ -0,0 +1,7 @@ + 'sqlite', + +); \ No newline at end of file diff --git a/laravel/tests/application/config/mimes.php b/laravel/tests/application/config/mimes.php new file mode 100644 index 00000000..e2bd4fbb --- /dev/null +++ b/laravel/tests/application/config/mimes.php @@ -0,0 +1,97 @@ + 'application/mac-binhex40', + 'cpt' => 'application/mac-compactpro', + 'csv' => array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream'), + 'bin' => 'application/macbinary', + 'dms' => 'application/octet-stream', + 'lha' => 'application/octet-stream', + 'lzh' => 'application/octet-stream', + 'exe' => array('application/octet-stream', 'application/x-msdownload'), + 'class' => 'application/octet-stream', + 'psd' => 'application/x-photoshop', + 'so' => 'application/octet-stream', + 'sea' => 'application/octet-stream', + 'dll' => 'application/octet-stream', + 'oda' => 'application/oda', + 'pdf' => array('application/pdf', 'application/x-download'), + 'ai' => 'application/postscript', + 'eps' => 'application/postscript', + 'ps' => 'application/postscript', + 'smi' => 'application/smil', + 'smil' => 'application/smil', + 'mif' => 'application/vnd.mif', + 'xls' => array('application/excel', 'application/vnd.ms-excel', 'application/msexcel'), + 'ppt' => array('application/powerpoint', 'application/vnd.ms-powerpoint'), + 'wbxml' => 'application/wbxml', + 'wmlc' => 'application/wmlc', + 'dcr' => 'application/x-director', + 'dir' => 'application/x-director', + 'dxr' => 'application/x-director', + 'dvi' => 'application/x-dvi', + 'gtar' => 'application/x-gtar', + 'gz' => 'application/x-gzip', + 'php' => array('application/x-httpd-php', 'text/x-php'), + 'php4' => 'application/x-httpd-php', + 'php3' => 'application/x-httpd-php', + 'phtml' => 'application/x-httpd-php', + 'phps' => 'application/x-httpd-php-source', + 'js' => 'application/x-javascript', + 'swf' => 'application/x-shockwave-flash', + 'sit' => 'application/x-stuffit', + 'tar' => 'application/x-tar', + 'tgz' => array('application/x-tar', 'application/x-gzip-compressed'), + 'xhtml' => 'application/xhtml+xml', + 'xht' => 'application/xhtml+xml', + 'zip' => array('application/x-zip', 'application/zip', 'application/x-zip-compressed'), + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mpga' => 'audio/mpeg', + 'mp2' => 'audio/mpeg', + 'mp3' => array('audio/mpeg', 'audio/mpg', 'audio/mpeg3', 'audio/mp3'), + 'aif' => 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'aifc' => 'audio/x-aiff', + 'ram' => 'audio/x-pn-realaudio', + 'rm' => 'audio/x-pn-realaudio', + 'rpm' => 'audio/x-pn-realaudio-plugin', + 'ra' => 'audio/x-realaudio', + 'rv' => 'video/vnd.rn-realvideo', + 'wav' => 'audio/x-wav', + 'bmp' => 'image/bmp', + 'gif' => 'image/gif', + 'jpeg' => array('image/jpeg', 'image/pjpeg'), + 'jpg' => array('image/jpeg', 'image/pjpeg'), + 'jpe' => array('image/jpeg', 'image/pjpeg'), + 'png' => 'image/png', + 'tiff' => 'image/tiff', + 'tif' => 'image/tiff', + 'css' => 'text/css', + 'html' => 'text/html', + 'htm' => 'text/html', + 'shtml' => 'text/html', + 'txt' => 'text/plain', + 'text' => 'text/plain', + 'log' => array('text/plain', 'text/x-log'), + 'rtx' => 'text/richtext', + 'rtf' => 'text/rtf', + 'xml' => 'text/xml', + 'xsl' => 'text/xml', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'mpe' => 'video/mpeg', + 'qt' => 'video/quicktime', + 'mov' => 'video/quicktime', + 'avi' => 'video/x-msvideo', + 'movie' => 'video/x-sgi-movie', + 'doc' => 'application/msword', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'word' => array('application/msword', 'application/octet-stream'), + 'xl' => 'application/excel', + 'eml' => 'message/rfc822', + 'json' => array('application/json', 'text/json'), + +); \ No newline at end of file diff --git a/laravel/tests/application/config/session.php b/laravel/tests/application/config/session.php new file mode 100644 index 00000000..3b6e6a69 --- /dev/null +++ b/laravel/tests/application/config/session.php @@ -0,0 +1,117 @@ + '', + + /* + |-------------------------------------------------------------------------- + | Session Database + |-------------------------------------------------------------------------- + | + | The database table on which the session should be stored. It probably + | goes without saying that this option only matters if you are using + | the super slick database session driver. + | + */ + + 'table' => 'sessions', + + /* + |-------------------------------------------------------------------------- + | Session Garbage Collection Probability + |-------------------------------------------------------------------------- + | + | Some session drivers require the manual clean-up of expired sessions. + | This option specifies the probability of session garbage collection + | occuring for any given request. + | + | For example, the default value states that garbage collection has a + | 2% chance of occuring for any given request to the application. + | Feel free to tune this to your application's size and speed. + | + */ + + 'sweepage' => array(2, 100), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | The number of minutes a session can be idle before expiring. + | + */ + + 'lifetime' => 60, + + /* + |-------------------------------------------------------------------------- + | Session Expiration On Close + |-------------------------------------------------------------------------- + | + | Determines if the session should expire when the user's web browser closes. + | + */ + + 'expire_on_close' => false, + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | The name that should be given to the session cookie. + | + */ + + 'cookie' => 'laravel_session', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The path for which the session cookie is available. + | + */ + + 'path' => '/', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | The domain for which the session cookie is available. + | + */ + + 'domain' => null, + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Session Cookie + |-------------------------------------------------------------------------- + | + | Determines if the cookie should only be sent over HTTPS. + | + */ + + 'secure' => false, + +); \ No newline at end of file diff --git a/laravel/tests/application/config/strings.php b/laravel/tests/application/config/strings.php new file mode 100644 index 00000000..730f973e --- /dev/null +++ b/laravel/tests/application/config/strings.php @@ -0,0 +1,187 @@ + array( + '/(quiz)$/i' => "$1zes", + '/^(ox)$/i' => "$1en", + '/([m|l])ouse$/i' => "$1ice", + '/(matr|vert|ind)ix|ex$/i' => "$1ices", + '/(x|ch|ss|sh)$/i' => "$1es", + '/([^aeiouy]|qu)y$/i' => "$1ies", + '/(hive)$/i' => "$1s", + '/(?:([^f])fe|([lr])f)$/i' => "$1$2ves", + '/(shea|lea|loa|thie)f$/i' => "$1ves", + '/sis$/i' => "ses", + '/([ti])um$/i' => "$1a", + '/(tomat|potat|ech|her|vet)o$/i' => "$1oes", + '/(bu)s$/i' => "$1ses", + '/(alias)$/i' => "$1es", + '/(octop)us$/i' => "$1i", + '/(ax|test)is$/i' => "$1es", + '/(us)$/i' => "$1es", + '/s$/i' => "s", + '/$/' => "s" + ), + + 'singular' => array( + '/(quiz)zes$/i' => "$1", + '/(matr)ices$/i' => "$1ix", + '/(vert|ind)ices$/i' => "$1ex", + '/^(ox)en$/i' => "$1", + '/(alias)es$/i' => "$1", + '/(octop|vir)i$/i' => "$1us", + '/(cris|ax|test)es$/i' => "$1is", + '/(shoe)s$/i' => "$1", + '/(o)es$/i' => "$1", + '/(bus)es$/i' => "$1", + '/([m|l])ice$/i' => "$1ouse", + '/(x|ch|ss|sh)es$/i' => "$1", + '/(m)ovies$/i' => "$1ovie", + '/(s)eries$/i' => "$1eries", + '/([^aeiouy]|qu)ies$/i' => "$1y", + '/([lr])ves$/i' => "$1f", + '/(tive)s$/i' => "$1", + '/(hive)s$/i' => "$1", + '/(li|wi|kni)ves$/i' => "$1fe", + '/(shea|loa|lea|thie)ves$/i' => "$1f", + '/(^analy)ses$/i' => "$1sis", + '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i' => "$1$2sis", + '/([ti])a$/i' => "$1um", + '/(n)ews$/i' => "$1ews", + '/(h|bl)ouses$/i' => "$1ouse", + '/(corpse)s$/i' => "$1", + '/(us)es$/i' => "$1", + '/(us|ss)$/i' => "$1", + '/s$/i' => "", + ), + + 'irregular' => array( + 'child' => 'children', + 'foot' => 'feet', + 'goose' => 'geese', + 'man' => 'men', + 'move' => 'moves', + 'person' => 'people', + 'sex' => 'sexes', + 'tooth' => 'teeth', + ), + + 'uncountable' => array( + 'audio', + 'equipment', + 'deer', + 'fish', + 'gold', + 'information', + 'money', + 'rice', + 'police', + 'series', + 'sheep', + 'species', + ), + + /* + |-------------------------------------------------------------------------- + | ASCII Characters + |-------------------------------------------------------------------------- + | + | This array contains foreign characters and their 7-bit ASCII equivalents. + | The array is used by the "ascii" method on the Str class to get strings + | ready for inclusion in a URL slug. + | + | Of course, the "ascii" method may also be used by you for whatever your + | application requires. Feel free to add any characters we missed, and be + | sure to let us know about them! + | + */ + + 'ascii' => array( + + '/æ|ǽ/' => 'ae', + '/œ/' => 'oe', + '/À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ|А/' => 'A', + '/à|á|â|ã|ä|å|ǻ|ā|ă|ą|ǎ|ª|а/' => 'a', + '/Б/' => 'B', + '/б/' => 'b', + '/Ç|Ć|Ĉ|Ċ|Č|Ц/' => 'C', + '/ç|ć|ĉ|ċ|č|ц/' => 'c', + '/Ð|Ď|Đ|Д/' => 'Dj', + '/ð|ď|đ|д/' => 'dj', + '/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě|Е|Ё|Э/' => 'E', + '/è|é|ê|ë|ē|ĕ|ė|ę|ě|е|ё|э/' => 'e', + '/Ф/' => 'F', + '/ƒ|ф/' => 'f', + '/Ĝ|Ğ|Ġ|Ģ|Г/' => 'G', + '/ĝ|ğ|ġ|ģ|г/' => 'g', + '/Ĥ|Ħ|Х/' => 'H', + '/ĥ|ħ|х/' => 'h', + '/Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ|И/' => 'I', + '/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı|и/' => 'i', + '/Ĵ|Й/' => 'J', + '/ĵ|й/' => 'j', + '/Ķ|К/' => 'K', + '/ķ|к/' => 'k', + '/Ĺ|Ļ|Ľ|Ŀ|Ł|Л/' => 'L', + '/ĺ|ļ|ľ|ŀ|ł|л/' => 'l', + '/М/' => 'M', + '/м/' => 'm', + '/Ñ|Ń|Ņ|Ň|Н/' => 'N', + '/ñ|ń|ņ|ň|ʼn|н/' => 'n', + '/Ö|Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ|О/' => 'O', + '/ö|ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º|о/' => 'o', + '/П/' => 'P', + '/п/' => 'p', + '/Ŕ|Ŗ|Ř|Р/' => 'R', + '/ŕ|ŗ|ř|р/' => 'r', + '/Ś|Ŝ|Ş|Ș|Š|С/' => 'S', + '/ś|ŝ|ş|ș|š|ſ|с/' => 's', + '/Ţ|Ț|Ť|Ŧ|Т/' => 'T', + '/ţ|ț|ť|ŧ|т/' => 't', + '/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ü|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ|У/' => 'U', + '/ù|ú|û|ũ|ū|ŭ|ů|ü|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ|у/' => 'u', + '/В/' => 'V', + '/в/' => 'v', + '/Ý|Ÿ|Ŷ|Ы/' => 'Y', + '/ý|ÿ|ŷ|ы/' => 'y', + '/Ŵ/' => 'W', + '/ŵ/' => 'w', + '/Ź|Ż|Ž|З/' => 'Z', + '/ź|ż|ž|з/' => 'z', + '/Æ|Ǽ/' => 'AE', + '/ß/'=> 'ss', + '/IJ/' => 'IJ', + '/ij/' => 'ij', + '/Œ/' => 'OE', + '/Ч/' => 'Ch', + '/ч/' => 'ch', + '/Ю/' => 'Ju', + '/ю/' => 'ju', + '/Я/' => 'Ja', + '/я/' => 'ja', + '/Ш/' => 'Sh', + '/ш/' => 'sh', + '/Щ/' => 'Shch', + '/щ/' => 'shch', + '/Ж/' => 'Zh', + '/ж/' => 'zh', + + ), + +); \ No newline at end of file diff --git a/laravel/tests/application/controllers/admin/panel.php b/laravel/tests/application/controllers/admin/panel.php new file mode 100644 index 00000000..da3b49d7 --- /dev/null +++ b/laravel/tests/application/controllers/admin/panel.php @@ -0,0 +1,10 @@ +filter('before', 'test-all-before'); + $this->filter('after', 'test-all-after'); + $this->filter('before', 'test-profile-before')->only(array('profile')); + $this->filter('before', 'test-except')->except(array('index', 'profile')); + $this->filter('before', 'test-on-post')->on(array('post')); + $this->filter('before', 'test-on-get-put')->on(array('get', 'put')); + $this->filter('before', 'test-before-filter')->only('login'); + $this->filter('after', 'test-before-filter')->only('logout'); + $this->filter('before', 'test-param:1,2')->only('edit'); + $this->filter('before', 'test-multi-1|test-multi-2')->only('save'); + } + + public function action_index() + { + return __FUNCTION__; + } + + public function action_profile() + { + return __FUNCTION__; + } + + public function action_show() + { + return __FUNCTION__; + } + + public function action_edit() + { + return __FUNCTION__; + } + + public function action_save() + { + return __FUNCTION__; + } + + public function action_login() + { + return __FUNCTION__; + } + + public function action_logout() + { + return __FUNCTION__; + } + +} \ No newline at end of file diff --git a/laravel/tests/application/controllers/home.php b/laravel/tests/application/controllers/home.php new file mode 100644 index 00000000..3f442005 --- /dev/null +++ b/laravel/tests/application/controllers/home.php @@ -0,0 +1,42 @@ + '« Previous', + 'next' => 'Next »', + +); \ No newline at end of file diff --git a/laravel/tests/application/language/en/validation.php b/laravel/tests/application/language/en/validation.php new file mode 100644 index 00000000..5c6354dd --- /dev/null +++ b/laravel/tests/application/language/en/validation.php @@ -0,0 +1,96 @@ + "The :attribute must be accepted.", + "active_url" => "The :attribute is not a valid URL.", + "alpha" => "The :attribute may only contain letters.", + "alpha_dash" => "The :attribute may only contain letters, numbers, and dashes.", + "alpha_num" => "The :attribute may only contain letters and numbers.", + "between" => array( + "numeric" => "The :attribute must be between :min - :max.", + "file" => "The :attribute must be between :min - :max kilobytes.", + "string" => "The :attribute must be between :min - :max characters.", + ), + "confirmed" => "The :attribute confirmation does not match.", + "different" => "The :attribute and :other must be different.", + "email" => "The :attribute format is invalid.", + "exists" => "The selected :attribute is invalid.", + "image" => "The :attribute must be an image.", + "in" => "The selected :attribute is invalid.", + "integer" => "The :attribute must be an integer.", + "ip" => "The :attribute must be a valid IP address.", + "max" => array( + "numeric" => "The :attribute must be less than :max.", + "file" => "The :attribute must be less than :max kilobytes.", + "string" => "The :attribute must be less than :max characters.", + ), + "mimes" => "The :attribute must be a file of type: :values.", + "min" => array( + "numeric" => "The :attribute must be at least :min.", + "file" => "The :attribute must be at least :min kilobytes.", + "string" => "The :attribute must be at least :min characters.", + ), + "not_in" => "The selected :attribute is invalid.", + "numeric" => "The :attribute must be a number.", + "required" => "The :attribute field is required.", + "same" => "The :attribute and :other must match.", + "size" => array( + "numeric" => "The :attribute must be :size.", + "file" => "The :attribute must be :size kilobyte.", + "string" => "The :attribute must be :size characters.", + ), + "unique" => "The :attribute has already been taken.", + "url" => "The :attribute format is invalid.", + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute_rule" to name the lines. This helps keep your + | custom validation clean and tidy. + | + | So, say you want to use a custom validation message when validating that + | the "email" attribute is unique. Just add "email_unique" to this array + | with your custom message. The Validator will handle the rest! + | + */ + + 'custom' => array('custom_required' => 'This field is required!'), + + /* + |-------------------------------------------------------------------------- + | Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as "E-Mail Address" instead + | of "email". Your users will thank you. + | + | The Validator class will automatically search this array of lines it + | is attempting to replace the :attribute place-holder in messages. + | It's pretty slick. We think you'll like it. + | + */ + + 'attributes' => array('test_attribute' => 'attribute'), + +); \ No newline at end of file diff --git a/laravel/tests/application/language/sp/validation.php b/laravel/tests/application/language/sp/validation.php new file mode 100644 index 00000000..b9bcbe74 --- /dev/null +++ b/laravel/tests/application/language/sp/validation.php @@ -0,0 +1,7 @@ + 'El campo de atributo es necesario.', + +); \ No newline at end of file diff --git a/laravel/tests/application/libraries/.gitignore b/laravel/tests/application/libraries/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/laravel/tests/application/migrations/.gitignore b/laravel/tests/application/migrations/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/laravel/tests/application/models/.gitignore b/laravel/tests/application/models/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/laravel/tests/application/models/autoloader.php b/laravel/tests/application/models/autoloader.php new file mode 100644 index 00000000..0e9027dc --- /dev/null +++ b/laravel/tests/application/models/autoloader.php @@ -0,0 +1,3 @@ + 'home', function() +{ + return View::make('home.index'); +})); + +Route::controller(array( + 'auth', 'filter', 'home', 'restful', + 'template.basic', 'template.name', 'template.override', + 'admin.panel', +)); + +/* +|-------------------------------------------------------------------------- +| Route Filters +|-------------------------------------------------------------------------- +| +| Filters provide a convenient method for attaching functionality to your +| routes. The built-in "before" and "after" filters are called before and +| after every request to your application, and you may even create other +| filters that can be attached to individual routes. +| +| Let's walk through an example... +| +| First, define a filter: +| +| Filter::register('filter', function() +| { +| return 'Filtered!'; +| }); +| +| Next, attach the filter to a route: +| +| Router::register('GET /', array('before' => 'filter', function() +| { +| return 'Hello World!'; +| })); +| +*/ + +Filter::register('before', function() +{ + $_SERVER['before'] = true; +}); + +Filter::register('after', function() +{ + $_SERVER['after'] = true; +}); + +Filter::register('csrf', function() +{ + if (Request::forged()) return Response::error('500'); +}); + +Filter::register('auth', function() +{ + if (Auth::guest()) return Redirect::to('login'); +}); \ No newline at end of file diff --git a/laravel/tests/application/start.php b/laravel/tests/application/start.php new file mode 100644 index 00000000..085dd090 --- /dev/null +++ b/laravel/tests/application/start.php @@ -0,0 +1,157 @@ + path('app').'controllers/base.php', +)); + +/* +|-------------------------------------------------------------------------- +| Auto-Loader Directories +|-------------------------------------------------------------------------- +| +| The Laravel auto-loader can search directories for files using the PSR-0 +| naming convention. This convention basically organizes classes by using +| the class namespace to indicate the directory structure. +| +*/ + +Autoloader::directories(array( + path('app').'models', + path('app').'libraries', +)); + +/* +|-------------------------------------------------------------------------- +| Laravel View Loader +|-------------------------------------------------------------------------- +| +| The Laravel view loader is responsible for returning the full file path +| for the given bundle and view. Of course, a default implementation is +| provided to load views according to typical Laravel conventions but +| you may change this to customize how your views are organized. +| +*/ + +Event::listen(View::loader, function($bundle, $view) +{ + return View::file($bundle, $view, Bundle::path($bundle).'views'); +}); + +/* +|-------------------------------------------------------------------------- +| Laravel Language Loader +|-------------------------------------------------------------------------- +| +| The Laravel language loader is responsible for returning the array of +| language lines for a given bundle, language, and "file". A default +| implementation has been provided which uses the default language +| directories included with Laravel. +| +*/ + +Event::listen(Lang::loader, function($bundle, $language, $file) +{ + return Lang::file($bundle, $language, $file); +}); + +/* +|-------------------------------------------------------------------------- +| Enable The Blade View Engine +|-------------------------------------------------------------------------- +| +| The Blade view engine provides a clean, beautiful templating language +| for your application, including syntax for echoing data and all of +| the typical PHP control structures. We'll simply enable it here. +| +*/ + +Blade::sharpen(); + +/* +|-------------------------------------------------------------------------- +| Set The Default Timezone +|-------------------------------------------------------------------------- +| +| We need to set the default timezone for the application. This controls +| the timezone that will be used by any of the date methods and classes +| utilized by Laravel or your application. The timezone may be set in +| your application configuration file. +| +*/ + +date_default_timezone_set(Config::get('application.timezone')); + +/* +|-------------------------------------------------------------------------- +| Start / Load The User Session +|-------------------------------------------------------------------------- +| +| Sessions allow the web, which is stateless, to simulate state. In other +| words, sessions allow you to store information about the current user +| and state of your application. Here we'll just fire up the session +| if a session driver has been configured. +| +*/ + +if ( ! Request::cli() and Config::get('session.driver') !== '') +{ + Session::load(); +} \ No newline at end of file diff --git a/laravel/tests/application/tasks/.gitignore b/laravel/tests/application/tasks/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/laravel/tests/application/views/error/404.php b/laravel/tests/application/views/error/404.php new file mode 100644 index 00000000..9b9bf55b --- /dev/null +++ b/laravel/tests/application/views/error/404.php @@ -0,0 +1,103 @@ + + + + + + Error 404 - Not Found + + + + +
+ + +

+ +

Server Error: 404 (Not Found)

+ +

What does this mean?

+ +

+ We couldn't find the page you requested on our servers. We're really sorry + about that. It's our fault, not yours. We'll work hard to get this page + back online as soon as possible. +

+ +

+ Perhaps you would like to go to our ? +

+
+ + \ No newline at end of file diff --git a/laravel/tests/application/views/error/500.php b/laravel/tests/application/views/error/500.php new file mode 100644 index 00000000..4dcd92ad --- /dev/null +++ b/laravel/tests/application/views/error/500.php @@ -0,0 +1,103 @@ + + + + + + Error 500 - Internal Server Error + + + + +
+ + +

+ +

Server Error: 500 (Internal Server Error)

+ +

What does this mean?

+ +

+ Something went wrong on our servers while we were processing your request. + We're really sorry about this, and will work hard to get this resolved as + soon as possible. +

+ +

+ Perhaps you would like to go to our ? +

+
+ + \ No newline at end of file diff --git a/laravel/tests/application/views/home/index.php b/laravel/tests/application/views/home/index.php new file mode 100644 index 00000000..39497146 --- /dev/null +++ b/laravel/tests/application/views/home/index.php @@ -0,0 +1,122 @@ + + + + + + Laravel - A Framework For Web Artisans + + + + +
+

Welcome To Laravel

+ +

A Framework For Web Artisans

+ +

+ You have successfully installed the Laravel framework. Laravel is a simple framework + that helps web artisans create beautiful, creative applications using elegant, expressive + syntax. You'll love using it. +

+ +

Learn the terrain.

+ +

+ You've landed yourself on our default home page. The route that + is generating this page lives at: +

+ +
APP_PATH/routes.php
+ +

And the view sitting before you can be found at:

+ +
APP_PATH/views/home/index.php
+ +

Create something beautiful.

+ +

+ Now that you're up and running, it's time to start creating! + Here are some links to help you get started: +

+ + + +
+ + \ No newline at end of file diff --git a/laravel/tests/application/views/tests/basic.php b/laravel/tests/application/views/tests/basic.php new file mode 100644 index 00000000..c961dc2f --- /dev/null +++ b/laravel/tests/application/views/tests/basic.php @@ -0,0 +1 @@ + is \ No newline at end of file diff --git a/laravel/tests/application/views/tests/nested.php b/laravel/tests/application/views/tests/nested.php new file mode 100644 index 00000000..9ce498e5 --- /dev/null +++ b/laravel/tests/application/views/tests/nested.php @@ -0,0 +1 @@ +Taylor \ No newline at end of file diff --git a/laravel/tests/bundles/.gitignore b/laravel/tests/bundles/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/laravel/tests/bundles/dashboard/config/meta.php b/laravel/tests/bundles/dashboard/config/meta.php new file mode 100644 index 00000000..a82d1703 --- /dev/null +++ b/laravel/tests/bundles/dashboard/config/meta.php @@ -0,0 +1,7 @@ + 'dashboard', + +); \ No newline at end of file diff --git a/laravel/tests/bundles/dashboard/controllers/panel.php b/laravel/tests/bundles/dashboard/controllers/panel.php new file mode 100644 index 00000000..b532296d --- /dev/null +++ b/laravel/tests/bundles/dashboard/controllers/panel.php @@ -0,0 +1,10 @@ + 'dashboard', function() +{ + // +})); + +Route::controller('dashboard::panel'); \ No newline at end of file diff --git a/laravel/tests/bundles/dummy/routes.php b/laravel/tests/bundles/dummy/routes.php new file mode 100644 index 00000000..2117e2e0 --- /dev/null +++ b/laravel/tests/bundles/dummy/routes.php @@ -0,0 +1,6 @@ +assertTrue($container === Asset::container('foo')); + $this->assertInstanceOf('\\Laravel\\Asset_Container', $container); + } + + /** + * Test the Asset::container method for default container creation. + * + * @group laravel + */ + public function testDefaultContainerCreatedByDefault() + { + $this->assertEquals('default', Asset::container()->name); + } + + /** + * Test the Asset::__callStatic method. + * + * @group laravel + */ + public function testContainerMethodsCanBeDynamicallyCalled() + { + Asset::style('common', 'common.css'); + + $this->assertEquals('common.css', Asset::container()->assets['style']['common']['source']); + } + + /** + * Test the Asset_Container constructor. + * + * @group laravel + */ + public function testNameIsSetOnAssetContainerConstruction() + { + $container = $this->getContainer(); + + $this->assertEquals('foo', $container->name); + } + + /** + * Test the Asset_Container::add method. + * + * @group laravel + */ + public function testAddMethodProperlySniffsAssetType() + { + $container = $this->getContainer(); + + $container->add('jquery', 'jquery.js'); + $container->add('common', 'common.css'); + + $this->assertEquals('jquery.js', $container->assets['script']['jquery']['source']); + $this->assertEquals('common.css', $container->assets['style']['common']['source']); + } + + /** + * Test the Asset_Container::style method. + * + * @group laravel + */ + public function testStyleMethodProperlyRegistersAnAsset() + { + $container = $this->getContainer(); + + $container->style('common', 'common.css'); + + $this->assertEquals('common.css', $container->assets['style']['common']['source']); + } + + /** + * Test the Asset_Container::style method sets media attribute. + * + * @group laravel + */ + public function testStyleMethodProperlySetsMediaAttributeIfNotSet() + { + $container = $this->getContainer(); + + $container->style('common', 'common.css'); + + $this->assertEquals('all', $container->assets['style']['common']['attributes']['media']); + } + + /** + * Test the Asset_Container::style method sets media attribute. + * + * @group laravel + */ + public function testStyleMethodProperlyIgnoresMediaAttributeIfSet() + { + $container = $this->getContainer(); + + $container->style('common', 'common.css', array(), array('media' => 'print')); + + $this->assertEquals('print', $container->assets['style']['common']['attributes']['media']); + } + + /** + * Test the Asset_Container::script method. + * + * @group laravel + */ + public function testScriptMethodProperlyRegistersAnAsset() + { + $container = $this->getContainer(); + + $container->script('jquery', 'jquery.js'); + + $this->assertEquals('jquery.js', $container->assets['script']['jquery']['source']); + } + + /** + * Test the Asset_Container::add method properly sets dependencies. + * + * @group laravel + */ + public function testAddMethodProperlySetsDependencies() + { + $container = $this->getContainer(); + + $container->add('common', 'common.css', 'jquery'); + $container->add('jquery', 'jquery.js', array('jquery-ui')); + + $this->assertEquals(array('jquery'), $container->assets['style']['common']['dependencies']); + $this->assertEquals(array('jquery-ui'), $container->assets['script']['jquery']['dependencies']); + } + + /** + * Test the Asset_Container::add method properly sets attributes. + * + * @group laravel + */ + public function testAddMethodProperlySetsAttributes() + { + $container = $this->getContainer(); + + $container->add('common', 'common.css', array(), array('media' => 'print')); + $container->add('jquery', 'jquery.js', array(), array('defer')); + + $this->assertEquals(array('media' => 'print'), $container->assets['style']['common']['attributes']); + $this->assertEquals(array('defer'), $container->assets['script']['jquery']['attributes']); + } + + /** + * Test the Asset_Container::bundle method. + * + * @group laravel + */ + public function testBundleMethodCorrectlySetsTheAssetBundle() + { + $container = $this->getContainer(); + + $container->bundle('eloquent'); + + $this->assertEquals('eloquent', $container->bundle); + } + + /** + * Test the Asset_Container::path method. + * + * @group laravel + */ + public function testPathMethodReturnsCorrectPathForABundleAsset() + { + Config::set('application.url', 'http://localhost'); + + $container = $this->getContainer(); + + $container->bundle('eloquent'); + + $this->assertEquals('http://localhost/bundles/eloquent/foo.jpg', $container->path('foo.jpg')); + } + + /** + * Test the Asset_Container::path method. + * + * @group laravel + */ + public function testPathMethodReturnsCorrectPathForAnApplicationAsset() + { + Config::set('application.url', 'http://localhost'); + + $container = $this->getContainer(); + + $this->assertEquals('http://localhost/foo.jpg', $container->path('foo.jpg')); + } + + /** + * Test the Asset_Container::scripts method. + * + * @group laravel + */ + public function testScriptsCanBeRetrieved() + { + $container = $this->getContainer(); + + $container->script('dojo', 'dojo.js', array('jquery-ui')); + $container->script('jquery', 'jquery.js', array('jquery-ui', 'dojo')); + $container->script('jquery-ui', 'jquery-ui.js'); + + $scripts = $container->scripts(); + + $this->assertTrue(strpos($scripts, 'jquery.js') > 0); + $this->assertTrue(strpos($scripts, 'jquery.js') > strpos($scripts, 'jquery-ui.js')); + $this->assertTrue(strpos($scripts, 'dojo.js') > strpos($scripts, 'jquery-ui.js')); + } + + /** + * Test the Asset_Container::styles method. + * + * @group laravel + */ + public function testStylesCanBeRetrieved() + { + $container = $this->getContainer(); + + $container->style('dojo', 'dojo.css', array('jquery-ui'), array('media' => 'print')); + $container->style('jquery', 'jquery.css', array('jquery-ui', 'dojo')); + $container->style('jquery-ui', 'jquery-ui.css'); + + $styles = $container->styles(); + + $this->assertTrue(strpos($styles, 'jquery.css') > 0); + $this->assertTrue(strpos($styles, 'media="print"') > 0); + $this->assertTrue(strpos($styles, 'jquery.css') > strpos($styles, 'jquery-ui.css')); + $this->assertTrue(strpos($styles, 'dojo.css') > strpos($styles, 'jquery-ui.css')); + } + + /** + * Get an asset container instance. + * + * @param string $name + * @return Asset_Container + */ + private function getContainer($name = 'foo') + { + return new Laravel\Asset_Container($name); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/auth.test.php b/laravel/tests/cases/auth.test.php new file mode 100644 index 00000000..32f74805 --- /dev/null +++ b/laravel/tests/cases/auth.test.php @@ -0,0 +1,259 @@ +$user = null; + Session::$instance = null; + Config::set('database.default', 'sqlite'); + } + + /** + * Tear down the test environment. + */ + public function tearDown() + { + $_SERVER['auth.login.stub'] = null; + Cookie::$jar = array(); + Config::$items = array(); + Auth::driver()->$user = null; + Session::$instance = null; + Config::set('database.default', 'mysql'); + } + + /** + * Test the Auth::user method. + * + * @group laravel + */ + public function testUserMethodReturnsCurrentUser() + { + Auth::$user = 'Taylor'; + + $this->assertEquals('Taylor', Auth::user()); + } + + /** + * Test the Auth::check method. + * + * @group laravel + */ + public function testCheckMethodReturnsTrueWhenUserIsSet() + { + $this->assertTrue(AuthUserReturnsDummy::check()); + } + + /** + * Test the Auth::check method. + * + * @group laravel + */ + public function testCheckMethodReturnsFalseWhenNoUserIsSet() + { + $this->assertFalse(AuthUserReturnsNull::check()); + } + + /** + * Test the Auth::guest method. + * + * @group laravel + */ + public function testGuestReturnsTrueWhenNoUserIsSet() + { + $this->assertTrue(AuthUserReturnsNull::guest()); + } + + /** + * Test the Auth::guest method. + * + * @group laravel + */ + public function testGuestReturnsFalseWhenUserIsSet() + { + $this->assertFalse(AuthUserReturnsDummy::guest()); + } + + /** + * Test the Auth::user method. + * + * @group laravel + */ + public function testUserMethodReturnsNullWhenNoUserExistsAndNoRecallerExists() + { + Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver')); + + $this->assertNull(Auth::user()); + } + + /** + * Test the Auth::user method. + * + * @group laravel + */ + public function testUserReturnsUserByID() + { + Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver')); + Session::$instance->session['data'][Auth::user_key] = 1; + + $this->assertEquals('Taylor Otwell', Auth::user()->name); + } + + /** + * Test the Auth::user method. + * + * @group laravel + */ + public function testNullReturnedWhenUserIDNotValidInteger() + { + Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver')); + Session::$instance->session['data'][Auth::user_key] = 'asdlkasd'; + + $this->assertNull(Auth::user()); + } + + /** + * Test the Auth::recall method. + * + * @group laravel + */ + public function testUserCanBeRecalledViaCookie() + { + Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver')); + + $cookie = Crypter::encrypt('1|'.Str::random(40)); + Cookie::forever(Config::get('auth.cookie'), $cookie); + + $this->assertEquals('Taylor Otwell', AuthLoginStub::user()->name); + $this->assertTrue(AuthLoginStub::user() === $_SERVER['auth.login.stub']['user']); + } + + /** + * Test the Auth::attempt method. + * + * @group laravel + */ + public function testAttemptMethodReturnsFalseWhenCredentialsAreInvalid() + { + $this->assertFalse(Auth::attempt('foo', 'foo')); + $this->assertFalse(Auth::attempt('foo', null)); + $this->assertFalse(Auth::attempt(null, null)); + $this->assertFalse(Auth::attempt('taylor', 'password')); + $this->assertFalse(Auth::attempt('taylor', 232)); + } + + /** + * Test the Auth::attempt method. + * + * @group laravel + */ + public function testAttemptReturnsTrueWhenCredentialsAreCorrect() + { + $this->assertTrue(AuthLoginStub::attempt('taylor', 'password1')); + $this->assertEquals('Taylor Otwell', $_SERVER['auth.login.stub']['user']->name); + $this->assertFalse($_SERVER['auth.login.stub']['remember']); + + $this->assertTrue(AuthLoginStub::attempt('taylor', 'password1', true)); + $this->assertEquals('Taylor Otwell', $_SERVER['auth.login.stub']['user']->name); + $this->assertTrue($_SERVER['auth.login.stub']['remember']); + } + + /** + * Test Auth::login method. + * + * @group laravel + */ + public function testLoginMethodStoresUserKeyInSession() + { + Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver')); + + $user = new StdClass; + $user->id = 10; + Auth::login($user); + $this->assertEquals(10, Session::$instance->session['data'][Auth::user_key]); + + Auth::login(5); + $this->assertEquals(5, Session::$instance->session['data'][Auth::user_key]); + } + + /** + * Test the Auth::login method. + * + * @group laravel + */ + public function testLoginStoresRememberCookieWhenNeeded() + { + Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver')); + + // Set the session vars to make sure remember cookie uses them + Config::set('session.path', 'foo'); + Config::set('session.domain', 'bar'); + Config::set('session.secure', true); + + Auth::login(10, true); + $this->assertTrue(isset(Cookie::$jar[Config::get('auth.cookie')])); + + $cookie = Cookie::$jar[Config::get('auth.cookie')]['value']; + $cookie = explode('|', Crypter::decrypt($cookie)); + $this->assertEquals(10, $cookie[0]); + $this->assertEquals('foo', Cookie::$jar[Config::get('auth.cookie')]['path']); + $this->assertEquals('bar', Cookie::$jar[Config::get('auth.cookie')]['domain']); + $this->assertTrue(Cookie::$jar[Config::get('auth.cookie')]['secure']); + } + + /** + * Test the Auth::logout method. + * + * @group laravel + */ + public function testLogoutMethodLogsOutUser() + { + Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver')); + Session::$instance->session['data'][Auth::user_key] = 10; + + Config::set('auth.logout', function($user) { $_SERVER['auth.logout.stub'] = $user; }); + + Auth::$user = 'Taylor'; + Auth::logout(); + + $this->assertEquals('Taylor', $_SERVER['auth.logout.stub']); + $this->assertNull(Auth::$user); + $this->assertFalse(isset(Session::$instance->session['data'][Auth::user_key])); + $this->assertTrue(Cookie::$jar[Config::get('auth.cookie')]['minutes'] < 0); + } + +} + +class AuthUserReturnsNull extends Laravel\Auth { + + public static function user() {} + +} + +class AuthUserReturnsDummy extends Laravel\Auth { + + public static function user() { return 'Taylor'; } + +} + +class AuthLoginStub extends Laravel\Auth { + + public static function login($user, $remember = false) + { + $_SERVER['auth.login.stub'] = compact('user', 'remember'); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/autoloader.test.php b/laravel/tests/cases/autoloader.test.php new file mode 100644 index 00000000..80605447 --- /dev/null +++ b/laravel/tests/cases/autoloader.test.php @@ -0,0 +1,102 @@ + path('app').'models/foo.php', + )); + + $this->assertEquals(path('app').'models/foo.php', Autoloader::$mappings['Foo']); + } + + /** + * Test the Autoloader::alias method. + * + * @group laravel + */ + public function testAliasesCanBeRegistered() + { + Autoloader::alias('Foo\\Bar', 'Foo'); + + $this->assertEquals('Foo\\Bar', Autoloader::$aliases['Foo']); + } + + /** + * Test the Autoloader::directories method. + * + * @group laravel + */ + public function testPsrDirectoriesCanBeRegistered() + { + Autoloader::directories(array( + path('app').'foo'.DS.'bar', + path('app').'foo'.DS.'baz'.DS.DS, + )); + + $this->assertTrue(in_array(path('app').'foo'.DS.'bar'.DS, Autoloader::$directories)); + $this->assertTrue(in_array(path('app').'foo'.DS.'baz'.DS, Autoloader::$directories)); + } + + /** + * Test the Autoloader::namespaces method. + * + * @group laravel + */ + public function testNamespacesCanBeRegistered() + { + Autoloader::namespaces(array( + 'Autoloader_1' => path('bundle').'autoload'.DS.'models', + 'Autoloader_2' => path('bundle').'autoload'.DS.'libraries'.DS.DS, + )); + + $this->assertEquals(path('bundle').'autoload'.DS.'models'.DS, Autoloader::$namespaces['Autoloader_1\\']); + $this->assertEquals(path('bundle').'autoload'.DS.'libraries'.DS, Autoloader::$namespaces['Autoloader_2\\']); + } + + /** + * Test the loading of PSR-0 models and libraries. + * + * @group laravel + */ + public function testPsrLibrariesAndModelsCanBeLoaded() + { + $this->assertInstanceOf('User', new User); + $this->assertInstanceOf('Repositories\\User', new Repositories\User); + } + + /** + * Test the loading of hard-coded classes. + * + * @group laravel + */ + public function testHardcodedClassesCanBeLoaded() + { + Autoloader::map(array( + 'Autoloader_HardCoded' => path('app').'models'.DS.'autoloader.php', + )); + + $this->assertInstanceOf('Autoloader_HardCoded', new Autoloader_HardCoded); + } + + /** + * Test the loading of classes mapped by namespaces. + * + * @group laravel + */ + public function testClassesMappedByNamespaceCanBeLoaded() + { + Autoloader::namespaces(array( + 'Dashboard' => path('bundle').'dashboard'.DS.'models', + )); + + $this->assertInstanceOf('Dashboard\\Repository', new Dashboard\Repository); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/blade.test.php b/laravel/tests/cases/blade.test.php new file mode 100644 index 00000000..70e80b3b --- /dev/null +++ b/laravel/tests/cases/blade.test.php @@ -0,0 +1,63 @@ +assertEquals('', Blade::compile_string($blade1)); + $this->assertEquals('', Blade::compile_string($blade2)); + } + + /** + * Test the compilation of control structures. + * + * @group laravel + */ + public function testControlStructuresAreCreatedCorrectly() + { + $blade1 = "@if (true)\nfoo\n@endif"; + $blade2 = "@if (count(".'$something'.") > 0)\nfoo\n@endif"; + $blade3 = "@if (true)\nfoo\n@elseif (false)\nbar\n@endif"; + $blade4 = "@if (true)\nfoo\n@else\nbar\n@endif"; + + $this->assertEquals("\nfoo\n", Blade::compile_string($blade1)); + $this->assertEquals(" 0): ?>\nfoo\n", Blade::compile_string($blade2)); + $this->assertEquals("\nfoo\n\nbar\n", Blade::compile_string($blade3)); + $this->assertEquals("\nfoo\n\nbar\n", Blade::compile_string($blade4)); + } + + /** + * Test the compilation of yield statements. + * + * @group laravel + */ + public function testYieldsAreCompiledCorrectly() + { + $blade = "@yield('something')"; + + $this->assertEquals("", Blade::compile_string($blade)); + } + + /** + * Test the compilation of section statements. + * + * @group laravel + */ + public function testSectionsAreCompiledCorrectly() + { + $blade = "@section('something')\nfoo\n@endsection"; + + $this->assertEquals("\nfoo\n", Blade::compile_string($blade)); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/bundle.test.php b/laravel/tests/cases/bundle.test.php new file mode 100644 index 00000000..5a107d62 --- /dev/null +++ b/laravel/tests/cases/bundle.test.php @@ -0,0 +1,253 @@ + 'foo-baz')); + $this->assertEquals('foo-baz', Bundle::$bundles['foo-baz']['handles']); + $this->assertFalse(Bundle::$bundles['foo-baz']['auto']); + + Bundle::register('foo-bar', array()); + $this->assertFalse(Bundle::$bundles['foo-baz']['auto']); + $this->assertNull(Bundle::$bundles['foo-bar']['handles']); + + unset(Bundle::$bundles['foo-baz']); + unset(Bundle::$bundles['foo-bar']); + } + + /** + * Test the Bundle::start method. + * + * @group laravel + */ + public function testStartMethodStartsBundle() + { + $_SERVER['bundle.dummy.start'] = 0; + $_SERVER['bundle.dummy.routes'] = 0; + + $_SERVER['started.dummy'] = false; + + Event::listen('laravel.started: dummy', function() + { + $_SERVER['started.dummy'] = true; + }); + + Bundle::register('dummy'); + Bundle::start('dummy'); + + $this->assertTrue($_SERVER['started.dummy']); + $this->assertEquals(1, $_SERVER['bundle.dummy.start']); + $this->assertEquals(1, $_SERVER['bundle.dummy.routes']); + + Bundle::start('dummy'); + + $this->assertEquals(1, $_SERVER['bundle.dummy.start']); + $this->assertEquals(1, $_SERVER['bundle.dummy.routes']); + } + + /** + * Test Bundle::handles method. + * + * @group laravel + */ + public function testHandlesMethodReturnsBundleThatHandlesURI() + { + Bundle::register('foo', array('handles' => 'foo-bar')); + $this->assertEquals('foo', Bundle::handles('foo-bar/admin')); + unset(Bundle::$bundles['foo']); + } + + /** + * Test the Bundle::exist method. + * + * @group laravel + */ + public function testExistMethodIndicatesIfBundleExist() + { + $this->assertTrue(Bundle::exists('dashboard')); + $this->assertFalse(Bundle::exists('foo')); + } + + /** + * Test the Bundle::started method. + * + * @group laravel + */ + public function testStartedMethodIndicatesIfBundleIsStarted() + { + Bundle::register('dummy'); + Bundle::start('dummy'); + $this->assertTrue(Bundle::started('dummy')); + } + + /** + * Test the Bundle::prefix method. + * + * @group laravel + */ + public function testPrefixMethodReturnsCorrectPrefix() + { + $this->assertEquals('dummy::', Bundle::prefix('dummy')); + $this->assertEquals('', Bundle::prefix(DEFAULT_BUNDLE)); + } + + /** + * Test the Bundle::class_prefix method. + * + * @group laravel + */ + public function testClassPrefixMethodReturnsProperClassPrefixForBundle() + { + $this->assertEquals('Dummy_', Bundle::class_prefix('dummy')); + $this->assertEquals('', Bundle::class_prefix(DEFAULT_BUNDLE)); + } + + /** + * Test the Bundle::path method. + * + * @group laravel + */ + public function testPathMethodReturnsCorrectPath() + { + $this->assertEquals(path('app'), Bundle::path(null)); + $this->assertEquals(path('app'), Bundle::path(DEFAULT_BUNDLE)); + $this->assertEquals(path('bundle').'dashboard'.DS, Bundle::path('dashboard')); + } + + /** + * Test the Bundle::asset method. + * + * @group laravel + */ + public function testAssetPathReturnsPathToBundlesAssets() + { + Config::set('application.url', 'http://localhost'); + + $this->assertEquals('http://localhost/bundles/dashboard/', Bundle::assets('dashboard')); + $this->assertEquals('http://localhost/', Bundle::assets(DEFAULT_BUNDLE)); + + Config::set('application.url', ''); + } + + /** + * Test the Bundle::name method. + * + * @group laravel + */ + public function testBundleNameCanBeRetrievedFromIdentifier() + { + $this->assertEquals(DEFAULT_BUNDLE, Bundle::name('something')); + $this->assertEquals(DEFAULT_BUNDLE, Bundle::name('something.else')); + $this->assertEquals('bundle', Bundle::name('bundle::something.else')); + } + + /** + * Test the Bundle::element method. + * + * @group laravel + */ + public function testElementCanBeRetrievedFromIdentifier() + { + $this->assertEquals('something', Bundle::element('something')); + $this->assertEquals('something.else', Bundle::element('something.else')); + $this->assertEquals('something.else', Bundle::element('bundle::something.else')); + } + + /** + * Test the Bundle::identifier method. + * + * @group laravel + */ + public function testIdentifierCanBeConstructed() + { + $this->assertEquals('something.else', Bundle::identifier(DEFAULT_BUNDLE, 'something.else')); + $this->assertEquals('dashboard::something', Bundle::identifier('dashboard', 'something')); + $this->assertEquals('dashboard::something.else', Bundle::identifier('dashboard', 'something.else')); + } + + /** + * Test the Bundle::resolve method. + * + * @group laravel + */ + public function testBundleNamesCanBeResolved() + { + $this->assertEquals(DEFAULT_BUNDLE, Bundle::resolve('foo')); + $this->assertEquals('dashboard', Bundle::resolve('dashboard')); + } + + /** + * Test the Bundle::parse method. + * + * @group laravel + */ + public function testParseMethodReturnsElementAndIdentifier() + { + $this->assertEquals(array('application', 'something'), Bundle::parse('something')); + $this->assertEquals(array('application', 'something.else'), Bundle::parse('something.else')); + $this->assertEquals(array('dashboard', 'something'), Bundle::parse('dashboard::something')); + $this->assertEquals(array('dashboard', 'something.else'), Bundle::parse('dashboard::something.else')); + } + + /** + * Test the Bundle::get method. + * + * @group laravel + */ + public function testOptionMethodReturnsBundleOption() + { + $this->assertFalse(Bundle::option('dashboard', 'auto')); + $this->assertEquals('dashboard', Bundle::option('dashboard', 'location')); + } + + /** + * Test the Bundle::all method. + * + * @group laravel + */ + public function testAllMethodReturnsBundleArray() + { + Bundle::register('foo'); + $this->assertEquals(Bundle::$bundles, Bundle::all()); + unset(Bundle::$bundles['foo']); + } + + /** + * Test the Bundle::names method. + * + * @group laravel + */ + public function testNamesMethodReturnsBundleNames() + { + Bundle::register('foo'); + $this->assertEquals(array('dashboard', 'dummy', 'foo'), Bundle::names()); + unset(Bundle::$bundles['foo']); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/config.test.php b/laravel/tests/cases/config.test.php new file mode 100644 index 00000000..573b8cff --- /dev/null +++ b/laravel/tests/cases/config.test.php @@ -0,0 +1,79 @@ +assertEquals('UTF-8', Config::get('application.encoding')); + $this->assertEquals('mysql', Config::get('database.connections.mysql.driver')); + $this->assertEquals('dashboard', Config::get('dashboard::meta.bundle')); + } + + /** + * Test the Config::has method. + * + * @group laravel + */ + public function testHasMethodIndicatesIfConfigItemExists() + { + $this->assertFalse(Config::has('application.foo')); + $this->assertTrue(Config::has('application.encoding')); + } + + /** + * Test the Config::set method. + * + * @group laravel + */ + public function testConfigItemsCanBeSet() + { + Config::set('application.encoding', 'foo'); + Config::set('dashboard::meta.bundle', 'bar'); + + $this->assertEquals('foo', Config::get('application.encoding')); + $this->assertEquals('bar', Config::get('dashboard::meta.bundle')); + } + + /** + * Test that environment configurations are loaded correctly. + * + * @group laravel + */ + public function testEnvironmentConfigsOverrideNormalConfigurations() + { + $_SERVER['LARAVEL_ENV'] = 'local'; + + $this->assertEquals('sqlite', Config::get('database.default')); + + unset($_SERVER['LARAVEL_ENV']); + } + + /** + * Test that items can be set after the entire file has already been loaded. + * + * @group laravel + */ + public function testItemsCanBeSetAfterEntireFileIsLoaded() + { + Config::get('application'); + Config::set('application.key', 'taylor'); + $application = Config::get('application'); + + $this->assertEquals('taylor', $application['key']); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/controller.test.php b/laravel/tests/cases/controller.test.php new file mode 100644 index 00000000..9147bad9 --- /dev/null +++ b/laravel/tests/cases/controller.test.php @@ -0,0 +1,264 @@ +assertEquals('action_index', Controller::call('auth@index')->content); + $this->assertEquals('Admin_Panel_Index', Controller::call('admin.panel@index')->content); + $this->assertEquals('Taylor', Controller::call('auth@profile', array('Taylor'))->content); + $this->assertEquals('Dashboard_Panel_Index', Controller::call('dashboard::panel@index')->content); + } + + /** + * Test basic controller filters are called. + * + * @group laravel + */ + public function testAssignedBeforeFiltersAreRun() + { + $_SERVER['test-all-after'] = false; + $_SERVER['test-all-before'] = false; + + Controller::call('filter@index'); + + $this->assertTrue($_SERVER['test-all-after']); + $this->assertTrue($_SERVER['test-all-before']); + } + + /** + * Test that "only" filters only apply to their assigned methods. + * + * @group laravel + */ + public function testOnlyFiltersOnlyApplyToTheirAssignedMethods() + { + $_SERVER['test-profile-before'] = false; + + Controller::call('filter@index'); + + $this->assertFalse($_SERVER['test-profile-before']); + + Controller::call('filter@profile'); + + $this->assertTrue($_SERVER['test-profile-before']); + } + + /** + * Test that "except" filters only apply to the excluded methods. + * + * @group laravel + */ + public function testExceptFiltersOnlyApplyToTheExlucdedMethods() + { + $_SERVER['test-except'] = false; + + Controller::call('filter@index'); + Controller::call('filter@profile'); + + $this->assertFalse($_SERVER['test-except']); + + Controller::call('filter@show'); + + $this->assertTrue($_SERVER['test-except']); + } + + /** + * Test that filters can be constrained by the request method. + * + * @group laravel + */ + public function testFiltersCanBeConstrainedByRequestMethod() + { + $_SERVER['test-on-post'] = false; + + $_SERVER['REQUEST_METHOD'] = 'GET'; + Controller::call('filter@index'); + + $this->assertFalse($_SERVER['test-on-post']); + + $_SERVER['REQUEST_METHOD'] = 'POST'; + Controller::call('filter@index'); + + $this->assertTrue($_SERVER['test-on-post']); + + $_SERVER['test-on-get-put'] = false; + + $_SERVER['REQUEST_METHOD'] = 'POST'; + Controller::call('filter@index'); + + $this->assertFalse($_SERVER['test-on-get-put']); + + $_SERVER['REQUEST_METHOD'] = 'PUT'; + Controller::call('filter@index'); + + $this->assertTrue($_SERVER['test-on-get-put']); + } + + public function testGlobalBeforeFilterIsNotCalledByController() + { + $_SERVER['before'] = false; + $_SERVER['after'] = false; + + Controller::call('auth@index'); + + $this->assertFalse($_SERVER['before']); + $this->assertFalse($_SERVER['after']); + } + + /** + * Test that before filters can override the controller response. + * + * @group laravel + */ + public function testBeforeFiltersCanOverrideResponses() + { + $this->assertEquals('Filtered!', Controller::call('filter@login')->content); + } + + /** + * Test that after filters do not affect the response. + * + * @group laravel + */ + public function testAfterFiltersDoNotAffectControllerResponse() + { + $this->assertEquals('action_logout', Controller::call('filter@logout')->content); + } + + /** + * Test that filter parameters are passed to the filter. + * + * @group laravel + */ + public function testFilterParametersArePassedToTheFilter() + { + $this->assertEquals('12', Controller::call('filter@edit')->content); + } + + /** + * Test that multiple filters can be assigned to a single method. + * + * @group laravel + */ + public function testMultipleFiltersCanBeAssignedToAnAction() + { + $_SERVER['test-multi-1'] = false; + $_SERVER['test-multi-2'] = false; + + Controller::call('filter@save'); + + $this->assertTrue($_SERVER['test-multi-1']); + $this->assertTrue($_SERVER['test-multi-2']); + } + + /** + * Test Restful controllers respond by request method. + * + * @group laravel + */ + public function testRestfulControllersRespondWithRestfulMethods() + { + $_SERVER['REQUEST_METHOD'] = 'GET'; + + $this->assertEquals('get_index', Controller::call('restful@index')->content); + + $_SERVER['REQUEST_METHOD'] = 'PUT'; + + $this->assertEquals(404, Controller::call('restful@index')->status); + + $_SERVER['REQUEST_METHOD'] = 'POST'; + + $this->assertEquals('post_index', Controller::call('restful@index')->content); + } + + /** + * Test that the template is returned by template controllers. + * + * @group laravel + */ + public function testTemplateControllersReturnTheTemplate() + { + $response = Controller::call('template.basic@index'); + + $home = file_get_contents(path('app').'views/home/index.php'); + + $this->assertEquals($home, $response->content); + } + + /** + * Test that controller templates can be named views. + * + * @group laravel + */ + public function testControllerTemplatesCanBeNamedViews() + { + View::name('home.index', 'home'); + + $response = Controller::call('template.named@index'); + + $home = file_get_contents(path('app').'views/home/index.php'); + + $this->assertEquals($home, $response->content); + + View::$names = array(); + } + + /** + * Test that the "layout" method is called on the controller. + * + * @group laravel + */ + public function testTheTemplateCanBeOverriden() + { + $this->assertEquals('Layout', Controller::call('template.override@index')->content); + } + + /** + * Test the Controller::resolve method. + * + * @group laravel + */ + public function testResolveMethodChecksTheIoCContainer() + { + IoC::register('controller: home', function() + { + require_once path('app').'controllers/home.php'; + + $controller = new Home_Controller; + + $controller->foo = 'bar'; + + return $controller; + }); + + $controller = Controller::resolve(DEFAULT_BUNDLE, 'home'); + + $this->assertEquals('bar', $controller->foo); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/cookie.test.php b/laravel/tests/cases/cookie.test.php new file mode 100644 index 00000000..fb8faf65 --- /dev/null +++ b/laravel/tests/cases/cookie.test.php @@ -0,0 +1,94 @@ + 'bar'); + $this->assertTrue(Cookie::has('foo')); + $this->assertFalse(Cookie::has('bar')); + + Cookie::put('baz', 'foo'); + $this->assertTrue(Cookie::has('baz')); + } + + /** + * Test the Cookie::get method. + * + * @group laravel + */ + public function testGetMethodCanReturnValueOfCookies() + { + Cookie::$jar['foo'] = array('value' => 'bar'); + $this->assertEquals('bar', Cookie::get('foo')); + + Cookie::put('bar', 'baz'); + $this->assertEquals('baz', Cookie::get('bar')); + } + + /** + * Test Cookie::forever method. + * + * @group laravel + */ + public function testForeverShouldUseATonOfMinutes() + { + Cookie::forever('foo', 'bar'); + $this->assertEquals('bar', Cookie::$jar['foo']['value']); + $this->assertEquals(525600, Cookie::$jar['foo']['minutes']); + + Cookie::forever('bar', 'baz', 'path', 'domain', true); + $this->assertEquals('path', Cookie::$jar['bar']['path']); + $this->assertEquals('domain', Cookie::$jar['bar']['domain']); + $this->assertTrue(Cookie::$jar['bar']['secure']); + } + + /** + * Test the Cookie::forget method. + * + * @group laravel + */ + public function testForgetSetsCookieWithExpiration() + { + Cookie::forget('bar', 'path', 'domain', true); + $this->assertEquals(-2000, Cookie::$jar['bar']['minutes']); + $this->assertEquals('path', Cookie::$jar['bar']['path']); + $this->assertEquals('domain', Cookie::$jar['bar']['domain']); + $this->assertTrue(Cookie::$jar['bar']['secure']); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/database.test.php b/laravel/tests/cases/database.test.php new file mode 100644 index 00000000..84b1faaf --- /dev/null +++ b/laravel/tests/cases/database.test.php @@ -0,0 +1,74 @@ +assertTrue(isset(DB::$connections[Config::get('database.default')])); + + $connection = DatabaseConnectStub::connection('mysql'); + $this->assertTrue(isset(DB::$connections['mysql'])); + $this->assertEquals(DB::$connections['mysql']->pdo->laravel_config, Config::get('database.connections.mysql')); + } + + /** + * Test the DB::profile method. + * + * @group laravel + */ + public function testProfileMethodReturnsQueries() + { + Laravel\Database\Connection::$queries = array('Taylor'); + $this->assertEquals(array('Taylor'), DB::profile()); + Laravel\Database\Connection::$queries = array(); + } + + /** + * Test the __callStatic method. + * + * @group laravel + */ + public function testConnectionMethodsCanBeCalledStaticly() + { + $this->assertEquals('sqlite', DB::driver()); + } + +} + +class DatabaseConnectStub extends Laravel\Database { + + protected static function connect($config) { return new PDOStub($config); } + +} + +class PDOStub extends PDO { + + public $laravel_config; + + public function __construct($config) { $this->laravel_config = $config; } + + public function foo() { return 'foo'; } + +} \ No newline at end of file diff --git a/laravel/tests/cases/event.test.php b/laravel/tests/cases/event.test.php new file mode 100644 index 00000000..52063833 --- /dev/null +++ b/laravel/tests/cases/event.test.php @@ -0,0 +1,43 @@ +assertEquals(1, $responses[0]); + $this->assertEquals(2, $responses[1]); + } + + /** + * Test parameters can be passed to event listeners. + * + * @group laravel + */ + public function testParametersCanBePassedToEvents() + { + Event::listen('test.event', function($var) { return $var; }); + + $responses = Event::fire('test.event', array('Taylor')); + + $this->assertEquals('Taylor', $responses[0]); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/fluent.test.php b/laravel/tests/cases/fluent.test.php new file mode 100644 index 00000000..87c0e0db --- /dev/null +++ b/laravel/tests/cases/fluent.test.php @@ -0,0 +1,50 @@ + 'Taylor', 'age' => 25); + + $fluent = new Fluent($array); + + $this->assertEquals($array, $fluent->attributes); + } + + /** + * Test the Fluent::get method. + * + * @group laravel + */ + public function testGetMethodReturnsAttribute() + { + $fluent = new Fluent(array('name' => 'Taylor')); + + $this->assertEquals('Taylor', $fluent->get('name')); + $this->assertEquals('Default', $fluent->get('foo', 'Default')); + $this->assertEquals('Taylor', $fluent->name); + $this->assertNull($fluent->foo); + } + + public function testMagicMethodsCanBeUsedToSetAttributes() + { + $fluent = new Fluent; + + $fluent->name = 'Taylor'; + $fluent->developer(); + $fluent->age(25); + + $this->assertEquals('Taylor', $fluent->name); + $this->assertTrue($fluent->developer); + $this->assertEquals(25, $fluent->age); + $this->assertInstanceOf('Laravel\\Fluent', $fluent->programmer()); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/hash.test.php b/laravel/tests/cases/hash.test.php new file mode 100644 index 00000000..4dca2713 --- /dev/null +++ b/laravel/tests/cases/hash.test.php @@ -0,0 +1,37 @@ +assertTrue(strlen(Hash::make('taylor')) == 60); + } + + /** + * Test the Hash::check method. + * + * @group laravel + */ + public function testHashCheckFailsWhenNotMatching() + { + $hash = Hash::make('taylor'); + + $this->assertFalse(Hash::check('foo', $hash)); + } + + /** + * Test the Hash::check method. + * + * @group laravel + */ + public function testHashCheckPassesWhenMatches() + { + $this->assertTrue(Hash::check('taylor', Hash::make('taylor'))); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/input.test.php b/laravel/tests/cases/input.test.php new file mode 100644 index 00000000..76172c1e --- /dev/null +++ b/laravel/tests/cases/input.test.php @@ -0,0 +1,174 @@ +request->add(array('name' => 'Taylor')); + + $_FILES = array('age' => 25); + + $this->assertEquals(Input::all(), array('name' => 'Taylor', 'age' => 25)); + } + + /** + * Test the Input::has method. + * + * @group laravel + */ + public function testHasMethodIndicatesTheExistenceOfInput() + { + $this->assertFalse(Input::has('foo')); + + Request::foundation()->request->add(array('name' => 'Taylor')); + + $this->assertTrue(Input::has('name')); + } + + /** + * Test the Input::get method. + * + * @group laravel + */ + public function testGetMethodReturnsInputValue() + { + Request::foundation()->request->add(array('name' => 'Taylor')); + + $this->assertEquals('Taylor', Input::get('name')); + $this->assertEquals('Default', Input::get('foo', 'Default')); + } + + /** + * Test the Input::only method. + * + * @group laravel + */ + public function testOnlyMethodReturnsSubsetOfInput() + { + Request::foundation()->request->add(array('name' => 'Taylor', 'age' => 25)); + + $this->assertEquals(array('name' => 'Taylor'), Input::only(array('name'))); + } + + /** + * Test the Input::except method. + * + * @group laravel + */ + public function testExceptMethodReturnsSubsetOfInput() + { + Request::foundation()->request->add(array('name' => 'Taylor', 'age' => 25)); + + $this->assertEquals(array('age' => 25), Input::except(array('name'))); + } + + /** + * Test the Input::old method. + * + * @group laravel + */ + public function testOldInputCanBeRetrievedFromSession() + { + $this->setSession(); + + Session::$instance->session['data']['laravel_old_input'] = array('name' => 'Taylor'); + + $this->assertNull(Input::old('foo')); + $this->assertTrue(Input::had('name')); + $this->assertFalse(Input::had('foo')); + $this->assertEquals('Taylor', Input::old('name')); + } + + /** + * Test the Input::file method. + * + * @group laravel + */ + public function testFileMethodReturnsFromFileArray() + { + $_FILES['foo'] = array('name' => 'Taylor', 'size' => 100); + + $this->assertEquals('Taylor', Input::file('foo.name')); + $this->assertEquals(array('name' => 'Taylor', 'size' => 100), Input::file('foo')); + } + + /** + * Test the Input::flash method. + * + * @group laravel + */ + public function testFlashMethodFlashesInputToSession() + { + $this->setSession(); + + $input = array('name' => 'Taylor', 'age' => 25); + Request::foundation()->request->add($input); + + Input::flash(); + + $this->assertEquals($input, Session::$instance->session['data'][':new:']['laravel_old_input']); + + Input::flash('only', array('name')); + + $this->assertEquals(array('name' => 'Taylor'), Session::$instance->session['data'][':new:']['laravel_old_input']); + + Input::flash('except', array('name')); + + $this->assertEquals(array('age' => 25), Session::$instance->session['data'][':new:']['laravel_old_input']); + } + + /** + * Test the Input::flush method. + * + * @group laravel + */ + public function testFlushMethodClearsFlashedInput() + { + $this->setSession(); + + $input = array('name' => 'Taylor'); + Request::foundation()->request->add($input); + + Input::flash(); + + $this->assertEquals($input, Session::$instance->session['data'][':new:']['laravel_old_input']); + + Input::flush(); + + $this->assertEquals(array(), Session::$instance->session['data'][':new:']['laravel_old_input']); + } + + /** + * Set the session payload instance. + */ + protected function setSession() + { + $driver = $this->getMock('Laravel\\Session\\Drivers\\Driver'); + + Session::$instance = new Laravel\Session\Payload($driver); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/ioc.test.php b/laravel/tests/cases/ioc.test.php new file mode 100644 index 00000000..56918337 --- /dev/null +++ b/laravel/tests/cases/ioc.test.php @@ -0,0 +1,74 @@ +assertEquals('Taylor', IoC::resolve('foo')); + } + + /** + * Test that singletons are created once. + * + * @group laravel + */ + public function testSingletonsAreCreatedOnce() + { + IoC::singleton('foo', function() + { + return new StdClass; + }); + + $object = IoC::resolve('foo'); + + $this->assertTrue($object === IoC::resolve('foo')); + } + + /** + * Test the IoC::instance method. + * + * @group laravel + */ + public function testInstancesAreReturnedBySingleton() + { + $object = new StdClass; + + IoC::instance('bar', $object); + + $this->assertTrue($object === IoC::resolve('bar')); + } + + /** + * Test the IoC::registered method. + */ + public function testRegisteredMethodIndicatesIfRegistered() + { + IoC::register('foo', function() {}); + + $this->assertTrue(IoC::registered('foo')); + $this->assertFalse(IoC::registered('baz')); + } + + /** + * Test the IoC::controller method. + * + * @group laravel + */ + public function testControllerMethodRegistersAController() + { + IoC::register('controller: ioc.test', function() {}); + + $this->assertTrue(IoC::registered('controller: ioc.test')); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/lang.test.php b/laravel/tests/cases/lang.test.php new file mode 100644 index 00000000..74640ccd --- /dev/null +++ b/laravel/tests/cases/lang.test.php @@ -0,0 +1,68 @@ +assertEquals($validation['required'], Lang::line('validation.required')->get()); + $this->assertEquals('Taylor', Lang::line('validation.foo')->get(null, 'Taylor')); + } + + /** + * Test the Lang::line method. + * + * @group laravel + */ + public function testGetMethodCanGetLinesForAGivenLanguage() + { + $validation = require path('app').'language/sp/validation.php'; + + $this->assertEquals($validation['required'], Lang::line('validation.required')->get('sp')); + } + + /** + * Test the __toString method. + * + * @group laravel + */ + public function testLineCanBeCastAsString() + { + $validation = require path('app').'language/en/validation.php'; + + $this->assertEquals($validation['required'], (string) Lang::line('validation.required')); + } + + /** + * Test that string replacements are made on lines. + * + * @group laravel + */ + public function testReplacementsAreMadeOnLines() + { + $validation = require path('app').'language/en/validation.php'; + + $line = str_replace(':attribute', 'e-mail', $validation['required']); + + $this->assertEquals($line, Lang::line('validation.required', array('attribute' => 'e-mail'))->get()); + } + + /** + * Test the Lang::has method. + * + * @group laravel + */ + public function testHasMethodIndicatesIfLangaugeLineExists() + { + $this->assertTrue(Lang::has('validation')); + $this->assertTrue(Lang::has('validation.required')); + $this->assertFalse(Lang::has('validation.foo')); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/messages.test.php b/laravel/tests/cases/messages.test.php new file mode 100644 index 00000000..f007ecb7 --- /dev/null +++ b/laravel/tests/cases/messages.test.php @@ -0,0 +1,115 @@ +messages = new Laravel\Messages; + } + + /** + * Test the Messages::add method. + * + * @group laravel + */ + public function testAddingMessagesDoesNotCreateDuplicateMessages() + { + $this->messages->add('email', 'test'); + $this->messages->add('email', 'test'); + $this->assertCount(1, $this->messages->messages); + } + + /** + * Test the Messages::add method. + * + * @group laravel + */ + public function testAddMethodPutsMessageInMessagesArray() + { + $this->messages->add('email', 'test'); + $this->assertArrayHasKey('email', $this->messages->messages); + $this->assertEquals('test', $this->messages->messages['email'][0]); + } + + /** + * Test the Messages::has method. + * + * @group laravel + */ + public function testHasMethodReturnsTrue() + { + $this->messages->add('email', 'test'); + $this->assertTrue($this->messages->has('email')); + } + + /** + * Test the Messages::has method. + * + * @group laravel + */ + public function testHasMethodReturnsFalse() + { + $this->assertFalse($this->messages->has('something')); + } + + /** + * Test the Messages::first method. + * + * @group laravel + */ + public function testFirstMethodReturnsSingleString() + { + $this->messages->add('email', 'test'); + $this->assertEquals('test', $this->messages->first('email')); + $this->assertEquals('', $this->messages->first('something')); + } + + /** + * Test the Messages::get method. + * + * @group laravel + */ + public function testGetMethodReturnsAllMessagesForAttribute() + { + $messages = array('email' => array('something', 'else')); + $this->messages->messages = $messages; + $this->assertEquals(array('something', 'else'), $this->messages->get('email')); + } + + /** + * Test the Messages::all method. + * + * @group laravel + */ + public function testAllMethodReturnsAllErrorMessages() + { + $messages = array('email' => array('something', 'else'), 'name' => array('foo')); + $this->messages->messages = $messages; + $this->assertEquals(array('something', 'else', 'foo'), $this->messages->all()); + } + + /** + * Test the Messages::get method. + * + * @group laravel + */ + public function testMessagesRespectFormat() + { + $this->messages->add('email', 'test'); + $this->assertEquals('

test

', $this->messages->first('email', '

:message

')); + $this->assertEquals(array('

test

'), $this->messages->get('email', '

:message

')); + $this->assertEquals(array('

test

'), $this->messages->all('

:message

')); + } + + +} \ No newline at end of file diff --git a/laravel/tests/cases/query.test.php b/laravel/tests/cases/query.test.php new file mode 100644 index 00000000..17279150 --- /dev/null +++ b/laravel/tests/cases/query.test.php @@ -0,0 +1,48 @@ +assertEquals('taylor@example.com', $this->query()->find(1)->email); + } + + /** + * Test the select method. + * + * @group laravel + */ + public function testSelectMethodLimitsColumns() + { + $result = $this->query()->select(array('email'))->first(); + + $this->assertTrue(isset($result->email)); + $this->assertFalse(isset($result->name)); + } + + /** + * Test the raw_where method. + * + * @group laravel + */ + public function testRawWhereCanBeUsed() + { + + } + + /** + * Get the query instance for the test case. + * + * @return Query + */ + protected function query() + { + return DB::table('query_test'); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/redirect.test.php b/laravel/tests/cases/redirect.test.php new file mode 100644 index 00000000..2e6fb193 --- /dev/null +++ b/laravel/tests/cases/redirect.test.php @@ -0,0 +1,143 @@ +assertEquals(302, $redirect->status); + $this->assertEquals('http://localhost/user/profile', $redirect->headers['location']); + + $redirect = Redirect::to('user/profile', 301, true); + + $this->assertEquals(301, $redirect->status); + $this->assertEquals('https://localhost/user/profile', $redirect->headers['location']); + + $redirect = Redirect::to_secure('user/profile', 301); + + $this->assertEquals(301, $redirect->status); + $this->assertEquals('https://localhost/user/profile', $redirect->headers['location']); + } + + /** + * Test the Redirect::to_route method. + * + * @group laravel + */ + public function testRedirectsCanBeGeneratedForNamedRoutes() + { + Route::get('redirect', array('as' => 'redirect')); + Route::get('redirect/(:any)/(:any)', array('as' => 'redirect-2')); + Route::get('secure/redirect', array('https' => true, 'as' => 'redirect-3')); + + $this->assertEquals(301, Redirect::to_route('redirect', array(), 301, true)->status); + $this->assertEquals('http://localhost/redirect', Redirect::to_route('redirect')->headers['location']); + $this->assertEquals('https://localhost/secure/redirect', Redirect::to_route('redirect-3', array(), 302)->headers['location']); + $this->assertEquals('http://localhost/redirect/1/2', Redirect::to_route('redirect-2', array('1', '2'))->headers['location']); + } + + /** + * Test the Redirect::with method. + * + * @group laravel + */ + public function testWithMethodFlashesItemToSession() + { + $this->setSession(); + + $redirect = Redirect::to('')->with('name', 'Taylor'); + + $this->assertEquals('Taylor', Session::$instance->session['data'][':new:']['name']); + } + + /** + * Test the Redirect::with_input function. + * + * @group laravel + */ + public function testWithInputMethodFlashesInputToTheSession() + { + $this->setSession(); + + $input = array('name' => 'Taylor', 'age' => 25); + Request::foundation()->request->add($input); + + $redirect = Redirect::to('')->with_input(); + + $this->assertEquals($input, Session::$instance->session['data'][':new:']['laravel_old_input']); + + $redirect = Redirect::to('')->with_input('only', array('name')); + + $this->assertEquals(array('name' => 'Taylor'), Session::$instance->session['data'][':new:']['laravel_old_input']); + + $redirect = Redirect::to('')->with_input('except', array('name')); + + $this->assertEquals(array('age' => 25), Session::$instance->session['data'][':new:']['laravel_old_input']); + } + + /** + * Test the Redirect::with_errors method. + * + * @group laravel + */ + public function testWithErrorsFlashesErrorsToTheSession() + { + $this->setSession(); + + Redirect::to('')->with_errors(array('name' => 'Taylor')); + + $this->assertEquals(array('name' => 'Taylor'), Session::$instance->session['data'][':new:']['errors']); + + $validator = Validator::make(array(), array()); + $validator->errors = array('name' => 'Taylor'); + + Redirect::to('')->with_errors($validator); + + $this->assertEquals(array('name' => 'Taylor'), Session::$instance->session['data'][':new:']['errors']); + } + + /** + * Set the session payload instance. + */ + protected function setSession() + { + $driver = $this->getMock('Laravel\\Session\\Drivers\\Driver'); + + Session::$instance = new Laravel\Session\Payload($driver); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/request.test.php b/laravel/tests/cases/request.test.php new file mode 100644 index 00000000..d3e6b479 --- /dev/null +++ b/laravel/tests/cases/request.test.php @@ -0,0 +1,147 @@ +assertEquals('POST', Request::method()); + + $_POST[Request::spoofer] = 'PUT'; + + $this->assertEquals('PUT', Request::method()); + } + + /** + * Test the Request::server method. + * + * @group laravel + */ + public function testServerMethodReturnsFromServerArray() + { + $_SERVER = array('TEST' => 'something', 'USER' => array('NAME' => 'taylor')); + + $this->assertEquals('something', Request::server('test')); + $this->assertEquals('taylor', Request::server('user.name')); + } + + /** + * Test the Request::ip method. + * + * @group laravel + */ + public function testIPMethodReturnsClientIPAddress() + { + $_SERVER['REMOTE_ADDR'] = 'something'; + $this->assertEquals('something', Request::ip()); + + $_SERVER['HTTP_CLIENT_IP'] = 'something'; + $this->assertEquals('something', Request::ip()); + + $_SERVER['HTTP_X_FORWARDED_FOR'] = 'something'; + $this->assertEquals('something', Request::ip()); + + $_SERVER = array(); + $this->assertEquals('0.0.0.0', Request::ip()); + } + + /** + * Test the Request::protocol method. + * + * @group laravel + */ + public function testProtocolMethodReturnsProtocol() + { + $_SERVER['SERVER_PROTOCOL'] = 'taylor'; + $this->assertEquals('taylor', Request::protocol()); + + unset($_SERVER['SERVER_PROTOCOL']); + $this->assertEquals('HTTP/1.1', Request::protocol()); + } + + /** + * Test the Request::secure method. + * + * @group laravel + */ + public function testSecureMethodsIndicatesIfHTTPS() + { + $_SERVER['HTTPS'] = 'on'; + + $this->assertTrue(Request::secure()); + + $_SERVER['HTTPS'] = 'off'; + + $this->assertFalse(Request::secure()); + } + + /** + * Test the Request::ajax method. + * + * @group laravel + */ + public function testAjaxMethodIndicatesWhenAjax() + { + $this->assertFalse(Request::ajax()); + + $_SERVER['HTTP_X_REQUESTED_WITH'] = 'xmlhttprequest'; + + $this->assertTrue(Request::ajax()); + } + + /** + * Test the Request::forged method. + * + * @group laravel + */ + public function testForgedMethodIndicatesIfRequestWasForged() + { + Session::$instance = new SessionPayloadTokenStub; + + $input = array(Session::csrf_token => 'Foo'); + Request::foundation()->request->add($input); + + $this->assertTrue(Request::forged()); + + $input = array(Session::csrf_token => 'Taylor'); + Request::foundation()->request->add($input); + + $this->assertFalse(Request::forged()); + } + + /** + * Test the Request::route method. + * + * @group laravel + */ + public function testRouteMethodReturnsStaticRoute() + { + Request::$route = 'Taylor'; + + $this->assertEquals('Taylor', Request::route()); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/response.test.php b/laravel/tests/cases/response.test.php new file mode 100644 index 00000000..5907eebd --- /dev/null +++ b/laravel/tests/cases/response.test.php @@ -0,0 +1,88 @@ + 'baz')); + + $this->assertEquals('foo', $response->content); + $this->assertEquals(201, $response->status); + $this->assertEquals(array('bar' => 'baz'), $response->headers); + } + + /** + * Test the Response::view method. + * + * @group laravel + */ + public function testViewMethodSetsContentToView() + { + $response = Response::view('home.index', array('name' => 'Taylor')); + + $this->assertEquals('home.index', $response->content->view); + $this->assertEquals('Taylor', $response->content->data['name']); + } + + /** + * Test the Response::error method. + * + * @group laravel + */ + public function testErrorMethodSetsContentToErrorView() + { + $response = Response::error('404', array('name' => 'Taylor')); + + $this->assertEquals(404, $response->status); + $this->assertEquals('error.404', $response->content->view); + $this->assertEquals('Taylor', $response->content->data['name']); + } + + /** + * Test the Response::prepare method. + * + * @group laravel + */ + public function testPrepareMethodCreatesAResponseInstanceFromGivenValue() + { + $response = Response::prepare('Taylor'); + + $this->assertInstanceOf('Laravel\\Response', $response); + $this->assertEquals('Taylor', $response->content); + + $response = Response::prepare(new Response('Taylor')); + + $this->assertInstanceOf('Laravel\\Response', $response); + $this->assertEquals('Taylor', $response->content); + } + + /** + * Test the Response::header method. + * + * @group laravel + */ + public function testHeaderMethodSetsValueInHeaderArray() + { + $response = Response::make('')->header('foo', 'bar'); + + $this->assertEquals('bar', $response->headers['foo']); + } + + /** + * Test the Response::status method. + * + * @group laravel + */ + public function testStatusMethodSetsStatusCode() + { + $response = Response::make('')->status(404); + + $this->assertEquals(404, $response->status); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/route.test.php b/laravel/tests/cases/route.test.php new file mode 100644 index 00000000..48919135 --- /dev/null +++ b/laravel/tests/cases/route.test.php @@ -0,0 +1,179 @@ + 'profile')); + $this->assertTrue($route->is('profile')); + $this->assertFalse($route->is('something')); + } + + /** + * Test the basic execution of a route. + * + * @group laravel + */ + public function testBasicRoutesCanBeExecutedProperly() + { + $route = new Route('GET', '', array(function() { return 'Route!'; })); + + $this->assertEquals('Route!', $route->call()->content); + $this->assertInstanceOf('Laravel\\Response', $route->call()); + } + + /** + * Test that route parameters are passed into the handlers. + * + * @group laravel + */ + public function testRouteParametersArePassedIntoTheHandler() + { + $route = new Route('GET', '', array(function($var) { return $var; }), array('Taylor')); + + $this->assertEquals('Taylor', $route->call()->content); + $this->assertInstanceOf('Laravel\\Response', $route->call()); + } + + /** + * Test that calling a route calls the global before and after filters. + * + * @group laravel + */ + public function testCallingARouteCallsTheBeforeAndAfterFilters() + { + $route = new Route('GET', '', array(function() { return 'Hi!'; })); + + $_SERVER['before'] = false; + $_SERVER['after'] = false; + + $route->call(); + + $this->assertTrue($_SERVER['before']); + $this->assertTrue($_SERVER['after']); + } + + /** + * Test that before filters override the route response. + * + * @group laravel + */ + public function testBeforeFiltersOverrideTheRouteResponse() + { + Filter::register('test-before', function() + { + return 'Filtered!'; + }); + + $route = new Route('GET', '', array('before' => 'test-before', function() { + return 'Route!'; + })); + + $this->assertEquals('Filtered!', $route->call()->content); + } + + /** + * Test that after filters do not affect the route response. + * + * @group laravel + */ + public function testAfterFilterDoesNotAffectTheResponse() + { + $_SERVER['test-after'] = false; + + Filter::register('test-after', function() + { + $_SERVER['test-after'] = true; + return 'Filtered!'; + }); + + $route = new Route('GET', '', array('after' => 'test-after', function() + { + return 'Route!'; + })); + + $this->assertEquals('Route!', $route->call()->content); + $this->assertTrue($_SERVER['test-after']); + } + + /** + * Test that the route calls the appropriate controller method when delegating. + * + * @group laravel + */ + public function testControllerActionCalledWhenDelegating() + { + $_SERVER['REQUEST_METHOD'] = 'GET'; + + $route = new Route('GET', '', array('uses' => 'auth@index')); + + $this->assertEquals('action_index', $route->call()->content); + } + + /** + * Test that filter parameters are passed to the filter. + * + * @group laravel + */ + public function testFilterParametersArePassedToFilter() + { + Filter::register('test-params', function($var1, $var2) + { + return $var1.$var2; + }); + + $route = new Route('GET', '', array('before' => 'test-params:1,2')); + + $this->assertEquals('12', $route->call()->content); + } + + /** + * Test that multiple filters can be assigned to a route. + * + * @group laravel + */ + public function testMultipleFiltersCanBeAssignedToARoute() + { + $_SERVER['test-multi-1'] = false; + $_SERVER['test-multi-2'] = false; + + Filter::register('test-multi-1', function() { $_SERVER['test-multi-1'] = true; }); + Filter::register('test-multi-2', function() { $_SERVER['test-multi-2'] = true; }); + + $route = new Route('GET', '', array('before' => 'test-multi-1|test-multi-2')); + + $route->call(); + + $this->assertTrue($_SERVER['test-multi-1']); + $this->assertTrue($_SERVER['test-multi-2']); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/routing.test.php b/laravel/tests/cases/routing.test.php new file mode 100644 index 00000000..68a112a0 --- /dev/null +++ b/laravel/tests/cases/routing.test.php @@ -0,0 +1,160 @@ + 'home')); + Route::get('dashboard', array('as' => 'dashboard')); + + $home = Router::find('home'); + $dashboard = Router::find('dashboard'); + + $this->assertTrue(isset($home['/'])); + $this->assertTrue(isset($dashboard['dashboard'])); + } + + /** + * Test the basic routing mechanism. + * + * @group laravel + */ + public function testBasicRouteCanBeRouted() + { + Route::get('/', function() {}); + Route::get('home, main', function() {}); + + $this->assertEquals('/', Router::route('GET', '/')->uri); + $this->assertEquals('home', Router::route('GET', 'home')->uri); + $this->assertEquals('main', Router::route('GET', 'main')->uri); + } + + /** + * Test that the router can handle basic wildcards. + * + * @group laravel + */ + public function testWildcardRoutesCanBeRouted() + { + Route::get('user/(:num)', function() {}); + Route::get('profile/(:any)/(:num)', function() {}); + + $this->assertNull(Router::route('GET', 'user/1.5')); + $this->assertNull(Router::route('GET', 'user/taylor')); + $this->assertEquals(array(25), Router::route('GET', 'user/25')->parameters); + $this->assertEquals('user/(:num)', Router::route('GET', 'user/1')->uri); + + $this->assertNull(Router::route('GET', 'profile/1/otwell')); + $this->assertNull(Router::route('POST', 'profile/taylor/1')); + $this->assertNull(Router::route('GET', 'profile/taylor/otwell')); + $this->assertNull(Router::route('GET', 'profile/taylor/1/otwell')); + $this->assertEquals(array('taylor', 25), Router::route('GET', 'profile/taylor/25')->parameters); + $this->assertEquals('profile/(:any)/(:num)', Router::route('GET', 'profile/taylor/1')->uri); + } + + /** + * Test that optional wildcards can be routed. + * + * @group laravel + */ + public function testOptionalWildcardsCanBeRouted() + { + Route::get('user/(:num?)', function() {}); + Route::get('profile/(:any)/(:any?)', function() {}); + + $this->assertNull(Router::route('GET', 'user/taylor')); + $this->assertEquals('user/(:num?)', Router::route('GET', 'user')->uri); + $this->assertEquals(array(25), Router::route('GET', 'user/25')->parameters); + $this->assertEquals('user/(:num?)', Router::route('GET', 'user/1')->uri); + + $this->assertNull(Router::route('GET', 'profile/taylor/otwell/test')); + $this->assertEquals('profile/(:any)/(:any?)', Router::route('GET', 'profile/taylor')->uri); + $this->assertEquals('profile/(:any)/(:any?)', Router::route('GET', 'profile/taylor/25')->uri); + $this->assertEquals('profile/(:any)/(:any?)', Router::route('GET', 'profile/taylor/otwell')->uri); + $this->assertEquals(array('taylor', 'otwell'), Router::route('GET', 'profile/taylor/otwell')->parameters); + } + + /** + * Test that basic controller routing is working. + * + * @group laravel + */ + public function testBasicRouteToControllerIsRouted() + { + $this->assertEquals('auth@(:1)', Router::route('GET', 'auth')->action['uses']); + $this->assertEquals('home@(:1)', Router::route('GET', 'home/index')->action['uses']); + $this->assertEquals('home@(:1)', Router::route('GET', 'home/profile')->action['uses']); + $this->assertEquals('admin.panel@(:1)', Router::route('GET', 'admin/panel')->action['uses']); + $this->assertEquals('admin.panel@(:1)', Router::route('GET', 'admin/panel/show')->action['uses']); + } + + /** + * Test basic bundle route resolution. + * + * @group laravel + */ + public function testRoutesToBundlesCanBeResolved() + { + $this->assertNull(Router::route('GET', 'dashboard/foo')); + $this->assertEquals('dashboard', Router::route('GET', 'dashboard')->uri); + } + + /** + * Test bundle controller route resolution. + * + * @group laravel + */ + public function testBundleControllersCanBeResolved() + { + $this->assertEquals('dashboard::panel@(:1)', Router::route('GET', 'dashboard/panel')->action['uses']); + $this->assertEquals('dashboard::panel@(:1)', Router::route('GET', 'dashboard/panel/show')->action['uses']); + } + + /** + * Test foreign characters can be used in routes. + * + * @group laravel + */ + public function testForeignCharsInRoutes() + { + Route::get(urlencode('مدرس_رياضيات').'/(:any)', function() {}); + Route::get(urlencode('مدرس_رياضيات'), function() {}); + Route::get(urlencode('ÇœŪ'), function() {}); + Route::get(urlencode('私は料理が大好き'), function() {}); + + $this->assertEquals(array(urlencode('مدرس_رياضيات')), Router::route('GET', urlencode('مدرس_رياضيات').'/'.urlencode('مدرس_رياضيات'))->parameters); + $this->assertEquals(urlencode('مدرس_رياضيات'), Router::route('GET', urlencode('مدرس_رياضيات'))->uri); + $this->assertEquals(urlencode('ÇœŪ'), Router::route('GET', urlencode('ÇœŪ'))->uri); + $this->assertEquals(urlencode('私は料理が大好き'), Router::route('GET', urlencode('私は料理が大好き'))->uri); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/session.test.php b/laravel/tests/cases/session.test.php new file mode 100644 index 00000000..2c7ccdc9 --- /dev/null +++ b/laravel/tests/cases/session.test.php @@ -0,0 +1,441 @@ +assertEquals('Foo', Session::test()); + } + + /** + * Test the Session::started method. + * + * @group laravel + */ + public function testStartedMethodIndicatesIfSessionIsStarted() + { + $this->assertFalse(Session::started()); + Session::$instance = 'foo'; + $this->assertTrue(Session::started()); + } + + /** + * Test the Payload::load method. + * + * @group laravel + */ + public function testLoadMethodCreatesNewSessionWithNullIDGiven() + { + $payload = $this->getPayload(); + $payload->load(null); + $this->verifyNewSession($payload); + } + + /** + * Test the Payload::load method. + * + * @group laravel + */ + public function testLoadMethodCreatesNewSessionWhenSessionIsExpired() + { + $payload = $this->getPayload(); + + $session = $this->getSession(); + $session['last_activity'] = time() - 10000; + + $payload->driver->expects($this->any()) + ->method('load') + ->will($this->returnValue($session)); + + $payload->load('foo'); + + $this->verifyNewSession($payload); + $this->assertTrue($payload->session['id'] !== $session['id']); + } + + /** + * Assert that a session is new. + * + * @param Payload $payload + * @return void + */ + protected function verifyNewSession($payload) + { + $this->assertFalse($payload->exists); + $this->assertTrue(isset($payload->session['id'])); + $this->assertEquals(array(), $payload->session['data'][':new:']); + $this->assertEquals(array(), $payload->session['data'][':old:']); + $this->assertTrue(isset($payload->session['data'][Session::csrf_token])); + } + + /** + * Test the Payload::load method. + * + * @group laravel + */ + public function testLoadMethodSetsValidSession() + { + $payload = $this->getPayload(); + + $session = $this->getSession(); + + $payload->driver->expects($this->any()) + ->method('load') + ->will($this->returnValue($session)); + + $payload->load('foo'); + + $this->assertEquals($session, $payload->session); + } + + /** + * Test the Payload::load method. + * + * @group laravel + */ + public function testLoadMethodSetsCSRFTokenIfDoesntExist() + { + $payload = $this->getPayload(); + + $session = $this->getSession(); + + unset($session['data']['csrf_token']); + + $payload->driver->expects($this->any()) + ->method('load') + ->will($this->returnValue($session)); + + $payload->load('foo'); + + $this->assertEquals('foo', $payload->session['id']); + $this->assertTrue(isset($payload->session['data']['csrf_token'])); + } + + /** + * Test the various data retrieval methods. + * + * @group laravel + */ + public function testSessionDataCanBeRetrievedProperly() + { + $payload = $this->getPayload(); + + $payload->session = $this->getSession(); + + $this->assertTrue($payload->has('name')); + $this->assertEquals('Taylor', $payload->get('name')); + $this->assertFalse($payload->has('foo')); + $this->assertEquals('Default', $payload->get('foo', 'Default')); + $this->assertTrue($payload->has('votes')); + $this->assertEquals(10, $payload->get('votes')); + $this->assertTrue($payload->has('state')); + $this->assertEquals('AR', $payload->get('state')); + } + + /** + * Test the various data manipulation methods. + * + * @group laravel + */ + public function testDataCanBeSetProperly() + { + $payload = $this->getPayload(); + + $payload->session = $this->getSession(); + + // Test the "put" and "flash" methods. + $payload->put('name', 'Weldon'); + $this->assertEquals('Weldon', $payload->session['data']['name']); + $payload->flash('language', 'php'); + $this->assertEquals('php', $payload->session['data'][':new:']['language']); + + // Test the "reflash" method. + $payload->session['data'][':new:'] = array('name' => 'Taylor'); + $payload->session['data'][':old:'] = array('age' => 25); + $payload->reflash(); + $this->assertEquals(array('name' => 'Taylor', 'age' => 25), $payload->session['data'][':new:']); + + // Test the "keep" method. + $payload->session['data'][':new:'] = array(); + $payload->keep(array('age')); + $this->assertEquals(25, $payload->session['data'][':new:']['age']); + } + + /** + * Test the Payload::forget method. + * + * @group laravel + */ + public function testSessionDataCanBeForgotten() + { + $payload = $this->getPayload(); + + $payload->session = $this->getSession(); + + $this->assertTrue(isset($payload->session['data']['name'])); + $payload->forget('name'); + $this->assertFalse(isset($payload->session['data']['name'])); + } + + /** + * Test the Payload::flush method. + * + * @group laravel + */ + public function testFlushMaintainsTokenButDeletesEverythingElse() + { + $payload = $this->getPayload(); + + $payload->session = $this->getSession(); + + $this->assertTrue(isset($payload->session['data']['name'])); + $payload->flush(); + $this->assertFalse(isset($payload->session['data']['name'])); + $this->assertEquals('bar', $payload->session['data']['csrf_token']); + $this->assertEquals(array(), $payload->session['data'][':new:']); + $this->assertEquals(array(), $payload->session['data'][':old:']); + } + + /** + * Test the Payload::regenerate method. + * + * @group laravel + */ + public function testRegenerateMethodSetsNewIDAndTurnsOffExistenceIndicator() + { + $payload = $this->getPayload(); + + $payload->sesion = $this->getSession(); + $payload->exists = true; + $payload->regenerate(); + + $this->assertFalse($payload->exists); + $this->assertTrue(strlen($payload->session['id']) == 40); + } + + /** + * Test the Payload::token method. + * + * @group laravel + */ + public function testTokenMethodReturnsCSRFToken() + { + $payload = $this->getPayload(); + $payload->session = $this->getSession(); + + $this->assertEquals('bar', $payload->token()); + } + + /** + * Test the Payload::save method. + * + * @group laravel + */ + public function testSaveMethodCorrectlyCallsDriver() + { + $payload = $this->getPayload(); + $session = $this->getSession(); + $payload->session = $session; + $payload->exists = true; + $config = Laravel\Config::get('session'); + + $expect = $session; + $expect['data'][':old:'] = $session['data'][':new:']; + $expect['data'][':new:'] = array(); + + $payload->driver->expects($this->once()) + ->method('save') + ->with($this->equalTo($expect), $this->equalTo($config), $this->equalTo(true)); + + $payload->save(); + + $this->assertEquals($session['data'][':new:'], $payload->session['data'][':old:']); + } + + /** + * Test the Payload::save method. + * + * @group laravel + */ + public function testSaveMethodSweepsIfSweeperAndOddsHitWithTimeGreaterThanThreshold() + { + Config::set('session.sweepage', array(100, 100)); + + $payload = $this->getPayload(); + $payload->driver = $this->getMock('Laravel\\Session\\Drivers\\File', array('save', 'sweep'), array(null)); + $payload->session = $this->getSession(); + + $expiration = time() - (Config::get('session.lifetime') * 60); + + // Here we set the time to the expected expiration minus 5 seconds, just to + // allow plenty of room for PHP execution. In the next test, we'll do the + // same thing except add 5 seconds to check that the time is between a + // given window. + $payload->driver->expects($this->once()) + ->method('sweep') + ->with($this->greaterThan($expiration - 5)); + + $payload->save(); + + Config::set('session.sweepage', array(2, 100)); + } + + /** + * Test the Payload::save method. + * + * @group laravel + */ + public function testSaveMethodSweepsIfSweeperAndOddsHitWithTimeLessThanThreshold() + { + Config::set('session.sweepage', array(100, 100)); + + $payload = $this->getPayload(); + $payload->driver = $this->getMock('Laravel\\Session\\Drivers\\File', array('save', 'sweep'), array(null)); + $payload->session = $this->getSession(); + + $expiration = time() - (Config::get('session.lifetime') * 60); + + $payload->driver->expects($this->once()) + ->method('sweep') + ->with($this->lessThan($expiration + 5)); + + $payload->save(); + + Config::set('session.sweepage', array(2, 100)); + } + + /** + * Test that the session sweeper is never called if not a sweeper. + * + * @group laravel + */ + public function testSweeperShouldntBeCalledIfDriverIsntSweeper() + { + Config::set('session.sweepage', array(100, 100)); + + $payload = $this->getPayload(); + $payload->driver = $this->getMock('Laravel\\Session\\Drivers\\APC', array('save', 'sweep'), array(), '', false); + $payload->session = $this->getSession(); + + $payload->driver->expects($this->never())->method('sweep'); + + $payload->save(); + + Config::set('session.sweepage', array(2, 100)); + } + + /** + * Test the Payload::save method. + * + * @group laravel + */ + public function testSaveMethodSetsCookieWithCorrectValues() + { + $payload = $this->getPayload(); + $payload->session = $this->getSession(); + $payload->save(); + + $this->assertTrue(isset(Cookie::$jar[Config::get('session.cookie')])); + + $cookie = Cookie::$jar[Config::get('session.cookie')]; + + $this->assertEquals('foo', $cookie['value']); + $this->assertEquals(Config::get('session.lifetime'), $cookie['minutes']); + $this->assertEquals(Config::get('session.domain'), $cookie['domain']); + $this->assertEquals(Config::get('session.path'), $cookie['path']); + $this->assertEquals(Config::get('session.secure'), $cookie['secure']); + } + + /** + * Test the Session::activity method. + * + * @group laravel + */ + public function testActivityMethodReturnsLastActivity() + { + $payload = $this->getPayload(); + $payload->session['last_activity'] = 10; + $this->assertEquals(10, $payload->activity()); + } + + /** + * Get a session payload instance. + * + * @return Payload + */ + protected function getPayload() + { + return new Payload($this->getMockDriver()); + } + + /** + * Get a mock driver instance. + * + * @return Driver + */ + protected function getMockDriver() + { + $mock = $this->getMock('Laravel\\Session\\Drivers\\Driver', array('id', 'load', 'save', 'delete')); + + $mock->expects($this->any())->method('id')->will($this->returnValue(Str::random(40))); + + return $mock; + } + + /** + * Get a dummy session. + * + * @return array + */ + protected function getSession() + { + return array( + 'id' => 'foo', + 'last_activity' => time(), + 'data' => array( + 'name' => 'Taylor', + 'age' => 25, + 'csrf_token' => 'bar', + ':new:' => array( + 'votes' => 10, + ), + ':old:' => array( + 'state' => 'AR', + ), + )); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/str.test.php b/laravel/tests/cases/str.test.php new file mode 100644 index 00000000..7daab540 --- /dev/null +++ b/laravel/tests/cases/str.test.php @@ -0,0 +1,133 @@ +assertEquals('UTF-8', Config::get('application.encoding')); + Config::set('application.encoding', 'foo'); + $this->assertEquals('foo', Config::get('application.encoding')); + Config::set('application.encoding', 'UTF-8'); + } + + /** + * Test the Str::length method. + * + * @group laravel + */ + public function testStringLengthIsCorrect() + { + $this->assertEquals(6, Str::length('Taylor')); + $this->assertEquals(5, Str::length('ラドクリフ')); + } + + /** + * Test the Str::lower method. + * + * @group laravel + */ + public function testStringCanBeConvertedToLowercase() + { + $this->assertEquals('taylor', Str::lower('TAYLOR')); + $this->assertEquals('άχιστη', Str::lower('ΆΧΙΣΤΗ')); + } + + /** + * Test the Str::upper method. + * + * @group laravel + */ + public function testStringCanBeConvertedToUppercase() + { + $this->assertEquals('TAYLOR', Str::upper('taylor')); + $this->assertEquals('ΆΧΙΣΤΗ', Str::upper('άχιστη')); + } + + /** + * Test the Str::title method. + * + * @group laravel + */ + public function testStringCanBeConvertedToTitleCase() + { + $this->assertEquals('Taylor', Str::title('taylor')); + $this->assertEquals('Άχιστη', Str::title('άχιστη')); + } + + /** + * Test the Str::limit method. + * + * @group laravel + */ + public function testStringCanBeLimitedByCharacters() + { + $this->assertEquals('Tay...', Str::limit('Taylor', 3)); + $this->assertEquals('Taylor', Str::limit('Taylor', 6)); + $this->assertEquals('Tay___', Str::limit('Taylor', 3, '___')); + } + + /** + * Test the Str::words method. + * + * @group laravel + */ + public function testStringCanBeLimitedByWords() + { + $this->assertEquals('Taylor...', Str::words('Taylor Otwell', 1)); + $this->assertEquals('Taylor___', Str::words('Taylor Otwell', 1, '___')); + $this->assertEquals('Taylor Otwell', Str::words('Taylor Otwell', 3)); + } + + /** + * Test the Str::plural and Str::singular methods. + * + * @group laravel + */ + public function testStringsCanBeSingularOrPlural() + { + $this->assertEquals('user', Str::singular('users')); + $this->assertEquals('users', Str::plural('user')); + $this->assertEquals('User', Str::singular('Users')); + $this->assertEquals('Users', Str::plural('User')); + $this->assertEquals('user', Str::plural('user', 1)); + $this->assertEquals('users', Str::plural('user', 2)); + } + + /** + * Test the Str::slug method. + * + * @group laravel + */ + public function testStringsCanBeSlugged() + { + $this->assertEquals('my-new-post', Str::slug('My nEw post!!!')); + $this->assertEquals('my_new_post', Str::slug('My nEw post!!!', '_')); + } + + /** + * Test the Str::classify method. + * + * @group laravel + */ + public function testStringsCanBeClassified() + { + $this->assertEquals('Something_Else', Str::classify('something.else')); + $this->assertEquals('Something_Else', Str::classify('something_else')); + } + + /** + * Test the Str::random method. + * + * @group laravel + */ + public function testRandomStringsCanBeGenerated() + { + $this->assertEquals(40, strlen(Str::random(40))); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/uri.test.php b/laravel/tests/cases/uri.test.php new file mode 100644 index 00000000..be779ecf --- /dev/null +++ b/laravel/tests/cases/uri.test.php @@ -0,0 +1,59 @@ +assertEquals($expectation, URI::current()); + } + + /** + * Test the URI::segment method. + * + * @group laravel + */ + public function testSegmentMethodReturnsAURISegment() + { + $_SERVER['REQUEST_URI'] = 'http://localhost/index.php/user/profile'; + + $this->assertEquals('user', URI::segment(1)); + $this->assertEquals('profile', URI::segment(2)); + } + + /** + * Data provider for the URI::current test. + */ + public function requestUriProvider() + { + return array( + array('/index.php', '/'), + array('/index.php/', '/'), + array('http://localhost/user', 'user'), + array('http://localhost/user/', 'user'), + array('http://localhost/index.php', '/'), + array('http://localhost/index.php/', '/'), + array('http://localhost/index.php//', '/'), + array('http://localhost/index.php/user', 'user'), + array('http://localhost/index.php/user/', 'user'), + array('http://localhost/index.php/user/profile', 'user/profile'), + ); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/url.test.php b/laravel/tests/cases/url.test.php new file mode 100644 index 00000000..393211be --- /dev/null +++ b/laravel/tests/cases/url.test.php @@ -0,0 +1,106 @@ +assertEquals('http://localhost/index.php/user/profile', URL::to('user/profile')); + $this->assertEquals('https://localhost/index.php/user/profile', URL::to('user/profile', true)); + + Config::set('application.index', ''); + + $this->assertEquals('http://localhost/user/profile', URL::to('user/profile')); + $this->assertEquals('https://localhost/user/profile', URL::to('user/profile', true)); + + Config::set('application.ssl', false); + + $this->assertEquals('http://localhost/user/profile', URL::to('user/profile', true)); + } + + /** + * Test the URL::to_action method. + * + * @group laravel + */ + public function testToActionMethodGeneratesURLToControllerAction() + { + Route::get('foo/bar/(:any?)', 'foo@baz'); + $this->assertEquals('http://localhost/index.php/x/y', URL::to_action('x@y')); + $this->assertEquals('http://localhost/index.php/x/y/Taylor', URL::to_action('x@y', array('Taylor'))); + $this->assertEquals('http://localhost/index.php/foo/bar', URL::to_action('foo@baz')); + $this->assertEquals('http://localhost/index.php/foo/bar/Taylor', URL::to_action('foo@baz', array('Taylor'))); + } + + /** + * Test the URL::to_asset method. + * + * @group laravel + */ + public function testToAssetGeneratesURLWithoutFrontControllerInURL() + { + $this->assertEquals('http://localhost/image.jpg', URL::to_asset('image.jpg')); + $this->assertEquals('https://localhost/image.jpg', URL::to_asset('image.jpg', true)); + + Config::set('application.index', ''); + + $this->assertEquals('http://localhost/image.jpg', URL::to_asset('image.jpg')); + $this->assertEquals('https://localhost/image.jpg', URL::to_asset('image.jpg', true)); + + Request::foundation()->server->add(array('HTTPS' => 'on')); + + $this->assertEquals('https://localhost/image.jpg', URL::to_asset('image.jpg')); + } + + /** + * Test the URL::to_route method. + * + * @group laravel + */ + public function testToRouteMethodGeneratesURLsToRoutes() + { + Route::get('url/test', array('as' => 'url-test')); + Route::get('url/test/(:any)/(:any?)', array('as' => 'url-test-2')); + Route::get('url/secure/(:any)/(:any?)', array('as' => 'url-test-3', 'https' => true)); + + $this->assertEquals('http://localhost/index.php/url/test', URL::to_route('url-test')); + $this->assertEquals('http://localhost/index.php/url/test/taylor', URL::to_route('url-test-2', array('taylor'))); + $this->assertEquals('https://localhost/index.php/url/secure/taylor', URL::to_route('url-test-3', array('taylor'))); + $this->assertEquals('http://localhost/index.php/url/test/taylor/otwell', URL::to_route('url-test-2', array('taylor', 'otwell'))); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/validator.test.php b/laravel/tests/cases/validator.test.php new file mode 100644 index 00000000..bde1cea1 --- /dev/null +++ b/laravel/tests/cases/validator.test.php @@ -0,0 +1,669 @@ + 'Taylor Otwell'); + $rules = array('name' => 'required'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['name'] = ''; + $this->assertFalse(Validator::make($input, $rules)->valid()); + + unset($input['name']); + $this->assertFalse(Validator::make($input, $rules)->valid()); + + $_FILES['name']['tmp_name'] = 'foo'; + $this->assertTrue(Validator::make($_FILES, $rules)->valid()); + + $_FILES['name']['tmp_name'] = ''; + $this->assertFalse(Validator::make($_FILES, $rules)->valid()); + } + + /** + * Test the confirmed validation rule. + * + * @group laravel + */ + public function testTheConfirmedRule() + { + $input = array('password' => 'foo', 'password_confirmation' => 'foo'); + $rules = array('password' => 'confirmed'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['password_confirmation'] = 'foo_bar'; + $this->assertFalse(Validator::make($input, $rules)->valid()); + + unset($input['password_confirmation']); + $this->assertFalse(Validator::make($input, $rules)->valid()); + } + + /** + * Test the different validation rule. + * + * @group laravel + */ + public function testTheDifferentRule() + { + $input = array('password' => 'foo', 'password_confirmation' => 'bar'); + $rules = array('password' => 'different:password_confirmation'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['password_confirmation'] = 'foo'; + $this->assertFalse(Validator::make($input, $rules)->valid()); + + unset($input['password_confirmation']); + $this->assertFalse(Validator::make($input, $rules)->valid()); + } + + /** + * Test the accepted validation rule. + * + * @group laravel + */ + public function testTheAcceptedRule() + { + $input = array('terms' => '1'); + $rules = array('terms' => 'accepted'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['terms'] = 'yes'; + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['terms'] = '2'; + $this->assertFalse(Validator::make($input, $rules)->valid()); + + // The accepted rule implies required, so should fail if field not present. + unset($input['terms']); + $this->assertFalse(Validator::make($input, $rules)->valid()); + } + + /** + * Test the numeric validation rule. + * + * @group laravel + */ + public function testTheNumericRule() + { + $input = array('amount' => '1.21'); + $rules = array('amount' => 'numeric'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['amount'] = '1'; + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['amount'] = 1.2; + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['amount'] = '1.2a'; + $this->assertFalse(Validator::make($input, $rules)->valid()); + } + + /** + * Test the integer validation rule. + * + * @group laravel + */ + public function testTheIntegerRule() + { + $input = array('amount' => '1'); + $rules = array('amount' => 'integer'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['amount'] = '0'; + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['amount'] = 1.2; + $this->assertFalse(Validator::make($input, $rules)->valid()); + + $input['amount'] = '1.2a'; + $this->assertFalse(Validator::make($input, $rules)->valid()); + } + + /** + * Test the size validation rule. + * + * @group laravel + */ + public function testTheSizeRule() + { + $input = array('amount' => '1.21'); + $rules = array('amount' => 'numeric|size:1.21'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $rules = array('amount' => 'numeric|size:1'); + $this->assertFalse(Validator::make($input, $rules)->valid()); + + // If no numeric rule is on the field, it is treated as a string + $input = array('amount' => '111'); + $rules = array('amount' => 'size:3'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $rules = array('amount' => 'size:4'); + $this->assertFalse(Validator::make($input, $rules)->valid()); + + // The size rules checks kilobytes on files + $_FILES['photo']['tmp_name'] = 'foo'; + $_FILES['photo']['size'] = 10240; + $rules = array('photo' => 'size:10'); + $this->assertTrue(Validator::make($_FILES, $rules)->valid()); + + $_FILES['photo']['size'] = 14000; + $this->assertFalse(Validator::make($_FILES, $rules)->valid()); + } + + /** + * Test the between validation rule. + * + * @group laravel + */ + public function testTheBetweenRule() + { + $input = array('amount' => '1.21'); + $rules = array('amount' => 'numeric|between:1,2'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $rules = array('amount' => 'numeric|between:2,3'); + $this->assertFalse(Validator::make($input, $rules)->valid()); + + // If no numeric rule is on the field, it is treated as a string + $input = array('amount' => '111'); + $rules = array('amount' => 'between:1,3'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $rules = array('amount' => 'between:100,111'); + $this->assertFalse(Validator::make($input, $rules)->valid()); + + // The size rules checks kilobytes on files + $_FILES['photo']['tmp_name'] = 'foo'; + $_FILES['photo']['size'] = 10240; + $rules = array('photo' => 'between:9,11'); + $this->assertTrue(Validator::make($_FILES, $rules)->valid()); + + $_FILES['photo']['size'] = 14000; + $this->assertFalse(Validator::make($_FILES, $rules)->valid()); + } + + /** + * Test the between validation rule. + * + * @group laravel + */ + public function testTheMinRule() + { + $input = array('amount' => '1.21'); + $rules = array('amount' => 'numeric|min:1'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $rules = array('amount' => 'numeric|min:2'); + $this->assertFalse(Validator::make($input, $rules)->valid()); + + // If no numeric rule is on the field, it is treated as a string + $input = array('amount' => '01'); + $rules = array('amount' => 'min:2'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $rules = array('amount' => 'min:3'); + $this->assertFalse(Validator::make($input, $rules)->valid()); + + // The size rules checks kilobytes on files + $_FILES['photo']['tmp_name'] = 'foo'; + $_FILES['photo']['size'] = 10240; + $rules = array('photo' => 'min:9'); + $this->assertTrue(Validator::make($_FILES, $rules)->valid()); + + $_FILES['photo']['size'] = 8000; + $this->assertFalse(Validator::make($_FILES, $rules)->valid()); + } + + /** + * Test the between validation rule. + * + * @group laravel + */ + public function testTheMaxRule() + { + $input = array('amount' => '1.21'); + $rules = array('amount' => 'numeric|max:2'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $rules = array('amount' => 'numeric|max:1'); + $this->assertFalse(Validator::make($input, $rules)->valid()); + + // If no numeric rule is on the field, it is treated as a string + $input = array('amount' => '01'); + $rules = array('amount' => 'max:3'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $rules = array('amount' => 'max:1'); + $this->assertFalse(Validator::make($input, $rules)->valid()); + + // The size rules checks kilobytes on files + $_FILES['photo']['tmp_name'] = 'foo'; + $_FILES['photo']['size'] = 10240; + $rules = array('photo' => 'max:11'); + $this->assertTrue(Validator::make($_FILES, $rules)->valid()); + + $_FILES['photo']['size'] = 140000; + $this->assertFalse(Validator::make($_FILES, $rules)->valid()); + } + + /** + * Test the in validation rule. + * + * @group laravel + */ + public function testTheInRule() + { + $input = array('size' => 'L'); + $rules = array('size' => 'in:S,M,L'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['size'] = 'XL'; + $this->assertFalse(Validator::make($input, $rules)->valid()); + } + + /** + * Test the not-in validation rule. + * + * @group laravel + */ + public function testTheNotInRule() + { + $input = array('size' => 'L'); + $rules = array('size' => 'not_in:S,M,L'); + $this->assertFalse(Validator::make($input, $rules)->valid()); + + $input['size'] = 'XL'; + $this->assertTrue(Validator::make($input, $rules)->valid()); + } + + /** + * Test the IP validation rule. + * + * @group laravel + */ + public function testTheIPRule() + { + $input = array('ip' => '192.168.1.1'); + $rules = array('ip' => 'ip'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['ip'] = '192.111'; + $this->assertFalse(Validator::make($input, $rules)->valid()); + } + + /** + * Test the e-mail validation rule. + * + * @group laravel + */ + public function testTheEmailRule() + { + $input = array('email' => 'example@gmail.com'); + $rules = array('email' => 'email'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['email'] = 'blas-asok'; + $this->assertFalse(Validator::make($input, $rules)->valid()); + } + + /** + * Test the URL validation rule. + * + * @group laravel + */ + public function testTheUrlRule() + { + $input = array('url' => 'http://www.google.com'); + $rules = array('url' => 'url'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['url'] = 'blas-asok'; + $this->assertFalse(Validator::make($input, $rules)->valid()); + } + + /** + * Test the active URL validation rule. + * + * @group laravel + */ + public function testTheActiveUrlRule() + { + $input = array('url' => 'http://google.com'); + $rules = array('url' => 'active_url'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['url'] = 'http://asdlk-aselkaiwels.com'; + $this->assertFalse(Validator::make($input, $rules)->valid()); + } + + /** + * Test the image validation rule. + * + * @group laravel + */ + public function testTheImageRule() + { + $_FILES['photo']['tmp_name'] = path('storage').'files/desert.jpg'; + $rules = array('photo' => 'image'); + $this->assertTrue(Validator::make($_FILES, $rules)->valid()); + + $_FILES['photo']['tmp_name'] = path('app').'routes.php'; + $this->assertFalse(Validator::make($_FILES, $rules)->valid()); + } + + /** + * Test the alpha validation rule. + * + * @group laravel + */ + public function testTheAlphaRule() + { + $input = array('name' => 'TaylorOtwell'); + $rules = array('name' => 'alpha'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['name'] = 'Taylor Otwell'; + $this->assertFalse(Validator::make($input, $rules)->valid()); + } + + /** + * Test the alpha_num validation rule. + * + * @group laravel + */ + public function testTheAlphaNumRule() + { + $input = array('name' => 'TaylorOtwell1'); + $rules = array('name' => 'alpha_num'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['name'] = 'Taylor Otwell'; + $this->assertFalse(Validator::make($input, $rules)->valid()); + } + + /** + * Test the alpha_num validation rule. + * + * @group laravel + */ + public function testTheAlphaDashRule() + { + $input = array('name' => 'Taylor-Otwell_1'); + $rules = array('name' => 'alpha_dash'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['name'] = 'Taylor Otwell'; + $this->assertFalse(Validator::make($input, $rules)->valid()); + } + + /** + * Test the mimes validation rule. + * + * @group laravel + */ + public function testTheMimesRule() + { + $_FILES['file']['tmp_name'] = path('app').'routes.php'; + $rules = array('file' => 'mimes:php,txt'); + $this->assertTrue(Validator::make($_FILES, $rules)->valid()); + + $rules = array('file' => 'mimes:jpg,bmp'); + $this->assertFalse(Validator::make($_FILES, $rules)->valid()); + + $_FILES['file']['tmp_name'] = path('storage').'files/desert.jpg'; + $rules['file'] = 'mimes:jpg,bmp'; + $this->assertTrue(Validator::make($_FILES, $rules)->valid()); + + $rules['file'] = 'mimes:txt,bmp'; + $this->assertFalse(Validator::make($_FILES, $rules)->valid()); + } + + /** + * Test the unique validation rule. + * + * @group laravel + */ + public function testUniqueRule() + { + $input = array('code' => 'ZZ'); + $rules = array('code' => 'unique:validation_unique'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input = array('code' => 'AR'); + $this->assertFalse(Validator::make($input, $rules)->valid()); + + $rules = array('code' => 'unique:validation_unique,code,AR,code'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + } + + /** + * Tests the exists validation rule. + * + * @group laravel + */ + public function testExistsRule() + { + $input = array('code' => 'TX'); + $rules = array('code' => 'exists:validation_unique'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['code'] = array('TX', 'NY'); + $rules = array('code' => 'exists:validation_unique,code'); + $this->assertTrue(Validator::make($input, $rules)->valid()); + + $input['code'] = array('TX', 'XX'); + $this->assertFalse(Validator::make($input, $rules)->valid()); + + $input['code'] = 'XX'; + $this->assertFalse(Validator::make($input, $rules)->valid()); + } + + /** + * Test that the validator sets the correct messages. + * + * @group laravel + */ + public function testCorrectMessagesAreSet() + { + $lang = require path('app').'language/en/validation.php'; + + $input = array('email' => 'example-foo'); + $rules = array('name' => 'required', 'email' => 'required|email'); + $v = Validator::make($input, $rules); + $v->valid(); + $messages = $v->errors; + $this->assertInstanceOf('Laravel\\Messages', $messages); + $this->assertEquals(str_replace(':attribute', 'name', $lang['required']), $messages->first('name')); + $this->assertEquals(str_replace(':attribute', 'email', $lang['email']), $messages->first('email')); + } + + /** + * Test that custom messages are recognized. + * + * @group laravel + */ + public function testCustomMessagesAreRecognize() + { + $messages = array('required' => 'Required!'); + $rules = array('name' => 'required'); + $v = Validator::make(array(), $rules, $messages); + $v->valid(); + $this->assertEquals('Required!', $v->errors->first('name')); + + $messages['email_required'] = 'Email Required!'; + $rules = array('name' => 'required', 'email' => 'required'); + $v = Validator::make(array(), $rules, $messages); + $v->valid(); + $this->assertEquals('Required!', $v->errors->first('name')); + $this->assertEquals('Email Required!', $v->errors->first('email')); + + $rules = array('custom' => 'required'); + $v = Validator::make(array(), $rules); + $v->valid(); + $this->assertEquals('This field is required!', $v->errors->first('custom')); + } + + /** + * Test that size replacements are made on messages. + * + * @group laravel + */ + public function testNumericSizeReplacementsAreMade() + { + $lang = require path('app').'language/en/validation.php'; + + $input = array('amount' => 100); + $rules = array('amount' => 'numeric|size:80'); + $v = Validator::make($input, $rules); + $v->valid(); + $this->assertEquals(str_replace(array(':attribute', ':size'), array('amount', '80'), $lang['size']['numeric']), $v->errors->first('amount')); + + $rules = array('amount' => 'numeric|between:70,80'); + $v = Validator::make($input, $rules); + $v->valid(); + $expect = str_replace(array(':attribute', ':min', ':max'), array('amount', '70', '80'), $lang['between']['numeric']); + $this->assertEquals($expect, $v->errors->first('amount')); + + $rules = array('amount' => 'numeric|min:120'); + $v = Validator::make($input, $rules); + $v->valid(); + $expect = str_replace(array(':attribute', ':min'), array('amount', '120'), $lang['min']['numeric']); + $this->assertEquals($expect, $v->errors->first('amount')); + + $rules = array('amount' => 'numeric|max:20'); + $v = Validator::make($input, $rules); + $v->valid(); + $expect = str_replace(array(':attribute', ':max'), array('amount', '20'), $lang['max']['numeric']); + $this->assertEquals($expect, $v->errors->first('amount')); + } + + /** + * Test that string size replacements are made on messages. + * + * @group laravel + */ + public function testStringSizeReplacementsAreMade() + { + $lang = require path('app').'language/en/validation.php'; + + $input = array('amount' => '100'); + $rules = array('amount' => 'size:80'); + $v = Validator::make($input, $rules); + $v->valid(); + $this->assertEquals(str_replace(array(':attribute', ':size'), array('amount', '80'), $lang['size']['string']), $v->errors->first('amount')); + + $rules = array('amount' => 'between:70,80'); + $v = Validator::make($input, $rules); + $v->valid(); + $expect = str_replace(array(':attribute', ':min', ':max'), array('amount', '70', '80'), $lang['between']['string']); + $this->assertEquals($expect, $v->errors->first('amount')); + + $rules = array('amount' => 'min:120'); + $v = Validator::make($input, $rules); + $v->valid(); + $expect = str_replace(array(':attribute', ':min'), array('amount', '120'), $lang['min']['string']); + $this->assertEquals($expect, $v->errors->first('amount')); + + $rules = array('amount' => 'max:2'); + $v = Validator::make($input, $rules); + $v->valid(); + $expect = str_replace(array(':attribute', ':max'), array('amount', '2'), $lang['max']['string']); + $this->assertEquals($expect, $v->errors->first('amount')); + } + + /** + * Test that string size replacements are made on messages. + * + * @group laravel + */ + public function testFileSizeReplacementsAreMade() + { + $lang = require path('app').'language/en/validation.php'; + + $_FILES['amount']['tmp_name'] = 'foo'; + $_FILES['amount']['size'] = 10000; + $rules = array('amount' => 'size:80'); + $v = Validator::make($_FILES, $rules); + $v->valid(); + $this->assertEquals(str_replace(array(':attribute', ':size'), array('amount', '80'), $lang['size']['file']), $v->errors->first('amount')); + + $rules = array('amount' => 'between:70,80'); + $v = Validator::make($_FILES, $rules); + $v->valid(); + $expect = str_replace(array(':attribute', ':min', ':max'), array('amount', '70', '80'), $lang['between']['file']); + $this->assertEquals($expect, $v->errors->first('amount')); + + $rules = array('amount' => 'min:120'); + $v = Validator::make($_FILES, $rules); + $v->valid(); + $expect = str_replace(array(':attribute', ':min'), array('amount', '120'), $lang['min']['file']); + $this->assertEquals($expect, $v->errors->first('amount')); + + $rules = array('amount' => 'max:2'); + $v = Validator::make($_FILES, $rules); + $v->valid(); + $expect = str_replace(array(':attribute', ':max'), array('amount', '2'), $lang['max']['file']); + $this->assertEquals($expect, $v->errors->first('amount')); + } + + /** + * Test that values get replaced in messages. + * + * @group laravel + */ + public function testValuesGetReplaced() + { + $lang = require path('app').'language/en/validation.php'; + + $_FILES['file']['tmp_name'] = path('storage').'files/desert.jpg'; + $rules = array('file' => 'mimes:php,txt'); + $v = Validator::make($_FILES, $rules); + $v->valid(); + + $expect = str_replace(array(':attribute', ':values'), array('file', 'php, txt'), $lang['mimes']); + $this->assertEquals($expect, $v->errors->first('file')); + } + + /** + * Test custom attribute names are replaced. + * + * @group laravel + */ + public function testCustomAttributesAreReplaced() + { + $lang = require path('app').'language/en/validation.php'; + + $rules = array('test_attribute' => 'required'); + $v = Validator::make(array(), $rules); + $v->valid(); + + $expect = str_replace(':attribute', 'attribute', $lang['required']); + $this->assertEquals($expect, $v->errors->first('test_attribute')); + } + +} \ No newline at end of file diff --git a/laravel/tests/cases/view.test.php b/laravel/tests/cases/view.test.php new file mode 100644 index 00000000..d10cf31c --- /dev/null +++ b/laravel/tests/cases/view.test.php @@ -0,0 +1,255 @@ +assertInstanceOf('Laravel\\View', View::make('home.index')); + } + + /** + * Test the View class constructor. + * + * @group laravel + */ + public function testViewNameIsSetByConstrutor() + { + $view = new View('home.index'); + + $this->assertEquals('home.index', $view->view); + } + + /** + * Test the View class constructor. + * + * @group laravel + */ + public function testViewIsCreatedWithCorrectPath() + { + $view = new View('home.index'); + + $this->assertEquals( + str_replace(DS, '/', path('app')).'views/home/index.php', + str_replace(DS, '/', $view->path) + ); + } + + /** + * Test the View class constructor for bundles. + * + * @group laravel + */ + public function testBundleViewIsCreatedWithCorrectPath() + { + $view = new View('laravel-tests::home.index'); + + $this->assertEquals( + str_replace(DS, '/', Bundle::path('laravel-tests')).'views/home/index.php', + str_replace(DS, '/', $view->path) + ); + } + + /** + * Test the View class constructor. + * + * @group laravel + */ + public function testDataIsSetOnViewByConstructor() + { + $view = new View('home.index', array('name' => 'Taylor')); + + $this->assertEquals('Taylor', $view->data['name']); + } + + /** + * Test the View::name method. + * + * @group laravel + */ + public function testNameMethodRegistersAViewName() + { + View::name('home.index', 'home'); + + $this->assertEquals('home.index', View::$names['home']); + } + + /** + * Test the View::shared method. + * + * @group laravel + */ + public function testSharedMethodAddsDataToSharedArray() + { + View::share('comment', 'Taylor'); + + $this->assertEquals('Taylor', View::$shared['comment']); + } + + /** + * Test the View::with method. + * + * @group laravel + */ + public function testViewDataCanBeSetUsingWithMethod() + { + $view = View::make('home.index')->with('comment', 'Taylor'); + + $this->assertEquals('Taylor', $view->data['comment']); + } + + /** + * Test the View class constructor. + * + * @group laravel + */ + public function testEmptyMessageContainerSetOnViewWhenNoErrorsInSession() + { + $view = new View('home.index'); + + $this->assertInstanceOf('Laravel\\Messages', $view->data['errors']); + } + + /** + * Test the View __set method. + * + * @group laravel + */ + public function testDataCanBeSetOnViewsThroughMagicMethods() + { + $view = new View('home.index'); + + $view->comment = 'Taylor'; + + $this->assertEquals('Taylor', $view->data['comment']); + } + + /** + * Test the View __get method. + * + * @group laravel + */ + public function testDataCanBeRetrievedFromViewsThroughMagicMethods() + { + $view = new View('home.index'); + + $view->comment = 'Taylor'; + + $this->assertEquals('Taylor', $view->comment); + } + + /** + * Test the View's ArrayAccess implementation. + * + * @group laravel + */ + public function testDataCanBeSetOnTheViewThroughArrayAccess() + { + $view = new View('home.index'); + + $view['comment'] = 'Taylor'; + + $this->assertEquals('Taylor', $view->data['comment']); + } + + /** + * Test the View's ArrayAccess implementation. + * + * @group laravel + */ + public function testDataCanBeRetrievedThroughArrayAccess() + { + $view = new View('home.index'); + + $view['comment'] = 'Taylor'; + + $this->assertEquals('Taylor', $view['comment']); + } + + /** + * Test the View::nest method. + * + * @group laravel + */ + public function testNestMethodSetsViewInstanceInData() + { + $view = View::make('home.index')->nest('partial', 'tests.basic'); + + $this->assertEquals('tests.basic', $view->data['partial']->view); + + $this->assertInstanceOf('Laravel\\View', $view->data['partial']); + } + + /** + * Test that the registered data is passed to the view correctly. + * + * @group laravel + */ + public function testDataIsPassedToViewCorrectly() + { + View::share('name', 'Taylor'); + + $view = View::make('tests.basic')->with('age', 25)->render(); + + $this->assertEquals('Taylor is 25', $view); + } + + /** + * Test that the View class renders nested views. + * + * @group laravel + */ + public function testNestedViewsAreRendered() + { + $view = View::make('tests.basic') + ->with('age', 25) + ->nest('name', 'tests.nested'); + + $this->assertEquals('Taylor is 25', $view->render()); + } + + /** + * Test that the View class renders nested responses. + * + * @group laravel + */ + public function testNestedResponsesAreRendered() + { + $view = View::make('tests.basic') + ->with('age', 25) + ->with('name', Response::view('tests.nested')); + + $this->assertEquals('Taylor is 25', $view->render()); + } + + /** + * Test the View class raises a composer event. + * + * @group laravel + */ + public function testComposerEventIsCalledWhenViewIsRendering() + { + View::composer('tests.basic', function($view) + { + $view->data = array('name' => 'Taylor', 'age' => 25); + }); + + $view = View::make('tests.basic')->render(); + + $this->assertEquals('Taylor is 25', $view); + } + +} \ No newline at end of file diff --git a/laravel/tests/storage/cache/.gitignore b/laravel/tests/storage/cache/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/laravel/tests/storage/database/application.sqlite b/laravel/tests/storage/database/application.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..fbfc2ae0a1033135b719bf2c5e4f0c869fad1131 GIT binary patch literal 196608 zcmeI*O>YxN7y#g1I|%|2Bu*BWvPr2R0?J3!iXJNAPy;E64aOl2muQnLuw-o$+W|sV zwjlLa^w4YjWBLQQRx0YLr*i438!HF`>ZM3+g`Sai_I+n|X6Jp@cVE9YmkyHXR=3xV z2hnu!Z4idR`6vp4V1IFq71zsFE`so7@<#mH@UC!waPpVKdQYE@_EYSHAYiOJ~LWV$vP&DLABOSNWnwK+RqZ7xMu zYD-a6U1&9C>&4RfTD=uT^+qeIFU-wFC!)!u9jDo3bfen5aJkwn20C#&c|DJB7wOKf zQ&&gED#wq9OT+W^H?rb?=$HH32kopTZ=|EUPWr~=vF*2om&SsLC!^EtbUn#ddTHnOk+boU)8~%V zv#d4WnptQp4DQB@cdo9T&CawM?M8O)%zC3by>@@4wVo`s=N~mM-a5V7JlnfFmn_bw zt9Rlgi!R6g{?2v_;aG6!$>`BRyp?r(JDVq$28%Z@*00~VIJ0&Ai#w-p)|#`6jb>W? za_0Ugi#I-A+_?4VR=YEOwt1?zc{eE*ZhV@whC4)!!Gk2r_7!!P^5;SRJb&?y1eOyZ zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB=F2xxj()MA%N(lWe7zc5avU zl@Eo3cq{An!tvtdrTo_*e^GQA0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&Uc%KChl*$v~#%9vnS{@|*L3wXju7sQYq}MNv7j>8O?}GeU{$p{|2oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+z<(z&Q63FWei$abboG4lFmB(=l8;xr z?OKsXGjXqz^glRN8Vx?14%_K^lCAX8&h6J9oKIKp#7P!ij{E(c>B>jpXmI9eIEc5h TZtwMnTf>p4F?f(<*`dDx)*?n< literal 0 HcmV?d00001 diff --git a/laravel/tests/storage/files/desert.jpg b/laravel/tests/storage/files/desert.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0b88c91336ff8073f34d21ccd683a01f0e0995da GIT binary patch literal 845941 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 X-jngnnduiasMn4hsxOk<+%GD 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%0Apbl4L}6&w0tki@}J8Tn6-1G>!okNcw;V2WO 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

@0k<$Nh~r- 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�}hj>JAIT4`1= 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�GYGC-F|$D zE^fMXY7hb%)7Lr5P)8#{n9m1>u9hgjrq$!GroX4HIJItD7Q7c?s`EAXMRK;R_>TzE zPaf;{9N>nehjTI)nsu5v7!}A0r|u0v5$@%{V$#O{0Azt*um%qx>*RPOq#GP zH33TJOhjF|w5zM%oF)6T+mUL0*|{#d2+Liw1a^|viqp$_Ix*B~V@mN#pOonC#Dwr^ zkjHKF5W2CB77-czg%2l@Ls;siH*@%OD1bPgXhr z)QMcw0>tG*U#G3+dx^P@r;qWS9QqrOQRF*4T(iSo5mSm)m{xj!pLU+oNo=IDNi0j^ z)+S#tFrall;^%9#7L#AkaGQcRMOhHDR$6KdQ5gUL15$Dn1lJT#W53SZj23qGt+!42 zx@2Ir7WG(~Fzh5H)U^XtwGB>KsZCm@)*I96sqCWBYw2s&ZI!6xI=Yit&3UXnSC!+h zCF^o3L5FsVG#JhfEX?y-$f8Pc>0DryBu_F|c=t*_AhyIhU3I8{u} zJu2B&rn*Ld39dj4Um@ZgW=ei{rRNs87TU!~6K7oUNOX3!F9l6~x{=eiUFpqU&J*(5 z!kFVlJ~?C6EAKbrV33PN+oP${OvTjZRMcd|_;5JXFKBG-ZcWtNgqy)}RvjLjF9s(~ zXrNS+s-u@0Vm^+Zmb%WK(rqQDMlHl6Q?#pGTUCbDI~DfOnw4dxcEpKRn*r=du{6Ee z@aLx=ah^qyB)3^-XmvVjF_S_9jb@=iBv!eBPzG3Oc73wmRJpgjXl&AbFiWLfSQR?f zl>}=5peBP+9yP?h((!9x)oJ#dj!$QK0@Sq??Hvs*os}(>>i+q|)B9mSEIvbyHcRWJ_<}vjwpi^r;Nq z{DRJpkEoV3nvIJTH54CTOJa3% z(U23_0VU=8oF17|wc5_Go7P&+u2v|XSTk8|sT!rU znp)=O2o&_mSwAQ)mkL1zatvwXTvw#o$$C%C-_xtS*3{MUS312+aB-eDUsLVCqMf>R z2$^g&@s&O?Oe}VpvQ9;qwn$S=i?y`xJoRTCX-ibqk(!_iW&tBl!{v1=k z3^wHwCXU+HH4B_i5&+}YD@6_(n$Bb#Iy&v0na3*L9ZsWFPM+%2I$8E}CYG&8Xe`ic zgM_~3*1@%!9&gEbI*M>#sd|#` zW8K<^VaM!JN;PcRp3cVHau<>&Kz*V-VvEpq8qPad?rt_Ms_=ZliII#&09iv4)S{0X zocNaKTuR+9`>Z5yOBPQ#@9#Z_SN1s-#+`+{LBj z8%_1i7P_^=#;duzE5$9na>lyKFwLk#1WOd|BZfH`WXMNW@Yra-p5dkmB(Oyom536y zkOdX0T0$f&=TaxdLBkojuVH)hnx- zrHX6hWjYEMN(ve=JTn{t;r^pbH!9^Di)+bayT@y4_B`3N8%vK*Q%6y&iiHK5TJh?r zK^wzb3rEEHM)6@|Dnk-+2W#4`p!t53?JPE(Q~{XC`kVKd=18tUj|v(LS?{~l_u}Q6 z+oN%MVUfzHjz7z&sxD%b9FH3F!~@r%F1uY;O^(ZT$d_ck{{S9>x1NF;X&8>P*ST6z z9M+|b4|qio420#whU#dN;VxvDM-)~a9Hp=3mabvJ87SqQYl?WGx1Jd73(ax4^~GTV zu>f)gJwJRkjzQjtJ@{M)HDYNh3<%Vz0Oo zH9?jG(hU36wS}B_OQtQPikTbI2{p)S8mdlo0;iD1hR?MxH+|0H!ei9#6=0$a*}$hC zO9AN=;&hI5IM_Jf#8!D1Ame;njMBAceKyLpdo9|*uG>kkmhF|le)KSDVtr&<{b8z6 zq`!V~8WG|ZvO39bJ=yX*bnKh>lrChC~1y{hvWYMf;gPkO3k&xG`exPp%3}PD{wm?vr4^n4+B8cU^Wr+An z5V;Xdjy?L;}WCd}J5 z<8^fdG@8OI6jplCgNF51gNXgwaLW&GUE_Q=$a|M+u&}&@E{1mj<|s$y2!Qm}E1=YY z>&qV7{{V8Fmr=r`hh@k1m-!UY?QUC+#~g!?jeOQ`P9@Y=@P>KKT~abf@ zNQh=ms8s1=@aIrXMlef1Bu&X7*TGMaa$3>sUt4Od6r}u96j6Jv$ZKn&zglIM#p@4+ zf4vjHkiNLy!`o5q(@8Y;wrtU?fr-pi&_vEuiUs0)Y6WrT6ZgEE?W|B(-`>MD%S6aN z9ZDRTkplr;K!r4@6se%bbGGNRLwjebr8SA5ODvj8Qb`T%giQ7%Wz_9$#SC@q-$cT% zf_p`WrcYX1PTYc6Qtm_u+DB0ZLbgB`Kz%_;1lNzAFqd8FHI?k!Y%X3UZ^@Y`Tu97x z#Uag1w8#KR;fC=|AN2>f&$#aH;n>mq-A2xAi%~~PSg6M}n2<7i71p`0G*X39sD&^G zd5r@-u#085jdYqagW@ZfGvWyIt|^}UL38sx$73Trk?W0^egHt!z#6CrA{-7>7_(~r zYUErBJ2k5$mFe1s$=3e7wGDaX_F+DrLk`zq}{{T<6&GD9b7#S)x zhN<-r#4_XU@y4TV`p>?0tWw&%dTpdNg`*?k@IGI+mLmDb%ero7#^H|l6}@4jwe3T8 z)UOp=7JsMsODvPrXyTJ)T2C2>3;e~vW7MAC?3p-XUmtDo-4b{ z>dlXLcKTag**w>4E^i?kNu^5)8tVgrB9x{pJh$cB+_#2t{u^4A_*0CvajbKC#lK@) zQm?sV%_EaD2`vvV8B#=n5pa66*}Fn5qjUGC zWm%z|hXAPuIKk@saMw4)E^LBIbUj(K6K*c_Um$DljS75{+#qzR=8p)bE7H{Nb+D;%Cy66mo&R~ zS*Fo)jb4vwtI*Vzma%G4)#$cS)|O?L+OxRR>#N_s%FF9y$b51$&_S?U+FaaS*vT|k zcMYkS$s~(fQmY%gMhB1s1#{jvJB$|Fe(w}FJ7ucrMM$E7^nyrMog!ITGtG0U&b7pj zr{ujxzAMxhpHoM@mgZM^K$G&u^B zQ(E%GZi7{?U3`@%p>A#EnOUT{`ArtKjs`CqDd~V$ zJpj~)EWV@sKw>9w?mKqW>$Rnouk}X)Q0c8zWMM(25CANyP(QT2+!st%&1U zV3t`PzRtZhnv<+0^|DrSv0IK=5c`lj_?XBbFwMfmqXlz|h%Lp}ncLkU?ivsurJ5Qt681z9<#rrD15* zs|D!H()hA6`$QKFo`&uTWwUE&YO_nHQ3ua6nW)HD$AvKUhT#NzfZSyt>|%~l1Z+^S z1xV0(N-ApER-=t@n_YXm1eT<8!$V;U-V@Imt6Doz!tZ{~Nb8`iA&zk*aYhxqR|-yZ z*EPCB2AK#q2y}r^O){W0&pu|j2=BzVBcP|`nlRNMfE+KVgUo~Jr9HT=-?>)NYhR05 zWh(?e6=5}mVgNs#;~7Nv=Zs=cBw?Qa0A8#iNl*xj9u@KZJg9L=eI=~z^9rgQWIzf<5?gUK(;vBfmA&vi|^%>MMkmVv5tt`ITq##G=s+{HAtc<$)kM=pI=WHAbpq z&bjB80zYjj<%cb;pptP6@<=W+rE>zcsMDyc_jewRLvogTY#T3Rkqh)tUz``m> zvKGUTxgh@l#7;YQ>P$ssj8N92IvoE1PFSzIj#RjIDs(GQWJvNA_kFxD##=^YMUW;V zPjAUkE0N}0`49)XL2P&Q9lCKL&}u6}aSmB}pcBYb@4}UJ^VzXlvUtMwhm=nv4{WQF zps_;i3u73^mV0BNns}p$q%|Q9W1sBAt7|FlW{%VVuOO<|f%C(eDcpe#Pkb+vtkcq0 zlPxR;NTQU+0a;{?By6x5K*u;4=oWb7Jxw`g19HzYJiYvRVc9G$U>`52bxvk6n|N0$ zjv13tL0Zz7b~Se+jz1w6=h@iFQEI$u=(1FJL~gRiqNADZlNLh}fY})D(@k>=HdXm` zO;sKSypDMc@h&aC<~YLurtzi<2c?BlgiwmDS%#iDit^7FOFSxledUJs+gk*e;thLR z?4O_gQ6>@I)VNyWtr;M&Tm}u}8i2$e-BU%q$2?>t6H+E1Jv|yJP~$p~MLATOjBF3^)*$U<7nsggh(QMElsB4{a?HSiR}5q5s_3dq}yq>B^9 z`D_T$8Len^lf(n%n8Zz~>QZ>>GHm_&=l-MfYKrL+75-BS(L9o~Ns;_sAP%NQ9J8sL z^0c=NCck;hFDzEicV}u+(EQ8E8TB-Zpa6JLRf(-~&X`IK!#jx9sYuv=GF3-q@yWxa zKVwM4$M{PDp1MmA2BOt(3e!JtFRXR0Dn@v=n$ye=A0vlTq%-?V{by@5K>Mi^ zRgQ>;OnS%s`z0J7sPBvpn~cdABtZ}-EQxCSau|8UH>C^S+_DOgG=$Ta0qQh7>xg+N zL>-vVHG;sgX&kqa9;`@aJ^uiIQ$&wXg;&{%N3(!CQQAhS&56(Kt`7AjhP0a)=}2I$ zJXPhl6iyO56RSKCyxvE~Nfk)|;P&YjQ0^_6=^8=1pDIpPC{M=CbQNoe|;&^ky zKEwS(0pfazQ0Wdl(a&cCys6E$O%u@zr(Mg9e> zt>j0i+=>|g0FPbPW%!zl=fe&Bq*Jz-VrF`9P=8N;9K)p9OX3$_FkfH2O5_~izncBM z`epB}P|(P=#e_Y-yGXz#yn-|1mmh8?qSI_?D?GaUYOqG~%JA1eWN8?Y*@~uADrA$K z4xqi|yu>VWDJ*CKJWej*+OMn-Ni;4IQ&m)O9DhvlV5+plLP^=-iey%Y@}vwIN$nt5 zUH<@y7d^-$KAk|DtgcZgSx@1w?WQ!ld)b(lS#>NfxpgVW$0B%)EjHSvQRl9xR^@C6 zr?0PRME-4wm&#UPjACQr%%o@NJ$eZ2=8)3m$3?jpr927pt_tsXwt#>4d<wJc?; z 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

jHmbm=sv zTq)0vDR#LH{enw9%QN{)G_1>J#NjY&2&2)$bk-Ui+$m(j?#x#&vX<~Tst!fXEuMfW!hkChXb!0*v z0`TAkDNiv@IEj|zvoLpJNK&H!CTj+<*_CshGsc#QPace{n8#@_YXRQ>RvX$P6krk=`un3Zw2?K_pQz1pCT2mQ@#b$JTp zIPk4Gic8noZ7Ib&$7SL&ytCS3JU=d2+W+?ZvA@ z@tW?ViR@dHLgUINkJw2<$r8Vmt0bWKARlk*_3Dpu?uM~qv8XOQYoCy(k34O*52qHp ztP68@Je@b-7fnS+;;G;`@yufPqWIU3@yXszgmt(354qr{aV@QPr9FRgy{gc}BWqIk zAmoVG!H#>xrI^Ih41Y~_Ru2}#ERLtj(O|ja$O4EkhX&9|_G-~IEGRIfAe%wl0P9;}aKlE)L zhg&oM0Q+430MY|kmL_nJ$y(iy%)3@+KEB+DGyD3B6Yo-71-qW&NRI)lAVy}YCjX(DO1`+Ep30_rc(LR*e`l1H<{mNN*sKCX#ah{iB(qwi%%1Hnl{;1< zvh^d&GBQS{DF_Q9jO1&M*L85EmqV7|6zOIIim((1$1_ox1mn(T?p>pAoSMrM3TiST zkypWzM)fa&AaTg^#qz&7<2$It6|8G&UXb8br!9pRErs?Wu}%kD{{WS0X(RG^BaJ41 zbHYfaK%h~!!@63y5+tSoMs%)OR5!yx;0YjRRD+F8w|REu>_3rl3AzJ?NMe8abUKR< z;RpDU)}YkmKJ<;sV9lFyl###})V_8aev`L1)wHRb7QB-*K zZzkI%>`t(^R_-+fF{LR&3e=BL6v&#AIi5JlHva%`wOlJ*TgMjHaK%{zA5$I@I2vfj zAXF?1QCbR-i!HtW$BsM|t(ouY=v%o{HTSd);E8MAWji`BM?p#xn#D|t2inb_TG)2` zUC5au0y~n5-^*KH8xb+t0uw9{%fi(X36+p%VO zeBLQN*$IWGXuxMa)=0-(ZE@}>X4B9tv@8OE%aI@fokt@BeyEW+59oT2y{ zM|M~7CFr!E%poI~%+nJ!IYsM+JDWIVcqC>+6JKKuW@z>OW*df*MovK0Z|Ei(A^U zVzX7HzS^xpJhsJH>a+zO@rfoaVx73{OJ2lK`7C8s8He!WBvPFbxMzYcsLHkQ8Bj9P zqnWN%#@5`*_F59=<|v8H0@q_P z&?F)}I+ARa=6ZWtww}%9ju2%;M6Q)9Pdp2k zV>g?+{iOCCdRE5KSlM*rcM%XZD+&spH6*bB@}&Sd9}^Z*L(%cC``AvKNvt zq>b~6Ry7Nqx)~B{+i4yM z!S$l)(uTDRLCrznK&Uwy4mfVpeY>{0wb}0DOO~ZlM%K+I5Ks_QGiOn#tp`3>kh91p z(pZmUsiPfw3i4IGqn@>;zpa)NYKG1r17gQ`O9t^Bj78g$EKNi5sPg_Wr>4zBWfQ^ie1swhb>hZA1qJtu4Bh(NhFJ* z)&3oSGZi1qwO>`LGtOE60H;JO0~|ukxfqPE-PjNd8lB%}+^#CUc?_+^^o?>*WLkoi z11ygL#<^on+TF{s+A^zJ+pIxN5VLgRsi|1O%}|r5kKQJjux~jx#XAbJ%gn3IYhcA* zj9Pgfy-LgoS(eLMiq!iHDkH#>DHbPFg&mJo_B(HNTTH98dSL>LWTvM3G6TrwF?YJ} z-%jssOr6k;HNYpM95N9UW59z${{W;gHODw?HoP!cdAQXb&Z@H#k+``Hi&1-Q95g3B zL1UbkS7c(KmCtkjVZ38Xs<6@37;+_YKptq?rEzLbkYqA;GFOu6$H# zr--TKP91AGZAh%FG8wd0Rz

Comments

+ {{-- This is a comment --}} + + {{-- + This is a + multi-line + comment. + --}} + +> **Note:** Unlike HTML comments, Blade comments are not visible in the HTML source. + + +## Blade Control Structures + +#### For Loop: + + @for ($i = 0; $i <= count($comments); $i++) + The comment body is {{ $comments[$i] }} + @endfor + +#### Foreach Loop: @foreach ($comments as $comment) - The comment body is {{$comment->body}}. + The comment body is {{ $comment->body }}. @endforeach -#### Other Blade control structures: +#### While Loop: + + @while ($something) + I am still looping! + @endwhile + +#### If Statement: + + @if ( $message == true ) + I'm displaying the message! + @endif + +#### If Else Statement: @if (count($comments) > 0) I have comments! @@ -96,15 +128,17 @@ Similarly, you can use **@render**, which behaves the same as **@include** excep I have no comments! @endif - @for ($i =0; $i < count($comments) - 1; $i++) - The comment body is {{$comments[$i]}} - @endfor +#### Else If Statement: - @while ($something) - I am still looping! - @endwhile + @if ( $message == 'success' ) + It was a success! + @elseif ( $message == 'error' ) + An error occurred. + @else + Did it work? + @endif -#### The "for-else" control structure: +#### For Else Statement: @forelse ($posts as $post) {{ $post->body }} @@ -112,35 +146,18 @@ Similarly, you can use **@render**, which behaves the same as **@include** excep There are not posts in the array! @endforelse - -#### The "unless" control structure: +#### Unless Statement: @unless(Auth::check()) - {{ HTML::link_to_route('login', 'Login'); }} + Login @endunless - // Equivalent... + // Equivalent to... - ... + Login - -#### Blade comments: - - @if ($check) - {{-- This is a comment --}} - ... - @endif - - {{-- - This is - a multi-line - comment. - --}} - -> **Note:** Blade comments, unlike HTML comments, are not visible in the HTML source. - ## Blade Layouts @@ -173,7 +190,9 @@ Great! Now, we can simply return the "profile" view from our route: The profile view will automatically use the "master" template thanks to Blade's **@layout** expression. -**Important:** The **@layout** call must always be on the very first line of the file, with no leading whitespaces or newline breaks. +> **Important:** The **@layout** call must always be on the very first line of the file, with no leading whitespaces or newline breaks. + +#### Appending with @parent Sometimes you may want to only append to a section of a layout rather than overwrite it. For example, consider the navigation list in our "master" layout. Let's assume we just want to append a new list item. Here's how to do it: @@ -188,4 +207,4 @@ Sometimes you may want to only append to a section of a layout rather than overw Welcome to the profile page! @endsection -Notice the **@parent** Blade construct? It will be replaced with the contents of the layout's navigation section, providing you with a beautiful and powerful method of performing layout extension and inheritance. +**@parent** will be replaced with the contents of the layout's *navigation* section, providing you with a beautiful and powerful method of performing layout extension and inheritance. From d816eb9ef31d3690f57b96e1571b60aaea85fe81 Mon Sep 17 00:00:00 2001 From: crynobone Date: Wed, 1 Aug 2012 06:34:44 +0800 Subject: [PATCH 32/92] Refix unit testing for Laravel Signed-off-by: crynobone --- laravel/tests/cases/asset.test.php | 8 +- laravel/tests/cases/auth.test.php | 176 ++++++++++++++++++------ laravel/tests/cases/blade.test.php | 8 +- laravel/tests/cases/bundle.test.php | 6 +- laravel/tests/cases/controller.test.php | 17 ++- laravel/tests/cases/cookie.test.php | 44 +++++- laravel/tests/cases/input.test.php | 2 +- laravel/tests/cases/redirect.test.php | 4 +- laravel/tests/cases/session.test.php | 4 +- laravel/tests/cases/uri.test.php | 20 ++- 10 files changed, 209 insertions(+), 80 deletions(-) diff --git a/laravel/tests/cases/asset.test.php b/laravel/tests/cases/asset.test.php index d62945de..d4214f12 100644 --- a/laravel/tests/cases/asset.test.php +++ b/laravel/tests/cases/asset.test.php @@ -184,13 +184,11 @@ class AssetTest extends PHPUnit_Framework_TestCase { */ public function testPathMethodReturnsCorrectPathForABundleAsset() { - Config::set('application.url', 'http://localhost'); - $container = $this->getContainer(); $container->bundle('eloquent'); - $this->assertEquals('http://localhost/bundles/eloquent/foo.jpg', $container->path('foo.jpg')); + $this->assertEquals('/bundles/eloquent/foo.jpg', $container->path('foo.jpg')); } /** @@ -200,11 +198,9 @@ class AssetTest extends PHPUnit_Framework_TestCase { */ public function testPathMethodReturnsCorrectPathForAnApplicationAsset() { - Config::set('application.url', 'http://localhost'); - $container = $this->getContainer(); - $this->assertEquals('http://localhost/foo.jpg', $container->path('foo.jpg')); + $this->assertEquals('/foo.jpg', $container->path('foo.jpg')); } /** diff --git a/laravel/tests/cases/auth.test.php b/laravel/tests/cases/auth.test.php index 9f6b3928..16ba428a 100644 --- a/laravel/tests/cases/auth.test.php +++ b/laravel/tests/cases/auth.test.php @@ -1,5 +1,7 @@ restartRequest(); + } + + /** + * Reinitialize the global request. + * + * @return void + */ + protected function restartRequest() + { + // FIXME: Ugly hack, but old contents from previous requests seem to + // trip up the Foundation class. + $_FILES = array(); + + Request::$foundation = RequestFoundation::createFromGlobals(); + } + /** * Test the Auth::user method. * @@ -54,7 +83,9 @@ class AuthTest extends PHPUnit_Framework_TestCase { */ public function testCheckMethodReturnsTrueWhenUserIsSet() { - $this->assertTrue(AuthUserReturnsDummy::check()); + $auth = new AuthUserReturnsDummy; + + $this->assertTrue($auth->check()); } /** @@ -64,7 +95,9 @@ class AuthTest extends PHPUnit_Framework_TestCase { */ public function testCheckMethodReturnsFalseWhenNoUserIsSet() { - $this->assertFalse(AuthUserReturnsNull::check()); + $auth = new AuthUserReturnsNull; + + $this->assertFalse($auth->check()); } /** @@ -74,7 +107,9 @@ class AuthTest extends PHPUnit_Framework_TestCase { */ public function testGuestReturnsTrueWhenNoUserIsSet() { - $this->assertTrue(AuthUserReturnsNull::guest()); + $auth = new AuthUserReturnsNull; + + $this->assertTrue($auth->guest()); } /** @@ -84,7 +119,9 @@ class AuthTest extends PHPUnit_Framework_TestCase { */ public function testGuestReturnsFalseWhenUserIsSet() { - $this->assertFalse(AuthUserReturnsDummy::guest()); + $auth = new AuthUserReturnsDummy; + + $this->assertFalse($auth->guest()); } /** @@ -107,10 +144,12 @@ class AuthTest extends PHPUnit_Framework_TestCase { public function testUserReturnsUserByID() { Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver')); - // FIXME: Not sure whether hard-coding the key is a good idea. - Session::$instance->session['data']['laravel_auth_drivers_fluent_login'] = 1; + + Auth::login(1); $this->assertEquals('Taylor Otwell', Auth::user()->name); + + Auth::logout(); } /** @@ -121,8 +160,8 @@ class AuthTest extends PHPUnit_Framework_TestCase { public function testNullReturnedWhenUserIDNotValidInteger() { Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver')); - // FIXME: Not sure whether hard-coding the key is a good idea. - Session::$instance->session['data']['laravel_auth_drivers_fluent_login'] = 'asdlkasd'; + + Auth::login('asdlkasd'); $this->assertNull(Auth::user()); } @@ -137,10 +176,13 @@ class AuthTest extends PHPUnit_Framework_TestCase { Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver')); $cookie = Crypter::encrypt('1|'.Str::random(40)); - Cookie::forever(Config::get('auth.cookie'), $cookie); + Cookie::forever('authloginstub_remember', $cookie); - $this->assertEquals('Taylor Otwell', AuthLoginStub::user()->name); - $this->assertTrue(AuthLoginStub::user() === $_SERVER['auth.login.stub']['user']); + $auth = new AuthLoginStub; + + $this->assertEquals('Taylor Otwell', $auth->user()->name); + + $this->assertTrue($auth->user()->id === $_SERVER['auth.login.stub']['user']); } /** @@ -150,11 +192,11 @@ class AuthTest extends PHPUnit_Framework_TestCase { */ public function testAttemptMethodReturnsFalseWhenCredentialsAreInvalid() { - $this->assertFalse(Auth::attempt('foo', 'foo')); - $this->assertFalse(Auth::attempt('foo', null)); - $this->assertFalse(Auth::attempt(null, null)); - $this->assertFalse(Auth::attempt('taylor', 'password')); - $this->assertFalse(Auth::attempt('taylor', 232)); + $this->assertFalse(Auth::attempt(array('username' => 'foo', 'password' => 'foo'))); + $this->assertFalse(Auth::attempt(array('username' => 'foo', 'password' => null))); + $this->assertFalse(Auth::attempt(array('username' => null, 'password' => null))); + $this->assertFalse(Auth::attempt(array('username' => 'taylor', 'password' => 'password'))); + $this->assertFalse(Auth::attempt(array('username' => 'taylor', 'password' => 232))); } /** @@ -164,13 +206,22 @@ class AuthTest extends PHPUnit_Framework_TestCase { */ public function testAttemptReturnsTrueWhenCredentialsAreCorrect() { - $this->assertTrue(AuthLoginStub::attempt('taylor', 'password1')); - $this->assertEquals('Taylor Otwell', $_SERVER['auth.login.stub']['user']->name); + Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver')); + + $auth = new AuthLoginStub; + + $this->assertTrue($auth->attempt(array('username' => 'taylor', 'password' => 'password1'))); + $this->assertEquals('1', $_SERVER['auth.login.stub']['user']); $this->assertFalse($_SERVER['auth.login.stub']['remember']); - $this->assertTrue(AuthLoginStub::attempt('taylor', 'password1', true)); - $this->assertEquals('Taylor Otwell', $_SERVER['auth.login.stub']['user']->name); + $auth_secure = new AuthLoginStub; + + $this->assertTrue($auth_secure->attempt(array('username' => 'taylor', 'password' => 'password1', 'remember' => true))); + $this->assertEquals('1', $_SERVER['auth.login.stub']['user']); $this->assertTrue($_SERVER['auth.login.stub']['remember']); + + $auth_secure->logout(); + $auth->logout(); } /** @@ -189,9 +240,13 @@ class AuthTest extends PHPUnit_Framework_TestCase { $user = Session::$instance->session['data']['laravel_auth_drivers_fluent_login']; $this->assertEquals(10, $user->id); + + Auth::logout(); + Auth::login(5); $user = Session::$instance->session['data']['laravel_auth_drivers_fluent_login']; $this->assertEquals(5, $user); + Auth::logout(5); } /** @@ -203,20 +258,27 @@ class AuthTest extends PHPUnit_Framework_TestCase { { Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver')); + $this->setServerVar('HTTPS', 'on'); + // Set the session vars to make sure remember cookie uses them Config::set('session.path', 'foo'); Config::set('session.domain', 'bar'); Config::set('session.secure', true); - Auth::login(10); - $this->assertTrue(isset(Cookie::$jar[Config::get('auth.cookie')])); + Auth::login(1, true); - $cookie = Cookie::$jar[Config::get('auth.cookie')]['value']; + $this->assertTrue(isset(Cookie::$jar['laravel_auth_drivers_fluent_remember'])); + + $cookie = Cookie::$jar['laravel_auth_drivers_fluent_remember']['value']; $cookie = explode('|', Crypter::decrypt($cookie)); - $this->assertEquals(10, $cookie[0]); - $this->assertEquals('foo', Cookie::$jar[Config::get('auth.cookie')]['path']); - $this->assertEquals('bar', Cookie::$jar[Config::get('auth.cookie')]['domain']); - $this->assertTrue(Cookie::$jar[Config::get('auth.cookie')]['secure']); + $this->assertEquals(1, $cookie[0]); + $this->assertEquals('foo', Cookie::$jar['laravel_auth_drivers_fluent_remember']['path']); + $this->assertEquals('bar', Cookie::$jar['laravel_auth_drivers_fluent_remember']['domain']); + $this->assertTrue(Cookie::$jar['laravel_auth_drivers_fluent_remember']['secure']); + + Auth::logout(); + + $this->setServerVar('HTTPS', 'off'); } /** @@ -228,40 +290,70 @@ class AuthTest extends PHPUnit_Framework_TestCase { { Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver')); - //$data = Session::$instance->session['data']['laravel_auth_drivers_fluent_login'] = 10; + $data = Session::$instance->session['data']['laravel_auth_drivers_fluent_login'] = 1; - // FIXME: Restore some of these! - //Config::set('auth.logout', function($user) { $_SERVER['auth.logout.stub'] = $user; }); - - //Auth::$user = 'Taylor'; Auth::logout(); - //$this->assertEquals('Taylor', $_SERVER['auth.logout.stub']); + // A workaround since Cookie will is only stored in memory, until Response class is called. + Auth::driver()->token = null; + $this->assertNull(Auth::user()); - // FIXME: Not sure whether hard-coding the key is a good idea. + $this->assertFalse(isset(Session::$instance->session['data']['laravel_auth_drivers_fluent_login'])); $this->assertTrue(Cookie::$jar['laravel_auth_drivers_fluent_remember']['expiration'] < time()); } } -class AuthUserReturnsNull extends Laravel\Auth { +class AuthUserReturnsNull extends Laravel\Auth\Drivers\Driver { - public static function user() {} + public function user() { return null; } + + public function retrieve($id) { return null; } + + public function attempt($arguments = array()) { return null; } } -class AuthUserReturnsDummy extends Laravel\Auth { +class AuthUserReturnsDummy extends Laravel\Auth\Drivers\Driver { - public static function user() { return 'Taylor'; } + public function user() { return 'Taylor'; } -} + public function retrieve($id) { return null; } -class AuthLoginStub extends Laravel\Auth { - - public static function login($user, $remember = false) + public function attempt($arguments = array()) { + return $this->login($arguments['username']); + } + +} + +class AuthLoginStub extends Laravel\Auth\Drivers\Fluent { + + public function login($user, $remember = false) + { + if (is_null($remember)) $remember = false; + $_SERVER['auth.login.stub'] = compact('user', 'remember'); + + return parent::login($user, $remember); + } + + public function logout() + { + parent::logout(); + } + + public function retrieve($id) + { + $user = parent::retrieve($id); + + $_SERVER['auth.login.stub'] = array( + 'user' => $user->id, + 'remember' => false, + ); + + return $user; } } \ No newline at end of file diff --git a/laravel/tests/cases/blade.test.php b/laravel/tests/cases/blade.test.php index 70e80b3b..343be2ea 100644 --- a/laravel/tests/cases/blade.test.php +++ b/laravel/tests/cases/blade.test.php @@ -30,10 +30,10 @@ class BladeTest extends PHPUnit_Framework_TestCase { $blade3 = "@if (true)\nfoo\n@elseif (false)\nbar\n@endif"; $blade4 = "@if (true)\nfoo\n@else\nbar\n@endif"; - $this->assertEquals("\nfoo\n", Blade::compile_string($blade1)); - $this->assertEquals(" 0): ?>\nfoo\n", Blade::compile_string($blade2)); - $this->assertEquals("\nfoo\n\nbar\n", Blade::compile_string($blade3)); - $this->assertEquals("\nfoo\n\nbar\n", Blade::compile_string($blade4)); + $this->assertEquals("\nfoo\n", Blade::compile_string($blade1)); + $this->assertEquals(" 0): ?>\nfoo\n", Blade::compile_string($blade2)); + $this->assertEquals("\nfoo\n\nbar\n", Blade::compile_string($blade3)); + $this->assertEquals("\nfoo\n\nbar\n", Blade::compile_string($blade4)); } /** diff --git a/laravel/tests/cases/bundle.test.php b/laravel/tests/cases/bundle.test.php index 5a107d62..9826a50f 100644 --- a/laravel/tests/cases/bundle.test.php +++ b/laravel/tests/cases/bundle.test.php @@ -147,10 +147,8 @@ class BundleTest extends PHPUnit_Framework_TestCase { */ public function testAssetPathReturnsPathToBundlesAssets() { - Config::set('application.url', 'http://localhost'); - - $this->assertEquals('http://localhost/bundles/dashboard/', Bundle::assets('dashboard')); - $this->assertEquals('http://localhost/', Bundle::assets(DEFAULT_BUNDLE)); + $this->assertEquals('/bundles/dashboard/', Bundle::assets('dashboard')); + $this->assertEquals('/', Bundle::assets(DEFAULT_BUNDLE)); Config::set('application.url', ''); } diff --git a/laravel/tests/cases/controller.test.php b/laravel/tests/cases/controller.test.php index 1577ece3..9eb192b9 100644 --- a/laravel/tests/cases/controller.test.php +++ b/laravel/tests/cases/controller.test.php @@ -96,24 +96,24 @@ class ControllerTest extends PHPUnit_Framework_TestCase { { $_SERVER['test-on-post'] = false; - $_SERVER['REQUEST_METHOD'] = 'GET'; + Request::$foundation->setMethod('GET'); Controller::call('filter@index'); $this->assertFalse($_SERVER['test-on-post']); - $_SERVER['REQUEST_METHOD'] = 'POST'; + Request::$foundation->setMethod('POST'); Controller::call('filter@index'); $this->assertTrue($_SERVER['test-on-post']); $_SERVER['test-on-get-put'] = false; - $_SERVER['REQUEST_METHOD'] = 'POST'; + Request::$foundation->setMethod('POST'); Controller::call('filter@index'); $this->assertFalse($_SERVER['test-on-get-put']); - $_SERVER['REQUEST_METHOD'] = 'PUT'; + Request::$foundation->setMethod('PUT'); Controller::call('filter@index'); $this->assertTrue($_SERVER['test-on-get-put']); @@ -183,15 +183,18 @@ class ControllerTest extends PHPUnit_Framework_TestCase { */ public function testRestfulControllersRespondWithRestfulMethods() { - $_SERVER['REQUEST_METHOD'] = 'GET'; + Request::$foundation->setMethod('GET'); + //$_SERVER['REQUEST_METHOD'] = 'GET'; $this->assertEquals('get_index', Controller::call('restful@index')->content); - $_SERVER['REQUEST_METHOD'] = 'PUT'; + //$_SERVER['REQUEST_METHOD'] = 'PUT'; + Request::$foundation->setMethod('PUT'); $this->assertEquals(404, Controller::call('restful@index')->status()); - $_SERVER['REQUEST_METHOD'] = 'POST'; + //$_SERVER['REQUEST_METHOD'] = 'POST'; + Request::$foundation->setMethod('POST'); $this->assertEquals('post_index', Controller::call('restful@index')->content); } diff --git a/laravel/tests/cases/cookie.test.php b/laravel/tests/cases/cookie.test.php index dcfaf5d8..f62f7857 100644 --- a/laravel/tests/cases/cookie.test.php +++ b/laravel/tests/cases/cookie.test.php @@ -1,5 +1,7 @@ restartRequest(); + } + + /** + * Reinitialize the global request. + * + * @return void + */ + protected function restartRequest() + { + // FIXME: Ugly hack, but old contents from previous requests seem to + // trip up the Foundation class. + $_FILES = array(); + + Request::$foundation = RequestFoundation::createFromGlobals(); + } + /** * Test Cookie::has method. * @@ -69,12 +98,19 @@ class CookieTest extends \PHPUnit_Framework_TestCase { { Cookie::forever('foo', 'bar'); $this->assertEquals('bar', Cookie::$jar['foo']['value']); - $this->assertEquals(525600, Cookie::$jar['foo']['expiration']); + + // Shouldn't be able to test this cause while we indicate -2000 seconds + // cookie expiration store timestamp. + // $this->assertEquals(525600, Cookie::$jar['foo']['expiration']); + + $this->setServerVar('HTTPS', 'on'); Cookie::forever('bar', 'baz', 'path', 'domain', true); $this->assertEquals('path', Cookie::$jar['bar']['path']); $this->assertEquals('domain', Cookie::$jar['bar']['domain']); $this->assertTrue(Cookie::$jar['bar']['secure']); + + $this->setServerVar('HTTPS', 'off'); } /** @@ -85,7 +121,11 @@ class CookieTest extends \PHPUnit_Framework_TestCase { public function testForgetSetsCookieWithExpiration() { Cookie::forget('bar', 'path', 'domain'); - $this->assertEquals(-2000, Cookie::$jar['bar']['expiration']); + + // Shouldn't be able to test this cause while we indicate -2000 seconds + // cookie expiration store timestamp. + //$this->assertEquals(-2000, Cookie::$jar['bar']['expiration']); + $this->assertEquals('path', Cookie::$jar['bar']['path']); $this->assertEquals('domain', Cookie::$jar['bar']['domain']); $this->assertFalse(Cookie::$jar['bar']['secure']); diff --git a/laravel/tests/cases/input.test.php b/laravel/tests/cases/input.test.php index 76172c1e..5a1890f0 100644 --- a/laravel/tests/cases/input.test.php +++ b/laravel/tests/cases/input.test.php @@ -149,7 +149,7 @@ class InputTest extends PHPUnit_Framework_TestCase { { $this->setSession(); - $input = array('name' => 'Taylor'); + $input = array('name' => 'Taylor', 'age' => 30); Request::foundation()->request->add($input); Input::flash(); diff --git a/laravel/tests/cases/redirect.test.php b/laravel/tests/cases/redirect.test.php index 4f0897d7..cce63a81 100644 --- a/laravel/tests/cases/redirect.test.php +++ b/laravel/tests/cases/redirect.test.php @@ -12,7 +12,7 @@ class RedirectTest extends PHPUnit_Framework_TestCase { Config::set('session.driver', 'foo'); Router::$routes = array(); Router::$names = array(); - Config::set('application.url', 'http://localhost'); + URL::$base = 'http://localhost/'; Config::set('application.index', ''); } @@ -25,7 +25,7 @@ class RedirectTest extends PHPUnit_Framework_TestCase { Config::set('session.driver', ''); Router::$routes = array(); Router::$names = array(); - Config::set('application.url', ''); + URL::$base = ''; Config::set('application.index', 'index.php'); Session::$instance = null; } diff --git a/laravel/tests/cases/session.test.php b/laravel/tests/cases/session.test.php index 05b0299d..cf6946a7 100644 --- a/laravel/tests/cases/session.test.php +++ b/laravel/tests/cases/session.test.php @@ -373,7 +373,9 @@ class SessionTest extends PHPUnit_Framework_TestCase { $cookie = Cookie::$jar[Config::get('session.cookie')]; $this->assertEquals('foo', $cookie['value']); - $this->assertEquals(Config::get('session.lifetime'), $cookie['expiration']); + // Shouldn't be able to test this cause session.lifetime store number of minutes + // while cookie expiration store timestamp when it going to expired. + // $this->assertEquals(Config::get('session.lifetime'), $cookie['expiration']); $this->assertEquals(Config::get('session.domain'), $cookie['domain']); $this->assertEquals(Config::get('session.path'), $cookie['path']); $this->assertEquals(Config::get('session.secure'), $cookie['secure']); diff --git a/laravel/tests/cases/uri.test.php b/laravel/tests/cases/uri.test.php index fc64b3fb..8f2b85ff 100644 --- a/laravel/tests/cases/uri.test.php +++ b/laravel/tests/cases/uri.test.php @@ -49,7 +49,7 @@ class URITest extends PHPUnit_Framework_TestCase { */ public function testSegmentMethodReturnsAURISegment() { - $this->setRequestUri('http://localhost/index.php/user/profile'); + $this->setRequestUri('/user/profile'); $this->assertEquals('user', URI::segment(1)); $this->assertEquals('profile', URI::segment(2)); @@ -61,16 +61,14 @@ class URITest extends PHPUnit_Framework_TestCase { public function requestUriProvider() { return array( - array('/index.php', '/'), - array('/index.php/', '/'), - array('http://localhost/user', 'user'), - array('http://localhost/user/', 'user'), - array('http://localhost/index.php', '/'), - array('http://localhost/index.php/', '/'), - array('http://localhost/index.php//', '/'), - array('http://localhost/index.php/user', 'user'), - array('http://localhost/index.php/user/', 'user'), - array('http://localhost/index.php/user/profile', 'user/profile'), + array('/user', 'user'), + array('/user/', 'user'), + array('', '/'), + array('/', '/'), + array('//', '/'), + array('/user', 'user'), + array('/user/', 'user'), + array('/user/profile', 'user/profile'), ); } From 5716b4da407be93288c342b771f8121f5e032496 Mon Sep 17 00:00:00 2001 From: Tobsn Date: Thu, 2 Aug 2012 00:54:30 +0200 Subject: [PATCH 33/92] type boolean is tinyint(1) switched from default "tinyint" which creates a tinyint(4) to the standard mysql boolean type "tinyint(1)" --- laravel/database/schema/grammars/mysql.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel/database/schema/grammars/mysql.php b/laravel/database/schema/grammars/mysql.php index e8c926fe..da990bc8 100644 --- a/laravel/database/schema/grammars/mysql.php +++ b/laravel/database/schema/grammars/mysql.php @@ -383,7 +383,7 @@ class MySQL extends Grammar { */ protected function type_boolean(Fluent $column) { - return 'TINYINT'; + return 'TINYINT(1)'; } /** From 727afc1bfa4f4eb0033a5705895bc39309e2f63d Mon Sep 17 00:00:00 2001 From: apathetic012 Date: Fri, 3 Aug 2012 10:01:16 +0800 Subject: [PATCH 34/92] fix namespace issue on exception Signed-off-by: apathetic012 --- laravel/ioc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/laravel/ioc.php b/laravel/ioc.php index b2597d32..5b448dca 100644 --- a/laravel/ioc.php +++ b/laravel/ioc.php @@ -158,7 +158,7 @@ class IoC { // no binding registered for the abstraction so we need to bail out. if ( ! $reflector->isInstantiable()) { - throw new Exception("Resolution target [$type] is not instantiable."); + throw new \Exception("Resolution target [$type] is not instantiable."); } $constructor = $reflector->getConstructor(); @@ -195,7 +195,7 @@ class IoC { // we'll just bomb out with an error since we have nowhere to go. if (is_null($dependency)) { - throw new Exception("Unresolvable dependency resolving [$parameter]."); + throw new \Exception("Unresolvable dependency resolving [$parameter]."); } $dependencies[] = static::resolve($dependency->name); From 228f57226b5b6533ae0424e5c9bc60591855a997 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Fri, 3 Aug 2012 18:09:37 +0300 Subject: [PATCH 35/92] Extract sweep method in Session payload class. This allows for manually triggering garbage collection in session drivers. --- laravel/session/payload.php | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/laravel/session/payload.php b/laravel/session/payload.php index 1149951f..48aedd94 100644 --- a/laravel/session/payload.php +++ b/laravel/session/payload.php @@ -298,13 +298,29 @@ class Payload { $this->cookie($config); // Some session drivers implement the Sweeper interface meaning that - // they must clean up expired sessions manually. If the driver is a - // sweeper, we'll calculate if we need to run garbage collection. + // they must clean up expired sessions manually. Here we'll calculate + // if we need to run garbage collection. $sweepage = $config['sweepage']; - if ($this->driver instanceof Sweeper and (mt_rand(1, $sweepage[1]) <= $sweepage[0])) + if (mt_rand(1, $sweepage[1]) <= $sweepage[0]) { - $this->driver->sweep(time() - ($config['lifetime'] * 60)); + $this->sweep(); + } + } + + /** + * Clean up expired sessions. + * + * If the session driver is a sweeper, it must clean up expired sessions + * from time to time. This method triggers garbage collection. + * + * @return void + */ + public function sweep() + { + if ($this->driver instanceof Sweeper) + { + $this->driver->sweep(time() - (Config::get('session.lifetime') * 60)); } } From 690e8572aa40edf6a813984b79fe11e9a9857d09 Mon Sep 17 00:00:00 2001 From: Sergii Grebeniuk Date: Fri, 3 Aug 2012 18:17:48 +0300 Subject: [PATCH 36/92] phpdoc fixes --- laravel/blade.php | 7 ++++--- laravel/cache/drivers/driver.php | 1 + laravel/cache/drivers/memcached.php | 1 + laravel/cache/drivers/sectionable.php | 1 + laravel/cli/tasks/help.php | 1 - laravel/cli/tasks/test/runner.php | 1 + laravel/database/eloquent/model.php | 1 + .../database/eloquent/relationships/belongs_to.php | 5 +++-- laravel/database/eloquent/relationships/has_many.php | 5 +++-- .../relationships/has_many_and_belongs_to.php | 11 +++++++---- laravel/database/eloquent/relationships/has_one.php | 5 +++-- laravel/database/query.php | 1 + laravel/database/schema.php | 2 +- laravel/database/schema/grammars/grammar.php | 4 ++-- laravel/database/schema/grammars/mysql.php | 2 +- laravel/database/schema/grammars/postgres.php | 2 +- laravel/database/schema/grammars/sqlserver.php | 2 +- laravel/database/schema/table.php | 1 + laravel/event.php | 2 +- laravel/form.php | 2 +- laravel/helpers.php | 2 +- laravel/html.php | 2 +- laravel/ioc.php | 1 + laravel/log.php | 3 ++- laravel/pluralizer.php | 1 + laravel/profiling/profiler.php | 2 ++ laravel/redirect.php | 2 +- laravel/request.php | 1 + laravel/routing/router.php | 2 +- laravel/validator.php | 1 + laravel/view.php | 2 +- 31 files changed, 48 insertions(+), 28 deletions(-) diff --git a/laravel/blade.php b/laravel/blade.php index 69d94128..15c8efde 100644 --- a/laravel/blade.php +++ b/laravel/blade.php @@ -95,7 +95,6 @@ class Blade { * * @param string $view * @param string $path - * @param string $compiled * @return bool */ public static function expired($view, $path) @@ -106,7 +105,7 @@ class Blade { /** * Compiles the specified file containing Blade pseudo-code into valid PHP. * - * @param string $path + * @param string $view * @return string */ public static function compile($view) @@ -168,6 +167,7 @@ class Blade { * Extract a variable value out of a Blade expression. * * @param string $value + * @param string $expression * @return string */ protected static function extract($value, $expression) @@ -403,6 +403,7 @@ class Blade { /** * Rewrites Blade yield section statements into valid PHP. * + * @param string $value * @return string */ protected static function compile_yield_sections($value) @@ -468,7 +469,7 @@ class Blade { /** * Get the fully qualified path for a compiled view. * - * @param string $view + * @param string $path * @return string */ public static function compiled($path) diff --git a/laravel/cache/drivers/driver.php b/laravel/cache/drivers/driver.php index c6abcb2e..5df317be 100644 --- a/laravel/cache/drivers/driver.php +++ b/laravel/cache/drivers/driver.php @@ -67,6 +67,7 @@ abstract class Driver { * @param string $key * @param mixed $default * @param int $minutes + * @param string $function * @return mixed */ public function remember($key, $default, $minutes, $function = 'put') diff --git a/laravel/cache/drivers/memcached.php b/laravel/cache/drivers/memcached.php index 3e6a454d..5a324bf5 100644 --- a/laravel/cache/drivers/memcached.php +++ b/laravel/cache/drivers/memcached.php @@ -20,6 +20,7 @@ class Memcached extends Sectionable { * Create a new Memcached cache driver instance. * * @param Memcached $memcache + * @param string $key * @return void */ public function __construct(\Memcached $memcache, $key) diff --git a/laravel/cache/drivers/sectionable.php b/laravel/cache/drivers/sectionable.php index 4ec78246..93566989 100644 --- a/laravel/cache/drivers/sectionable.php +++ b/laravel/cache/drivers/sectionable.php @@ -63,6 +63,7 @@ abstract class Sectionable extends Driver { * @param string $key * @param mixed $default * @param int $minutes + * @param string $function * @return mixed */ public function remember_in_section($section, $key, $default, $minutes, $function = 'put') diff --git a/laravel/cli/tasks/help.php b/laravel/cli/tasks/help.php index 8cfcd768..929c4ff8 100644 --- a/laravel/cli/tasks/help.php +++ b/laravel/cli/tasks/help.php @@ -8,7 +8,6 @@ class Help extends Task { /** * List available artisan commands. * - * @param array $arguments * @return void */ public function commands() diff --git a/laravel/cli/tasks/test/runner.php b/laravel/cli/tasks/test/runner.php index 937046d8..250450d1 100644 --- a/laravel/cli/tasks/test/runner.php +++ b/laravel/cli/tasks/test/runner.php @@ -10,6 +10,7 @@ class Runner extends Task { /** * Run all of the unit tests for the application. * + * @param array $bundles * @return void */ public function run($bundles = array()) diff --git a/laravel/database/eloquent/model.php b/laravel/database/eloquent/model.php index 1890c798..a5baf82e 100644 --- a/laravel/database/eloquent/model.php +++ b/laravel/database/eloquent/model.php @@ -567,6 +567,7 @@ abstract class Model { * Get a given attribute from the model. * * @param string $key + * @return mixed */ public function get_attribute($key) { diff --git a/laravel/database/eloquent/relationships/belongs_to.php b/laravel/database/eloquent/relationships/belongs_to.php index ef257836..e000ca40 100644 --- a/laravel/database/eloquent/relationships/belongs_to.php +++ b/laravel/database/eloquent/relationships/belongs_to.php @@ -79,8 +79,9 @@ class Belongs_To extends Relationship { /** * Match eagerly loaded child models to their parent models. * - * @param array $children - * @param array $parents + * @param string $relationship + * @param array $children + * @param array $parents * @return void */ public function match($relationship, &$children, $parents) diff --git a/laravel/database/eloquent/relationships/has_many.php b/laravel/database/eloquent/relationships/has_many.php index 726bef20..92a1bcde 100644 --- a/laravel/database/eloquent/relationships/has_many.php +++ b/laravel/database/eloquent/relationships/has_many.php @@ -83,8 +83,9 @@ class Has_Many extends Has_One_Or_Many { /** * Match eagerly loaded child models to their parent models. * - * @param array $parents - * @param array $children + * @param string $relationship + * @param array $parents + * @param array $children * @return void */ public function match($relationship, &$parents, $children) 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 9887d7d9..dad17522 100644 --- a/laravel/database/eloquent/relationships/has_many_and_belongs_to.php +++ b/laravel/database/eloquent/relationships/has_many_and_belongs_to.php @@ -61,6 +61,8 @@ class Has_Many_And_Belongs_To extends Relationship { * * By default, the name is the models sorted and joined with underscores. * + * @param Model $model + * @param string $associated * @return string */ protected function joining($model, $associated) @@ -86,7 +88,7 @@ class Has_Many_And_Belongs_To extends Relationship { * Insert a new record into the joining table of the association. * * @param int $id - * @param array $joining + * @param array $attributes * @return bool */ public function attach($id, $attributes = array()) @@ -317,8 +319,9 @@ class Has_Many_And_Belongs_To extends Relationship { /** * Match eagerly loaded child models to their parent models. * - * @param array $parents - * @param array $children + * @param string $relationship + * @param array $parents + * @param array $children * @return void */ public function match($relationship, &$parents, $children) @@ -383,7 +386,7 @@ class Has_Many_And_Belongs_To extends Relationship { /** * Set the columns on the joining table that should be fetched. * - * @param array $column + * @param array $columns * @return Relationship */ public function with($columns) diff --git a/laravel/database/eloquent/relationships/has_one.php b/laravel/database/eloquent/relationships/has_one.php index 8d1e4ff9..ee97358b 100644 --- a/laravel/database/eloquent/relationships/has_one.php +++ b/laravel/database/eloquent/relationships/has_one.php @@ -30,8 +30,9 @@ class Has_One extends Has_One_Or_Many { /** * Match eagerly loaded child models to their parent models. * - * @param array $parents - * @param array $children + * @param string $relationship + * @param array $parents + * @param array $children * @return void */ public function match($relationship, &$parents, $children) diff --git a/laravel/database/query.php b/laravel/database/query.php index 3c823c3f..c77ad65b 100644 --- a/laravel/database/query.php +++ b/laravel/database/query.php @@ -475,6 +475,7 @@ class Query { * @param string $column * @param string $operator * @param mixed $value + * @return Query */ public function having($column, $operator, $value) { diff --git a/laravel/database/schema.php b/laravel/database/schema.php index 2655ff27..e09b8b16 100644 --- a/laravel/database/schema.php +++ b/laravel/database/schema.php @@ -44,7 +44,7 @@ class Schema { * Rename a database table in the schema. * * @param string $table - * @param string $name + * @param string $new_name * @return void */ public static function rename($table, $new_name) diff --git a/laravel/database/schema/grammars/grammar.php b/laravel/database/schema/grammars/grammar.php index 62a55719..26b9fe12 100644 --- a/laravel/database/schema/grammars/grammar.php +++ b/laravel/database/schema/grammars/grammar.php @@ -9,7 +9,7 @@ abstract class Grammar extends \Laravel\Database\Grammar { * Generate the SQL statement for creating a foreign key. * * @param Table $table - * @param Command $command + * @param Fluent $command * @return string */ public function foreign(Table $table, Fluent $command) @@ -54,7 +54,7 @@ abstract class Grammar extends \Laravel\Database\Grammar { * Drop a constraint from the table. * * @param Table $table - * @param Fluent $fluent + * @param Fluent $command * @return string */ protected function drop_constraint(Table $table, Fluent $command) diff --git a/laravel/database/schema/grammars/mysql.php b/laravel/database/schema/grammars/mysql.php index e8c926fe..efecc675 100644 --- a/laravel/database/schema/grammars/mysql.php +++ b/laravel/database/schema/grammars/mysql.php @@ -323,7 +323,7 @@ class MySQL extends Grammar { * Drop a foreign key constraint from the table. * * @param Table $table - * @param Fluent $fluent + * @param Fluent $command * @return string */ public function drop_foreign(Table $table, Fluent $command) diff --git a/laravel/database/schema/grammars/postgres.php b/laravel/database/schema/grammars/postgres.php index 4d014b1c..36d47fd9 100644 --- a/laravel/database/schema/grammars/postgres.php +++ b/laravel/database/schema/grammars/postgres.php @@ -309,7 +309,7 @@ class Postgres extends Grammar { * Drop a foreign key constraint from the table. * * @param Table $table - * @param Fluent $fluent + * @param Fluent $command * @return string */ public function drop_foreign(Table $table, Fluent $command) diff --git a/laravel/database/schema/grammars/sqlserver.php b/laravel/database/schema/grammars/sqlserver.php index 1a556367..20a6527d 100644 --- a/laravel/database/schema/grammars/sqlserver.php +++ b/laravel/database/schema/grammars/sqlserver.php @@ -327,7 +327,7 @@ class SQLServer extends Grammar { * Drop a foreign key constraint from the table. * * @param Table $table - * @param Fluent $fluent + * @param Fluent $command * @return string */ public function drop_foreign(Table $table, Fluent $command) diff --git a/laravel/database/schema/table.php b/laravel/database/schema/table.php index a513d794..c728260c 100644 --- a/laravel/database/schema/table.php +++ b/laravel/database/schema/table.php @@ -113,6 +113,7 @@ class Table { * * @param string|array $columns * @param string $name + * @return Fluent */ public function foreign($columns, $name = null) { diff --git a/laravel/event.php b/laravel/event.php index ea2eb715..ccc3bf1c 100644 --- a/laravel/event.php +++ b/laravel/event.php @@ -176,7 +176,7 @@ class Event { * $responses = Event::fire(array('start', 'loading'), $parameters); * * - * @param string|array $event + * @param string|array $events * @param array $parameters * @param bool $halt * @return array diff --git a/laravel/form.php b/laravel/form.php index 5fa6d129..5662f77d 100644 --- a/laravel/form.php +++ b/laravel/form.php @@ -20,7 +20,7 @@ class Form { * Registers a custom macro. * * @param string $name - * @param Closure $input + * @param Closure $macro * @return void */ public static function macro($name, $macro) diff --git a/laravel/helpers.php b/laravel/helpers.php index 5b329437..589669ce 100644 --- a/laravel/helpers.php +++ b/laravel/helpers.php @@ -543,7 +543,7 @@ function render($view, $data = array()) /** * Get the rendered contents of a partial from a loop. * - * @param string $view + * @param string $partial * @param array $data * @param string $iterator * @param string $empty diff --git a/laravel/html.php b/laravel/html.php index 1f4ea6dc..fd5bf82e 100644 --- a/laravel/html.php +++ b/laravel/html.php @@ -13,7 +13,7 @@ class HTML { * Registers a custom macro. * * @param string $name - * @param Closure $input + * @param Closure $macro * @return void */ public static function macro($name, $macro) diff --git a/laravel/ioc.php b/laravel/ioc.php index b2597d32..aa90f804 100644 --- a/laravel/ioc.php +++ b/laravel/ioc.php @@ -85,6 +85,7 @@ class IoC { * * * @param string $type + * @param array $parameters * @return mixed */ public static function resolve($type, $parameters = array()) diff --git a/laravel/log.php b/laravel/log.php index 74df63c9..6de027df 100644 --- a/laravel/log.php +++ b/laravel/log.php @@ -64,7 +64,8 @@ class Log { * Format a log message for logging. * * @param string $type - * @param + * @param string $message + * @return string */ protected static function format($type, $message) { diff --git a/laravel/pluralizer.php b/laravel/pluralizer.php index ef5b7cb6..2ce72f0b 100644 --- a/laravel/pluralizer.php +++ b/laravel/pluralizer.php @@ -24,6 +24,7 @@ class Pluralizer { /** * Create a new pluralizer instance. * + * @param array $config * @return void */ public function __construct($config) diff --git a/laravel/profiling/profiler.php b/laravel/profiling/profiler.php index 36a83e7e..eda884c5 100644 --- a/laravel/profiling/profiler.php +++ b/laravel/profiling/profiler.php @@ -39,6 +39,8 @@ class Profiler { /** * Add a log entry to the log entries array. * + * @param string $type + * @param string $message * @return void */ public static function log($type, $message) diff --git a/laravel/redirect.php b/laravel/redirect.php index 2f75db53..1042f7ec 100644 --- a/laravel/redirect.php +++ b/laravel/redirect.php @@ -6,7 +6,7 @@ class Redirect extends Response { * Create a redirect response to application root. * * @param int $status - * @param bool $secure + * @param bool $https * @return Redirect */ public static function home($status = 302, $https = null) diff --git a/laravel/request.php b/laravel/request.php index 306a94c1..e78c943d 100644 --- a/laravel/request.php +++ b/laravel/request.php @@ -119,6 +119,7 @@ class Request { /** * Determine if the request accepts a given content type. * + * @param string $type * @return bool */ public static function accepts($type) diff --git a/laravel/routing/router.php b/laravel/routing/router.php index 3f265323..0f162305 100644 --- a/laravel/routing/router.php +++ b/laravel/routing/router.php @@ -292,7 +292,7 @@ class Router { /** * Register a controller with the router. * - * @param string|array $controller + * @param string|array $controllers * @param string|array $defaults * @param bool $https * @return void diff --git a/laravel/validator.php b/laravel/validator.php index e32c4ccc..5fb93bb6 100644 --- a/laravel/validator.php +++ b/laravel/validator.php @@ -637,6 +637,7 @@ class Validator { * * @param string $attribute * @param mixed $value + * @param array $parameters * @return bool */ protected function validate_match($attribute, $value, $parameters) diff --git a/laravel/view.php b/laravel/view.php index 7ade58fb..d8275c6e 100644 --- a/laravel/view.php +++ b/laravel/view.php @@ -255,7 +255,7 @@ class View implements ArrayAccess { * }); * * - * @param string|array $view + * @param string|array $views * @param Closure $composer * @return void */ From bf07de7d5e858f401e156bcaa60a159c4052d8e0 Mon Sep 17 00:00:00 2001 From: Tobsn Date: Fri, 3 Aug 2012 17:27:29 +0200 Subject: [PATCH 37/92] added array and array count validation added validate_array/count/countmin/countmax/countbetween - corresponding replace_count/countmin/countmax/countbetween message functions - corresponding validator error messages into all language files (please have maintainers update their language files) - also converted spaces to tabs in the polish language file to fit all the others. --- application/language/ar/validation.php | 5 + application/language/bg/validation.php | 5 + application/language/de/validation.php | 5 + application/language/en/validation.php | 5 + application/language/fr/validation.php | 5 + application/language/he/validation.php | 5 + application/language/hu/validation.php | 5 + application/language/id/validation.php | 5 + application/language/ja/validation.php | 5 + application/language/nl/validation.php | 5 + application/language/pl/validation.php | 181 +++++++++++++------------ application/language/ru/validation.php | 5 + laravel/validator.php | 120 ++++++++++++++++ 13 files changed, 268 insertions(+), 88 deletions(-) diff --git a/application/language/ar/validation.php b/application/language/ar/validation.php index cb15db34..fb88f6d8 100644 --- a/application/language/ar/validation.php +++ b/application/language/ar/validation.php @@ -24,6 +24,7 @@ return array( "alpha" => "القيمة :attribute يمكنها أن تحتوي على أحرف فقط.", "alpha_dash" => "القيمة :attribute يمكنها أن تحتوي على أحرف و أرقام و إشارة الناقص فقط.", "alpha_num" => "القيمة :attribute يمكنها أن تحتوي على أحرف و أرقام فقط.", + "array" => "The :attribute must have selected elements.", "before" => "القيمة :attribute يجب أن تكون قبل تاريخ :date.", "between" => array( "numeric" => "القيمة :attribute يجب أن تكون بين :min و :max.", @@ -31,6 +32,10 @@ return array( "string" => "النص :attribute يجب أن يكون بطول من :min إلى :max حرف.", ), "confirmed" => "القيمة :attribute التأكيدية غير مطابقة.", + "count" => "The :attribute must have exactly :count selected elements.", + "countbetween" => "The :attribute must have between :min and :max selected elements.", + "countmax" => "The :attribute must have less than :max selected elements.", + "countmin" => "The :attribute must have at least :min selected elements.", "different" => "القيمتان :attribute و :other يجب أن تختلفان.", "email" => "القيمة :attribute تمثل بريد إلكتروني غير صحيح.", "exists" => "القيمة المختارة :attribute غير موجودة.", diff --git a/application/language/bg/validation.php b/application/language/bg/validation.php index 4e46f6ff..fe01d9be 100644 --- a/application/language/bg/validation.php +++ b/application/language/bg/validation.php @@ -24,6 +24,7 @@ return array( "alpha" => "Полето :attribute трябва да съдържа само букви.", "alpha_dash" => "Полето :attribute трябва да съдържа само букви, цифри, долна черта и тире.", "alpha_num" => "Полето :attribute трябва да съдържа само букви и цифри.", + "array" => "The :attribute must have selected elements.", "before" => "Полето :attribute трябва да бъде дата преди :date.", "between" => array( "numeric" => "Полето :attribute трябва да бъде между :min и :max.", @@ -31,6 +32,10 @@ return array( "string" => "Полето :attribute трябва да бъде между :min и :max знака.", ), "confirmed" => "Полето :attribute не е потвърдено.", + "count" => "The :attribute must have exactly :count selected elements.", + "countbetween" => "The :attribute must have between :min and :max selected elements.", + "countmax" => "The :attribute must have less than :max selected elements.", + "countmin" => "The :attribute must have at least :min selected elements.", "different" => "Полетата :attribute и :other трябва да са различни.", "email" => "Полето :attribute е с невалиден формат.", "exists" => "Избраната стойност на :attribute вече съществува.", diff --git a/application/language/de/validation.php b/application/language/de/validation.php index 87189410..80c3874e 100644 --- a/application/language/de/validation.php +++ b/application/language/de/validation.php @@ -24,6 +24,7 @@ return array( "alpha" => ":attribute darf nur Buchstaben beinhalten.", "alpha_dash" => ":attribute sollte nur aus Buchstaben, Nummern und Bindestrichen bestehen.", "alpha_num" => ":attribute sollte nur aus Buchstaben und Nummern bestehen.", + "array" => "The :attribute must have selected elements.", "before" => ":attribute muss ein Datum vor dem :date sein.", "between" => array( "numeric" => ":attribute muss zwischen :min und :max liegen.", @@ -31,6 +32,10 @@ return array( "string" => ":attribute muss zwischen :min und :max Zeichen lang sein.", ), "confirmed" => ":attribute stimmt nicht mit der Bestätigung überein.", + "count" => "The :attribute must have exactly :count selected elements.", + "countbetween" => "The :attribute must have between :min and :max selected elements.", + "countmax" => "The :attribute must have less than :max selected elements.", + "countmin" => "The :attribute must have at least :min selected elements.", "different" => ":attribute und :other müssen verschieden sein.", "email" => ":attribute ist keine gültige Email-Adresse.", "exists" => "Der gewählte Wert für :attribute ist ungültig.", diff --git a/application/language/en/validation.php b/application/language/en/validation.php index aade5eda..e5116996 100644 --- a/application/language/en/validation.php +++ b/application/language/en/validation.php @@ -24,6 +24,7 @@ return array( "alpha" => "The :attribute may only contain letters.", "alpha_dash" => "The :attribute may only contain letters, numbers, and dashes.", "alpha_num" => "The :attribute may only contain letters and numbers.", + "array" => "The :attribute must have selected elements.", "before" => "The :attribute must be a date before :date.", "between" => array( "numeric" => "The :attribute must be between :min - :max.", @@ -31,6 +32,10 @@ return array( "string" => "The :attribute must be between :min - :max characters.", ), "confirmed" => "The :attribute confirmation does not match.", + "count" => "The :attribute must have exactly :count selected elements.", + "countbetween" => "The :attribute must have between :min and :max selected elements.", + "countmax" => "The :attribute must have less than :max selected elements.", + "countmin" => "The :attribute must have at least :min selected elements.", "different" => "The :attribute and :other must be different.", "email" => "The :attribute format is invalid.", "exists" => "The selected :attribute is invalid.", diff --git a/application/language/fr/validation.php b/application/language/fr/validation.php index f5810be8..bbc0408f 100644 --- a/application/language/fr/validation.php +++ b/application/language/fr/validation.php @@ -24,6 +24,7 @@ return array( "alpha" => "Le champ :attribute ne doit contenir que des lettres.", "alpha_dash" => "Le champ :attribute ne doit contenir que des lettres, nombres et des tirets.", "alpha_num" => "Le champ :attribute ne doit contenir que des lettres et nombres.", + "array" => "The :attribute must have selected elements.", "before" => "Le champ :attribute doit être une date avant :date.", "between" => array( "numeric" => "Le champ :attribute doit être entre :min - :max.", @@ -31,6 +32,10 @@ return array( "string" => "Le champ :attribute doit être entre :min - :max caractères.", ), "confirmed" => "Le champ :attribute confirmation est différent.", + "count" => "The :attribute must have exactly :count selected elements.", + "countbetween" => "The :attribute must have between :min and :max selected elements.", + "countmax" => "The :attribute must have less than :max selected elements.", + "countmin" => "The :attribute must have at least :min selected elements.", "different" => "Les champ :attribute et :other doivent être différents.", "email" => "Le format du champ :attribute est invalide.", "exists" => "Le champ sélectionné :attribute est invalide.", diff --git a/application/language/he/validation.php b/application/language/he/validation.php index f0059b6a..f714dd8d 100644 --- a/application/language/he/validation.php +++ b/application/language/he/validation.php @@ -27,6 +27,7 @@ return array( "alpha" => "הערך :attribute יכול להכיל רק אותיות.", "alpha_dash" => "הערך :attribute יכול להכיל רק אותיות, מספרים ומקפים.", "alpha_num" => "הערך :attribute יכול להכיל רק אותיות ומספרים.", + "array" => "The :attribute must have selected elements.", "before" => "הערך :attribute חייב להכיל תאריך לפני :date.", "between" => array( "numeric" => "הערך :attribute חייב להיות בין :min ל-:max.", @@ -34,6 +35,10 @@ return array( "string" => "הערך :attribute חייב להכיל בין :min ל-:max תווים.", ), "confirmed" => "הערכים של :attribute חייבים להיות זהים.", + "count" => "The :attribute must have exactly :count selected elements.", + "countbetween" => "The :attribute must have between :min and :max selected elements.", + "countmax" => "The :attribute must have less than :max selected elements.", + "countmin" => "The :attribute must have at least :min selected elements.", "different" => "הערכים של :attribute ו-:other חייבים להיות שונים.", "email" => "הערך :attribute חייב להכיל כתובת אימייל תקינה.", "exists" => "הערך :attribute לא קיים.", diff --git a/application/language/hu/validation.php b/application/language/hu/validation.php index 30b2a0ca..ee0e7145 100644 --- a/application/language/hu/validation.php +++ b/application/language/hu/validation.php @@ -24,6 +24,7 @@ return array( "alpha" => "A(z) :attribute csak betűket tartalmazhat.", "alpha_dash" => "A(z) :attribute betűket, számokat és kötőjeleket tartalmazhat.", "alpha_num" => "A(z) :attribute csak betűket és számokat tartalmazhat.", + "array" => "The :attribute must have selected elements.", "before" => "A :attribute :date előtti dátum kell legyen.", "between" => array( "numeric" => "A(z) :attribute :min - :max közötti érték kell legyen.", @@ -31,6 +32,10 @@ return array( "string" => "A(z) :attribute :min - :max karakterhossz között kell legyen", ), "confirmed" => "A(z) :attribute megerősítése nem egyezett meg.", + "count" => "The :attribute must have exactly :count selected elements.", + "countbetween" => "The :attribute must have between :min and :max selected elements.", + "countmax" => "The :attribute must have less than :max selected elements.", + "countmin" => "The :attribute must have at least :min selected elements.", "different" => "A(z) :attribute és :other különböző kell legyen.", "email" => "A(z) :attribute formátuma nem megfelelő.", "exists" => "A(z) választott :attribute nem megfelelő.", diff --git a/application/language/id/validation.php b/application/language/id/validation.php index 3eafa4cc..51d0178e 100644 --- a/application/language/id/validation.php +++ b/application/language/id/validation.php @@ -24,6 +24,7 @@ return array( "alpha" => "Isian :attribute hanya boleh berisi huruf.", "alpha_dash" => "Isian :attribute hanya boleh berisi huruf, angka, dan strip.", "alpha_num" => "Isian :attribute hanya boleh berisi huruf dan angka.", + "array" => "The :attribute must have selected elements.", "before" => "Isian :attribute harus tanggal sebelum :date.", "between" => array( "numeric" => "Isian :attribute harus antara :min - :max.", @@ -31,6 +32,10 @@ return array( "string" => "Isian :attribute harus antara :min - :max karakter.", ), "confirmed" => "Konfirmasi :attribute tidak cocok.", + "count" => "The :attribute must have exactly :count selected elements.", + "countbetween" => "The :attribute must have between :min and :max selected elements.", + "countmax" => "The :attribute must have less than :max selected elements.", + "countmin" => "The :attribute must have at least :min selected elements.", "different" => "Isian :attribute dan :other harus berbeda.", "email" => "Format isian :attribute tidak valid.", "exists" => "Isian :attribute yang dipilih tidak valid.", diff --git a/application/language/ja/validation.php b/application/language/ja/validation.php index 45e3208b..19d5a1b3 100644 --- a/application/language/ja/validation.php +++ b/application/language/ja/validation.php @@ -40,6 +40,7 @@ return array( "alpha" => ":attributeはアルファベッドのみがご利用できます。", "alpha_dash" => ":attributeは英数字とダッシュ(-)及び下線(_)がご利用できます。", "alpha_num" => ":attributeは英数字がご利用できます。", + "array" => "The :attribute must have selected elements.", "before" => ":attributeには、:date以前の日付をご利用ください。", "between" => array( "numeric" => ":attributeは、:minから、:maxまでの数字をご指定ください。", @@ -47,6 +48,10 @@ return array( "string" => ":attributeは、:min文字から:max文字の間でご指定ください。", ), "confirmed" => ":attributeと、確認フィールドとが、一致していません。", + "count" => "The :attribute must have exactly :count selected elements.", + "countbetween" => "The :attribute must have between :min and :max selected elements.", + "countmax" => "The :attribute must have less than :max selected elements.", + "countmin" => "The :attribute must have at least :min selected elements.", "different" => ":attributeと:otherには、異なった内容を指定してください。", "email" => ":attributeには正しいメールアドレスの形式をご指定ください。", "exists" => "選択された:attributeは正しくありません。", diff --git a/application/language/nl/validation.php b/application/language/nl/validation.php index a604e034..ac0c8416 100644 --- a/application/language/nl/validation.php +++ b/application/language/nl/validation.php @@ -15,6 +15,7 @@ return array( "alpha" => "Het :attribute mag alleen letters bevatten.", "alpha_dash" => "Het :attribute mag alleen letters, nummers, onderstreep(_) en strepen(-) bevatten.", "alpha_num" => "Het :attribute mag alleen letters en nummers", + "array" => "The :attribute must have selected elements.", "before" => "Het :attribute moet een datum voor :date zijn.", "between" => array( "numeric" => "Het :attribute moet tussen :min en :max zijn.", @@ -22,6 +23,10 @@ return array( "string" => "Het :attribute moet tussen :min en :max tekens zijn.", ), "confirmed" => "Het :attribute bevestiging komt niet overeen.", + "count" => "The :attribute must have exactly :count selected elements.", + "countbetween" => "The :attribute must have between :min and :max selected elements.", + "countmax" => "The :attribute must have less than :max selected elements.", + "countmin" => "The :attribute must have at least :min selected elements.", "different" => "Het :attribute en :other moeten verschillend zijn.", "email" => "Het :attribute formaat is ongeldig.", "exists" => "Het gekozen :attribute is al ingebruik.", diff --git a/application/language/pl/validation.php b/application/language/pl/validation.php index ead856b1..65d8553a 100644 --- a/application/language/pl/validation.php +++ b/application/language/pl/validation.php @@ -2,98 +2,103 @@ return array( - /* - |-------------------------------------------------------------------------- - | Validation Language Lines - |-------------------------------------------------------------------------- - | - | The following language lines contain the default error messages used - | by the validator class. Some of the rules contain multiple versions, - | such as the size (max, min, between) rules. These versions are used - | for different input types such as strings and files. - | - | These language lines may be easily changed to provide custom error - | messages in your application. Error messages for custom validation - | rules may also be added to this file. - | - */ + /* + |-------------------------------------------------------------------------- + | Validation Language Lines + |-------------------------------------------------------------------------- + | + | The following language lines contain the default error messages used + | by the validator class. Some of the rules contain multiple versions, + | such as the size (max, min, between) rules. These versions are used + | for different input types such as strings and files. + | + | These language lines may be easily changed to provide custom error + | messages in your application. Error messages for custom validation + | rules may also be added to this file. + | + */ - "accepted" => ":attribute musi zostać zaakceptowane.", - "active_url" => ":attribute nie jest prawidłowym adresem URL.", - "after" => ":attribute musi zawierać datę, która jest po :date.", - "alpha" => ":attribute może zawierać jedynie litery.", - "alpha_dash" => ":attribute może zawierać jedynie litery, cyfry i myślniki.", - "alpha_num" => ":attribute może zawierać jedynie litery i cyfry.", - "before" => ":attribute musi zawierać datę, która jest przed :date.", - "between" => array( - "numeric" => ":ttribute musi mieścić się w granicach :min - :max.", - "file" => ":attribute musi mieć :min - :max kilobajtów.", - "string" => ":attribute musi mieć :min - :max znaków.", - ), - "confirmed" => "Potwierdzenie :attribute się nie zgadza.", - "different" => ":attribute i :other muszą się od siebie różnić.", - "email" => "The :attribute format is invalid.", - "exists" => "Zaznaczona opcja :attribute jest nieprawidłowa.", - "image" => ":attribute musi być obrazkiem.", - "in" => "Zaznaczona opcja :attribute jest nieprawidłowa.", - "integer" => ":attribute musi być liczbą całkowitą.", - "ip" => ":attribute musi być prawidłowym adresem IP.", - "match" => "Format :attribute jest nieprawidłowy.", - "max" => array( - "numeric" => ":attribute musi być poniżej :max.", - "file" => ":attribute musi mieć poniżej :max kilobajtów.", - "string" => ":attribute musi mieć poniżej :max znaków.", - ), - "mimes" => ":attribute musi być plikiem rodzaju :values.", - "min" => array( - "numeric" => ":attribute musi być co najmniej :min.", - "file" => "Plik :attribute musi mieć co najmniej :min kilobajtów.", - "string" => ":attribute musi mieć co najmniej :min znaków.", - ), - "not_in" => "Zaznaczona opcja :attribute jest nieprawidłowa.", - "numeric" => ":attribute musi być numeryczne.", - "required" => "Pole :attribute jest wymagane.", - "same" => ":attribute i :other muszą być takie same.", - "size" => array( - "numeric" => ":attribute musi mieć rozmiary :size.", - "file" => ":attribute musi mieć :size kilobajtów.", - "string" => ":attribute musi mieć :size znaków.", - ), - "unique" => ":attribute zostało już użyte.", - "url" => "Format pola :attribute jest nieprawidłowy.", + "accepted" => ":attribute musi zostać zaakceptowane.", + "active_url" => ":attribute nie jest prawidłowym adresem URL.", + "after" => ":attribute musi zawierać datę, która jest po :date.", + "alpha" => ":attribute może zawierać jedynie litery.", + "alpha_dash" => ":attribute może zawierać jedynie litery, cyfry i myślniki.", + "alpha_num" => ":attribute może zawierać jedynie litery i cyfry.", + "array" => "The :attribute must have selected elements.", + "before" => ":attribute musi zawierać datę, która jest przed :date.", + "between" => array( + "numeric" => ":ttribute musi mieścić się w granicach :min - :max.", + "file" => ":attribute musi mieć :min - :max kilobajtów.", + "string" => ":attribute musi mieć :min - :max znaków.", + ), + "confirmed" => "Potwierdzenie :attribute się nie zgadza.", + "count" => "The :attribute must have exactly :count selected elements.", + "countbetween" => "The :attribute must have between :min and :max selected elements.", + "countmax" => "The :attribute must have less than :max selected elements.", + "countmin" => "The :attribute must have at least :min selected elements.", + "different" => ":attribute i :other muszą się od siebie różnić.", + "email" => "The :attribute format is invalid.", + "exists" => "Zaznaczona opcja :attribute jest nieprawidłowa.", + "image" => ":attribute musi być obrazkiem.", + "in" => "Zaznaczona opcja :attribute jest nieprawidłowa.", + "integer" => ":attribute musi być liczbą całkowitą.", + "ip" => ":attribute musi być prawidłowym adresem IP.", + "match" => "Format :attribute jest nieprawidłowy.", + "max" => array( + "numeric" => ":attribute musi być poniżej :max.", + "file" => ":attribute musi mieć poniżej :max kilobajtów.", + "string" => ":attribute musi mieć poniżej :max znaków.", + ), + "mimes" => ":attribute musi być plikiem rodzaju :values.", + "min" => array( + "numeric" => ":attribute musi być co najmniej :min.", + "file" => "Plik :attribute musi mieć co najmniej :min kilobajtów.", + "string" => ":attribute musi mieć co najmniej :min znaków.", + ), + "not_in" => "Zaznaczona opcja :attribute jest nieprawidłowa.", + "numeric" => ":attribute musi być numeryczne.", + "required" => "Pole :attribute jest wymagane.", + "same" => ":attribute i :other muszą być takie same.", + "size" => array( + "numeric" => ":attribute musi mieć rozmiary :size.", + "file" => ":attribute musi mieć :size kilobajtów.", + "string" => ":attribute musi mieć :size znaków.", + ), + "unique" => ":attribute zostało już użyte.", + "url" => "Format pola :attribute jest nieprawidłowy.", - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute_rule" to name the lines. This helps keep your - | custom validation clean and tidy. - | - | So, say you want to use a custom validation message when validating that - | the "email" attribute is unique. Just add "email_unique" to this array - | with your custom message. The Validator will handle the rest! - | - */ + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute_rule" to name the lines. This helps keep your + | custom validation clean and tidy. + | + | So, say you want to use a custom validation message when validating that + | the "email" attribute is unique. Just add "email_unique" to this array + | with your custom message. The Validator will handle the rest! + | + */ - 'custom' => array(), + 'custom' => array(), - /* - |-------------------------------------------------------------------------- - | Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as "E-Mail Address" instead - | of "email". Your users will thank you. - | - | The Validator class will automatically search this array of lines it - | is attempting to replace the :attribute place-holder in messages. - | It's pretty slick. We think you'll like it. - | - */ + /* + |-------------------------------------------------------------------------- + | Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as "E-Mail Address" instead + | of "email". Your users will thank you. + | + | The Validator class will automatically search this array of lines it + | is attempting to replace the :attribute place-holder in messages. + | It's pretty slick. We think you'll like it. + | + */ - 'attributes' => array(), + 'attributes' => array(), ); \ No newline at end of file diff --git a/application/language/ru/validation.php b/application/language/ru/validation.php index e8ee3a13..8fd15f5c 100644 --- a/application/language/ru/validation.php +++ b/application/language/ru/validation.php @@ -24,6 +24,7 @@ return array( "alpha" => "Поле :attribute может содержать только буквы.", "alpha_dash" => "Поле :attribute может содержать только буквы, цифры и тире.", "alpha_num" => "Поле :attribute может содержать только буквы и цифры.", + "array" => "The :attribute must have selected elements.", "before" => "Поле :attribute должно быть датой перед :date.", "between" => array( "numeric" => "Поле :attribute должно быть между :min и :max.", @@ -31,6 +32,10 @@ return array( "string" => "Поле :attribute должно быть от :min до :max символов.", ), "confirmed" => "Поле :attribute не совпадает с подтверждением.", + "count" => "The :attribute must have exactly :count selected elements.", + "countbetween" => "The :attribute must have between :min and :max selected elements.", + "countmax" => "The :attribute must have less than :max selected elements.", + "countmin" => "The :attribute must have at least :min selected elements.", "different" => "Поля :attribute и :other должны различаться.", "email" => "Поле :attribute имеет неверный формат.", "exists" => "Выбранное значение для :attribute уже существует.", diff --git a/laravel/validator.php b/laravel/validator.php index e32c4ccc..556b116e 100644 --- a/laravel/validator.php +++ b/laravel/validator.php @@ -667,6 +667,70 @@ class Validator { return false; } + /** + * Validate that an attribute is an array + * + * @param string $attribute + * @param mixed $value + * @return bool + */ + protected function validate_array($attribute, $value) + { + return is_array($value); + } + + /** + * Validate that an attribute of type array has a specific count + * + * @param string $attribute + * @param mixed $value + * @param array $parameters + * @return bool + */ + protected function validate_count($attribute, $value, $parameters) + { + return (is_array($value) && count($value) == $parameters); + } + + /** + * Validate that an attribute of type array has a minimum of elements. + * + * @param string $attribute + * @param mixed $value + * @param array $parameters + * @return bool + */ + protected function validate_countmin($attribute, $value, $parameters) + { + return (is_array($value) && count($value) >= $parameters); + } + + /** + * Validate that an attribute of type array has a maximum of elements. + * + * @param string $attribute + * @param mixed $value + * @param array $parameters + * @return bool + */ + protected function validate_countmax($attribute, $value, $parameters) + { + return (is_array($value) && count($value) <= $parameters); + } + + /** + * Validate that an attribute of type array has elements between max and min. + * + * @param string $attribute + * @param mixed $value + * @param array $parameters + * @return bool + */ + protected function validate_countbetween($attribute, $value, $parameters) + { + return (is_array($value) && count($value) >= $parameters[0] && count($value) <= $parameters[1] ); + } + /** * Validate the date is before a given date. * @@ -952,6 +1016,62 @@ class Validator { return str_replace(':date', $parameters[0], $message); } + /** + * Replace all place-holders for the count rule. + * + * @param string $message + * @param string $attribute + * @param string $rule + * @param array $parameters + * @return string + */ + protected function replace_count($message, $attribute, $rule, $parameters) + { + return str_replace(':count', $parameters, $message); + } + + /** + * Replace all place-holders for the countmin rule. + * + * @param string $message + * @param string $attribute + * @param string $rule + * @param array $parameters + * @return string + */ + protected function replace_countmin($message, $attribute, $rule, $parameters) + { + return str_replace(':min', $parameters, $message); + } + + /** + * Replace all place-holders for the countmax rule. + * + * @param string $message + * @param string $attribute + * @param string $rule + * @param array $parameters + * @return string + */ + protected function replace_countmax($message, $attribute, $rule, $parameters) + { + return str_replace(':max', $parameters, $message); + } + + /** + * Replace all place-holders for the between rule. + * + * @param string $message + * @param string $attribute + * @param string $rule + * @param array $parameters + * @return string + */ + protected function replace_countbetween($message, $attribute, $rule, $parameters) + { + return str_replace(array(':min', ':max'), $parameters, $message); + } + /** * Get the displayable name for a given attribute. * From 31c730c9138fc4ead3b1644dbafc416e9ea77d9a Mon Sep 17 00:00:00 2001 From: Jakobud Date: Fri, 3 Aug 2012 10:47:34 -0600 Subject: [PATCH 38/92] Passing a null $value to Form::submit(), Form::reset() or Form::button() was throwing an Exception. I made the default $value = null for those methods. They result in the following respective valid HTML: Signed-off-by: Jakobud --- laravel/form.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/laravel/form.php b/laravel/form.php index 5fa6d129..e7855a1d 100644 --- a/laravel/form.php +++ b/laravel/form.php @@ -526,7 +526,7 @@ class Form { * @param array $attributes * @return string */ - public static function submit($value, $attributes = array()) + public static function submit($value = null, $attributes = array()) { return static::input('submit', null, $value, $attributes); } @@ -538,7 +538,7 @@ class Form { * @param array $attributes * @return string */ - public static function reset($value, $attributes = array()) + public static function reset($value = null, $attributes = array()) { return static::input('reset', null, $value, $attributes); } @@ -570,7 +570,7 @@ class Form { * @param array $attributes * @return string */ - public static function button($value, $attributes = array()) + public static function button($value = null, $attributes = array()) { return ''.HTML::entities($value).''; } From f0e261c87fbe8f9832de16a4b5af199c2b20e1f1 Mon Sep 17 00:00:00 2001 From: Alex Bouma Date: Sun, 5 Aug 2012 00:34:54 +0300 Subject: [PATCH 39/92] Changed jQuery '$' to 'jQuery' in the Profiler Changed the '$' to 'jQuery' in profiler.js because it conflicts with libs like 'prototype.js'. I did not use '.noConflict()' because of the people that do use the '$'. Signed-off-by: Alex Bouma --- laravel/profiling/profiler.js | 38 +++++++++++++++++------------------ 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/laravel/profiling/profiler.js b/laravel/profiling/profiler.js index ab73ad8e..8fc9fe3e 100755 --- a/laravel/profiling/profiler.js +++ b/laravel/profiling/profiler.js @@ -6,20 +6,20 @@ var anbu = { // the DOM every time they are used. el: { - main: $('.anbu'), - close: $('#anbu-close'), - zoom: $('#anbu-zoom'), - hide: $('#anbu-hide'), - show: $('#anbu-show'), - tab_pane: $('.anbu-tab-pane'), - hidden_tab_pane: $('.anbu-tab-pane:visible'), - tab: $('.anbu-tab'), - tabs: $('.anbu-tabs'), - tab_links: $('.anbu-tabs a'), - window: $('.anbu-window'), - closed_tabs: $('#anbu-closed-tabs'), - open_tabs: $('#anbu-open-tabs'), - content_area: $('.anbu-content-area') + main: jQuery('.anbu'), + close: jQuery('#anbu-close'), + zoom: jQuery('#anbu-zoom'), + hide: jQuery('#anbu-hide'), + show: jQuery('#anbu-show'), + tab_pane: jQuery('.anbu-tab-pane'), + hidden_tab_pane: jQuery('.anbu-tab-pane:visible'), + tab: jQuery('.anbu-tab'), + tabs: jQuery('.anbu-tabs'), + tab_links: jQuery('.anbu-tabs a'), + window: jQuery('.anbu-window'), + closed_tabs: jQuery('#anbu-closed-tabs'), + open_tabs: jQuery('#anbu-open-tabs'), + content_area: jQuery('.anbu-content-area') }, // CLASS ATTRIBUTES @@ -30,7 +30,7 @@ var anbu = { is_zoomed: false, // initial height of content area - small_height: $('.anbu-content-area').height(), + small_height: jQuery('.anbu-content-area').height(), // the name of the active tab css active_tab: 'anbu-active-tab', @@ -76,7 +76,7 @@ var anbu = { event.preventDefault(); }); anbu.el.tab.click(function(event) { - anbu.clicked_tab($(this)); + anbu.clicked_tab(jQuery(this)); event.preventDefault(); }); @@ -104,8 +104,8 @@ var anbu = { open_window: function(tab) { // can't directly assign this line, but it works - $('.anbu-tab-pane:visible').fadeOut(200); - $('.' + tab.attr(anbu.tab_data)).delay(220).fadeIn(300); + jQuery('.anbu-tab-pane:visible').fadeOut(200); + jQuery('.' + tab.attr(anbu.tab_data)).delay(220).fadeIn(300); anbu.el.tab_links.removeClass(anbu.active_tab); tab.addClass(anbu.active_tab); anbu.el.window.slideDown(300); @@ -178,7 +178,7 @@ var anbu = { anbu.is_zoomed = false; } else { // the 6px is padding on the top of the window - height = ($(window).height() - anbu.el.tabs.height() - 6) + 'px'; + height = (jQuery(window).height() - anbu.el.tabs.height() - 6) + 'px'; anbu.is_zoomed = true; } From 93f5785911158bbeb43da590c062239034aded53 Mon Sep 17 00:00:00 2001 From: Johnson Page Date: Sun, 5 Aug 2012 07:51:09 +1000 Subject: [PATCH 40/92] Update path to index view file. Signed-off-by: Johnson Page --- application/views/home/index.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/views/home/index.blade.php b/application/views/home/index.blade.php index ec7973d7..d3c9bf17 100644 --- a/application/views/home/index.blade.php +++ b/application/views/home/index.blade.php @@ -29,7 +29,7 @@

And the view sitting before you can be found at:

-
{{ path('app') }}views/home/index.php
+
{{ path('app') }}views/home/index.blade.php

Grow in knowledge.

From 43c3c2de6840d4face81c97ec142c9121e13c283 Mon Sep 17 00:00:00 2001 From: Tobsn Date: Mon, 6 Aug 2012 03:10:39 +0200 Subject: [PATCH 41/92] fixes from testing - all tested now - ready for merge into staging :P --- laravel/validator.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/laravel/validator.php b/laravel/validator.php index 556b116e..d6b97033 100644 --- a/laravel/validator.php +++ b/laravel/validator.php @@ -689,7 +689,7 @@ class Validator { */ protected function validate_count($attribute, $value, $parameters) { - return (is_array($value) && count($value) == $parameters); + return (is_array($value) && count($value) == $parameters[0]); } /** @@ -702,7 +702,7 @@ class Validator { */ protected function validate_countmin($attribute, $value, $parameters) { - return (is_array($value) && count($value) >= $parameters); + return (is_array($value) && count($value) >= $parameters[0]); } /** @@ -715,7 +715,7 @@ class Validator { */ protected function validate_countmax($attribute, $value, $parameters) { - return (is_array($value) && count($value) <= $parameters); + return (is_array($value) && count($value) <= $parameters[0]); } /** @@ -1027,7 +1027,7 @@ class Validator { */ protected function replace_count($message, $attribute, $rule, $parameters) { - return str_replace(':count', $parameters, $message); + return str_replace(':count', $parameters[0], $message); } /** @@ -1041,7 +1041,7 @@ class Validator { */ protected function replace_countmin($message, $attribute, $rule, $parameters) { - return str_replace(':min', $parameters, $message); + return str_replace(':min', $parameters[0], $message); } /** @@ -1055,7 +1055,7 @@ class Validator { */ protected function replace_countmax($message, $attribute, $rule, $parameters) { - return str_replace(':max', $parameters, $message); + return str_replace(':max', $parameters[0], $message); } /** From 8227784e114df03c92a5708bdafe8f7e0fb4904b Mon Sep 17 00:00:00 2001 From: Simon Aebersold Date: Tue, 7 Aug 2012 17:24:02 +0200 Subject: [PATCH 42/92] Documentation Error, see /laravel/html.php line 225 for reference --- laravel/documentation/views/html.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel/documentation/views/html.md b/laravel/documentation/views/html.md index d1fcae9b..4465b772 100644 --- a/laravel/documentation/views/html.md +++ b/laravel/documentation/views/html.md @@ -85,7 +85,7 @@ For example, the < symbol should be converted to its entity representation. Conv ### Generating a link to a controller action with wildcard values: - echo HTML::link_to_action('user@profile', array($username)); + echo HTML::link_to_action('user@profile', 'User Profile', array($username)); ## Mail-To Links From 0d718bbf30fd96c92163883d06552eed97180f44 Mon Sep 17 00:00:00 2001 From: Sinan Eldem Date: Wed, 8 Aug 2012 11:36:28 +0300 Subject: [PATCH 43/92] Added Turkish language files. Signed-off-by: Sinan Eldem --- application/language/tr/pagination.php | 28 +++++++ application/language/tr/validation.php | 108 +++++++++++++++++++++++++ 2 files changed, 136 insertions(+) create mode 100644 application/language/tr/pagination.php create mode 100644 application/language/tr/validation.php diff --git a/application/language/tr/pagination.php b/application/language/tr/pagination.php new file mode 100644 index 00000000..fce594d6 --- /dev/null +++ b/application/language/tr/pagination.php @@ -0,0 +1,28 @@ + + * @link http://sinaneldem.com.tr + */ + +return array( + + /* + |-------------------------------------------------------------------------- + | Pagination Language Lines + |-------------------------------------------------------------------------- + | + | The following language lines are used by the paginator library to build + | the pagination links. You're free to change them to anything you want. + | If you come up with something more exciting, let us know. + | + */ + + 'previous' => '« Önceki', + 'next' => 'Sonraki »', + +); \ No newline at end of file diff --git a/application/language/tr/validation.php b/application/language/tr/validation.php new file mode 100644 index 00000000..18cb0458 --- /dev/null +++ b/application/language/tr/validation.php @@ -0,0 +1,108 @@ + + * @link http://sinaneldem.com.tr + */ + +return array( + + /* + |-------------------------------------------------------------------------- + | Validation Language Lines + |-------------------------------------------------------------------------- + | + | The following language lines contain the default error messages used + | by the validator class. Some of the rules contain multiple versions, + | such as the size (max, min, between) rules. These versions are used + | for different input types such as strings and files. + | + | These language lines may be easily changed to provide custom error + | messages in your application. Error messages for custom validation + | rules may also be added to this file. + | + */ + + "accepted" => ":attribute kabul edilmelidir.", + "active_url" => ":attribute geçerli bir URL olmalıdır.", + "after" => ":attribute şundan daha eski bir tarih olmalıdır :date.", + "alpha" => ":attribute sadece harflerden oluşmalıdır.", + "alpha_dash" => ":attribute sadece harfler, rakamlar ve tirelerden oluşmalıdır.", + "alpha_num" => ":attribute sadece harfler ve rakamlar içermelidir.", + "before" => ":attribute şundan daha önceki bir tarih olmalıdır :date.", + "between" => array( + "numeric" => ":attribute :min - :max arasında olmalıdır.", + "file" => ":attribute :min - :max arasındaki kilobyte değeri olmalıdır.", + "string" => ":attribute :min - :max arasında karakterden oluşmalıdır.", + ), + "confirmed" => ":attribute onayı eşleşmiyor.", + "different" => ":attribute ile :other birbirinden farklı olmalıdır.", + "email" => ":attribute biçimi geçersiz.", + "exists" => "Seçili :attribute geçersiz.", + "image" => ":attribute resim dosyası olmalıdır.", + "in" => "selected :attribute geçersiz.", + "integer" => ":attribute rakam olmalıdır.", + "ip" => ":attribute geçerli bir IP adresi olmalıdır.", + "match" => ":attribute biçimi geçersiz.", + "max" => array( + "numeric" => ":attribute şundan küçük olmalıdır :max.", + "file" => ":attribute şundan küçük olmalıdır :max kilobyte.", + "string" => ":attribute şundan küçük olmalıdır :max karakter.", + ), + "mimes" => ":attribute dosya biçimi :values olmalıdır.", + "min" => array( + "numeric" => ":attribute en az :min olmalıdır.", + "file" => ":attribute en az :min kilobyte olmalıdır.", + "string" => ":attribute en az :min karakter olmalıdır.", + ), + "not_in" => "Seçili :attribute geçersiz.", + "numeric" => ":attribute rakam olmalıdır.", + "required" => ":attribute alanı gereklidir.", + "same" => ":attribute ile :other eşleşmelidir.", + "size" => array( + "numeric" => ":attribute :size olmalıdır.", + "file" => ":attribute :size kilobyte olmalıdır.", + "string" => ":attribute :size karakter olmalıdır.", + ), + "unique" => ":attribute daha önceden kayıt edilmiş.", + "url" => ":attribute biçimi geçersiz.", + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute_rule" to name the lines. This helps keep your + | custom validation clean and tidy. + | + | So, say you want to use a custom validation message when validating that + | the "email" attribute is unique. Just add "email_unique" to this array + | with your custom message. The Validator will handle the rest! + | + */ + + 'custom' => array(), + + /* + |-------------------------------------------------------------------------- + | Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as "E-Mail Address" instead + | of "email". Your users will thank you. + | + | The Validator class will automatically search this array of lines it + | is attempting to replace the :attribute place-holder in messages. + | It's pretty slick. We think you'll like it. + | + */ + + 'attributes' => array(), + +); \ No newline at end of file From e5dc10840ad0a05d4b6bc9ce73737d00c2052bc0 Mon Sep 17 00:00:00 2001 From: Spencer Deinum Date: Thu, 9 Aug 2012 15:44:34 -0400 Subject: [PATCH 44/92] Fix documentation error in input.md Documentation says "Replacing the entire input" but calls Input::merge() instead of Input::replace(). Signed-off-by: Spencer Deinum --- laravel/documentation/input.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel/documentation/input.md b/laravel/documentation/input.md index 14221ecd..c9272a8b 100644 --- a/laravel/documentation/input.md +++ b/laravel/documentation/input.md @@ -145,4 +145,4 @@ Sometimes you may wish to merge or replace the current input. Here's how: #### Replacing the entire input array with new data: - Input::merge(array('doctor' => 'Bones', 'captain' => 'Kirk')); \ No newline at end of file + Input::replace(array('doctor' => 'Bones', 'captain' => 'Kirk')); From d31f89d42f716b08b3fd3369d7b5d53aefcaca2d Mon Sep 17 00:00:00 2001 From: Joe Wallace Date: Thu, 9 Aug 2012 22:10:49 -0500 Subject: [PATCH 45/92] Fixing a bug with saving data to pivot table --- laravel/database/eloquent/pivot.php | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/laravel/database/eloquent/pivot.php b/laravel/database/eloquent/pivot.php index d2878bb5..a90d7e7d 100644 --- a/laravel/database/eloquent/pivot.php +++ b/laravel/database/eloquent/pivot.php @@ -26,7 +26,7 @@ class Pivot extends Model { public function __construct($table, $connection = null) { $this->pivot_table = $table; - $this->connection = $connection; + static::$connection = $connection; parent::__construct(array(), true); } @@ -41,14 +41,4 @@ class Pivot extends Model { return $this->pivot_table; } - /** - * Get the connection used by the pivot table. - * - * @return string - */ - public function connection() - { - return $this->connection; - } - } \ No newline at end of file From 79f92e57dfa6b0c49b92c310432080ad5ca51c2c Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Thu, 9 Aug 2012 22:42:03 -0500 Subject: [PATCH 46/92] defer language support in URIs to version 4. --- application/config/application.php | 13 --------- laravel/laravel.php | 42 ++---------------------------- laravel/url.php | 8 ------ 3 files changed, 2 insertions(+), 61 deletions(-) diff --git a/application/config/application.php b/application/config/application.php index 60735a60..525227c2 100755 --- a/application/config/application.php +++ b/application/config/application.php @@ -94,19 +94,6 @@ return array( 'language' => 'en', - /* - |-------------------------------------------------------------------------- - | Supported Languages - |-------------------------------------------------------------------------- - | - | These languages may also be supported by your application. If a request - | enters your application with a URI beginning with one of these values - | the default language will automatically be set to that language. - | - */ - - 'languages' => array(), - /* |-------------------------------------------------------------------------- | SSL Link Generation diff --git a/laravel/laravel.php b/laravel/laravel.php index 1f908eed..2772e323 100644 --- a/laravel/laravel.php +++ b/laravel/laravel.php @@ -107,46 +107,6 @@ Routing\Router::register('*', '(:all)', function() return Event::first('404'); }); -/* -|-------------------------------------------------------------------------- -| Gather The URI And Locales -|-------------------------------------------------------------------------- -| -| When routing, we'll need to grab the URI and the supported locales for -| the route so we can properly set the language and route the request -| to the proper end-point in the application. -| -*/ - -$uri = URI::current(); - -$locales = Config::get('application.languages', array()); - -$locales[] = Config::get('application.language'); - -/* -|-------------------------------------------------------------------------- -| Set The Locale Based On Route -|-------------------------------------------------------------------------- -| -| If the URI starts with one of the supported languages, we will set -| the default language to match that URI segment and shorten the -| URI we'll pass to the router to not include the lang segment. -| -*/ - -foreach ($locales as $locale) -{ - if (starts_with($uri, $locale)) - { - Config::set('application.language', $locale); - - $uri = trim(substr($uri, strlen($locale)), '/'); break; - } -} - -if ($uri === '') $uri = '/'; - /* |-------------------------------------------------------------------------- | Route The Incoming Request @@ -158,6 +118,8 @@ if ($uri === '') $uri = '/'; | */ +$uri = URI::current(); + Request::$route = Routing\Router::route(Request::method(), $uri); $response = Request::$route->call(); diff --git a/laravel/url.php b/laravel/url.php index 3ad6a3e2..2b97128c 100644 --- a/laravel/url.php +++ b/laravel/url.php @@ -107,14 +107,6 @@ class URL { $root = static::base().'/'.Config::get('application.index'); - // If multiple languages are being supported via URIs, we will append current - // language to the URI so all redirects and URLs generated include the - // current language so it is not lost on further requests. - if (count(Config::get('application.languages')) > 0) - { - $root .= '/'.Config::get('application.language'); - } - // Since SSL is not often used while developing the application, we allow the // developer to disable SSL on all framework generated links to make it more // convenient to work with the site while developing locally. From 343d1327374b35c5a6e122c4ebc0f777eabdcd43 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Thu, 9 Aug 2012 22:42:35 -0500 Subject: [PATCH 47/92] tweak change log. --- laravel/documentation/changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel/documentation/changes.md b/laravel/documentation/changes.md index d969d5a2..85608740 100644 --- a/laravel/documentation/changes.md +++ b/laravel/documentation/changes.md @@ -38,7 +38,7 @@ - Speed up many to many eager loading mapping. - Tweak the Eloquent::changed() method. -- Added support for locales in the URI. +- Various bug fixes and improvements. ## Upgrading From 3.2.3 From a95b5eb4b9a6a3f6f6bcee28f20979f663963ef6 Mon Sep 17 00:00:00 2001 From: Jason Lewis Date: Sun, 12 Aug 2012 02:15:52 +0930 Subject: [PATCH 48/92] Defer URI language support to L4. Signed-off-by: Jason Lewis --- laravel/url.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/laravel/url.php b/laravel/url.php index 2b97128c..4ff0f474 100644 --- a/laravel/url.php +++ b/laravel/url.php @@ -242,11 +242,6 @@ class URL { $url = str_replace($index.'/', '', $url); } - if (count(Config::get('application.languages')) > 0) - { - $url = str_replace(Config::get('application.language').'/', '', $url); - } - return $url; } From f68559718044ab52d798860f9c845196834ee998 Mon Sep 17 00:00:00 2001 From: Jason Lewis Date: Sun, 12 Aug 2012 02:16:11 +0930 Subject: [PATCH 49/92] Defer URI language support to L4. Signed-off-by: Jason Lewis --- laravel/url.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/laravel/url.php b/laravel/url.php index 2b97128c..4ff0f474 100644 --- a/laravel/url.php +++ b/laravel/url.php @@ -242,11 +242,6 @@ class URL { $url = str_replace($index.'/', '', $url); } - if (count(Config::get('application.languages')) > 0) - { - $url = str_replace(Config::get('application.language').'/', '', $url); - } - return $url; } From 1bd157d0a6916b75b8da9d1106ef31b356f41204 Mon Sep 17 00:00:00 2001 From: Jason Lewis Date: Sun, 12 Aug 2012 02:48:55 +0930 Subject: [PATCH 50/92] Added in develop changes. Signed-off-by: Jason Lewis --- laravel/documentation/changes.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/laravel/documentation/changes.md b/laravel/documentation/changes.md index 85608740..7f70c817 100644 --- a/laravel/documentation/changes.md +++ b/laravel/documentation/changes.md @@ -2,6 +2,7 @@ ## Contents +- [Develop](#develop) - [Laravel 3.2.4](#3.2.4) - [Upgrading From 3.2.3](#upgrade-3.2.4) - [Laravel 3.2.3](#3.2.3) @@ -33,6 +34,12 @@ - [Laravel 3.1](#3.1) - [Upgrading From 3.0](#upgrade-3.1) + +## Develop + +- Added Turkish language files. +- Changed jQuery '$' to 'jQuery' in the Profiler. + ## Laravel 3.2.4 From e3a000af4100a0f8614dc75cd08e7de06c041b0f Mon Sep 17 00:00:00 2001 From: Kelly Banman Date: Sat, 11 Aug 2012 15:52:58 -0700 Subject: [PATCH 51/92] Fix Query::lists() for empty resultsets --- laravel/database/query.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel/database/query.php b/laravel/database/query.php index c77ad65b..82a827e3 100644 --- a/laravel/database/query.php +++ b/laravel/database/query.php @@ -605,7 +605,7 @@ class Query { // set the keys on the array of values using the array_combine // function provided by PHP, which should give us the proper // array form to return from the method. - if ( ! is_null($key)) + if ( ! is_null($key) && count($results)) { return array_combine(array_map(function($row) use ($key) { From 41e3c95ed6d190a709184779eeb16b2246e0ddd1 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Mon, 13 Aug 2012 19:03:59 +0300 Subject: [PATCH 52/92] Add German translations for new array validator. --- application/language/de/validation.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/application/language/de/validation.php b/application/language/de/validation.php index 80c3874e..170cc261 100644 --- a/application/language/de/validation.php +++ b/application/language/de/validation.php @@ -24,7 +24,7 @@ return array( "alpha" => ":attribute darf nur Buchstaben beinhalten.", "alpha_dash" => ":attribute sollte nur aus Buchstaben, Nummern und Bindestrichen bestehen.", "alpha_num" => ":attribute sollte nur aus Buchstaben und Nummern bestehen.", - "array" => "The :attribute must have selected elements.", + "array" => ":attribute muss ausgewählte Elemente haben.", "before" => ":attribute muss ein Datum vor dem :date sein.", "between" => array( "numeric" => ":attribute muss zwischen :min und :max liegen.", @@ -32,10 +32,10 @@ return array( "string" => ":attribute muss zwischen :min und :max Zeichen lang sein.", ), "confirmed" => ":attribute stimmt nicht mit der Bestätigung überein.", - "count" => "The :attribute must have exactly :count selected elements.", - "countbetween" => "The :attribute must have between :min and :max selected elements.", - "countmax" => "The :attribute must have less than :max selected elements.", - "countmin" => "The :attribute must have at least :min selected elements.", + "count" => ":attribute muss genau :count ausgewählte Elemente haben.", + "countbetween" => ":attribute muss zwischen :min und :max ausgewählte Elemente haben.", + "countmax" => ":attribute muss weniger als :max ausgewählte Elemente haben.", + "countmin" => ":attribute muss mindestens :min ausgewählte Elemente haben.", "different" => ":attribute und :other müssen verschieden sein.", "email" => ":attribute ist keine gültige Email-Adresse.", "exists" => "Der gewählte Wert für :attribute ist ungültig.", From 97761f08f16b469fe4af7c2efdaef7542e3fc32a Mon Sep 17 00:00:00 2001 From: Dayle Rees Date: Tue, 14 Aug 2012 12:04:49 +0200 Subject: [PATCH 53/92] missing a from attribute --- application/language/pl/validation.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/language/pl/validation.php b/application/language/pl/validation.php index 65d8553a..0ec36d57 100644 --- a/application/language/pl/validation.php +++ b/application/language/pl/validation.php @@ -27,7 +27,7 @@ return array( "array" => "The :attribute must have selected elements.", "before" => ":attribute musi zawierać datę, która jest przed :date.", "between" => array( - "numeric" => ":ttribute musi mieścić się w granicach :min - :max.", + "numeric" => ":attribute musi mieścić się w granicach :min - :max.", "file" => ":attribute musi mieć :min - :max kilobajtów.", "string" => ":attribute musi mieć :min - :max znaków.", ), From 5359085eda700e106d8e076cbb7b819c912ee372 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Wed, 15 Aug 2012 17:27:50 +0300 Subject: [PATCH 54/92] Fix contribution page links in documentation. --- laravel/documentation/contents.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/laravel/documentation/contents.md b/laravel/documentation/contents.md index 88a7ac24..d29b3908 100644 --- a/laravel/documentation/contents.md +++ b/laravel/documentation/contents.md @@ -113,6 +113,6 @@ ### Contributing -- [Laravel on GitHub](docs/contrib/github) -- [Command Line](docs/contrib/command-line) -- [TortoiseGit](docs/contrib/tortoisegit) +- [Laravel on GitHub](/docs/contrib/github) +- [Command Line](/docs/contrib/command-line) +- [TortoiseGit](/docs/contrib/tortoisegit) From 1c7297dc028a6f8d75c109a2321b1879e6bfb367 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Wed, 15 Aug 2012 17:33:22 +0300 Subject: [PATCH 55/92] Contrib docs: Remove pointless staging branch info. --- laravel/documentation/contrib/github.md | 1 - 1 file changed, 1 deletion(-) diff --git a/laravel/documentation/contrib/github.md b/laravel/documentation/contrib/github.md index 5d9f43e9..df4980b7 100644 --- a/laravel/documentation/contrib/github.md +++ b/laravel/documentation/contrib/github.md @@ -24,7 +24,6 @@ Laravel's home on GitHub is at [github.com/laravel](https://github.com/laravel). The **laravel** repository has multiple branches, each serving a specific purpose: - **master** - This is the Laravel release branch. Active development does not happen on this branch. This branch is only for the most recent, stable Laravel core code. When you download Laravel from [laravel.com](http://laravel.com/), you are downloading directly from this master branch. *Do not make pull requests to this branch.* -- **staging** - I'm not sure what this is for... Last minute testing before pushing develop to master? - **develop** - This is the working development branch. All proposed code changes and contributions by the community are pulled into this branch. *When you make a pull request to the Laravel project, this is the branch you want to pull-request into.* Once certain milestones have been reached and/or Taylor Otwell and the Laravel team is happy with the stability and additional features of the current development branch, the changes in the **develop** branch are pulled into the **master** branch, thus creating and releasing the newest stable version of Laravel for the world to use. From 67464cb0f80d73fb29e47a05f7f14baa39cb1df8 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Wed, 15 Aug 2012 10:45:37 -0400 Subject: [PATCH 56/92] Fix typo in Github page table of contents. --- laravel/documentation/contrib/github.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel/documentation/contrib/github.md b/laravel/documentation/contrib/github.md index df4980b7..4a0f69f4 100644 --- a/laravel/documentation/contrib/github.md +++ b/laravel/documentation/contrib/github.md @@ -3,7 +3,7 @@ ## Contents - [The Basics](#the-basics) -- [Repositories](#repositoriess) +- [Repositories](#repositories) - [Branches](#branches) From f80d694a9500821ad9b1f5ee2f70ba7865a230bb Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Wed, 15 Aug 2012 10:47:51 -0400 Subject: [PATCH 57/92] Contrib docs: add section stub about pull requests. --- laravel/documentation/contrib/github.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/laravel/documentation/contrib/github.md b/laravel/documentation/contrib/github.md index 4a0f69f4..c8c30daa 100644 --- a/laravel/documentation/contrib/github.md +++ b/laravel/documentation/contrib/github.md @@ -5,20 +5,21 @@ - [The Basics](#the-basics) - [Repositories](#repositories) - [Branches](#branches) +- [Pull Requests](#pull-requests) - + ## The Basics Because Laravel's development and source control is done through GitHub, anyone is able to make contributions to it. Anyone can fix bugs, add features or improve the documentation. After submitting proposed changes to the project, the Laravel team will review the changes and make the decision to commit them to Laravel's core. - + ## Repositories Laravel's home on GitHub is at [github.com/laravel](https://github.com/laravel). Laravel has several repositories. For basic contributions, the only repository you need to pay attention to is the **laravel** repository, located at [github.com/laravel/laravel](https://github.com/laravel/laravel). - + ## Branches The **laravel** repository has multiple branches, each serving a specific purpose: @@ -28,6 +29,11 @@ The **laravel** repository has multiple branches, each serving a specific purpos Once certain milestones have been reached and/or Taylor Otwell and the Laravel team is happy with the stability and additional features of the current development branch, the changes in the **develop** branch are pulled into the **master** branch, thus creating and releasing the newest stable version of Laravel for the world to use. + +## Pull Requests + +Contributing with pull requests. + *Further Reading* - [Contributing to Laravel via Command-Line](docs/contrib/command-line) From 385b776ba812c991678c85d6931833885b62c1d4 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Wed, 15 Aug 2012 11:47:27 -0400 Subject: [PATCH 58/92] Docs: Finish section on pull request guidelines. --- laravel/documentation/contrib/github.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/laravel/documentation/contrib/github.md b/laravel/documentation/contrib/github.md index c8c30daa..ceeac76e 100644 --- a/laravel/documentation/contrib/github.md +++ b/laravel/documentation/contrib/github.md @@ -32,7 +32,13 @@ Once certain milestones have been reached and/or Taylor Otwell and the Laravel t ## Pull Requests -Contributing with pull requests. +[GitHub pull requests](https://help.github.com/articles/using-pull-requests) are a great way for everyone in the community to contribute to the Laravel codebase. Found a bug? Just fix it in your fork and submit a pull request. This will then be reviewed, and, if found as good, merged into the main repository. + +In order to keep the codebase clean, stable and at high quality, even with so many people contributing, some guidelines are necessary for high-quality pull requests: + +- **Branch:** Unless they are immediate documentation fixes relevant for old versions, pull requests should be sent to the `develop` branch only. Make sure to select that branch as target when creating the pull request (GitHub will not automatically select it.) +- **Documentation:** If you are adding a new feature or changing the API in any relevant way, this should be documented. The documentation files can be found directly in the core repository. +- **Unit tests:** To keep old bugs from re-appearing and generally hold quality at a high level, the Laravel core is thoroughly unit-tested. Thus, when you create a pull request, it is expected that you unit test any new code you add. For any bug you fix, you should also add regression tests to make sure the bug will never appear again. If you are unsure about how to write tests, the core team or other contributors will gladly help. *Further Reading* From 6c9d903e584f9b3a09c01d8c96bcc33015286efb Mon Sep 17 00:00:00 2001 From: Spencer Deinum Date: Thu, 16 Aug 2012 17:18:50 -0400 Subject: [PATCH 59/92] Added Command::run() to the documentation for artisan tasks. Signed-off-by: Spencer Deinum --- laravel/documentation/artisan/tasks.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/laravel/documentation/artisan/tasks.md b/laravel/documentation/artisan/tasks.md index 08e6606c..a5ab78b6 100644 --- a/laravel/documentation/artisan/tasks.md +++ b/laravel/documentation/artisan/tasks.md @@ -38,6 +38,14 @@ Now you can call the "run" method of your task via the command-line. You can eve php artisan notify taylor +#### Calling a task from your application: + + Command::run(array('notify')); + +#### Calling a task from your application with arguements: + + Command::run(array('notify', 'taylor')); + Remember, you can call specific methods on your task, so, let's add an "urgent" method to the notify task: #### Adding a method to the task: @@ -97,4 +105,4 @@ To run your task just use the usual Laravel double-colon syntax to indicate the #### Setting the default database connection: - php artisan foo --database=sqlite \ No newline at end of file + php artisan foo --database=sqlite From 9718d5cd0de681c75a667efaa4076cbaab035380 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Fri, 17 Aug 2012 09:02:32 -0500 Subject: [PATCH 60/92] fix nested queries. --- laravel/database/eloquent/query.php | 31 +++++++++---------- laravel/database/query.php | 48 +++++++++++++++++++---------- laravel/documentation/changes.md | 14 ++++++--- 3 files changed, 56 insertions(+), 37 deletions(-) diff --git a/laravel/database/eloquent/query.php b/laravel/database/eloquent/query.php index fa739d55..3aee79c9 100644 --- a/laravel/database/eloquent/query.php +++ b/laravel/database/eloquent/query.php @@ -38,7 +38,7 @@ class Query { ); /** - * Create a new query instance for a model. + * Creat a new query instance for a model. * * @param Model $model * @return void @@ -118,7 +118,7 @@ class Query { $new = new $class(array(), true); // We need to set the attributes manually in case the accessible property is - // set on the array which will prevent the mass assignment of attributes if + // set on the array which will prevent the mass assignemnt of attributes if // we were to pass them in using the constructor or fill methods. $new->fill_raw($result); @@ -141,7 +141,7 @@ class Query { } } - // The many to many relationships may have pivot table columns on them + // The many to many relationships may have pivot table column on them // so we will call the "clean" method on the relationship to remove // any pivot columns that are on the model. if ($this instanceof Relationships\Has_Many_And_Belongs_To) @@ -199,7 +199,7 @@ class Query { foreach ($this->model_includes() as $include => $constraints) { // To get the nested includes, we want to find any includes that begin - // the relationship with a dot, then we will strip off the leading + // the relationship and a dot, then we will strip off the leading // nesting indicator and set the include in the array. if (starts_with($include, $relationship.'.')) { @@ -217,23 +217,22 @@ class Query { */ protected function model_includes() { - $relationships = array_keys($this->model->includes); - $implicits = array(); + $includes = array(); - foreach ($relationships as $relationship) + foreach ($this->model->includes as $relationship => $constraints) { - $parts = explode('.', $relationship); - - $prefix = ''; - foreach ($parts as $part) + // When eager loading relationships, constraints may be set on the eager + // load definition; however, is none are set, we need to swap the key + // and the value of the array since there are no constraints. + if (is_numeric($relationship)) { - $implicits[$prefix.$part] = NULL; - $prefix .= $part.'.'; + list($relationship, $constraints) = array($constraints, null); } + + $includes[$relationship] = $constraints; } - // Add all implicit includes to the explicit ones - return $this->model->includes + $implicits; + return $includes; } /** @@ -278,4 +277,4 @@ class Query { return $this; } -} +} \ No newline at end of file diff --git a/laravel/database/query.php b/laravel/database/query.php index c77ad65b..83c92b83 100644 --- a/laravel/database/query.php +++ b/laravel/database/query.php @@ -2,7 +2,7 @@ use Closure; use Laravel\Database; -use Paginator; +use Laravel\Paginator; use Laravel\Database\Query\Grammars\Postgres; use Laravel\Database\Query\Grammars\SQLServer; @@ -140,7 +140,7 @@ class Query { */ public function select($columns = array('*')) { - $this->selects = is_array($columns) ? $columns : array($columns); + $this->selects = (array) $columns; return $this; } @@ -158,7 +158,7 @@ class Query { { // If the "column" is really an instance of a Closure, the developer is // trying to create a join with a complex "ON" clause. So, we will add - // the join, and then call the Closure with the join. + // the join, and then call the Closure with the join/ if ($column1 instanceof Closure) { $this->joins[] = new Query\Join($type, $table); @@ -168,7 +168,7 @@ class Query { // If the column is just a string, we can assume that the join just // has a simple on clause, and we'll create the join instance and - // add the clause automatically for the developer. + // add the clause automatically for the develoepr. else { $join = new Query\Join($type, $table); @@ -283,7 +283,7 @@ class Query { */ public function or_where_id($value) { - return $this->or_where('id', '=', $value); + return $this->or_where('id', '=', $value); } /** @@ -395,7 +395,7 @@ class Query { } /** - * Add nested constraints to the query. + * Add a nested where condition to the query. * * @param Closure $callback * @param string $connector @@ -403,7 +403,24 @@ class Query { */ public function where_nested($callback, $connector = 'AND') { - call_user_func($callback, $this); + $type = 'where_nested'; + + // To handle a nested where statement, we will actually instantiate a new + // Query instance and run the callback over that instance, which will + // allow the developer to have a fresh query instance + $query = new Query($this->connection, $this->grammar, $this->from); + + call_user_func($callback, $query); + + // Once the callback has been run on the query, we will store the nested + // query instance on the where clause array so that it's passed to the + // query's query grammar instance when building. + if ($query->wheres !== null) + { + $this->wheres[] = compact('type', 'query', 'connector'); + } + + $this->bindings = array_merge($this->bindings, $query->bindings); return $this; } @@ -436,7 +453,7 @@ class Query { foreach ($segments as $segment) { - // If the segment is not a boolean connector, we can assume it is + // If the segment is not a boolean connector, we can assume it it is // a column name, and we'll add it to the query as a new constraint // of the query's where clause and keep iterating the segments. if ($segment != '_and_' and $segment != '_or_') @@ -475,7 +492,6 @@ class Query { * @param string $column * @param string $operator * @param mixed $value - * @return Query */ public function having($column, $operator, $value) { @@ -660,7 +676,7 @@ class Query { public function aggregate($aggregator, $columns) { // We'll set the aggregate value so the grammar does not try to compile - // a SELECT clause on the query. If an aggregator is present, its own + // a SELECT clause on the query. If an aggregator is present, it's own // grammar function will be used to build the SQL syntax. $this->aggregate = compact('aggregator', 'columns'); @@ -687,7 +703,7 @@ class Query { { // Because some database engines may throw errors if we leave orderings // on the query when retrieving the total number of records, we'll drop - // all of the orderings and put them back on the query. + // all of the ordreings and put them back on the query. list($orderings, $this->orderings) = array($this->orderings, null); $total = $this->count(reset($columns)); @@ -714,12 +730,12 @@ class Query { { // Force every insert to be treated like a batch insert to make creating // the binding array simpler since we can just spin through the inserted - // rows as if there was more than one every time. + // rows as if there/ was more than one every time. if ( ! is_array(reset($values))) $values = array($values); $bindings = array(); - // We need to merge the insert values into the array of the query + // We need to merge the the insert values into the array of the query // bindings so that they will be bound to the PDO statement when it // is executed by the database connection. foreach ($values as $value) @@ -820,7 +836,7 @@ class Query { /** * Execute the query as a DELETE statement. * - * Optionally, an ID may be passed to the method to delete a specific row. + * Optionally, an ID may be passed to the method do delete a specific row. * * @param int $id * @return int @@ -837,7 +853,7 @@ class Query { $sql = $this->grammar->delete($this); - return $this->connection->query($sql, $this->bindings); + return $this->connection->query($sql, $this->bindings); } /** @@ -853,7 +869,7 @@ class Query { } // All of the aggregate methods are handled by a single method, so we'll - // catch them all here and then pass them off to the aggregate method + // catch them all here and then pass them off to the agregate method // instead of creating methods for each one of them. if (in_array($method, array('count', 'min', 'max', 'avg', 'sum'))) { diff --git a/laravel/documentation/changes.md b/laravel/documentation/changes.md index 7f70c817..5ff87c38 100644 --- a/laravel/documentation/changes.md +++ b/laravel/documentation/changes.md @@ -2,7 +2,8 @@ ## Contents -- [Develop](#develop) +- [Laravel 3.2.5](#3.2.5) +- [Upgrading From 3.2.4](#upgrade-3.2.5) - [Laravel 3.2.4](#3.2.4) - [Upgrading From 3.2.3](#upgrade-3.2.4) - [Laravel 3.2.3](#3.2.3) @@ -34,11 +35,14 @@ - [Laravel 3.1](#3.1) - [Upgrading From 3.0](#upgrade-3.1) - -## Develop + -- Added Turkish language files. -- Changed jQuery '$' to 'jQuery' in the Profiler. +- Revert nested where code back to 3.2.3 tag. + + +## Upgrading From 3.2.4 + +- Replace the **laravel** folder. ## Laravel 3.2.4 From e8119f810981b47fddfa7717e68018f9b530967d Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Fri, 17 Aug 2012 09:04:17 -0500 Subject: [PATCH 61/92] increment version. --- artisan | 2 +- paths.php | 2 +- public/index.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/artisan b/artisan index bd0f3cbb..5127755f 100644 --- a/artisan +++ b/artisan @@ -4,7 +4,7 @@ * Laravel - A PHP Framework For Web Artisans * * @package Laravel - * @version 3.2.4 + * @version 3.2.5 * @author Taylor Otwell * @link http://laravel.com */ diff --git a/paths.php b/paths.php index bf56f2eb..824f8ea0 100644 --- a/paths.php +++ b/paths.php @@ -3,7 +3,7 @@ * Laravel - A PHP Framework For Web Artisans * * @package Laravel - * @version 3.2.4 + * @version 3.2.5 * @author Taylor Otwell * @link http://laravel.com */ diff --git a/public/index.php b/public/index.php index fb2a1902..4c5604ba 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.4 + * @version 3.2.5 * @author Taylor Otwell * @link http://laravel.com */ From 1203473469b1fad5e803182bfb3350c28649963f Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Fri, 17 Aug 2012 09:18:16 -0500 Subject: [PATCH 62/92] revert eloquent back to 3.2.3 --- laravel/database/eloquent/model.php | 26 +++------------ .../eloquent/relationships/belongs_to.php | 5 ++- .../eloquent/relationships/has_many.php | 5 ++- .../relationships/has_many_and_belongs_to.php | 32 +++++++------------ .../eloquent/relationships/has_one.php | 5 ++- 5 files changed, 22 insertions(+), 51 deletions(-) diff --git a/laravel/database/eloquent/model.php b/laravel/database/eloquent/model.php index a5baf82e..61a7769c 100644 --- a/laravel/database/eloquent/model.php +++ b/laravel/database/eloquent/model.php @@ -255,22 +255,7 @@ abstract class Model { */ public function _with($includes) { - $includes = (array) $includes; - - $this->includes = array(); - - foreach ($includes as $relationship => $constraints) - { - // When eager loading relationships, constraints may be set on the eager - // load definition; however, is none are set, we need to swap the key - // and the value of the array since there are no constraints. - if (is_numeric($relationship)) - { - list($relationship, $constraints) = array($constraints, null); - } - - $this->includes[$relationship] = $constraints; - } + $this->includes = (array) $includes; return $this; } @@ -533,7 +518,7 @@ abstract class Model { foreach ($this->attributes as $key => $value) { - if ( ! array_key_exists($key, $this->original) or $value !== $this->original[$key]) + if ( ! isset($this->original[$key]) or $value !== $this->original[$key]) { $dirty[$key] = $value; } @@ -567,7 +552,6 @@ abstract class Model { * Get a given attribute from the model. * * @param string $key - * @return mixed */ public function get_attribute($key) { @@ -723,7 +707,7 @@ abstract class Model { { foreach (array('attributes', 'relationships') as $source) { - if (array_key_exists($key, $this->$source)) return !is_null($this->$source[$key]); + if (array_key_exists($key, $this->$source)) return true; } if (method_exists($this, $key)) return true; @@ -754,7 +738,7 @@ abstract class Model { { $meta = array('key', 'table', 'connection', 'sequence', 'per_page', 'timestamps'); - // If the method is actually the name of a static property on the model, we'll + // If the method is actually the name of a static property on the model we'll // return the value of the static property. This makes it convenient for // relationships to access these values off of the instances. if (in_array($method, $meta)) @@ -764,7 +748,7 @@ abstract class Model { $underscored = array('with', 'find'); - // Some methods need to be accessed both statically and non-statically so we'll + // Some methods need to be accessed both staticly and non-staticly so we'll // keep underscored methods of those methods and intercept calls to them // here so they can be called either way on the model instance. if (in_array($method, $underscored)) diff --git a/laravel/database/eloquent/relationships/belongs_to.php b/laravel/database/eloquent/relationships/belongs_to.php index e000ca40..ef257836 100644 --- a/laravel/database/eloquent/relationships/belongs_to.php +++ b/laravel/database/eloquent/relationships/belongs_to.php @@ -79,9 +79,8 @@ class Belongs_To extends Relationship { /** * Match eagerly loaded child models to their parent models. * - * @param string $relationship - * @param array $children - * @param array $parents + * @param array $children + * @param array $parents * @return void */ public function match($relationship, &$children, $parents) diff --git a/laravel/database/eloquent/relationships/has_many.php b/laravel/database/eloquent/relationships/has_many.php index 92a1bcde..726bef20 100644 --- a/laravel/database/eloquent/relationships/has_many.php +++ b/laravel/database/eloquent/relationships/has_many.php @@ -83,9 +83,8 @@ class Has_Many extends Has_One_Or_Many { /** * Match eagerly loaded child models to their parent models. * - * @param string $relationship - * @param array $parents - * @param array $children + * @param array $parents + * @param array $children * @return void */ public function match($relationship, &$parents, $children) 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 dad17522..52276a5f 100644 --- a/laravel/database/eloquent/relationships/has_many_and_belongs_to.php +++ b/laravel/database/eloquent/relationships/has_many_and_belongs_to.php @@ -44,7 +44,7 @@ class Has_Many_And_Belongs_To extends Relationship { $this->joining = $table ?: $this->joining($model, $associated); // If the Pivot table is timestamped, we'll set the timestamp columns to be - // fetched when the pivot table models are fetched by the developer, or else + // fetched when the pivot table models are fetched by the developer else // the ID will be the only "extra" column fetched in by default. if (Pivot::$timestamps) { @@ -61,8 +61,6 @@ class Has_Many_And_Belongs_To extends Relationship { * * By default, the name is the models sorted and joined with underscores. * - * @param Model $model - * @param string $associated * @return string */ protected function joining($model, $associated) @@ -88,7 +86,7 @@ class Has_Many_And_Belongs_To extends Relationship { * Insert a new record into the joining table of the association. * * @param int $id - * @param array $attributes + * @param array $joining * @return bool */ public function attach($id, $attributes = array()) @@ -133,7 +131,7 @@ class Has_Many_And_Belongs_To extends Relationship { } // Next we will take the difference of the current and given IDs and detach - // all of the entities that exist in the current array but are not in + // all of the entities that exists in the current array but are not in // the array of IDs given to the method, finishing the sync. $detach = array_diff($current, $ids); @@ -319,30 +317,22 @@ class Has_Many_And_Belongs_To extends Relationship { /** * Match eagerly loaded child models to their parent models. * - * @param string $relationship - * @param array $parents - * @param array $children + * @param array $parents + * @param array $children * @return void */ public function match($relationship, &$parents, $children) { $foreign = $this->foreign_key(); - $dictionary = array(); - - foreach ($children as $child) - { - $dictionary[$child->pivot->$foreign][] = $child; - } - foreach ($parents as &$parent) { - $parent_key = $parent->get_key(); - - if (isset($dictionary[$parent_key])) + $matching = array_filter($children, function($v) use (&$parent, $foreign) { - $parent->relationships[$relationship] = $dictionary[$parent_key]; - } + return $v->pivot->$foreign == $parent->get_key(); + }); + + $parent->relationships[$relationship] = array_values($matching); } } @@ -386,7 +376,7 @@ class Has_Many_And_Belongs_To extends Relationship { /** * Set the columns on the joining table that should be fetched. * - * @param array $columns + * @param array $column * @return Relationship */ public function with($columns) diff --git a/laravel/database/eloquent/relationships/has_one.php b/laravel/database/eloquent/relationships/has_one.php index ee97358b..8d1e4ff9 100644 --- a/laravel/database/eloquent/relationships/has_one.php +++ b/laravel/database/eloquent/relationships/has_one.php @@ -30,9 +30,8 @@ class Has_One extends Has_One_Or_Many { /** * Match eagerly loaded child models to their parent models. * - * @param string $relationship - * @param array $parents - * @param array $children + * @param array $parents + * @param array $children * @return void */ public function match($relationship, &$parents, $children) From 7193f292406b95301750a93f9773eb6eb86338ac Mon Sep 17 00:00:00 2001 From: Jesse O'Brien Date: Fri, 17 Aug 2012 16:22:12 -0400 Subject: [PATCH 63/92] Added profile timers Track the running time of a function Profiler::time(function(){}); Profiler::time(function(){}, 'name'); Track a stopwatch style timer throughout your app Profiler::tick('name'); Profiler::tick('name', function($timer){}); --- laravel/profiling/profiler.php | 87 +++++++++++++++++++++++++++- laravel/profiling/template.blade.php | 50 +++++++++++++++- 2 files changed, 134 insertions(+), 3 deletions(-) diff --git a/laravel/profiling/profiler.php b/laravel/profiling/profiler.php index eda884c5..01469ab8 100644 --- a/laravel/profiling/profiler.php +++ b/laravel/profiling/profiler.php @@ -14,7 +14,7 @@ class Profiler { * * @var array */ - protected static $data = array('queries' => array(), 'logs' => array()); + protected static $data = array('queries' => array(), 'logs' => array(), 'timers' => array()); /** * Get the rendered contents of the Profiler. @@ -32,10 +32,95 @@ class Profiler { static::$data['memory'] = get_file_size(memory_get_usage(true)); static::$data['memory_peak'] = get_file_size(memory_get_peak_usage(true)); static::$data['time'] = number_format((microtime(true) - LARAVEL_START) * 1000, 2); + foreach ( static::$data['timers'] as &$timer) + { + $timer['running_time'] = number_format((microtime(true) - $timer['start'] ) * 1000, 2); + } + return render('path: '.__DIR__.'/template'.BLADE_EXT, static::$data); } } + /** + * Allow a callback to be timed. + * + * @param closure $func + * @param string $name + * @return void + */ + public static function time( $func, $name = 'default_func_timer' ) + { + // First measure the runtime of the func + $start = microtime(true); + $func(); + $end = microtime(true); + + // Check to see if a timer by that name exists + if (isset(static::$data['timers'][$name])) + { + $name = $name.uniqid(); + } + + // Push the time into the timers array for display + static::$data['timers'][$name]['start'] = $start; + static::$data['timers'][$name]['end'] = $end; + static::$data['timers'][$name]['time'] = number_format(($end - $start) * 1000, 2); + } + + /** + * Start, or add a tick to a timer. + * + * @param string $name + * @return void + */ + public static function tick($name = 'default_timer', $callback = null) + { + $name = trim($name); + if (empty($name)) $name = 'default_timer'; + + // Is this a brand new tick? + if (isset(static::$data['timers'][$name])) + { + $current_timer = static::$data['timers'][$name]; + $ticks = count($current_timer['ticks']); + + // Initialize the new time for the tick + $new_tick = array(); + $mt = microtime(true); + $new_tick['raw_time'] = $mt - $current_timer['start']; + $new_tick['time'] = number_format(($mt - $current_timer['start']) * 1000, 2); + + // Use either the start time or the last tick for the diff + if ($ticks > 0) + { + $last_tick = $current_timer['ticks'][$ticks- 1]['raw_time']; + $new_tick['diff'] = number_format(($new_tick['raw_time'] - $last_tick) * 1000, 2); + } + else + { + $new_tick['diff'] = $new_tick['time']; + } + + // Add the new tick to the stack of them + static::$data['timers'][$name]['ticks'][] = $new_tick; + } + else + { + // Initialize a start time on the first tick + static::$data['timers'][$name]['start'] = microtime(true); + static::$data['timers'][$name]['ticks'] = array(); + } + + // Run the callback for this tick if it's specified + if ( ! is_null($callback) and is_callable($callback)) + { + // After we've ticked, call the callback function + call_user_func_array($callback, array( + static::$data['timers'][$name] + )); + } + } + /** * Add a log entry to the log entries array. * diff --git a/laravel/profiling/template.blade.php b/laravel/profiling/template.blade.php index 32c430a6..9c855b43 100755 --- a/laravel/profiling/template.blade.php +++ b/laravel/profiling/template.blade.php @@ -48,6 +48,52 @@ There have been no SQL queries executed. @endif + +
+ @if (count($timers) > 0) + + + + + + + @foreach ($timers as $name => $timer) + + + + + + + @if (isset($timer['ticks'])) + @foreach( $timer['ticks'] as $tick) + + + + + + @endforeach + @else + + + + + + @endif + + @endforeach +
NameRunning Time (ms)Difference
+ {{ $name }} +
{{ $timer['running_time'] }}ms (time from start to render)
 
+
Tick
+
+
{{ $tick['time'] }}ms
+
+
+ {{ $tick['diff'] }}ms
+
Running Time
{{ $timer['time'] }}ms
 
+ @else + There have been no checkpoints set. + @endif +
@@ -61,7 +107,7 @@ @endif -
  • Time {{ $time }}ms
  • +
  • Time {{ $time }}ms
  • Memory {{ $memory }} ({{ $memory_peak }})
  • ×
  • @@ -75,4 +121,4 @@ - \ No newline at end of file + From 973551cd8d65b16ea88e09150b18885294ff44fa Mon Sep 17 00:00:00 2001 From: Hirohisa Kawase Date: Sat, 18 Aug 2012 19:46:23 +0900 Subject: [PATCH 64/92] Change some Markdown to fit other md files' format. Signed-off-by: Hirohisa Kawase --- laravel/documentation/contrib/command-line.md | 47 ++++++------- laravel/documentation/contrib/github.md | 6 +- laravel/documentation/contrib/tortoisegit.md | 69 ++++++++++--------- 3 files changed, 62 insertions(+), 60 deletions(-) diff --git a/laravel/documentation/contrib/command-line.md b/laravel/documentation/contrib/command-line.md index d662e806..5dea4cb6 100644 --- a/laravel/documentation/contrib/command-line.md +++ b/laravel/documentation/contrib/command-line.md @@ -1,28 +1,29 @@ # Contributing to Laravel via Command-Line ## Contents - - [Getting Started](#getting-started) - - [Forking Laravel](#forking-laravel) - - [Cloning Laravel](#cloning-laravel) - - [Adding your Fork](#adding-your-fork) - - [Creating Branches](#creating-branches) - - [Committing](#committing) - - [Submitting a Pull Request](#submitting-a-pull-request) - - [What's Next?](#whats-next) - +- [Getting Started](#getting-started) +- [Forking Laravel](#forking-laravel) +- [Cloning Laravel](#cloning-laravel) +- [Adding your Fork](#adding-your-fork) +- [Creating Branches](#creating-branches) +- [Committing](#committing) +- [Submitting a Pull Request](#submitting-a-pull-request) +- [What's Next?](#whats-next) + + ## Getting Started This tutorial explains the basics of contributing to a project on [GitHub](https://github.com/) via the command-line. The workflow can apply to most projects on GitHub, but in this case, we will be focused on the [Laravel](https://github.com/laravel/laravel) project. This tutorial is applicable to OSX, Linux and Windows. This tutorial assumes you have installed [Git](http://git-scm.com/) and you have created a [GitHub account](https://github.com/signup/free). If you haven't already, look at the [Laravel on GitHub](/docs/contrib/github) documentation in order to familiarize yourself with Laravel's repositories and branches. - + ## Forking Laravel Login to GitHub and visit the [Laravel Repository](https://github.com/laravel/laravel). Click on the **Fork** button. This will create your own fork of Laravel in your own GitHub account. Your Laravel fork will be located at **https://github.com/username/laravel** (your GitHub username will be used in place of *username*). - + ## Cloning Laravel Open up the command-line or terminal and make a new directory where you can make development changes to Laravel: @@ -36,7 +37,7 @@ Next, clone the Laravel repository (not your fork you made): > **Note**: The reason you are cloning the original Laravel repository (and not the fork you made) is so you can always pull down the most recent changes from the Laravel repository to your local repository. - + ## Adding your Fork Next, it's time to add the fork you made as a **remote repository**: @@ -49,7 +50,7 @@ Remember to replace *username** with your GitHub username. *This is case-sensiti Now you have a pristine clone of the Laravel repository along with your fork as a remote repository. You are ready to begin branching for new features or fixing bugs. - + ## Creating Branches First, make sure you are working in the **develop** branch. If you submit changes to the **master** branch, it is unlikely they will be pulled in anytime in the near future. For more information on this, read the documentation for [Laravel on GitHub](/docs/contrib/github). To switch to the develop branch: @@ -76,7 +77,7 @@ Or if there is a new feature to add or change to the documentation that you want Now that you have created your own branch and have switched to it, it's time to make your changes to the code. Add your new feature or fix that bug. - + ## Committing Now that you have finished coding and testing your changes, it's time to commit them to your local repository. First, add the files that you changed/added: @@ -87,10 +88,10 @@ Next, commit the changes to the repository: # git commit -s -m "I added some more stuff to the Localization documentation." - - **-s** means that you are signing-off on your commit with your name. This tells the Laravel team know that you personally agree to your code being added to the Laravel core. - - **-m** is the message that goes with your commit. Provide a brief explanation of what you added or changed. +"- **-s** means that you are signing-off on your commit with your name. This tells the Laravel team know that you personally agree to your code being added to the Laravel core. +"- **-m** is the message that goes with your commit. Provide a brief explanation of what you added or changed. - + ## Pushing to your Fork Now that your local repository has your committed changes, it's time to push (or sync) your new branch to your fork that is hosted in GitHub: @@ -99,19 +100,19 @@ Now that your local repository has your committed changes, it's time to push (or Your branch has been successfully pushed to your fork on GitHub. - + ## Submitting a Pull Request The final step is to submit a pull request to the Laravel repository. This means that you are requesting that the Laravel team pull and merge your changes to the Laravel core. In your browser, visit your Laravel fork at [https://github.com/username/laravel](https://github.com/username/laravel). Click on **Pull Request**. Next, make sure you choose the proper base and head repositories and branches: - - **base repo:** laravel/laravel - - **base branch:** develop - - **head repo:** username/laravel - - **head branch:** feature/localization-docs +- **base repo:** laravel/laravel +- **base branch:** develop +- **head repo:** username/laravel +- **head branch:** feature/localization-docs Use the form to write a more detailed description of the changes you made and why you made them. Finally, click **Send pull request**. That's it! The changes you made have been submitted to the Laravel team. - + ## What's Next? Do you have another feature you want to add or another bug you need to fix? First, make sure you always base your new branch off of the develop branch: diff --git a/laravel/documentation/contrib/github.md b/laravel/documentation/contrib/github.md index 5d9f43e9..5a136d72 100644 --- a/laravel/documentation/contrib/github.md +++ b/laravel/documentation/contrib/github.md @@ -6,19 +6,19 @@ - [Repositories](#repositoriess) - [Branches](#branches) - + ## The Basics Because Laravel's development and source control is done through GitHub, anyone is able to make contributions to it. Anyone can fix bugs, add features or improve the documentation. After submitting proposed changes to the project, the Laravel team will review the changes and make the decision to commit them to Laravel's core. - + ## Repositories Laravel's home on GitHub is at [github.com/laravel](https://github.com/laravel). Laravel has several repositories. For basic contributions, the only repository you need to pay attention to is the **laravel** repository, located at [github.com/laravel/laravel](https://github.com/laravel/laravel). - + ## Branches The **laravel** repository has multiple branches, each serving a specific purpose: diff --git a/laravel/documentation/contrib/tortoisegit.md b/laravel/documentation/contrib/tortoisegit.md index aa79e8cb..74049ead 100644 --- a/laravel/documentation/contrib/tortoisegit.md +++ b/laravel/documentation/contrib/tortoisegit.md @@ -1,47 +1,48 @@ # Contributing to Laravel using TortoiseGit ## Contents - - [Getting Started](#getting-started) - - [Forking Laravel](#forking-laravel) - - [Cloning Laravel](#cloning-laravel) - - [Adding your Fork](#adding-your-fork) - - [Creating Branches](#creating-branches) - - [Committing](#committing) - - [Submitting a Pull Request](#submitting-a-pull-request) - - [What's Next?](#whats-next) - +- [Getting Started](#getting-started) +- [Forking Laravel](#forking-laravel) +- [Cloning Laravel](#cloning-laravel) +- [Adding your Fork](#adding-your-fork) +- [Creating Branches](#creating-branches) +- [Committing](#committing) +- [Submitting a Pull Request](#submitting-a-pull-request) +- [What's Next?](#whats-next) + + ## Getting Started This tutorial explains the basics of contributing to a project on [GitHub](https://github.com/) using [TortoiseGit](http://code.google.com/p/tortoisegit/) for Windows. The workflow can apply to most projects on GitHub, but in this case, we will be focused on the [Laravel](https://github.com/laravel/laravel) project. This tutorial assumes you have installed TortoiseGit for Windows and you have created a GitHub account. If you haven't already, look at the [Laravel on GitHub](/docs/contrib/github) documentation in order to familiarize yourself with Laravel's repositories and branches. - + ## Forking Laravel Login to GitHub and visit the [Laravel Repository](https://github.com/laravel/laravel). Click on the **Fork** button. This will create your own fork of Laravel in your own GitHub account. Your Laravel fork will be located at **https://github.com/username/laravel** (your GitHub username will be used in place of *username*). - + ## Cloning Laravel Open up Windows Explorer and create a new directory where you can make development changes to Laravel. - - Right-click the Laravel directory to bring up the context menu. Click on **Git Clone...** - - Git clone +- Right-click the Laravel directory to bring up the context menu. Click on **Git Clone...** +- Git clone - **Url:** https://github.com/laravel/laravel.git - **Directory:** the directory that you just created in the previous step - Click **OK** > **Note**: The reason you are cloning the original Laravel repository (and not the fork you made) is so you can always pull down the most recent changes from the Laravel repository to your local repository. - + ## Adding your Fork After the cloning process is complete, it's time to add the fork you made as a **remote repository**. - - Right-click the Laravel directory and goto **TortoiseGit > Settings** - - Goto the **Git/Remote** section. Add a new remote: +- Right-click the Laravel directory and goto **TortoiseGit > Settings** +- Goto the **Git/Remote** section. Add a new remote: - **Remote**: fork - **URL**: https://github.com/username/laravel.git - Click **Add New/Save** @@ -49,12 +50,12 @@ After the cloning process is complete, it's time to add the fork you made as a * Remember to replace *username* with your GitHub username. *This is case-sensitive*. - + ## Creating Branches Now you are ready to create a new branch for your new feature or bug-fix. When you create a new branch, use a self-descriptive naming convention. For example, if you are going to fix a bug in Eloquent, name your branch *bug/eloquent*. Or if you were going to make changes to the localization documentation, name your branch *feature/localization-docs*. A good naming convention will encourage organization and help others understand the purpose of your branch. - - Right-click the Laravel directory and goto **TortoiseGit > Create Branch** +- Right-click the Laravel directory and goto **TortoiseGit > Create Branch** - **Branch:** feature/localization-docs - **Base On Branch:** remotes/origin/develop - **Check** *Track* @@ -67,47 +68,47 @@ This will create your new *feature/localization-docs* branch and switch you to i Now that you have created your own branch and have switched to it, it's time to make your changes to the code. Add your new feature or fix that bug. - + ##Committing Now that you have finished coding and testing your changes, it's time to commit them to your local repository: - - Right-click the Laravel directory and goto **Git Commit -> "feature/localization-docs"...** - - Commit +- Right-click the Laravel directory and goto **Git Commit -> "feature/localization-docs"...** +- Commit - **Message:** Provide a brief explaination of what you added or changed - Click **Sign** - This tells the Laravel team know that you personally agree to your code being added to the Laravel core - **Changes made:** Check all changed/added files - Click **OK** - + ## Pushing to your Fork Now that your local repository has your committed changes, it's time to push (or sync) your new branch to your fork that is hosted in GitHub: - Right-click the Laravel directory and goto **Git Sync...** - Git Syncronization - - **Local Branch:** feature/localization-docs - - **Remote Branch:** leave this blank - - **Remote URL:** fork - - Click **Push** - - When asked for "username:" enter your GitHub *case-sensitive* username - - When asked for "password:" enter your GitHub *case-sensitive* account + - **Local Branch:** feature/localization-docs + - **Remote Branch:** leave this blank + - **Remote URL:** fork + - Click **Push** + - When asked for "username:" enter your GitHub *case-sensitive* username + - When asked for "password:" enter your GitHub *case-sensitive* account Your branch has been successfully pushed to your fork on GitHub. - + ## Submitting a Pull Request The final step is to submit a pull request to the Laravel repository. This means that you are requesting that the Laravel team pull and merge your changes to the Laravel core. In your browser, visit your Laravel fork at [https://github.com/username/laravel](https://github.com/username/laravel). Click on **Pull Request**. Next, make sure you choose the proper base and head repositories and branches: - - **base repo:** laravel/laravel - - **base branch:** develop - - **head repo:** username/laravel - - **head branch:** feature/localization-docs +- **base repo:** laravel/laravel +- **base branch:** develop +- **head repo:** username/laravel +- **head branch:** feature/localization-docs Use the form to write a more detailed description of the changes you made and why you made them. Finally, click **Send pull request**. That's it! The changes you made have been submitted to the Laravel team. - + ## What's Next? Do you have another feature you want to add or another bug you need to fix? Just follow the same instructions as before in the [Creating Branches](#creating-branches) section. Just remember to always create a new branch for every new feature/fix and don't forget to always base your new branches off of the *remotes/origin/develop* branch. From 359ee49f3773f29ef39b6402ca9777ff95e75b8a Mon Sep 17 00:00:00 2001 From: Hirohisa Kawase Date: Sat, 18 Aug 2012 20:40:56 +0900 Subject: [PATCH 65/92] Added ## Laravel 3.2.5, and changed 'Upgrading From ...' to

    Signed-off-by:Hirohisa Kawase --- laravel/documentation/changes.md | 53 ++++++++++++++++---------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/laravel/documentation/changes.md b/laravel/documentation/changes.md index 5ff87c38..20135b01 100644 --- a/laravel/documentation/changes.md +++ b/laravel/documentation/changes.md @@ -36,11 +36,12 @@ - [Upgrading From 3.0](#upgrade-3.1) +## Laravel 3.2.5 - Revert nested where code back to 3.2.3 tag. -## Upgrading From 3.2.4 +### Upgrading From 3.2.4 - Replace the **laravel** folder. @@ -52,7 +53,7 @@ - Various bug fixes and improvements. -## Upgrading From 3.2.3 +### Upgrading From 3.2.3 - Replace the **laravel** folder. @@ -63,7 +64,7 @@ - Added `laravel.resolving` event for all IoC resolutions. -## Upgrading From 3.2.2 +### Upgrading From 3.2.2 - Replace the **laravel** folder. @@ -79,7 +80,7 @@ - Added `password` option to Auth configuration. -## Upgrading From 3.2.1 +### Upgrading From 3.2.1 - Replace the **laravel** folder. @@ -94,7 +95,7 @@ - Added `format` method to message container. -## Upgrading From 3.2 +### Upgrading From 3.2 - Replace the **laravel** folder. @@ -151,7 +152,7 @@ - Added `array_except` and `array_only` helpers, similar to `Input::except` and `Input::only` but for arbitrary arrays. -## Upgrading From 3.1 +### Upgrading From 3.1 - Add new `asset_url` and `profiler` options to application configuration. - Replace **auth** configuration file. @@ -176,7 +177,7 @@ Add the following code above `Blade::sharpen()` in `application/start.php`.. - Fixes cookie session driver bug that caused infinite loop on some occasions. -## Upgrading From 3.1.8 +### Upgrading From 3.1.8 - Replace the **laravel** folder. @@ -186,7 +187,7 @@ Add the following code above `Blade::sharpen()` in `application/start.php`.. - Fixes possible WSOD when using Blade's @include expression. -## Upgrading From 3.1.7 +### Upgrading From 3.1.7 - Replace the **laravel** folder. @@ -198,7 +199,7 @@ Add the following code above `Blade::sharpen()` in `application/start.php`.. - Classify migration names. -## Upgrading From 3.1.6 +### Upgrading From 3.1.6 - Replace the **laravel** folder. @@ -208,7 +209,7 @@ Add the following code above `Blade::sharpen()` in `application/start.php`.. - Fixes many-to-many eager loading in Eloquent. -## Upgrading From 3.1.5 +### Upgrading From 3.1.5 - Replace the **laravel** folder. @@ -218,7 +219,7 @@ Add the following code above `Blade::sharpen()` in `application/start.php`.. - Fixes bug that could allow secure cookies to be sent over HTTP. -## Upgrading From 3.1.4 +### Upgrading From 3.1.4 - Replace the **laravel** folder. @@ -229,7 +230,7 @@ Add the following code above `Blade::sharpen()` in `application/start.php`.. - Fixes SQL "where in" (...) short-cut bug. -## Upgrading From 3.1.3 +### Upgrading From 3.1.3 - Replace the **laravel** folder. @@ -239,7 +240,7 @@ Add the following code above `Blade::sharpen()` in `application/start.php`.. - Fixes **delete** method in Eloquent models. -## Upgrade From 3.1.2 +### Upgrade From 3.1.2 - Replace the **laravel** folder. @@ -249,7 +250,7 @@ Add the following code above `Blade::sharpen()` in `application/start.php`.. - Fixes Eloquent query method constructor conflict. -## Upgrade From 3.1.1 +### Upgrade From 3.1.1 - Replace the **laravel** folder. @@ -259,7 +260,7 @@ Add the following code above `Blade::sharpen()` in `application/start.php`.. - Fixes Eloquent model hydration bug involving custom setters. -## Upgrading From 3.1 +### Upgrading From 3.1 - Replace the **laravel** folder. @@ -297,48 +298,48 @@ Add the following code above `Blade::sharpen()` in `application/start.php`.. - Added "before" and "after" validation checks for dates. -## Upgrading From 3.0 +### Upgrading From 3.0 -### Replace your **application/start.php** file. +#### Replace your **application/start.php** file. The default **start.php** file has been expanded in order to give you more flexibility over the loading of your language, configuration, and view files. To upgrade your file, copy your current file and paste it at the bottom of a copy of the new Laravel 3.1 start file. Next, scroll up in the **start** file until you see the default Autoloader registrations (line 61 and line 76). Delete both of these sections since you just pasted your previous auto-loader registrations at the bottom of the file. -### Remove the **display** option from your **errors** configuration file. +#### Remove the **display** option from your **errors** configuration file. This option is now set at the beginning of your **application/start** file. -### Call the parent controller's constructor from your controller. +#### Call the parent controller's constructor from your controller. Simply add a **parent::__construct();** to to any of your controllers that have a constructor. -### Prefix Laravel migration created indexes with their table name. +#### Prefix Laravel migration created indexes with their table name. If you have created indexes on tables using the Laravel migration system and you used to the default index naming scheme provided by Laravel, prefix the index names with their table name on your database. So, if the current index name is "id_unique" on the "users" table, make the index name "users_id_unique". -### Add alias for Eloquent in your application configuration. +#### Add alias for Eloquent in your application configuration. Add the following to the **aliases** array in your **application/config/application.php** file: 'Eloquent' => 'Laravel\\Database\\Eloquent\\Model', 'Blade' => 'Laravel\\Blade', -### Update Eloquent many-to-many tables. +#### Update Eloquent many-to-many tables. Eloquent now maintains **created_at** and **updated_at** column on many-to-many intermediate tables by default. Simply add these columns to your tables. Also, many-to-many tables are now the singular model names concatenated with an underscore. For example, if the relationship is between User and Role, the intermediate table name should be **role_user**. -### Remove Eloquent bundle. +#### Remove Eloquent bundle. If you are using the Eloquent bundle with your installation, you can remove it from your bundles directory and your **application/bundles.php** file. Eloquent version 2 is included in the core in Laravel 3.1. Your models can also now extend simply **Eloquent** instead of **Eloquent\Model**. -### Update your **config/strings.php** file. +#### Update your **config/strings.php** file. English pluralization and singularization is now automatic. Just completely replace your **application/config/strings.php** file. -### Add the **fetch** option to your database configuration file. +#### Add the **fetch** option to your database configuration file. A new **fetch** option allows you to specify in which format you receive your database results. Just copy and paste the option from the new **application/config/database.php** file. -### Add **database** option to your Redis configuration. +#### Add **database** option to your Redis configuration. If you are using Redis, add the "database" option to your Redis connection configurations. The "database" value can be zero by default. From aca179cb953914b4a4e1d2df2240314f903ab3b3 Mon Sep 17 00:00:00 2001 From: Hirohisa Kawase Date: Sat, 18 Aug 2012 21:57:54 +0900 Subject: [PATCH 66/92] Deleted an anchor of top of line. Defined "config", but it was reffered from no where. So, keep code simple. Signed-off-by:Hirohisa Kawase --- laravel/documentation/session/config.md | 1 - 1 file changed, 1 deletion(-) diff --git a/laravel/documentation/session/config.md b/laravel/documentation/session/config.md index 094148c8..14821320 100644 --- a/laravel/documentation/session/config.md +++ b/laravel/documentation/session/config.md @@ -1,4 +1,3 @@ - # Session Configuration ## Contents From 5c66ca9db793ed544749e504a845bed0664834df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Kj=C3=A6rgaard?= Date: Sun, 19 Aug 2012 13:02:25 +0200 Subject: [PATCH 67/92] Added Danish translations to pagination and validation --- application/language/da/pagination.php | 19 +++++ application/language/da/validation.php | 104 +++++++++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 application/language/da/pagination.php create mode 100644 application/language/da/validation.php diff --git a/application/language/da/pagination.php b/application/language/da/pagination.php new file mode 100644 index 00000000..089ec7e0 --- /dev/null +++ b/application/language/da/pagination.php @@ -0,0 +1,19 @@ + '« Forrige', + 'next' => 'Næste »', + +); \ No newline at end of file diff --git a/application/language/da/validation.php b/application/language/da/validation.php new file mode 100644 index 00000000..b49b75ec --- /dev/null +++ b/application/language/da/validation.php @@ -0,0 +1,104 @@ + ":attribute skal accepteres.", + "active_url" => ":attribute er ikke en gyldig URL.", + "after" => ":attribute skal være en dato efter :date.", + "alpha" => ":attribute må kun indeholde bogstaver.", + "alpha_dash" => ":attribute må kun indeholde bogstaver, numre, og skråstreg.", + "alpha_num" => ":attribute må kun indeholde bogstaver og numre.", + "array" => ":attribute skal have valgte elementer.", + "before" => ":attribute skal have en dato før :date.", + "between" => array( + "numeric" => ":attribute skal være mellem :min - :max.", + "file" => ":attribute skal være mellem :min - :max kilobytes.", + "string" => ":attribute skal være mellem :min - :max karakterer.", + ), + "confirmed" => ":attribute bekræftelse stemmer ikke overens.", + "count" => ":attribute skal være præcis :count valgte elementer.", + "countbetween" => ":attribute skal være mellem :min and :max valgte elementer.", + "countmax" => ":attribute skal have mindre end :max valgte elementer.", + "countmin" => ":attribute skal have minimum :min valgte elementer.", + "different" => ":attribute og :other skal være forskellige.", + "email" => "Formatet for :attribute er ugyldigt.", + "exists" => "Den valgte :attribute er ugyldig.", + "image" => ":attribute skal være et billede.", + "in" => "Den valgte :attribute er ugyldig.", + "integer" => ":attribute må kun indeholde tal.", + "ip" => ":attribute skal være en gyldig IP adresse.", + "match" => "Formatet for :attribute er ugyldigt.", + "max" => array( + "numeric" => ":attribute skal være mindre end :max.", + "file" => ":attribute skal være mindre end :max kilobytes.", + "string" => ":attribute skal være mindre end :max karakterer.", + ), + "mimes" => ":attribute skal have filtypen type: :values.", + "min" => array( + "numeric" => ":attribute ska minimum være :min.", + "file" => ":attribute skal være mindst :min kilobytes.", + "string" => ":attribute skal være mindst :min karakterer.", + ), + "not_in" => "Den valgte :attribute er ugyldig.", + "numeric" => ":attribute skal være et nummer.", + "required" => ":attribute er krævet.", + "same" => ":attribute og :other stemmer ikke overens.", + "size" => array( + "numeric" => ":attribute skal være :size.", + "file" => ":attribute skal være :size kilobyte.", + "string" => ":attribute skal være :size karakterer.", + ), + "unique" => ":attribute er allerede optaget.", + "url" => ":attribute formatet er ugyldigt.", + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute_rule" to name the lines. This helps keep your + | custom validation clean and tidy. + | + | So, say you want to use a custom validation message when validating that + | the "email" attribute is unique. Just add "email_unique" to this array + | with your custom message. The Validator will handle the rest! + | + */ + + 'custom' => array(), + + /* + |-------------------------------------------------------------------------- + | Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as "E-Mail Address" instead + | of "email". Your users will thank you. + | + | The Validator class will automatically search this array of lines it + | is attempting to replace the :attribute place-holder in messages. + | It's pretty slick. We think you'll like it. + | + */ + + 'attributes' => array(), + +); \ No newline at end of file From 63fe95dadc3880839a139e0dc50ba749ae01d640 Mon Sep 17 00:00:00 2001 From: Callum McIntyre Date: Sun, 19 Aug 2012 14:50:05 +0100 Subject: [PATCH 68/92] Changed timestamp function in database/eloquent/model.php from protected to public. Allows eloquent model timestamps to be updated without actually changing any data. git push fork minor/unprotect-eloquent-timestamps git status git # Signed-off-by: Callum McIntyre --- 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 61a7769c..d3d70fbb 100644 --- a/laravel/database/eloquent/model.php +++ b/laravel/database/eloquent/model.php @@ -445,7 +445,7 @@ abstract class Model { * * @return void */ - protected function timestamp() + public function timestamp() { $this->updated_at = new \DateTime; From f8fdcd894a1498025c0dca94485c11489cf6d51e Mon Sep 17 00:00:00 2001 From: Callum McIntyre Date: Sun, 19 Aug 2012 14:50:05 +0100 Subject: [PATCH 69/92] Changed timestamp function in eloquent/model.php to public --- 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 61a7769c..d3d70fbb 100644 --- a/laravel/database/eloquent/model.php +++ b/laravel/database/eloquent/model.php @@ -445,7 +445,7 @@ abstract class Model { * * @return void */ - protected function timestamp() + public function timestamp() { $this->updated_at = new \DateTime; From be7544b67af20f2bf27c4f6913212e1556958835 Mon Sep 17 00:00:00 2001 From: daris Date: Sun, 19 Aug 2012 19:05:45 +0300 Subject: [PATCH 70/92] Update laravel/documentation/database/fluent.md Missing comma --- laravel/documentation/database/fluent.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel/documentation/database/fluent.md b/laravel/documentation/database/fluent.md index 1f726540..ceeb809b 100644 --- a/laravel/documentation/database/fluent.md +++ b/laravel/documentation/database/fluent.md @@ -124,7 +124,7 @@ You may discover the need to group portions of a WHERE clause within parentheses ->or_where(function($query) { $query->where('age', '>', 25); - $query->where('votes' '>', 100); + $query->where('votes', '>', 100); }) ->get(); From 926cdaa7f5c71f09e53a5135fd95994600d819de Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Mon, 20 Aug 2012 10:46:23 -0500 Subject: [PATCH 71/92] reimplement locale uri slugs. --- application/config/application.php | 13 +++++++++ laravel/laravel.php | 44 ++++++++++++++++++++++++++++-- laravel/url.php | 20 +++++++++++--- 3 files changed, 71 insertions(+), 6 deletions(-) diff --git a/application/config/application.php b/application/config/application.php index 525227c2..60735a60 100755 --- a/application/config/application.php +++ b/application/config/application.php @@ -94,6 +94,19 @@ return array( 'language' => 'en', + /* + |-------------------------------------------------------------------------- + | Supported Languages + |-------------------------------------------------------------------------- + | + | These languages may also be supported by your application. If a request + | enters your application with a URI beginning with one of these values + | the default language will automatically be set to that language. + | + */ + + 'languages' => array(), + /* |-------------------------------------------------------------------------- | SSL Link Generation diff --git a/laravel/laravel.php b/laravel/laravel.php index e1c2ba32..74c387f9 100644 --- a/laravel/laravel.php +++ b/laravel/laravel.php @@ -107,6 +107,48 @@ Routing\Router::register('*', '(:all)', function() return Event::first('404'); }); +/* +|-------------------------------------------------------------------------- +| Gather The URI And Locales +|-------------------------------------------------------------------------- +| +| When routing, we'll need to grab the URI and the supported locales for +| the route so we can properly set the language and route the request +| to the proper end-point in the application. +| +*/ + +$uri = URI::current(); + +$languages = Config::get('application.languages', array()); + +$languages[] = Config::get('application.language'); + +/* +|-------------------------------------------------------------------------- +| Set The Locale Based On The Route +|-------------------------------------------------------------------------- +| +| If the URI starts with one of the supported languages, we will set +| the default lagnauge to match that URI segment and shorten the +| URI we'll pass to the router to not include the lang segment. +| +*/ + +foreach ($languages as $language) +{ + if (starts_with($uri, $language)) + { + Config::set('application.language', $language); + + $uri = trim(substr($uri, strlen($language)), '/'); break; + } +} + +if ($uri == '') $uri = '/'; + +URI::$uri = $uri; + /* |-------------------------------------------------------------------------- | Route The Incoming Request @@ -118,8 +160,6 @@ Routing\Router::register('*', '(:all)', function() | */ -$uri = URI::current(); - Request::$route = Routing\Router::route(Request::method(), $uri); $response = Request::$route->call(); diff --git a/laravel/url.php b/laravel/url.php index 4ff0f474..b85dbc70 100644 --- a/laravel/url.php +++ b/laravel/url.php @@ -26,7 +26,7 @@ class URL { */ public static function current() { - return static::to(URI::current()); + return static::to(URI::current(), null, false, false); } /** @@ -89,9 +89,11 @@ class URL { * * @param string $url * @param bool $https + * @param bool $asset + * @param bool $locale * @return string */ - public static function to($url = '', $https = null) + public static function to($url = '', $https = null, $asset = false, $locale = true) { // If the given URL is already valid or begins with a hash, we'll just return // the URL unchanged since it is already well formed. Otherwise we will add @@ -105,7 +107,17 @@ class URL { // security for any new links generated. So https for all secure links. if (is_null($https)) $https = Request::secure(); - $root = static::base().'/'.Config::get('application.index'); + $root = static::base(); + + if ( ! $asset) + { + $root .= '/'.Config::get('application.index'); + } + + if ( ! $asset and $locale and count(Config::get('application.languages')) > 0) + { + $root .= '/'.Config::get('application.language'); + } // Since SSL is not often used while developing the application, we allow the // developer to disable SSL on all framework generated links to make it more @@ -232,7 +244,7 @@ class URL { return rtrim($root, '/').'/'.ltrim($url, '/'); } - $url = static::to($url, $https); + $url = static::to($url, $https, true); // Since assets are not served by Laravel, we do not need to come through // the front controller. So, we'll remove the application index specified From b92f5bc854267fedf918f1923a4b7d2d1192bfba Mon Sep 17 00:00:00 2001 From: Tobsn Date: Tue, 21 Aug 2012 00:09:01 +0200 Subject: [PATCH 72/92] Docu on how to ensure foreign() works tons of people are doing it wrong every day - this should fix it or at least can be used as reference. --- laravel/documentation/database/schema.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/laravel/documentation/database/schema.md b/laravel/documentation/database/schema.md index 605f53d0..ff25ab65 100644 --- a/laravel/documentation/database/schema.md +++ b/laravel/documentation/database/schema.md @@ -144,4 +144,10 @@ You may also specify options for the "on delete" and "on update" actions of the You may also easily drop a foreign key constraint. The default foreign key names follow the [same convention](#dropping-indexes) as the other indexes created by the Schema builder. Here's an example: - $table->drop_foreign('posts_user_id_foreign'); \ No newline at end of file + $table->drop_foreign('posts_user_id_foreign'); + +> **Note:** The field referenced in the foreign key is very likely an auto increment and therefore automatically an unsigned integer. Please make sure to create the foreign key field with **unsigned()** as both fields have to be the exact same type, the engine on both tables has to be set to **InnoDB**, and the referenced table must be created **before** the table with the foreign key. + + $table->engine = 'InnoDB'; + + $table->integer('user_id')->unsigned(); \ No newline at end of file From 546c96261254373b7b366ce294aeba56636611c6 Mon Sep 17 00:00:00 2001 From: Tobsn Date: Tue, 21 Aug 2012 00:10:03 +0200 Subject: [PATCH 73/92] Revert "Docu on how to ensure foreign() works" This reverts commit b92f5bc854267fedf918f1923a4b7d2d1192bfba. --- laravel/documentation/database/schema.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/laravel/documentation/database/schema.md b/laravel/documentation/database/schema.md index ff25ab65..605f53d0 100644 --- a/laravel/documentation/database/schema.md +++ b/laravel/documentation/database/schema.md @@ -144,10 +144,4 @@ You may also specify options for the "on delete" and "on update" actions of the You may also easily drop a foreign key constraint. The default foreign key names follow the [same convention](#dropping-indexes) as the other indexes created by the Schema builder. Here's an example: - $table->drop_foreign('posts_user_id_foreign'); - -> **Note:** The field referenced in the foreign key is very likely an auto increment and therefore automatically an unsigned integer. Please make sure to create the foreign key field with **unsigned()** as both fields have to be the exact same type, the engine on both tables has to be set to **InnoDB**, and the referenced table must be created **before** the table with the foreign key. - - $table->engine = 'InnoDB'; - - $table->integer('user_id')->unsigned(); \ No newline at end of file + $table->drop_foreign('posts_user_id_foreign'); \ No newline at end of file From 161ae3f6e6758fa249fe022fca4059176042b478 Mon Sep 17 00:00:00 2001 From: Tobsn Date: Tue, 21 Aug 2012 00:12:29 +0200 Subject: [PATCH 74/92] Docu on how to ensure foreign() works tons of people are doing it wrong every day - this should fix it or at least can be used as reference. --- laravel/documentation/database/schema.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/laravel/documentation/database/schema.md b/laravel/documentation/database/schema.md index 605f53d0..ff25ab65 100644 --- a/laravel/documentation/database/schema.md +++ b/laravel/documentation/database/schema.md @@ -144,4 +144,10 @@ You may also specify options for the "on delete" and "on update" actions of the You may also easily drop a foreign key constraint. The default foreign key names follow the [same convention](#dropping-indexes) as the other indexes created by the Schema builder. Here's an example: - $table->drop_foreign('posts_user_id_foreign'); \ No newline at end of file + $table->drop_foreign('posts_user_id_foreign'); + +> **Note:** The field referenced in the foreign key is very likely an auto increment and therefore automatically an unsigned integer. Please make sure to create the foreign key field with **unsigned()** as both fields have to be the exact same type, the engine on both tables has to be set to **InnoDB**, and the referenced table must be created **before** the table with the foreign key. + + $table->engine = 'InnoDB'; + + $table->integer('user_id')->unsigned(); \ No newline at end of file From fa0fcff34657e8a354bec6c872c0448a04b260bb Mon Sep 17 00:00:00 2001 From: Tobsn Date: Tue, 21 Aug 2012 14:09:41 +0200 Subject: [PATCH 75/92] added unsigned() description MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit was missing… --- laravel/documentation/database/schema.md | 1 + 1 file changed, 1 insertion(+) diff --git a/laravel/documentation/database/schema.md b/laravel/documentation/database/schema.md index ff25ab65..19565c89 100644 --- a/laravel/documentation/database/schema.md +++ b/laravel/documentation/database/schema.md @@ -71,6 +71,7 @@ Command | Description `$table->blob('data');` | BLOB equivalent to the table `->nullable()` | Designate that the column allows NULL values `->default($value)` | Declare a default value for a column +`->unsigned()` | Set INTERGER to UNSIGNED > **Note:** Laravel's "boolean" type maps to a small integer column on all database systems. From 967d9898ae6448a24c773db876c95b7fd60783cf Mon Sep 17 00:00:00 2001 From: Tobsn Date: Tue, 21 Aug 2012 14:11:25 +0200 Subject: [PATCH 76/92] dann typo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit i had one job… --- laravel/documentation/database/schema.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel/documentation/database/schema.md b/laravel/documentation/database/schema.md index 19565c89..904edbba 100644 --- a/laravel/documentation/database/schema.md +++ b/laravel/documentation/database/schema.md @@ -71,7 +71,7 @@ Command | Description `$table->blob('data');` | BLOB equivalent to the table `->nullable()` | Designate that the column allows NULL values `->default($value)` | Declare a default value for a column -`->unsigned()` | Set INTERGER to UNSIGNED +`->unsigned()` | Set INTEGER to UNSIGNED > **Note:** Laravel's "boolean" type maps to a small integer column on all database systems. From 20c696d4ae3da4624bf10f0f6d40bf4eeae46401 Mon Sep 17 00:00:00 2001 From: Christoph Menke Date: Tue, 21 Aug 2012 17:08:21 +0200 Subject: [PATCH 77/92] Added Routing Wildcard '(:all)' to Documentation --- laravel/documentation/routing.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/laravel/documentation/routing.md b/laravel/documentation/routing.md index 550e2ddc..eee1bb8c 100644 --- a/laravel/documentation/routing.md +++ b/laravel/documentation/routing.md @@ -78,6 +78,13 @@ In the following example the first parameter is the route that you're "registeri // }); +#### Catching the remaining URI without limitations: + + Route::get('files/(:all)', function($path) + { + // + }); + #### Allowing a URI segment to be optional: Route::get('page/(:any?)', function($page = 'index') From c44e69bf80dd3c6b31f2055c5d21afe017cab9d7 Mon Sep 17 00:00:00 2001 From: "H.J. van Meerveld" Date: Sat, 25 Aug 2012 22:09:20 +0200 Subject: [PATCH 78/92] improved code to insert related models --- laravel/documentation/database/eloquent.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/laravel/documentation/database/eloquent.md b/laravel/documentation/database/eloquent.md index e9eb32a1..cbcf83c9 100644 --- a/laravel/documentation/database/eloquent.md +++ b/laravel/documentation/database/eloquent.md @@ -299,7 +299,7 @@ Let's assume you have a **Post** model that has many comments. Often you may wan $post = Post::find(1); - $post->comments()->insert($comment); + $comment = $post->comments()->insert($comment); When inserting related models through their parent model, the foreign key will automatically be set. So, in this case, the "post_id" was automatically set to "1" on the newly inserted comment. @@ -323,7 +323,7 @@ This is even more helpful when working with many-to-many relationships. For exam $user = User::find(1); - $user->roles()->insert($role); + $role = $user->roles()->insert($role); Now, when the Role is inserted, not only is the Role inserted into the "roles" table, but a record in the intermediate table is also inserted for you. It couldn't be easier! From aa341357ece9eb65ffef75f890656e9a2db50592 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Sun, 26 Aug 2012 01:10:31 +0300 Subject: [PATCH 79/92] Fix insert() method for related models. --- .../eloquent/relationships/has_one_or_many.php | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/laravel/database/eloquent/relationships/has_one_or_many.php b/laravel/database/eloquent/relationships/has_one_or_many.php index a8268de6..7dd453b3 100644 --- a/laravel/database/eloquent/relationships/has_one_or_many.php +++ b/laravel/database/eloquent/relationships/has_one_or_many.php @@ -12,11 +12,18 @@ class Has_One_Or_Many extends Relationship { */ public function insert($attributes) { - $attributes = ($attributes instanceof Model) ? $attributes->attributes : $attributes; + if ($attributes instanceof Model) + { + $attributes->set_attribute($this->foreign_key(), $this->base->get_key()); + + return $attributes->save(); + } + else + { + $attributes[$this->foreign_key()] = $this->base->get_key(); - $attributes[$this->foreign_key()] = $this->base->get_key(); - - return $this->model->create($attributes); + return $this->model->create($attributes); + } } /** From e46f07d4365222b04fd654cada7a1940fc2ec4fd Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Mon, 27 Aug 2012 13:46:32 +0300 Subject: [PATCH 80/92] Fix method signature and return values of insert() method. --- laravel/database/eloquent/relationships/has_one_or_many.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/laravel/database/eloquent/relationships/has_one_or_many.php b/laravel/database/eloquent/relationships/has_one_or_many.php index 7dd453b3..e7bfc0b0 100644 --- a/laravel/database/eloquent/relationships/has_one_or_many.php +++ b/laravel/database/eloquent/relationships/has_one_or_many.php @@ -7,8 +7,10 @@ class Has_One_Or_Many extends Relationship { /** * Insert a new record for the association. * + * If save is successful, the model will be returned, otherwise false. + * * @param Model|array $attributes - * @return bool + * @return Model|false */ public function insert($attributes) { @@ -16,7 +18,7 @@ class Has_One_Or_Many extends Relationship { { $attributes->set_attribute($this->foreign_key(), $this->base->get_key()); - return $attributes->save(); + return $attributes->save() ? $attributes : false; } else { From e11d13ae3154925c77a42c65a822da22d7d81f95 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Mon, 27 Aug 2012 15:09:11 +0200 Subject: [PATCH 81/92] Get rid of duplicate code for DROP TABLE in schema grammars. --- laravel/database/schema/grammars/grammar.php | 12 ++++++++++++ laravel/database/schema/grammars/mysql.php | 12 ------------ laravel/database/schema/grammars/postgres.php | 12 ------------ laravel/database/schema/grammars/sqlite.php | 12 ------------ laravel/database/schema/grammars/sqlserver.php | 12 ------------ 5 files changed, 12 insertions(+), 48 deletions(-) diff --git a/laravel/database/schema/grammars/grammar.php b/laravel/database/schema/grammars/grammar.php index 62a55719..1fea9a31 100644 --- a/laravel/database/schema/grammars/grammar.php +++ b/laravel/database/schema/grammars/grammar.php @@ -50,6 +50,18 @@ abstract class Grammar extends \Laravel\Database\Grammar { return $sql; } + /** + * Generate the SQL statement for a drop table command. + * + * @param Table $table + * @param Fluent $command + * @return string + */ + public function drop(Table $table, Fluent $command) + { + return 'DROP TABLE '.$this->wrap($table); + } + /** * Drop a constraint from the table. * diff --git a/laravel/database/schema/grammars/mysql.php b/laravel/database/schema/grammars/mysql.php index e8c926fe..f2727fc4 100644 --- a/laravel/database/schema/grammars/mysql.php +++ b/laravel/database/schema/grammars/mysql.php @@ -224,18 +224,6 @@ class MySQL extends Grammar { return 'RENAME TABLE '.$this->wrap($table).' TO '.$this->wrap($command->name); } - /** - * Generate the SQL statement for a drop table command. - * - * @param Table $table - * @param Fluent $command - * @return string - */ - public function drop(Table $table, Fluent $command) - { - return 'DROP TABLE '.$this->wrap($table); - } - /** * Generate the SQL statement for a drop column command. * diff --git a/laravel/database/schema/grammars/postgres.php b/laravel/database/schema/grammars/postgres.php index 4d014b1c..2b8620cc 100644 --- a/laravel/database/schema/grammars/postgres.php +++ b/laravel/database/schema/grammars/postgres.php @@ -210,18 +210,6 @@ class Postgres extends Grammar { return 'ALTER TABLE '.$this->wrap($table).' RENAME TO '.$this->wrap($command->name); } - /** - * Generate the SQL statement for a drop table command. - * - * @param Table $table - * @param Fluent $command - * @return string - */ - public function drop(Table $table, Fluent $command) - { - return 'DROP TABLE '.$this->wrap($table); - } - /** * Generate the SQL statement for a drop column command. * diff --git a/laravel/database/schema/grammars/sqlite.php b/laravel/database/schema/grammars/sqlite.php index 4eae9151..975c4137 100644 --- a/laravel/database/schema/grammars/sqlite.php +++ b/laravel/database/schema/grammars/sqlite.php @@ -213,18 +213,6 @@ class SQLite extends Grammar { return 'ALTER TABLE '.$this->wrap($table).' RENAME TO '.$this->wrap($command->name); } - /** - * Generate the SQL statement for a drop table command. - * - * @param Table $table - * @param Fluent $command - * @return string - */ - public function drop(Table $table, Fluent $command) - { - return 'DROP TABLE '.$this->wrap($table); - } - /** * Generate the SQL statement for a drop unique key command. * diff --git a/laravel/database/schema/grammars/sqlserver.php b/laravel/database/schema/grammars/sqlserver.php index 1a556367..3e1854c1 100644 --- a/laravel/database/schema/grammars/sqlserver.php +++ b/laravel/database/schema/grammars/sqlserver.php @@ -224,18 +224,6 @@ class SQLServer extends Grammar { return 'ALTER TABLE '.$this->wrap($table).' RENAME TO '.$this->wrap($command->name); } - /** - * Generate the SQL statement for a drop table command. - * - * @param Table $table - * @param Fluent $command - * @return string - */ - public function drop(Table $table, Fluent $command) - { - return 'DROP TABLE '.$this->wrap($table); - } - /** * Generate the SQL statement for a drop column command. * From 9484db18ced4f11034e4ca3828e0b047ee177520 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Tue, 28 Aug 2012 23:52:15 -0500 Subject: [PATCH 82/92] Revert Blade back to 3.2.3 due to regression with layouts. --- laravel/blade.php | 132 ++++++++++++++++++---------------------------- 1 file changed, 52 insertions(+), 80 deletions(-) diff --git a/laravel/blade.php b/laravel/blade.php index 15c8efde..f5bed6f4 100644 --- a/laravel/blade.php +++ b/laravel/blade.php @@ -105,7 +105,7 @@ class Blade { /** * Compiles the specified file containing Blade pseudo-code into valid PHP. * - * @param string $view + * @param string $path * @return string */ public static function compile($view) @@ -149,33 +149,31 @@ class Blade { } // First we'll split out the lines of the template so we can get the - // layout from the top of the template. By convention, it must be + // layout from the top of the template. By convention it must be // located on the first line of the template contents. - preg_replace_callback( - '/^@layout(\s*?\(.+?\))(\r?\n)?/', - function($matches) use (&$value) - { - $value = substr( $value, strlen( $matches[0] ) ).CRLF.'@include'.$matches[1]; - }, - $value - ); + $lines = preg_split("/(\r?\n)/", $value); - return $value; + $pattern = static::matcher('layout'); + + $lines[] = preg_replace($pattern, '$1@include$2', $lines[0]); + + // We will add a "render" statement to the end of the templates and + // then slice off the "@layout" shortcut from the start so the + // sections register before the parent template renders. + return implode(CRLF, array_slice($lines, 1)); } /** * Extract a variable value out of a Blade expression. * * @param string $value - * @param string $expression * @return string */ protected static function extract($value, $expression) { - if ( preg_match("/@layout\s*?\(\s*?'(.+?)'\s*?\)/", $value, $matches)) - { - return trim( $matches[1] ); - } + preg_match('/@layout(\s*\(.*\))(\s*)/', $value, $matches); + + return str_replace(array("('", "')"), '', $matches[1]); } /** @@ -186,9 +184,9 @@ class Blade { */ protected static function compile_comments($value) { - $value = preg_replace('/\{\{--(.*?)--\}\}/', "", $value); - - return preg_replace('/\{\{--(.*?)--\}\}/s', "$1", $value); + $value = preg_replace('/\{\{--(.+?)(--\}\})?\n/', "", $value); + + return preg_replace('/\{\{--((.|\s)*?)--\}\}/', "\n", $value); } /** @@ -199,7 +197,7 @@ class Blade { */ protected static function compile_echos($value) { - return preg_replace('/\{\{(.+?)\}\}/s', '', $value); + return preg_replace('/\{\{(.+?)\}\}/', '', $value); } /** @@ -210,21 +208,27 @@ class Blade { */ protected static function compile_forelse($value) { - preg_match_all('/@forelse\s*?\(\s*?\$(.+?)\s*?as\s*?\$(.+?)\s*?\)/', $value, $matches, PREG_SET_ORDER ); + preg_match_all('/(\s*)@forelse(\s*\(.*\))(\s*)/', $value, $matches); - if ( count($matches) < 1 ) return $value; - - foreach ($matches as $forelse) + foreach ($matches[0] as $forelse) { + preg_match('/\s*\(\s*(\S*)\s/', $forelse, $variable); + // Once we have extracted the variable being looped against, we can add // an if statement to the start of the loop that checks if the count // of the variable being looped against is greater than zero. - $replace = ' 0): foreach ($'.$forelse[1].' as $'.$forelse[2].'): ?>'; + $if = " 0): ?>"; + + $search = '/(\s*)@forelse(\s*\(.*\))/'; + + $replace = '$1'.$if.''; + + $blade = preg_replace($search, $replace, $forelse); // Finally, once we have the check prepended to the loop we'll replace // all instances of this forelse syntax in the view content of the // view being compiled to Blade syntax with real PHP syntax. - $value = str_replace($forelse[0], $replace, $value); + $value = str_replace($forelse, $blade, $value); } return $value; @@ -238,7 +242,7 @@ class Blade { */ protected static function compile_empty($value) { - return str_replace('@empty', '', $value); + return str_replace('@empty', '', $value); } /** @@ -260,42 +264,9 @@ class Blade { */ protected static function compile_structure_openings($value) { - preg_replace_callback( - '/@(if|elseif|foreach|for|while)(\s*?)(\([^\n\r\t]+\))/', - function($matches) use (&$value) - { - if(count( $matches ) === 4) - { - $open = 0; - $close = 0; - $cut = 0; - $len = strlen($matches[3]); - for($i = 0; $i < $len; $i++) - { - if($matches[3][$i] === '(' ) - { - $open++; - } - if($matches[3][$i] === ')' ) - { - $close++; - } - if($open !== 0 && ($open === $close)) - { - break; - } - } - $condition = substr($matches[3], 0, ($i + 1)); - $value = str_replace( - '@'.$matches[1].$matches[2].$condition, - '', - $value - ); - } - }, - $value - ); - return $value; + $pattern = '/(\s*)@(if|elseif|foreach|for|while)(\s*\(.*\))/'; + + return preg_replace($pattern, '$1', $value); } /** @@ -306,9 +277,9 @@ class Blade { */ protected static function compile_structure_closings($value) { - $pattern = '/@(endif|endforeach|endfor|endwhile|break|continue)/'; + $pattern = '/(\s*)@(endif|endforeach|endfor|endwhile)(\s*)/'; - return preg_replace($pattern, '', $value); + return preg_replace($pattern, '$1$3', $value); } /** @@ -319,7 +290,7 @@ class Blade { */ protected static function compile_else($value) { - return str_replace( '@else', '', $value); + return preg_replace('/(\s*)@(else)(\s*)/', '$1$3', $value); } /** @@ -330,9 +301,9 @@ class Blade { */ protected static function compile_unless($value) { - $pattern = static::matcher('unless'); + $pattern = '/(\s*)@unless(\s*\(.*\))/'; - return preg_replace($pattern, '', $value); + return preg_replace($pattern, '$1', $value); } /** @@ -356,7 +327,7 @@ class Blade { { $pattern = static::matcher('include'); - return preg_replace($pattern, 'with(get_defined_vars())->render(); ?>', $value); + return preg_replace($pattern, '$1with(get_defined_vars())->render(); ?>', $value); } /** @@ -369,7 +340,7 @@ class Blade { { $pattern = static::matcher('render'); - return preg_replace($pattern, '', $value); + return preg_replace($pattern, '$1', $value); } /** @@ -382,7 +353,7 @@ class Blade { { $pattern = static::matcher('render_each'); - return preg_replace($pattern, '', $value); + return preg_replace($pattern, '$1', $value); } /** @@ -397,18 +368,19 @@ class Blade { { $pattern = static::matcher('yield'); - return preg_replace($pattern, '', $value); + return preg_replace($pattern, '$1', $value); } /** * Rewrites Blade yield section statements into valid PHP. * - * @param string $value * @return string */ protected static function compile_yield_sections($value) { - return str_replace('@yield_section', '', $value); + $replace = ''; + + return str_replace('@yield_section', $replace, $value); } /** @@ -423,7 +395,7 @@ class Blade { { $pattern = static::matcher('section'); - return preg_replace($pattern, '', $value); + return preg_replace($pattern, '$1', $value); } /** @@ -436,7 +408,7 @@ class Blade { */ protected static function compile_section_end($value) { - return str_replace('@endsection', '', $value); + return preg_replace('/@endsection/', '', $value); } /** @@ -453,7 +425,7 @@ class Blade { } return $value; - } + } /** * Get the regular expression for a generic Blade function. @@ -463,13 +435,13 @@ class Blade { */ public static function matcher($function) { - return '/@'.$function.'\s*?(\(.+?\))/'; + return '/(\s*)@'.$function.'(\s*\(.*\))/'; } /** * Get the fully qualified path for a compiled view. * - * @param string $path + * @param string $view * @return string */ public static function compiled($path) @@ -477,4 +449,4 @@ class Blade { return path('storage').'views/'.md5($path); } -} +} \ No newline at end of file From 9b902427fd983302139c4ec1e9140c52be5fc83d Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Tue, 28 Aug 2012 23:55:04 -0500 Subject: [PATCH 83/92] Updating version. --- artisan | 2 +- laravel/documentation/changes.md | 12 ++++++++++++ paths.php | 2 +- public/index.php | 2 +- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/artisan b/artisan index 5127755f..6212745f 100644 --- a/artisan +++ b/artisan @@ -4,7 +4,7 @@ * Laravel - A PHP Framework For Web Artisans * * @package Laravel - * @version 3.2.5 + * @version 3.2.6 * @author Taylor Otwell * @link http://laravel.com */ diff --git a/laravel/documentation/changes.md b/laravel/documentation/changes.md index 20135b01..71d0c661 100644 --- a/laravel/documentation/changes.md +++ b/laravel/documentation/changes.md @@ -2,6 +2,8 @@ ## Contents +- [Laravel 3.2.6](#3.2.6) +- [Upgrading From 3.2.5](#upgrade-3.2.6) - [Laravel 3.2.5](#3.2.5) - [Upgrading From 3.2.4](#upgrade-3.2.5) - [Laravel 3.2.4](#3.2.4) @@ -35,6 +37,16 @@ - [Laravel 3.1](#3.1) - [Upgrading From 3.0](#upgrade-3.1) + +## Laravel 3.2.6 + +- Revert Blade code back to 3.2.3 tag. + + +### Upgrading From 3.2.5 + +- Replace the **laravel** folder. + ## Laravel 3.2.5 diff --git a/paths.php b/paths.php index 824f8ea0..9fdd9f90 100644 --- a/paths.php +++ b/paths.php @@ -3,7 +3,7 @@ * Laravel - A PHP Framework For Web Artisans * * @package Laravel - * @version 3.2.5 + * @version 3.2.6 * @author Taylor Otwell * @link http://laravel.com */ diff --git a/public/index.php b/public/index.php index 4c5604ba..ec6b0cca 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.5 + * @version 3.2.6 * @author Taylor Otwell * @link http://laravel.com */ From e8046847c4774788e88d0fca87d56a8b9fa9ba99 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Tue, 28 Aug 2012 23:58:52 -0500 Subject: [PATCH 84/92] fix tests. --- laravel/tests/cases/blade.test.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/laravel/tests/cases/blade.test.php b/laravel/tests/cases/blade.test.php index 343be2ea..70e80b3b 100644 --- a/laravel/tests/cases/blade.test.php +++ b/laravel/tests/cases/blade.test.php @@ -30,10 +30,10 @@ class BladeTest extends PHPUnit_Framework_TestCase { $blade3 = "@if (true)\nfoo\n@elseif (false)\nbar\n@endif"; $blade4 = "@if (true)\nfoo\n@else\nbar\n@endif"; - $this->assertEquals("\nfoo\n", Blade::compile_string($blade1)); - $this->assertEquals(" 0): ?>\nfoo\n", Blade::compile_string($blade2)); - $this->assertEquals("\nfoo\n\nbar\n", Blade::compile_string($blade3)); - $this->assertEquals("\nfoo\n\nbar\n", Blade::compile_string($blade4)); + $this->assertEquals("\nfoo\n", Blade::compile_string($blade1)); + $this->assertEquals(" 0): ?>\nfoo\n", Blade::compile_string($blade2)); + $this->assertEquals("\nfoo\n\nbar\n", Blade::compile_string($blade3)); + $this->assertEquals("\nfoo\n\nbar\n", Blade::compile_string($blade4)); } /** From f34063c5175cef6909825a74cacded3b9398db91 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Wed, 29 Aug 2012 14:44:16 -0500 Subject: [PATCH 85/92] Fix bug in Eloquent to_array method. --- laravel/database/eloquent/model.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/laravel/database/eloquent/model.php b/laravel/database/eloquent/model.php index 61a7769c..4ee26264 100644 --- a/laravel/database/eloquent/model.php +++ b/laravel/database/eloquent/model.php @@ -617,6 +617,8 @@ abstract class Model { // to_array method, keying them both by name and ID. elseif (is_array($models)) { + $attributes[$name] = array(); + foreach ($models as $id => $model) { $attributes[$name][$id] = $model->to_array(); From c785067e95e5fd9c97934e01b3ca9a70bf7cf009 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Wed, 29 Aug 2012 14:45:22 -0500 Subject: [PATCH 86/92] Increment version and change log. --- artisan | 2 +- laravel/documentation/changes.md | 12 ++++++++++++ paths.php | 2 +- public/index.php | 2 +- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/artisan b/artisan index 6212745f..6c9af056 100644 --- a/artisan +++ b/artisan @@ -4,7 +4,7 @@ * Laravel - A PHP Framework For Web Artisans * * @package Laravel - * @version 3.2.6 + * @version 3.2.7 * @author Taylor Otwell * @link http://laravel.com */ diff --git a/laravel/documentation/changes.md b/laravel/documentation/changes.md index 71d0c661..c23c410c 100644 --- a/laravel/documentation/changes.md +++ b/laravel/documentation/changes.md @@ -2,6 +2,8 @@ ## Contents +- [Laravel 3.2.7](#3.2.7) +- [Upgrading From 3.2.6](#upgrade-3.2.7) - [Laravel 3.2.6](#3.2.6) - [Upgrading From 3.2.5](#upgrade-3.2.6) - [Laravel 3.2.5](#3.2.5) @@ -37,6 +39,16 @@ - [Laravel 3.1](#3.1) - [Upgrading From 3.0](#upgrade-3.1) + +## Laravel 3.2.7 + +- Fix bug in Eloquent `to_array` method. + + +### Upgrading From 3.2.6 + +- Replace the **laravel** folder. + ## Laravel 3.2.6 diff --git a/paths.php b/paths.php index 9fdd9f90..7bbd033e 100644 --- a/paths.php +++ b/paths.php @@ -3,7 +3,7 @@ * Laravel - A PHP Framework For Web Artisans * * @package Laravel - * @version 3.2.6 + * @version 3.2.7 * @author Taylor Otwell * @link http://laravel.com */ diff --git a/public/index.php b/public/index.php index ec6b0cca..6eeb7aa0 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.6 + * @version 3.2.7 * @author Taylor Otwell * @link http://laravel.com */ From 2e01c58f92761ac24f9feb759d6f46c539984668 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Sat, 1 Sep 2012 21:48:37 -0500 Subject: [PATCH 87/92] Fix error handling. --- laravel/error.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel/error.php b/laravel/error.php index ac2e4d15..6b75d210 100644 --- a/laravel/error.php +++ b/laravel/error.php @@ -41,7 +41,7 @@ class Error { { $response = Event::first('500'); - return Response::prepare($response)->send(); + echo Response::prepare($response)->render(); } exit(1); From cfe5fa109a1b0073b2859154168c90658c859c24 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Sat, 1 Sep 2012 21:50:14 -0500 Subject: [PATCH 88/92] Add fix to change log. --- laravel/documentation/changes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/laravel/documentation/changes.md b/laravel/documentation/changes.md index c23c410c..dffb45ad 100644 --- a/laravel/documentation/changes.md +++ b/laravel/documentation/changes.md @@ -43,6 +43,7 @@ ## Laravel 3.2.7 - Fix bug in Eloquent `to_array` method. +- Fix bug in displaying of generic error page. ### Upgrading From 3.2.6 From 4e21cfce39f8e86d78d69ed437fd1493fbe3cc26 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Sat, 1 Sep 2012 22:07:01 -0500 Subject: [PATCH 89/92] Fixing a double slash bug in URL generation with languages. add tests. --- laravel/tests/cases/url.test.php | 24 ++++++++++++++++++++++++ laravel/url.php | 9 +++++++-- phpunit.xml | 9 +++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 phpunit.xml diff --git a/laravel/tests/cases/url.test.php b/laravel/tests/cases/url.test.php index 393211be..603265ab 100644 --- a/laravel/tests/cases/url.test.php +++ b/laravel/tests/cases/url.test.php @@ -84,6 +84,8 @@ class URLTest extends PHPUnit_Framework_TestCase { Request::foundation()->server->add(array('HTTPS' => 'on')); $this->assertEquals('https://localhost/image.jpg', URL::to_asset('image.jpg')); + + Request::foundation()->server->add(array('HTTPS' => 'off')); } /** @@ -103,4 +105,26 @@ class URLTest extends PHPUnit_Framework_TestCase { $this->assertEquals('http://localhost/index.php/url/test/taylor/otwell', URL::to_route('url-test-2', array('taylor', 'otwell'))); } + + /** + * Test language based URL generation. + * + * @group laravel + */ + public function testUrlsGeneratedWithLanguages() + { + Config::set('application.languages', array('sp', 'fr')); + Config::set('application.language', 'sp'); + $this->assertEquals('http://localhost/index.php/sp/foo', URL::to('foo')); + $this->assertEquals('http://localhost/foo.jpg', URL::to_asset('foo.jpg')); + + Config::set('application.index', ''); + $this->assertEquals('http://localhost/sp/foo', URL::to('foo')); + + Config::set('application.index', 'index.php'); + Config::set('application.language', 'en'); + $this->assertEquals('http://localhost/index.php/foo', URL::to('foo')); + Config::set('application.languages', array()); + } + } \ No newline at end of file diff --git a/laravel/url.php b/laravel/url.php index b85dbc70..c87139e4 100644 --- a/laravel/url.php +++ b/laravel/url.php @@ -114,9 +114,14 @@ class URL { $root .= '/'.Config::get('application.index'); } - if ( ! $asset and $locale and count(Config::get('application.languages')) > 0) + $languages = Config::get('application.languages'); + + if ( ! $asset and $locale and count($languages) > 0) { - $root .= '/'.Config::get('application.language'); + if (in_array($default = Config::get('application.language'), $languages)) + { + $root = rtrim($root, '/').'/'.$default; + } } // Since SSL is not often used while developing the application, we allow the diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 00000000..d7a799bf --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,9 @@ + + + + /Users/taylor/Code/Laravel/framework/laravel/tests/cases + + + \ No newline at end of file From 8afab342c6fc0a26aeb04d0984f2e326e7fd94b5 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Sat, 1 Sep 2012 22:09:47 -0500 Subject: [PATCH 90/92] Incrementing version and updating change log. --- artisan | 2 +- laravel/documentation/changes.md | 12 ++++++++++++ paths.php | 2 +- public/index.php | 2 +- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/artisan b/artisan index 6c9af056..2f3dbeb6 100644 --- a/artisan +++ b/artisan @@ -4,7 +4,7 @@ * Laravel - A PHP Framework For Web Artisans * * @package Laravel - * @version 3.2.7 + * @version 3.2.8 * @author Taylor Otwell * @link http://laravel.com */ diff --git a/laravel/documentation/changes.md b/laravel/documentation/changes.md index dffb45ad..d9b0ff41 100644 --- a/laravel/documentation/changes.md +++ b/laravel/documentation/changes.md @@ -2,6 +2,8 @@ ## Contents +- [Laravel 3.2.8](#3.2.8) +- [Upgrading From 3.2.7](#upgrade-3.2.8) - [Laravel 3.2.7](#3.2.7) - [Upgrading From 3.2.6](#upgrade-3.2.7) - [Laravel 3.2.6](#3.2.6) @@ -39,6 +41,16 @@ - [Laravel 3.1](#3.1) - [Upgrading From 3.0](#upgrade-3.1) + +## Laravel 3.2.8 + +- Fix double slash bug in URLs when using languages and no "index.php". + + +### Upgrading From 3.2.7 + +- Replace the **laravel** folder. + ## Laravel 3.2.7 diff --git a/paths.php b/paths.php index 7bbd033e..bd870438 100644 --- a/paths.php +++ b/paths.php @@ -3,7 +3,7 @@ * Laravel - A PHP Framework For Web Artisans * * @package Laravel - * @version 3.2.7 + * @version 3.2.8 * @author Taylor Otwell * @link http://laravel.com */ diff --git a/public/index.php b/public/index.php index 6eeb7aa0..3b213a95 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.7 + * @version 3.2.8 * @author Taylor Otwell * @link http://laravel.com */ From 1f005bd7e5f737c23f52afd48dc9b2974d1261ea Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Sat, 1 Sep 2012 22:16:30 -0500 Subject: [PATCH 91/92] Remove notification from travis file. --- .travis.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index a1bcd71c..1d589555 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,8 +3,4 @@ language: php php: - 5.3 -script: "php artisan test:core" - -notifications: - irc: - - "irc.freenode.org#laravel" \ No newline at end of file +script: "php artisan test:core" \ No newline at end of file From 163f39075db7dde53dd4f8fb5c60cb111c2c9fde Mon Sep 17 00:00:00 2001 From: George Drakakis Date: Mon, 3 Sep 2012 13:59:49 +0300 Subject: [PATCH 92/92] Added Greek Language Signed-off-by: George Drakakis --- application/language/gr/pagination.php | 19 +++++ application/language/gr/validation.php | 104 +++++++++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 application/language/gr/pagination.php create mode 100644 application/language/gr/validation.php diff --git a/application/language/gr/pagination.php b/application/language/gr/pagination.php new file mode 100644 index 00000000..1b0a53ae --- /dev/null +++ b/application/language/gr/pagination.php @@ -0,0 +1,19 @@ + '« Προηγούμενο', + 'next' => 'Επόμενο »', + +); \ No newline at end of file diff --git a/application/language/gr/validation.php b/application/language/gr/validation.php new file mode 100644 index 00000000..f461ac0e --- /dev/null +++ b/application/language/gr/validation.php @@ -0,0 +1,104 @@ + "Το πεδίο :attribute πρέπει να εγκριθεί.", + "active_url" => "Το πεδίο :attribute δεν ειναι σωστό URL.", + "after" => "Το πεδίο :attribute πρέπει η ημερομηνία να ειναι μετά :date.", + "alpha" => "Το πεδίο :attribute μπορεί να περιλαμβάνει μόνο γράμματα.", + "alpha_dash" => "Το πεδίο :attribute μπορεί να περιλαμβάνει μόνο γράμματα, αριθμούς και παύλες.", + "alpha_num" => "Το πεδίο :attribute μπορεί να περιλαμβάνει μόνο γράμματα και αριθμούς.", + "array" => "Το πεδίο :attribute πρέπει να περιλαμβάνει επιλεγμένα αντικείμενα.", + "before" => "Το πεδίο :attribute πρέπει η ημερομηνία να ειναι πριν από :date.", + "between" => array( + "numeric" => "Το πεδίο :attribute πρέπει να έχει τιμές μεταξύ :min - :max.", + "file" => "Το πεδίο :attribute πρέπει να ειναι ανάμεσα σε :min - :max kb.", + "string" => "Το πεδίο :attribute πρέπει να περιλαμβάνει :min - :max χαρακτήρες.", + ), + "confirmed" => "Το πεδίο :attribute δεν πέρασε τον έλεγχο.", + "count" => "Το πεδίο :attribute πρέπει να έχει ακριβώς :count επιλεγμένα αντικείμενα.", + "countbetween" => "Το πεδίο :attribute πρέπει να είναι ανάμεσα σε :min και :max επιλεγμένα αντικείμενα.", + "countmax" => "Το πεδίο :attribute πρέπει να έχει λιγότερα από :max επιλεγμένα αντικείμενα.", + "countmin" => "Το πεδίο :attribute πρέπει να έχει τουλάχιστον :min επιλεγμένα αντικείμενα.", + "different" => "Τα πεδία :attribute και :other πρέπει να ειναι διαφορετικά.", + "email" => "Στο πεδίο :attribute η μορφοποίηση ειναι άκυρη.", + "exists" => "Το επιλεγμένο πεδίο :attribute είναι άκυρο.", + "image" => "Το πεδίο :attribute πρέπει να είναι εικόνα.", + "in" => "Το επιλεγμένο πεδίο :attribute είναι άκυρο.", + "integer" => "Το πεδίο :attribute πρέπει να ειναι αριθμός.", + "ip" => "Το πεδίο :attribute πρέπει να ειναι μια έγκυρη διεύθυνση IP.", + "match" => "Το φορμάτ του πεδίου :attribute είναι άκυρο.", + "max" => array( + "numeric" => "Το πεδίο :attribute πρέπει να είναι μικρότερο από :max.", + "file" => "Το πεδίο :attribute πρέπει να είναι μικρότερο από :max kb.", + "string" => "Το πεδίο :attribute πρέπει να έχει λιγότερους από :max χαρακτήρες.", + ), + "mimes" => "Το πεδίο :attribute πρέπει να ειναι αρχείο με τύπο: :values.", + "min" => array( + "numeric" => "Το πεδίο :attribute πρέπει να είναι τουλάχιστον :min.", + "file" => "Το πεδίο :attribute πρέπει να είναι μικρότερο από :max kb.", + "string" => "Το πεδίο :attribute πρέπει να έχει λιγότερους από :max χαρακτήρες.", + ), + "not_in" => "Το επιλεγμένο πεδίο :attribute είναι άκυρο.", + "numeric" => "Το πεδίο :attribute πρέπει να είναι αριθμός.", + "required" => "Το πεδίο :attribute είναι απαραίτητο.", + "same" => "Τα πεδία :attribute και :other πρέπει να είναι ίδια.", + "size" => array( + "numeric" => "Το πεδίο :attribute πρέπει να ειναι :size.", + "file" => "Το πεδίο :attribute πρέπει να έχει μέγεθος :size kb.", + "string" => "Το πεδίο :attribute πρέπει να είναι :size χαρακτήρες.", + ), + "unique" => "Το πεδίο :attribute έχει ήδη ανατεθεί.", + "url" => "Το πεδίο :attribute είναι άκυρο.", + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute_rule" to name the lines. This helps keep your + | custom validation clean and tidy. + | + | So, say you want to use a custom validation message when validating that + | the "email" attribute is unique. Just add "email_unique" to this array + | with your custom message. The Validator will handle the rest! + | + */ + + 'custom' => array(), + + /* + |-------------------------------------------------------------------------- + | Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as "E-Mail Address" instead + | of "email". Your users will thank you. + | + | The Validator class will automatically search this array of lines it + | is attempting to replace the :attribute place-holder in messages. + | It's pretty slick. We think you'll like it. + | + */ + + 'attributes' => array(), + +); \ No newline at end of file

    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 literal 0 HcmV?d00001 diff --git a/laravel/tests/storage/logs/.gitignore b/laravel/tests/storage/logs/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/laravel/tests/storage/sessions/.gitignore b/laravel/tests/storage/sessions/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/laravel/tests/storage/views/.gitignore b/laravel/tests/storage/views/.gitignore new file mode 100644 index 00000000..e69de29b From 9bd875516712122d90efc7ba2712207fbdefa4d5 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Fri, 13 Jul 2012 00:14:30 +0200 Subject: [PATCH 17/92] Fix wrong API usage in Auth unit test. --- laravel/tests/cases/auth.test.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/laravel/tests/cases/auth.test.php b/laravel/tests/cases/auth.test.php index 32f74805..682b2cd9 100644 --- a/laravel/tests/cases/auth.test.php +++ b/laravel/tests/cases/auth.test.php @@ -17,7 +17,7 @@ class AuthTest extends PHPUnit_Framework_TestCase { $_SERVER['auth.login.stub'] = null; Cookie::$jar = array(); Config::$items = array(); - Auth::driver()->$user = null; + Auth::driver()->user = null; Session::$instance = null; Config::set('database.default', 'sqlite'); } @@ -30,7 +30,7 @@ class AuthTest extends PHPUnit_Framework_TestCase { $_SERVER['auth.login.stub'] = null; Cookie::$jar = array(); Config::$items = array(); - Auth::driver()->$user = null; + Auth::driver()->user = null; Session::$instance = null; Config::set('database.default', 'mysql'); } @@ -42,7 +42,7 @@ class AuthTest extends PHPUnit_Framework_TestCase { */ public function testUserMethodReturnsCurrentUser() { - Auth::$user = 'Taylor'; + Auth::driver()->user = 'Taylor'; $this->assertEquals('Taylor', Auth::user()); } From 41ff7af2135f819bdf4fbc339b009668a2b6ae32 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Fri, 13 Jul 2012 03:02:30 +0200 Subject: [PATCH 18/92] Change inner workings of test runner to use different bootstrap file when testing the core. --- laravel/cli/tasks/test/phpunit.php | 24 ---------------------- laravel/cli/tasks/test/runner.php | 28 +++++++++++++++++--------- laravel/tests/phpunit.php | 32 ++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 33 deletions(-) create mode 100644 laravel/tests/phpunit.php diff --git a/laravel/cli/tasks/test/phpunit.php b/laravel/cli/tasks/test/phpunit.php index 67644838..32eadd58 100644 --- a/laravel/cli/tasks/test/phpunit.php +++ b/laravel/cli/tasks/test/phpunit.php @@ -1,12 +1,4 @@ - * @link http://laravel.com - */ // -------------------------------------------------------------- // Define the directory separator for the environment. @@ -18,22 +10,6 @@ define('DS', DIRECTORY_SEPARATOR); // -------------------------------------------------------------- require 'paths.php'; -// -------------------------------------------------------------- -// Override the application paths when testing the core. -// -------------------------------------------------------------- -$config = file_get_contents('phpunit.xml'); - -if (strpos($config, 'laravel-tests') !== false) -{ - $path = path('bundle').'laravel-tests'.DS; - - set_path('app', $path.'application'.DS); - - set_path('bundle', $path.'bundles'.DS); - - set_path('storage', $path.'storage'.DS); -} - // -------------------------------------------------------------- // Bootstrap the Laravel core. // -------------------------------------------------------------- diff --git a/laravel/cli/tasks/test/runner.php b/laravel/cli/tasks/test/runner.php index 853f76b0..32c8774f 100644 --- a/laravel/cli/tasks/test/runner.php +++ b/laravel/cli/tasks/test/runner.php @@ -7,6 +7,15 @@ use Laravel\CLI\Tasks\Task; class Runner extends Task { + /** + * The base directory where the tests will be executed. + * + * A phpunit.xml should also be stored in that directory. + * + * @var string + */ + protected $base_path; + /** * Run all of the unit tests for the application. * @@ -26,7 +35,8 @@ class Runner extends Task { */ public function core() { - $this->stub(path('sys').'tests/cases'); + $this->base_path = path('sys').'tests'.DS; + $this->stub(path('sys').'tests'.DS.'cases'); $this->test(); } @@ -44,6 +54,8 @@ class Runner extends Task { $bundles = Bundle::names(); } + $this->base_path = path('sys').'cli'.DS.'tasks'.DS.'test'.DS; + foreach ($bundles as $bundle) { // To run PHPUnit for the application, bundles, and the framework @@ -67,9 +79,9 @@ class Runner extends Task { protected function test() { // We'll simply fire off PHPUnit with the configuration switch - // pointing to our temporary configuration file. This allows + // pointing to our requested configuration file. This allows // us to flexibly run tests for any setup. - $path = path('base').'phpunit.xml'; + $path = 'phpunit.xml'; // fix the spaced directories problem when using the command line // strings with spaces inside should be wrapped in quotes. @@ -97,7 +109,7 @@ class Runner extends Task { // locations depending on what the developer wants to test. foreach (array('bootstrap', 'directory') as $item) { - $stub = $this->{"swap_{$item}"}($stub, $path, $directory); + $stub = $this->{"swap_{$item}"}($stub, $directory); } File::put(path('base').'phpunit.xml', $stub); @@ -107,24 +119,22 @@ class Runner extends Task { * Swap the bootstrap file in the stub. * * @param string $stub - * @param string $path * @param string $directory * @return string */ - protected function swap_bootstrap($stub, $path, $directory) + protected function swap_bootstrap($stub, $directory) { - return str_replace('{{bootstrap}}', $path.'phpunit.php', $stub); + return str_replace('{{bootstrap}}', $this->base_path.'phpunit.php', $stub); } /** * Swap the directory in the stub. * * @param string $stub - * @param string $path * @param string $directory * @return string */ - protected function swap_directory($stub, $path, $directory) + protected function swap_directory($stub, $directory) { return str_replace('{{directory}}', $directory, $stub); } diff --git a/laravel/tests/phpunit.php b/laravel/tests/phpunit.php new file mode 100644 index 00000000..8e5ba204 --- /dev/null +++ b/laravel/tests/phpunit.php @@ -0,0 +1,32 @@ + Date: Fri, 13 Jul 2012 03:04:13 +0200 Subject: [PATCH 19/92] Update authentication config file in testing application. --- laravel/tests/application/config/auth.php | 80 ++++++++++------------- 1 file changed, 36 insertions(+), 44 deletions(-) diff --git a/laravel/tests/application/config/auth.php b/laravel/tests/application/config/auth.php index d0137583..d715f063 100644 --- a/laravel/tests/application/config/auth.php +++ b/laravel/tests/application/config/auth.php @@ -4,78 +4,70 @@ return array( /* |-------------------------------------------------------------------------- - | Retrieve The Current User + | Default Authentication Driver |-------------------------------------------------------------------------- | - | This closure is called by the Auth class' "user" method when trying to - | retrieve a user by the ID that is stored in their session. If you find - | the user, just return the user object, but make sure it has an "id" - | property. If you can't find the user, just return null. + | Laravel uses a flexible driver-based system to handle authentication. + | You are free to register your own drivers using the Auth::extend + | method. Of course, a few great drivers are provided out of + | box to handle basic authentication simply and easily. | - | Of course, a simple and elegant authentication solution has already - | been provided for you using the query builder and hashing engine. - | We love making your life as easy as possible. + | Drivers: 'fluent', 'eloquent'. | */ - 'user' => function($id) - { - if (filter_var($id, FILTER_VALIDATE_INT) !== false) - { - return DB::table('users')->find($id); - } - }, + 'driver' => 'fluent', /* |-------------------------------------------------------------------------- - | Authenticate User Credentials + | Authentication Username |-------------------------------------------------------------------------- | - | This closure is called by the Auth::attempt() method when attempting to - | authenticate a user that is logging into your application. It's like a - | super buff bouncer to your application. - | - | If the provided credentials are correct, simply return an object that - | represents the user being authenticated. As long as it has a property - | for the "id", any object will work. If the credentials are not valid, - | you don't meed to return anything. + | Here you may specify the database column that should be considered the + | "username" for your users. Typically, this will either be "username" + | or "email". Of course, you're free to change the value to anything. | */ - 'attempt' => function($username, $password) - { - $user = DB::table('users')->where_username($username)->first(); - - if ( ! is_null($user) and Hash::check($password, $user->password)) - { - return $user; - } - }, + 'username' => 'username', /* |-------------------------------------------------------------------------- - | Logout The Current User + | Authentication Password |-------------------------------------------------------------------------- | - | Here you may do anything that needs to be done when a user logs out of - | your application, such as call the logout method on a third-party API - | you are using for authentication or anything else you desire. + | Here you may specify the database column that should be considered the + | "password" for your users. Typically, this will be "password" but, + | again, you're free to change the value to anything you see fit. | */ - 'logout' => function($user) {}, + 'password' => 'password', /* |-------------------------------------------------------------------------- - | "Remember Me" Cookie Name + | Authentication Model |-------------------------------------------------------------------------- | - | Here you may specify the cookie name that will be used for the cookie - | that serves as the "remember me" token. Of course, a sensible default - | has been set for you, so you probably don't need to change it. + | When using the "eloquent" authentication driver, you may specify the + | model that should be considered the "User" model. This model will + | be used to authenticate and load the users of your application. | */ - 'cookie' => 'laravel_remember', + 'model' => 'User', -); \ No newline at end of file + /* + |-------------------------------------------------------------------------- + | Authentication Table + |-------------------------------------------------------------------------- + | + | When using the "fluent" authentication driver, the database table used + | to load users may be specified here. This table will be used in by + | the fluent query builder to authenticate and load your users. + | + */ + + 'table' => 'users', + +); From 86013f1b849045f845a2e9115553401b99f67879 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Fri, 13 Jul 2012 03:04:36 +0200 Subject: [PATCH 20/92] Fix old code in Auth test cases. --- laravel/tests/cases/auth.test.php | 32 +++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/laravel/tests/cases/auth.test.php b/laravel/tests/cases/auth.test.php index 682b2cd9..9f6b3928 100644 --- a/laravel/tests/cases/auth.test.php +++ b/laravel/tests/cases/auth.test.php @@ -107,7 +107,8 @@ class AuthTest extends PHPUnit_Framework_TestCase { public function testUserReturnsUserByID() { Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver')); - Session::$instance->session['data'][Auth::user_key] = 1; + // FIXME: Not sure whether hard-coding the key is a good idea. + Session::$instance->session['data']['laravel_auth_drivers_fluent_login'] = 1; $this->assertEquals('Taylor Otwell', Auth::user()->name); } @@ -120,7 +121,8 @@ class AuthTest extends PHPUnit_Framework_TestCase { public function testNullReturnedWhenUserIDNotValidInteger() { Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver')); - Session::$instance->session['data'][Auth::user_key] = 'asdlkasd'; + // FIXME: Not sure whether hard-coding the key is a good idea. + Session::$instance->session['data']['laravel_auth_drivers_fluent_login'] = 'asdlkasd'; $this->assertNull(Auth::user()); } @@ -183,10 +185,13 @@ class AuthTest extends PHPUnit_Framework_TestCase { $user = new StdClass; $user->id = 10; Auth::login($user); - $this->assertEquals(10, Session::$instance->session['data'][Auth::user_key]); + // FIXME: Not sure whether hard-coding the key is a good idea. + $user = Session::$instance->session['data']['laravel_auth_drivers_fluent_login']; + $this->assertEquals(10, $user->id); Auth::login(5); - $this->assertEquals(5, Session::$instance->session['data'][Auth::user_key]); + $user = Session::$instance->session['data']['laravel_auth_drivers_fluent_login']; + $this->assertEquals(5, $user); } /** @@ -203,7 +208,7 @@ class AuthTest extends PHPUnit_Framework_TestCase { Config::set('session.domain', 'bar'); Config::set('session.secure', true); - Auth::login(10, true); + Auth::login(10); $this->assertTrue(isset(Cookie::$jar[Config::get('auth.cookie')])); $cookie = Cookie::$jar[Config::get('auth.cookie')]['value']; @@ -222,17 +227,20 @@ class AuthTest extends PHPUnit_Framework_TestCase { public function testLogoutMethodLogsOutUser() { Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver')); - Session::$instance->session['data'][Auth::user_key] = 10; + + //$data = Session::$instance->session['data']['laravel_auth_drivers_fluent_login'] = 10; - Config::set('auth.logout', function($user) { $_SERVER['auth.logout.stub'] = $user; }); + // FIXME: Restore some of these! + //Config::set('auth.logout', function($user) { $_SERVER['auth.logout.stub'] = $user; }); - Auth::$user = 'Taylor'; + //Auth::$user = 'Taylor'; Auth::logout(); - $this->assertEquals('Taylor', $_SERVER['auth.logout.stub']); - $this->assertNull(Auth::$user); - $this->assertFalse(isset(Session::$instance->session['data'][Auth::user_key])); - $this->assertTrue(Cookie::$jar[Config::get('auth.cookie')]['minutes'] < 0); + //$this->assertEquals('Taylor', $_SERVER['auth.logout.stub']); + $this->assertNull(Auth::user()); + // FIXME: Not sure whether hard-coding the key is a good idea. + $this->assertFalse(isset(Session::$instance->session['data']['laravel_auth_drivers_fluent_login'])); + $this->assertTrue(Cookie::$jar['laravel_auth_drivers_fluent_remember']['expiration'] < time()); } } From feefa8d9c441086a42306179855cbc060bda46bc Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Fri, 13 Jul 2012 03:05:55 +0200 Subject: [PATCH 21/92] Fix PHP errors in test cases related to now using Symfony's HttpFoundation component. --- laravel/tests/cases/controller.test.php | 2 +- laravel/tests/cases/redirect.test.php | 20 +++---- laravel/tests/cases/request.test.php | 78 +++++++++++++++++-------- laravel/tests/cases/response.test.php | 11 ++-- laravel/tests/cases/uri.test.php | 22 ++++++- 5 files changed, 91 insertions(+), 42 deletions(-) diff --git a/laravel/tests/cases/controller.test.php b/laravel/tests/cases/controller.test.php index 9147bad9..1577ece3 100644 --- a/laravel/tests/cases/controller.test.php +++ b/laravel/tests/cases/controller.test.php @@ -189,7 +189,7 @@ class ControllerTest extends PHPUnit_Framework_TestCase { $_SERVER['REQUEST_METHOD'] = 'PUT'; - $this->assertEquals(404, Controller::call('restful@index')->status); + $this->assertEquals(404, Controller::call('restful@index')->status()); $_SERVER['REQUEST_METHOD'] = 'POST'; diff --git a/laravel/tests/cases/redirect.test.php b/laravel/tests/cases/redirect.test.php index 2e6fb193..4f0897d7 100644 --- a/laravel/tests/cases/redirect.test.php +++ b/laravel/tests/cases/redirect.test.php @@ -39,18 +39,18 @@ class RedirectTest extends PHPUnit_Framework_TestCase { { $redirect = Redirect::to('user/profile'); - $this->assertEquals(302, $redirect->status); - $this->assertEquals('http://localhost/user/profile', $redirect->headers['location']); + $this->assertEquals(302, $redirect->status()); + $this->assertEquals('http://localhost/user/profile', $redirect->headers()->get('location')); $redirect = Redirect::to('user/profile', 301, true); - $this->assertEquals(301, $redirect->status); - $this->assertEquals('https://localhost/user/profile', $redirect->headers['location']); + $this->assertEquals(301, $redirect->status()); + $this->assertEquals('https://localhost/user/profile', $redirect->headers()->get('location')); $redirect = Redirect::to_secure('user/profile', 301); - $this->assertEquals(301, $redirect->status); - $this->assertEquals('https://localhost/user/profile', $redirect->headers['location']); + $this->assertEquals(301, $redirect->status()); + $this->assertEquals('https://localhost/user/profile', $redirect->headers()->get('location')); } /** @@ -64,10 +64,10 @@ class RedirectTest extends PHPUnit_Framework_TestCase { Route::get('redirect/(:any)/(:any)', array('as' => 'redirect-2')); Route::get('secure/redirect', array('https' => true, 'as' => 'redirect-3')); - $this->assertEquals(301, Redirect::to_route('redirect', array(), 301, true)->status); - $this->assertEquals('http://localhost/redirect', Redirect::to_route('redirect')->headers['location']); - $this->assertEquals('https://localhost/secure/redirect', Redirect::to_route('redirect-3', array(), 302)->headers['location']); - $this->assertEquals('http://localhost/redirect/1/2', Redirect::to_route('redirect-2', array('1', '2'))->headers['location']); + $this->assertEquals(301, Redirect::to_route('redirect', array(), 301, true)->status()); + $this->assertEquals('http://localhost/redirect', Redirect::to_route('redirect')->headers()->get('location')); + $this->assertEquals('https://localhost/secure/redirect', Redirect::to_route('redirect-3', array(), 302)->headers()->get('location')); + $this->assertEquals('http://localhost/redirect/1/2', Redirect::to_route('redirect-2', array('1', '2'))->headers()->get('location')); } /** diff --git a/laravel/tests/cases/request.test.php b/laravel/tests/cases/request.test.php index d3e6b479..4641a532 100644 --- a/laravel/tests/cases/request.test.php +++ b/laravel/tests/cases/request.test.php @@ -1,5 +1,7 @@ restartRequest(); + } + + /** + * Set one of the $_POST variables. + * + * @param string $key + * @param string $value + */ + protected function setPostVar($key, $value) + { + $_POST[$key] = $value; + + $this->restartRequest(); + } + + /** + * Reinitialize the global request. + * + * @return void + */ + protected function restartRequest() + { + // FIXME: Ugly hack, but old contents from previous requests seem to + // trip up the Foundation class. + $_FILES = array(); + + Request::$foundation = RequestFoundation::createFromGlobals(); + } + /** * Test the Request::method method. * @@ -26,11 +68,11 @@ class RequestTest extends PHPUnit_Framework_TestCase { */ public function testMethodReturnsTheHTTPRequestMethod() { - $_SERVER['REQUEST_METHOD'] = 'POST'; + $this->setServerVar('REQUEST_METHOD', 'POST'); $this->assertEquals('POST', Request::method()); - $_POST[Request::spoofer] = 'PUT'; + $this->setPostVar(Request::spoofer, 'PUT'); $this->assertEquals('PUT', Request::method()); } @@ -42,7 +84,8 @@ class RequestTest extends PHPUnit_Framework_TestCase { */ public function testServerMethodReturnsFromServerArray() { - $_SERVER = array('TEST' => 'something', 'USER' => array('NAME' => 'taylor')); + $this->setServerVar('TEST', 'something'); + $this->setServerVar('USER', array('NAME' => 'taylor')); $this->assertEquals('something', Request::server('test')); $this->assertEquals('taylor', Request::server('user.name')); @@ -55,33 +98,20 @@ class RequestTest extends PHPUnit_Framework_TestCase { */ public function testIPMethodReturnsClientIPAddress() { - $_SERVER['REMOTE_ADDR'] = 'something'; + $this->setServerVar('REMOTE_ADDR', 'something'); $this->assertEquals('something', Request::ip()); - $_SERVER['HTTP_CLIENT_IP'] = 'something'; + $this->setServerVar('HTTP_CLIENT_IP', 'something'); $this->assertEquals('something', Request::ip()); - $_SERVER['HTTP_X_FORWARDED_FOR'] = 'something'; + $this->setServerVar('HTTP_CLIENT_IP', 'something'); $this->assertEquals('something', Request::ip()); $_SERVER = array(); + $this->restartRequest(); $this->assertEquals('0.0.0.0', Request::ip()); } - /** - * Test the Request::protocol method. - * - * @group laravel - */ - public function testProtocolMethodReturnsProtocol() - { - $_SERVER['SERVER_PROTOCOL'] = 'taylor'; - $this->assertEquals('taylor', Request::protocol()); - - unset($_SERVER['SERVER_PROTOCOL']); - $this->assertEquals('HTTP/1.1', Request::protocol()); - } - /** * Test the Request::secure method. * @@ -89,11 +119,11 @@ class RequestTest extends PHPUnit_Framework_TestCase { */ public function testSecureMethodsIndicatesIfHTTPS() { - $_SERVER['HTTPS'] = 'on'; - + $this->setServerVar('HTTPS', 'on'); + $this->assertTrue(Request::secure()); - $_SERVER['HTTPS'] = 'off'; + $this->setServerVar('HTTPS', 'off'); $this->assertFalse(Request::secure()); } @@ -107,7 +137,7 @@ class RequestTest extends PHPUnit_Framework_TestCase { { $this->assertFalse(Request::ajax()); - $_SERVER['HTTP_X_REQUESTED_WITH'] = 'xmlhttprequest'; + $this->setServerVar('HTTP_X_REQUESTED_WITH', 'XMLHttpRequest'); $this->assertTrue(Request::ajax()); } diff --git a/laravel/tests/cases/response.test.php b/laravel/tests/cases/response.test.php index 5907eebd..11e48e74 100644 --- a/laravel/tests/cases/response.test.php +++ b/laravel/tests/cases/response.test.php @@ -12,8 +12,9 @@ class ResponseTest extends PHPUnit_Framework_TestCase { $response = Response::make('foo', 201, array('bar' => 'baz')); $this->assertEquals('foo', $response->content); - $this->assertEquals(201, $response->status); - $this->assertEquals(array('bar' => 'baz'), $response->headers); + $this->assertEquals(201, $response->status()); + $this->assertArrayHasKey('bar', $response->headers()->all()); + $this->assertEquals('baz', $response->headers()->get('bar')); } /** @@ -38,7 +39,7 @@ class ResponseTest extends PHPUnit_Framework_TestCase { { $response = Response::error('404', array('name' => 'Taylor')); - $this->assertEquals(404, $response->status); + $this->assertEquals(404, $response->status()); $this->assertEquals('error.404', $response->content->view); $this->assertEquals('Taylor', $response->content->data['name']); } @@ -70,7 +71,7 @@ class ResponseTest extends PHPUnit_Framework_TestCase { { $response = Response::make('')->header('foo', 'bar'); - $this->assertEquals('bar', $response->headers['foo']); + $this->assertEquals('bar', $response->headers()->get('foo')); } /** @@ -82,7 +83,7 @@ class ResponseTest extends PHPUnit_Framework_TestCase { { $response = Response::make('')->status(404); - $this->assertEquals(404, $response->status); + $this->assertEquals(404, $response->status()); } } \ No newline at end of file diff --git a/laravel/tests/cases/uri.test.php b/laravel/tests/cases/uri.test.php index be779ecf..fc64b3fb 100644 --- a/laravel/tests/cases/uri.test.php +++ b/laravel/tests/cases/uri.test.php @@ -1,5 +1,7 @@ setRequestUri($uri); + $this->assertEquals($expectation, URI::current()); } @@ -31,7 +49,7 @@ class URITest extends PHPUnit_Framework_TestCase { */ public function testSegmentMethodReturnsAURISegment() { - $_SERVER['REQUEST_URI'] = 'http://localhost/index.php/user/profile'; + $this->setRequestUri('http://localhost/index.php/user/profile'); $this->assertEquals('user', URI::segment(1)); $this->assertEquals('profile', URI::segment(2)); From 7351845ec3a7de818391d218b4a2f9faa26985ad Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Fri, 13 Jul 2012 03:06:31 +0200 Subject: [PATCH 22/92] Fix PHP errors in test cases related to changed cookie data storage. --- laravel/tests/cases/cookie.test.php | 8 ++++---- laravel/tests/cases/session.test.php | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/laravel/tests/cases/cookie.test.php b/laravel/tests/cases/cookie.test.php index fb8faf65..dcfaf5d8 100644 --- a/laravel/tests/cases/cookie.test.php +++ b/laravel/tests/cases/cookie.test.php @@ -69,7 +69,7 @@ class CookieTest extends \PHPUnit_Framework_TestCase { { Cookie::forever('foo', 'bar'); $this->assertEquals('bar', Cookie::$jar['foo']['value']); - $this->assertEquals(525600, Cookie::$jar['foo']['minutes']); + $this->assertEquals(525600, Cookie::$jar['foo']['expiration']); Cookie::forever('bar', 'baz', 'path', 'domain', true); $this->assertEquals('path', Cookie::$jar['bar']['path']); @@ -84,11 +84,11 @@ class CookieTest extends \PHPUnit_Framework_TestCase { */ public function testForgetSetsCookieWithExpiration() { - Cookie::forget('bar', 'path', 'domain', true); - $this->assertEquals(-2000, Cookie::$jar['bar']['minutes']); + Cookie::forget('bar', 'path', 'domain'); + $this->assertEquals(-2000, Cookie::$jar['bar']['expiration']); $this->assertEquals('path', Cookie::$jar['bar']['path']); $this->assertEquals('domain', Cookie::$jar['bar']['domain']); - $this->assertTrue(Cookie::$jar['bar']['secure']); + $this->assertFalse(Cookie::$jar['bar']['secure']); } } \ No newline at end of file diff --git a/laravel/tests/cases/session.test.php b/laravel/tests/cases/session.test.php index 2c7ccdc9..05b0299d 100644 --- a/laravel/tests/cases/session.test.php +++ b/laravel/tests/cases/session.test.php @@ -373,7 +373,7 @@ class SessionTest extends PHPUnit_Framework_TestCase { $cookie = Cookie::$jar[Config::get('session.cookie')]; $this->assertEquals('foo', $cookie['value']); - $this->assertEquals(Config::get('session.lifetime'), $cookie['minutes']); + $this->assertEquals(Config::get('session.lifetime'), $cookie['expiration']); $this->assertEquals(Config::get('session.domain'), $cookie['domain']); $this->assertEquals(Config::get('session.path'), $cookie['path']); $this->assertEquals(Config::get('session.secure'), $cookie['secure']); From 37241db646bf57a120b655d818964cbc3f3fb9a0 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Fri, 13 Jul 2012 03:07:14 +0200 Subject: [PATCH 23/92] Fix View test case still referring to the old bundle setup for tests. --- laravel/tests/cases/view.test.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/laravel/tests/cases/view.test.php b/laravel/tests/cases/view.test.php index d10cf31c..9716724a 100644 --- a/laravel/tests/cases/view.test.php +++ b/laravel/tests/cases/view.test.php @@ -55,10 +55,10 @@ class ViewTest extends PHPUnit_Framework_TestCase { */ public function testBundleViewIsCreatedWithCorrectPath() { - $view = new View('laravel-tests::home.index'); + $view = new View('home.index'); $this->assertEquals( - str_replace(DS, '/', Bundle::path('laravel-tests')).'views/home/index.php', + str_replace(DS, '/', Bundle::path(DEFAULT_BUNDLE)).'views/home/index.php', str_replace(DS, '/', $view->path) ); } From 4fd1a4fe394021b8f1d5d94aa66d238382658f63 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Fri, 13 Jul 2012 23:33:12 +0200 Subject: [PATCH 24/92] Add .travis.yml file for continuous integration with Travis CI. --- .travis.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..c7e2b983 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,14 @@ +branches: + only: + - core-tests + +language: php + +php: + - 5.3 + +script: php artisan test:core + +notifications: + irc: + - "irc.freenode.org#laravel" \ No newline at end of file From 9460e691d4fac5c14f40bc1b96665313eba01830 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Sat, 14 Jul 2012 00:55:47 +0300 Subject: [PATCH 25/92] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c7e2b983..917e9b25 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ language: php php: - 5.3 -script: php artisan test:core +script: "php artisan test:core" notifications: irc: From e7f665b55d1c83f23e0ff3691f0ad76f0e0059ea Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Sat, 14 Jul 2012 01:01:23 +0300 Subject: [PATCH 26/92] Don't restrict Travis CI testing to one branch. --- .travis.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 917e9b25..a1bcd71c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,3 @@ -branches: - only: - - core-tests - language: php php: From 08fce4fbf812b6d065cbcc21d6a9f7f03cafe2ff Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Sat, 14 Jul 2012 11:46:58 +0200 Subject: [PATCH 27/92] After running tests, exit with PHPUnit's exit status. --- laravel/cli/tasks/test/runner.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/laravel/cli/tasks/test/runner.php b/laravel/cli/tasks/test/runner.php index 32c8774f..151815bf 100644 --- a/laravel/cli/tasks/test/runner.php +++ b/laravel/cli/tasks/test/runner.php @@ -87,9 +87,12 @@ class Runner extends Task { // strings with spaces inside should be wrapped in quotes. $path = escapeshellarg($path); - passthru('phpunit --configuration '.$path); + passthru('phpunit --configuration '.$path, $status); @unlink($path); + + // Pass through the exit status + exit($status); } /** From 433318181b92a493b4012f54b9b1f2c027e9062f Mon Sep 17 00:00:00 2001 From: Jakobud Date: Thu, 26 Jul 2012 16:00:46 -0600 Subject: [PATCH 28/92] In the call() method, the exception wasn't being thrown if only 1 or more than 2 arguments were passed to the method. Fixed conditional statement to only accept exactly 2 arguments. In the route() method, URI::current() was evaluating as '/' in all situations. It was never evaluating as the route that you specified when executing the command. This could be part of a larger underlying bug with Symfony's HttpFoundation\Request class. It might be a band-aid fix, but replacing URI::current() with $_SERVER['REQUEST_URI'] allows the method to run the correct route. These fixes uncovered what I believe is potentially another bug. When var_dump($route->response()) is run, "NULL" and a newline is appended to the output. It's something to do with var_dump(), as echo $route->response() echo's the correct output without the extra "NULL". Signed-off-by: Jakobud --- laravel/cli/tasks/route.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/laravel/cli/tasks/route.php b/laravel/cli/tasks/route.php index 494d5ba0..b30d467c 100644 --- a/laravel/cli/tasks/route.php +++ b/laravel/cli/tasks/route.php @@ -14,7 +14,7 @@ class Route extends Task { */ public function call($arguments = array()) { - if ( ! count($arguments) == 2) + if ( count($arguments) != 2) { throw new \Exception("Please specify a request method and URI."); } @@ -41,7 +41,7 @@ class Route extends Task { // We'll call the router using the method and URI specified by // the developer on the CLI. If a route is found, we will not // run the filters, but simply dump the result. - $route = Router::route(Request::method(), URI::current()); + $route = Router::route(Request::method(), $_SERVER['REQUEST_URI']); if ( ! is_null($route)) { @@ -53,4 +53,4 @@ class Route extends Task { } } -} \ No newline at end of file +} From f408fcc26b20e31308bf9f90617ade33c1596102 Mon Sep 17 00:00:00 2001 From: Jason Lewis Date: Fri, 27 Jul 2012 12:30:41 +0930 Subject: [PATCH 29/92] Allow bundles to respond to root requests. Signed-off-by: Jason Lewis --- laravel/bundle.php | 2 +- laravel/routing/router.php | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/laravel/bundle.php b/laravel/bundle.php index 2259228e..2220322b 100644 --- a/laravel/bundle.php +++ b/laravel/bundle.php @@ -191,7 +191,7 @@ class Bundle { foreach (static::$bundles as $key => $value) { - if (isset($value['handles']) and starts_with($uri, $value['handles'].'/')) + if (isset($value['handles']) and starts_with($uri, $value['handles'].'/') or $value['handles'] == '/') { return $key; } diff --git a/laravel/routing/router.php b/laravel/routing/router.php index 00659a22..cae6ff30 100644 --- a/laravel/routing/router.php +++ b/laravel/routing/router.php @@ -206,7 +206,12 @@ class Router { continue; } - $uri = str_replace('(:bundle)', static::$bundle, $uri); + $uri = ltrim(str_replace('(:bundle)', static::$bundle, $uri), '/'); + + if($uri == '') + { + $uri = '/'; + } // If the URI begins with a wildcard, we want to add this route to the // array of "fallback" routes. Fallback routes are always processed From c667788be7d7f13b74afcc96994526c3d748054b Mon Sep 17 00:00:00 2001 From: Purwandi Date: Fri, 27 Jul 2012 22:34:41 +0700 Subject: [PATCH 30/92] Add decimal schema on docs Signed-off-by: Purwandi --- laravel/documentation/database/schema.md | 1 + 1 file changed, 1 insertion(+) diff --git a/laravel/documentation/database/schema.md b/laravel/documentation/database/schema.md index 65c4e6ca..584a9139 100644 --- a/laravel/documentation/database/schema.md +++ b/laravel/documentation/database/schema.md @@ -62,6 +62,7 @@ Command | Description `$table->string('name', 100);` | VARCHAR equivalent with a length `$table->integer('votes');` | INTEGER equivalent to the table `$table->float('amount');` | FLOAT equivalent to the table +`$table->decimal('amount', 5, 2);` | DECIMAL equivalent with a precision and scale `$table->boolean('confirmed');` | BOOLEAN equivalent to the table `$table->date('created_at');` | DATE equivalent to the table `$table->timestamp('added_on');` | TIMESTAMP equivalent to the table From 761186a67641ee047d33107760481703095f48c6 Mon Sep 17 00:00:00 2001 From: Jakobud Date: Tue, 31 Jul 2012 12:00:47 -0600 Subject: [PATCH 31/92] Reorganized Control Structure section. Added Control Structure to TOC. Added in missing @elseif example. Move the Blade Comments to more appropriate section. Simplified Blade Comments examples. Minor changes to @parent example. Signed-off-by: Jakobud --- laravel/documentation/views/templating.md | 89 ++++++++++++++--------- 1 file changed, 54 insertions(+), 35 deletions(-) diff --git a/laravel/documentation/views/templating.md b/laravel/documentation/views/templating.md index f4098c63..9aabac87 100644 --- a/laravel/documentation/views/templating.md +++ b/laravel/documentation/views/templating.md @@ -5,6 +5,7 @@ - [The Basics](#the-basics) - [Sections](#sections) - [Blade Template Engine](#blade-template-engine) +- [Blade Control Structures](#blade-control-structures) - [Blade Layouts](#blade-layouts) @@ -63,7 +64,7 @@ Blade makes writing your views pure bliss. To create a blade view, simply name y #### Echoing a variable using Blade: - Hello, {{$name}}. + Hello, {{ $name }}. #### Echoing function results using Blade: @@ -80,15 +81,46 @@ Similarly, you can use **@render**, which behaves the same as **@include** excep @render('admin.list') -#### Creating loops using Blade: +#### Blade comments: -