From 7af12d0f5b4e70ff491edb66f61ff87329178b2d Mon Sep 17 00:00:00 2001 From: mwalbeck <magn3200@gmail.com> Date: Sat, 22 Oct 2016 13:57:56 +0200 Subject: [PATCH] Added validation to tests creation and fixed a bug related to amount of wrong questions allowed in tests --- app/Http/Controllers/TestController.php | 11 +- app/Http/Requests/StoreTest.php | 42 +++ app/Http/Requests/StoreUser.php | 30 ++ app/Test.php | 12 +- composer.json | 3 +- composer.lock | 309 +++++++++++------- .../2016_08_30_201515_create_tests_table.php | 6 +- resources/views/home.blade.php | 6 +- resources/views/tests/new.blade.php | 10 + 9 files changed, 287 insertions(+), 142 deletions(-) create mode 100644 app/Http/Requests/StoreTest.php create mode 100644 app/Http/Requests/StoreUser.php diff --git a/app/Http/Controllers/TestController.php b/app/Http/Controllers/TestController.php index 88ca7c4..34218ad 100644 --- a/app/Http/Controllers/TestController.php +++ b/app/Http/Controllers/TestController.php @@ -10,6 +10,7 @@ use App\Testdetail; use App\Question; use App\Option; use App\Group; +use App\Http\Requests\StoreTest; class TestController extends Controller { @@ -128,11 +129,11 @@ class TestController extends Controller * */ - public function addTest() + public function addTest(StoreTest $request) { $test = new Test(); - $test->createTest(request()->all()); - return redirect('/admin/tests'); + $test->createTest($request->all()); + return redirect("/admin/tests/$test->id"); } public function confirmDeleteTest(Test $test) @@ -170,9 +171,9 @@ class TestController extends Controller return view('tests.question.new', compact('test'), compact('question_number')); } - public function updateTest(Test $test) + public function updateTest(Test $test, StoreTest $request) { - $test->updateTest(request()->all()); + $test->updateTest($request->all()); return redirect("/admin/tests/$test->id"); } diff --git a/app/Http/Requests/StoreTest.php b/app/Http/Requests/StoreTest.php new file mode 100644 index 0000000..dbbdd6c --- /dev/null +++ b/app/Http/Requests/StoreTest.php @@ -0,0 +1,42 @@ +<?php + +namespace App\Http\Requests; + +use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Support\Facades\Auth; + +class StoreTest extends FormRequest +{ + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize() + { + if (Auth::user()->isAdministrator()) { + return true; + } + + if (Auth::user()->isModerator()) { + return true; + } + return false; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + "title" => "required|max:255|string", + "question_count" => "required|numeric", + "question_count_to_fail" => "numeric", + "time_limit" => "numeric", + "group_id" => "numeric" + ]; + } +} diff --git a/app/Http/Requests/StoreUser.php b/app/Http/Requests/StoreUser.php new file mode 100644 index 0000000..60cd2e1 --- /dev/null +++ b/app/Http/Requests/StoreUser.php @@ -0,0 +1,30 @@ +<?php + +namespace App\Http\Requests; + +use Illuminate\Foundation\Http\FormRequest; + +class StoreUser extends FormRequest +{ + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize() + { + return false; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + // + ]; + } +} diff --git a/app/Test.php b/app/Test.php index d3a301e..2739a5a 100644 --- a/app/Test.php +++ b/app/Test.php @@ -36,7 +36,7 @@ class Test extends Model if ($this->question_count_to_fail == null) { return false; } - return $this->question_count_to_fail <= $wrong_answers; + return $this->question_count_to_fail < $wrong_answers; } public function lastQuestion($question_counter) @@ -47,13 +47,15 @@ class Test extends Model return false; } - public function createTest($request) + public function createTest(Request $request) { $this->title = $request["title"]; $this->question_count = $request["question_count"]; - $this->question_count_to_fail = $request["question_count_to_fail"]; + if ($request["question_count_to_fail"]) { + $this->question_count_to_fail = $request["question_count_to_fail"]; + } $this->time_limit = $request["time_limit"]; - if (Auth::user()->isAdministrator) { + if (Auth::user()->isAdministrator()) { $this->group_id = $request["group_id"]; $this->save(); return true; @@ -62,7 +64,7 @@ class Test extends Model return true; } - public function updateTest($request) + public function updateTest(Request $request) { $this->update($request); } diff --git a/composer.json b/composer.json index eb401d8..1b64172 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,8 @@ "type": "project", "require": { "php": ">=5.6.4", - "laravel/framework": "5.3.*" + "laravel/framework": "5.3.*", + "components/jquery": "3.1.*" }, "require-dev": { "fzaninotto/faker": "~1.4", diff --git a/composer.lock b/composer.lock index 4139a88..3174c35 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "ed9df8b872992035f068a7fe461a635a", - "content-hash": "76036da3b5b55b91dbe1e1affa01bf9e", + "hash": "d1ab2b34732fa883d96587f1325acd39", + "content-hash": "2c273b58cdefef996d93a64635db5186", "packages": [ { "name": "classpreloader/classpreloader", @@ -61,6 +61,46 @@ ], "time": "2015-11-09 22:51:51" }, + { + "name": "components/jquery", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/components/jquery.git", + "reference": "09a1658378bc1f818856086396ebeab7d0ec2276" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/components/jquery/zipball/09a1658378bc1f818856086396ebeab7d0ec2276", + "reference": "09a1658378bc1f818856086396ebeab7d0ec2276", + "shasum": "" + }, + "type": "component", + "extra": { + "component": { + "scripts": [ + "jquery.js" + ], + "files": [ + "jquery.min.js", + "jquery.min.map" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Resig", + "email": "jeresig@gmail.com" + } + ], + "description": "jQuery JavaScript Library", + "homepage": "http://jquery.com", + "time": "2016-09-23 06:06:29" + }, { "name": "dnoegel/php-xdg-base-dir", "version": "0.1", @@ -308,16 +348,16 @@ }, { "name": "laravel/framework", - "version": "v5.3.4", + "version": "v5.3.19", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "7159ffbadc79558a42ece2cdd1ec2e7e13105b5d" + "reference": "f1a5bb417b3e0d1949fe84617eacd1a14d75d7f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/7159ffbadc79558a42ece2cdd1ec2e7e13105b5d", - "reference": "7159ffbadc79558a42ece2cdd1ec2e7e13105b5d", + "url": "https://api.github.com/repos/laravel/framework/zipball/f1a5bb417b3e0d1949fe84617eacd1a14d75d7f1", + "reference": "f1a5bb417b3e0d1949fe84617eacd1a14d75d7f1", "shasum": "" }, "require": { @@ -365,6 +405,7 @@ "illuminate/http": "self.version", "illuminate/log": "self.version", "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", "illuminate/pagination": "self.version", "illuminate/pipeline": "self.version", "illuminate/queue": "self.version", @@ -398,7 +439,7 @@ "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).", "symfony/css-selector": "Required to use some of the crawler integration testing tools (3.1.*).", "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (3.1.*).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (0.2.*)." + "symfony/psr-http-message-bridge": "Required to use psr7 bridging features (0.2.*)." }, "type": "library", "extra": { @@ -431,24 +472,24 @@ "framework", "laravel" ], - "time": "2016-08-26 21:40:26" + "time": "2016-10-17 19:35:14" }, { "name": "league/flysystem", - "version": "1.0.27", + "version": "1.0.32", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "50e2045ed70a7e75a5e30bc3662904f3b67af8a9" + "reference": "1b5c4a0031697f46e779a9d1b309c2e1b24daeab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/50e2045ed70a7e75a5e30bc3662904f3b67af8a9", - "reference": "50e2045ed70a7e75a5e30bc3662904f3b67af8a9", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/1b5c4a0031697f46e779a9d1b309c2e1b24daeab", + "reference": "1b5c4a0031697f46e779a9d1b309c2e1b24daeab", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": ">=5.5.9" }, "conflict": { "league/flysystem-sftp": "<1.0.6" @@ -514,7 +555,7 @@ "sftp", "storage" ], - "time": "2016-08-10 08:55:11" + "time": "2016-10-19 20:38:46" }, { "name": "monolog/monolog", @@ -687,16 +728,16 @@ }, { "name": "nikic/php-parser", - "version": "v2.1.0", + "version": "v2.1.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "47b254ea51f1d6d5dc04b9b299e88346bf2369e3" + "reference": "4dd659edadffdc2143e4753df655d866dbfeedf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/47b254ea51f1d6d5dc04b9b299e88346bf2369e3", - "reference": "47b254ea51f1d6d5dc04b9b299e88346bf2369e3", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4dd659edadffdc2143e4753df655d866dbfeedf0", + "reference": "4dd659edadffdc2143e4753df655d866dbfeedf0", "shasum": "" }, "require": { @@ -734,20 +775,20 @@ "parser", "php" ], - "time": "2016-04-19 13:41:41" + "time": "2016-09-16 12:04:44" }, { "name": "paragonie/random_compat", - "version": "v2.0.2", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "088c04e2f261c33bed6ca5245491cfca69195ccf" + "reference": "c0125896dbb151380ab47e96c621741e79623beb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/088c04e2f261c33bed6ca5245491cfca69195ccf", - "reference": "088c04e2f261c33bed6ca5245491cfca69195ccf", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/c0125896dbb151380ab47e96c621741e79623beb", + "reference": "c0125896dbb151380ab47e96c621741e79623beb", "shasum": "" }, "require": { @@ -782,26 +823,34 @@ "pseudorandom", "random" ], - "time": "2016-04-03 06:00:07" + "time": "2016-10-17 15:23:22" }, { "name": "psr/log", - "version": "1.0.0", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", - "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", "shasum": "" }, + "require": { + "php": ">=5.3.0" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { - "psr-0": { - "Psr\\Log\\": "" + "psr-4": { + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -815,12 +864,13 @@ } ], "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ "log", "psr", "psr-3" ], - "time": "2012-12-21 11:40:51" + "time": "2016-10-10 12:19:37" }, { "name": "psy/psysh", @@ -896,16 +946,16 @@ }, { "name": "ramsey/uuid", - "version": "3.5.0", + "version": "3.5.1", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "a6d15c8618ea3951fd54d34e326b68d3d0bc0786" + "reference": "a07797b986671b0dc823885a81d5e3516b931599" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/a6d15c8618ea3951fd54d34e326b68d3d0bc0786", - "reference": "a6d15c8618ea3951fd54d34e326b68d3d0bc0786", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/a07797b986671b0dc823885a81d5e3516b931599", + "reference": "a07797b986671b0dc823885a81d5e3516b931599", "shasum": "" }, "require": { @@ -972,7 +1022,7 @@ "identifier", "uuid" ], - "time": "2016-08-02 18:39:32" + "time": "2016-10-02 15:51:17" }, { "name": "swiftmailer/swiftmailer", @@ -1029,20 +1079,21 @@ }, { "name": "symfony/console", - "version": "v3.1.3", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "f9e638e8149e9e41b570ff092f8007c477ef0ce5" + "reference": "6cb0872fb57b38b3b09ff213c21ed693956b9eb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/f9e638e8149e9e41b570ff092f8007c477ef0ce5", - "reference": "f9e638e8149e9e41b570ff092f8007c477ef0ce5", + "url": "https://api.github.com/repos/symfony/console/zipball/6cb0872fb57b38b3b09ff213c21ed693956b9eb0", + "reference": "6cb0872fb57b38b3b09ff213c21ed693956b9eb0", "shasum": "" }, "require": { "php": ">=5.5.9", + "symfony/debug": "~2.8|~3.0", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { @@ -1085,20 +1136,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2016-07-26 08:04:17" + "time": "2016-09-28 00:11:12" }, { "name": "symfony/debug", - "version": "v3.1.3", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "4c1b48c6a433e194a42ce3d064cd43ceb7c3682f" + "reference": "e2b3f74a67fc928adc3c1b9027f73e1bc01190a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/4c1b48c6a433e194a42ce3d064cd43ceb7c3682f", - "reference": "4c1b48c6a433e194a42ce3d064cd43ceb7c3682f", + "url": "https://api.github.com/repos/symfony/debug/zipball/e2b3f74a67fc928adc3c1b9027f73e1bc01190a8", + "reference": "e2b3f74a67fc928adc3c1b9027f73e1bc01190a8", "shasum": "" }, "require": { @@ -1142,11 +1193,11 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2016-07-26 08:04:17" + "time": "2016-09-06 11:02:40" }, { "name": "symfony/event-dispatcher", - "version": "v3.1.3", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", @@ -1206,16 +1257,16 @@ }, { "name": "symfony/finder", - "version": "v3.1.3", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "8201978de88a9fa0923e18601bb17f1df9c721e7" + "reference": "205b5ffbb518a98ba2ae60a52656c4a31ab00c6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8201978de88a9fa0923e18601bb17f1df9c721e7", - "reference": "8201978de88a9fa0923e18601bb17f1df9c721e7", + "url": "https://api.github.com/repos/symfony/finder/zipball/205b5ffbb518a98ba2ae60a52656c4a31ab00c6f", + "reference": "205b5ffbb518a98ba2ae60a52656c4a31ab00c6f", "shasum": "" }, "require": { @@ -1251,20 +1302,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2016-06-29 05:41:56" + "time": "2016-09-28 00:11:12" }, { "name": "symfony/http-foundation", - "version": "v3.1.3", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "399a44b73f6c176de40fb063dcdaa578bcfb94d6" + "reference": "5114f1becca9f29e3af94374f1689c83c1aa3d97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/399a44b73f6c176de40fb063dcdaa578bcfb94d6", - "reference": "399a44b73f6c176de40fb063dcdaa578bcfb94d6", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5114f1becca9f29e3af94374f1689c83c1aa3d97", + "reference": "5114f1becca9f29e3af94374f1689c83c1aa3d97", "shasum": "" }, "require": { @@ -1304,20 +1355,20 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2016-07-17 14:02:08" + "time": "2016-09-21 20:55:10" }, { "name": "symfony/http-kernel", - "version": "v3.1.3", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "a8df564d323df5a3fec73085c30211a3ee448fb0" + "reference": "dc339d6eebadfa6e39c52868b4d4a715eff13c69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a8df564d323df5a3fec73085c30211a3ee448fb0", - "reference": "a8df564d323df5a3fec73085c30211a3ee448fb0", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/dc339d6eebadfa6e39c52868b4d4a715eff13c69", + "reference": "dc339d6eebadfa6e39c52868b4d4a715eff13c69", "shasum": "" }, "require": { @@ -1386,7 +1437,7 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2016-07-30 09:30:46" + "time": "2016-10-03 19:01:06" }, { "name": "symfony/polyfill-mbstring", @@ -1557,16 +1608,16 @@ }, { "name": "symfony/process", - "version": "v3.1.3", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "04c2dfaae4ec56a5c677b0c69fac34637d815758" + "reference": "66de154ae86b1a07001da9fbffd620206e4faf94" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/04c2dfaae4ec56a5c677b0c69fac34637d815758", - "reference": "04c2dfaae4ec56a5c677b0c69fac34637d815758", + "url": "https://api.github.com/repos/symfony/process/zipball/66de154ae86b1a07001da9fbffd620206e4faf94", + "reference": "66de154ae86b1a07001da9fbffd620206e4faf94", "shasum": "" }, "require": { @@ -1602,20 +1653,20 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2016-07-28 11:13:48" + "time": "2016-09-29 14:13:09" }, { "name": "symfony/routing", - "version": "v3.1.3", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "22c7adc204057a0ff0b12eea2889782a5deb70a3" + "reference": "8edf62498a1a4c57ba317664a4b698339c10cdf6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/22c7adc204057a0ff0b12eea2889782a5deb70a3", - "reference": "22c7adc204057a0ff0b12eea2889782a5deb70a3", + "url": "https://api.github.com/repos/symfony/routing/zipball/8edf62498a1a4c57ba317664a4b698339c10cdf6", + "reference": "8edf62498a1a4c57ba317664a4b698339c10cdf6", "shasum": "" }, "require": { @@ -1677,20 +1728,20 @@ "uri", "url" ], - "time": "2016-06-29 05:41:56" + "time": "2016-08-16 14:58:24" }, { "name": "symfony/translation", - "version": "v3.1.3", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "7713ddf81518d0823b027fe74ec390b80f6b6536" + "reference": "93013a18d272e59dab8e67f583155b78c68947eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/7713ddf81518d0823b027fe74ec390b80f6b6536", - "reference": "7713ddf81518d0823b027fe74ec390b80f6b6536", + "url": "https://api.github.com/repos/symfony/translation/zipball/93013a18d272e59dab8e67f583155b78c68947eb", + "reference": "93013a18d272e59dab8e67f583155b78c68947eb", "shasum": "" }, "require": { @@ -1741,20 +1792,20 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2016-07-26 08:04:17" + "time": "2016-09-06 11:02:40" }, { "name": "symfony/var-dumper", - "version": "v3.1.3", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "076235b750137518408f1bc17a8e69b43211836a" + "reference": "70bfe927b86ba9999aeebd829715b0bb2cd39a10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/076235b750137518408f1bc17a8e69b43211836a", - "reference": "076235b750137518408f1bc17a8e69b43211836a", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/70bfe927b86ba9999aeebd829715b0bb2cd39a10", + "reference": "70bfe927b86ba9999aeebd829715b0bb2cd39a10", "shasum": "" }, "require": { @@ -1804,20 +1855,20 @@ "debug", "dump" ], - "time": "2016-07-26 08:04:17" + "time": "2016-09-29 14:13:09" }, { "name": "vlucas/phpdotenv", - "version": "v2.3.0", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "9ca5644c536654e9509b9d257f53c58630eb2a6a" + "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/9ca5644c536654e9509b9d257f53c58630eb2a6a", - "reference": "9ca5644c536654e9509b9d257f53c58630eb2a6a", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c", + "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c", "shasum": "" }, "require": { @@ -1829,7 +1880,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "2.4-dev" } }, "autoload": { @@ -1854,7 +1905,7 @@ "env", "environment" ], - "time": "2016-06-14 14:14:52" + "time": "2016-09-01 10:05:43" } ], "packages-dev": [ @@ -2072,16 +2123,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.5.1", + "version": "1.5.4", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "a8773992b362b58498eed24bf85005f363c34771" + "reference": "ea74994a3dc7f8d2f65a06009348f2d63c81e61f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/a8773992b362b58498eed24bf85005f363c34771", - "reference": "a8773992b362b58498eed24bf85005f363c34771", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/ea74994a3dc7f8d2f65a06009348f2d63c81e61f", + "reference": "ea74994a3dc7f8d2f65a06009348f2d63c81e61f", "shasum": "" }, "require": { @@ -2110,7 +2161,7 @@ "object", "object graph" ], - "time": "2015-11-20 12:04:31" + "time": "2016-09-16 13:37:59" }, { "name": "phpdocumentor/reflection-common", @@ -2168,16 +2219,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "9270140b940ff02e58ec577c237274e92cd40cdd" + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9270140b940ff02e58ec577c237274e92cd40cdd", - "reference": "9270140b940ff02e58ec577c237274e92cd40cdd", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", "shasum": "" }, "require": { @@ -2209,7 +2260,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2016-06-10 09:48:41" + "time": "2016-09-30 07:12:33" }, { "name": "phpdocumentor/type-resolver", @@ -2566,24 +2617,24 @@ }, { "name": "phpunit/phpunit", - "version": "5.5.4", + "version": "5.6.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "3e6e88e56c912133de6e99b87728cca7ed70c5f5" + "reference": "60c32c5b5e79c2248001efa2560f831da11cc2d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3e6e88e56c912133de6e99b87728cca7ed70c5f5", - "reference": "3e6e88e56c912133de6e99b87728cca7ed70c5f5", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/60c32c5b5e79c2248001efa2560f831da11cc2d7", + "reference": "60c32c5b5e79c2248001efa2560f831da11cc2d7", "shasum": "" }, "require": { "ext-dom": "*", "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", "myclabs/deep-copy": "~1.3", "php": "^5.6 || ^7.0", "phpspec/prophecy": "^1.3.1", @@ -2605,7 +2656,11 @@ "conflict": { "phpdocumentor/reflection-docblock": "3.0.2" }, + "require-dev": { + "ext-pdo": "*" + }, "suggest": { + "ext-xdebug": "*", "phpunit/php-invoker": "~1.1" }, "bin": [ @@ -2614,7 +2669,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.5.x-dev" + "dev-master": "5.6.x-dev" } }, "autoload": { @@ -2640,20 +2695,20 @@ "testing", "xunit" ], - "time": "2016-08-26 07:11:44" + "time": "2016-10-07 13:03:26" }, { "name": "phpunit/phpunit-mock-objects", - "version": "3.2.6", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "46b249b43fd2ed8e127aa0fdb3cbcf56e9bc0e49" + "reference": "238d7a2723bce689c79eeac9c7d5e1d623bb9dc2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/46b249b43fd2ed8e127aa0fdb3cbcf56e9bc0e49", - "reference": "46b249b43fd2ed8e127aa0fdb3cbcf56e9bc0e49", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/238d7a2723bce689c79eeac9c7d5e1d623bb9dc2", + "reference": "238d7a2723bce689c79eeac9c7d5e1d623bb9dc2", "shasum": "" }, "require": { @@ -2699,7 +2754,7 @@ "mock", "xunit" ], - "time": "2016-08-26 05:51:59" + "time": "2016-10-09 07:01:45" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -3216,16 +3271,16 @@ }, { "name": "symfony/css-selector", - "version": "v3.1.3", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "2851e1932d77ce727776154d659b232d061e816a" + "reference": "ca809c64072e0fe61c1c7fb3c76cdc32265042ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/2851e1932d77ce727776154d659b232d061e816a", - "reference": "2851e1932d77ce727776154d659b232d061e816a", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ca809c64072e0fe61c1c7fb3c76cdc32265042ac", + "reference": "ca809c64072e0fe61c1c7fb3c76cdc32265042ac", "shasum": "" }, "require": { @@ -3265,20 +3320,20 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2016-06-29 05:41:56" + "time": "2016-09-06 11:02:40" }, { "name": "symfony/dom-crawler", - "version": "v3.1.3", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "c7b9b8db3a6f2bac76dcd9a9db5446f2591897f9" + "reference": "bb7395e8b1db3654de82b9f35d019958276de4d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/c7b9b8db3a6f2bac76dcd9a9db5446f2591897f9", - "reference": "c7b9b8db3a6f2bac76dcd9a9db5446f2591897f9", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/bb7395e8b1db3654de82b9f35d019958276de4d7", + "reference": "bb7395e8b1db3654de82b9f35d019958276de4d7", "shasum": "" }, "require": { @@ -3321,20 +3376,20 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2016-07-26 08:04:17" + "time": "2016-08-05 08:37:39" }, { "name": "symfony/yaml", - "version": "v3.1.3", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "1819adf2066880c7967df7180f4f662b6f0567ac" + "reference": "368b9738d4033c8b93454cb0dbd45d305135a6d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/1819adf2066880c7967df7180f4f662b6f0567ac", - "reference": "1819adf2066880c7967df7180f4f662b6f0567ac", + "url": "https://api.github.com/repos/symfony/yaml/zipball/368b9738d4033c8b93454cb0dbd45d305135a6d3", + "reference": "368b9738d4033c8b93454cb0dbd45d305135a6d3", "shasum": "" }, "require": { @@ -3370,7 +3425,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2016-07-17 14:02:08" + "time": "2016-09-25 08:27:07" }, { "name": "webmozart/assert", diff --git a/database/migrations/2016_08_30_201515_create_tests_table.php b/database/migrations/2016_08_30_201515_create_tests_table.php index ef838e4..8947bb0 100644 --- a/database/migrations/2016_08_30_201515_create_tests_table.php +++ b/database/migrations/2016_08_30_201515_create_tests_table.php @@ -16,10 +16,10 @@ class CreateTestsTable extends Migration Schema::create('tests', function (Blueprint $table) { $table->increments('id'); $table->string('title'); - $table->integer('group_id')->unsigned()->index()->nullable()->default(1); + $table->integer('group_id')->unsigned()->index()->default(1); $table->integer('question_count')->unsigned(); - $table->integer('question_count_to_fail')->unsigned()->nullable(); - $table->integer('time_limit')->unsigned; + $table->integer('question_count_to_fail')->unsigned()->default(0); + $table->integer('time_limit')->unsigned()->default(0); $table->timestamps(); }); } diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 4e02249..554a0c3 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -18,7 +18,11 @@ <tr> <td>{{ $test->title }}</td> <td>{{ $test->question_count }}</td> - <td>{{ $test->timeLimitInMinutes() }} min.</td> + @if ($test->time_limit === 0) + <td>Unlimited</td> + @else + <td>{{ $test->timeLimitInMinutes() }} min.</td> + @endif <td> <form method="get" class="pull-right"> <button class="btn btn-xs btn-default pull-left" formaction="/test/{{ $test->id }}">Start</button> diff --git a/resources/views/tests/new.blade.php b/resources/views/tests/new.blade.php index 9dcae79..8addcf3 100644 --- a/resources/views/tests/new.blade.php +++ b/resources/views/tests/new.blade.php @@ -4,6 +4,16 @@ <div class="container-fluid"> <div class="col-md-6 col-md-offset-3"> + @if (count($errors) > 0) + <div class="alert alert-danger"> + <ul> + @foreach ($errors->all() as $error) + <li>{{ $error }}</li> + @endforeach + </ul> + </div> + @endif + <h1>Create New Test</h1> </br> <form method="POST" action="/{{ Auth::user()->getAdminPath() }}/tests/new">