From e4d970cb1aa886ff7213156bca539fa6640d18cd Mon Sep 17 00:00:00 2001 From: Kang Dels Date: Tue, 25 Jun 2019 18:53:43 +0700 Subject: [PATCH 1/3] Fix option value can accept null --- app/Services/Option.php | 8 ++++++-- tests/Unit/Services/SiteOptionTest.php | 11 +++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/Services/Option.php b/app/Services/Option.php index 00733b6..1fe09ca 100644 --- a/app/Services/Option.php +++ b/app/Services/Option.php @@ -45,12 +45,16 @@ class Option * Set new value for given option key. * * @param string $key The option key. - * @param string $value The option value to be saved. + * @param mixed $value The option value to be saved. * * @return string The option value. */ - public function set($key, string $value) + public function set($key, $value) { + if (is_null($value) || !is_string($value)) { + $value = ''; + } + $option = $this->option->where('key', $key)->first(); if ($option) { diff --git a/tests/Unit/Services/SiteOptionTest.php b/tests/Unit/Services/SiteOptionTest.php index 566e8ff..c2f3ae7 100644 --- a/tests/Unit/Services/SiteOptionTest.php +++ b/tests/Unit/Services/SiteOptionTest.php @@ -22,6 +22,17 @@ class SiteOptionTest extends TestCase } /** @test */ + public function option_value_null_must_be_converted_to_empty_string() + { + Option::set('testing_key', null); + + $this->seeInDatabase('site_options', [ + 'key' => 'testing_key', + 'value' => '', + ]); + } + + /** @test */ public function option_can_be_get() { \DB::table('site_options')->insert([ From ce07511172055a495e3e4cc7a16bc55fb5828608 Mon Sep 17 00:00:00 2001 From: Kang Dels Date: Tue, 25 Jun 2019 19:07:25 +0700 Subject: [PATCH 2/3] Refactor to use nullable typehint --- app/Services/Option.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Services/Option.php b/app/Services/Option.php index 1fe09ca..844d212 100644 --- a/app/Services/Option.php +++ b/app/Services/Option.php @@ -45,13 +45,13 @@ class Option * Set new value for given option key. * * @param string $key The option key. - * @param mixed $value The option value to be saved. + * @param string $value The option value to be saved. * * @return string The option value. */ - public function set($key, $value) + public function set($key, ?string $value) { - if (is_null($value) || !is_string($value)) { + if (is_null($value)) { $value = ''; } From 0ae6dd67e945a62e535c4df69f62cd38c85906ae Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Sun, 7 Jul 2019 15:45:06 +0800 Subject: [PATCH 3/3] Revert file permission --- public/.htaccess | 0 public/assets/.gitignore | 0 public/assets/css/.gitignore | 0 public/assets/css/app.css | 0 public/assets/css/bootstrap-theme.min.css | 0 public/assets/css/bootstrap.min.css | 0 public/assets/css/font-awesome.min.css | 0 public/assets/css/plugins/dataTables.bootstrap.css | 0 public/assets/css/plugins/fullcalendar.min.css | 0 public/assets/css/plugins/fullcalendar.print.css | 0 public/assets/css/plugins/jquery-ui.min.css | 0 public/assets/css/plugins/jquery.datetimepicker.css | 0 public/assets/css/plugins/metisMenu/metisMenu.css | 0 public/assets/css/plugins/metisMenu/metisMenu.min.css | 0 public/assets/css/plugins/morris.css | 0 public/assets/css/plugins/rangeslider.css | 0 public/assets/css/plugins/select2.min.css | 0 public/assets/css/plugins/social-buttons.css | 0 public/assets/css/plugins/timeline.css | 0 public/assets/css/sb-admin-2.css | 0 public/assets/fonts/FontAwesome.otf | Bin public/assets/fonts/fontawesome-webfont.eot | Bin public/assets/fonts/fontawesome-webfont.svg | 0 public/assets/fonts/fontawesome-webfont.ttf | Bin public/assets/fonts/fontawesome-webfont.woff | Bin public/assets/fonts/fontawesome-webfont.woff2 | Bin public/assets/imgs/.gitignore | 0 public/assets/imgs/default-logo.png | Bin public/assets/imgs/icon_user_1.png | Bin public/assets/imgs/icon_user_2.png | Bin public/assets/js/.gitignore | 0 public/assets/js/app.js | 0 public/assets/js/bootstrap.min.js | 0 public/assets/js/jquery.js | 0 public/assets/js/plugins/autoNumeric.min.js | 0 public/assets/js/plugins/fullcalendar.min.js | 0 public/assets/js/plugins/gcal.js | 0 public/assets/js/plugins/jquery-ui.min.js | 0 public/assets/js/plugins/jquery.datetimepicker.js | 0 public/assets/js/plugins/metisMenu/metisMenu.js | 0 public/assets/js/plugins/metisMenu/metisMenu.min.js | 0 public/assets/js/plugins/moment.min.js | 0 public/assets/js/plugins/morris/morris-data.js | 0 public/assets/js/plugins/morris/morris.min.js | 0 public/assets/js/plugins/morris/raphael.min.js | 0 public/assets/js/plugins/noty.js | 0 public/assets/js/plugins/rangeslider.min.js | 0 public/assets/js/plugins/select2.min.js | 0 public/assets/js/plugins/sortable.min.js | 0 public/assets/js/plugins/vue-resource.min.js | 0 public/assets/js/plugins/vue.min.js | 0 public/assets/js/sb-admin-2.js | 0 public/favicon.ico | 0 public/index.php | 0 public/mix-manifest.json | 0 public/robots.txt | 0 public/screenshots/pmo-dashboard-01.jpg | Bin public/screenshots/pmo-install-free-pmo.jpg | Bin public/screenshots/pmo-job-tasks-01.jpg | Bin public/screenshots/pmo-project-detail-01.jpg | Bin public/screenshots/pmo-project-jobs-01.jpg | Bin public/screenshots/pmo-testing-01.jpg | Bin public/screenshots/pmo-yearly-report-01.jpg | Bin public/web.config | 0 64 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 public/.htaccess mode change 100755 => 100644 public/assets/.gitignore mode change 100755 => 100644 public/assets/css/.gitignore mode change 100755 => 100644 public/assets/css/app.css mode change 100755 => 100644 public/assets/css/bootstrap-theme.min.css mode change 100755 => 100644 public/assets/css/bootstrap.min.css mode change 100755 => 100644 public/assets/css/font-awesome.min.css mode change 100755 => 100644 public/assets/css/plugins/dataTables.bootstrap.css mode change 100755 => 100644 public/assets/css/plugins/fullcalendar.min.css mode change 100755 => 100644 public/assets/css/plugins/fullcalendar.print.css mode change 100755 => 100644 public/assets/css/plugins/jquery-ui.min.css mode change 100755 => 100644 public/assets/css/plugins/jquery.datetimepicker.css mode change 100755 => 100644 public/assets/css/plugins/metisMenu/metisMenu.css mode change 100755 => 100644 public/assets/css/plugins/metisMenu/metisMenu.min.css mode change 100755 => 100644 public/assets/css/plugins/morris.css mode change 100755 => 100644 public/assets/css/plugins/rangeslider.css mode change 100755 => 100644 public/assets/css/plugins/select2.min.css mode change 100755 => 100644 public/assets/css/plugins/social-buttons.css mode change 100755 => 100644 public/assets/css/plugins/timeline.css mode change 100755 => 100644 public/assets/css/sb-admin-2.css mode change 100755 => 100644 public/assets/fonts/FontAwesome.otf mode change 100755 => 100644 public/assets/fonts/fontawesome-webfont.eot mode change 100755 => 100644 public/assets/fonts/fontawesome-webfont.svg mode change 100755 => 100644 public/assets/fonts/fontawesome-webfont.ttf mode change 100755 => 100644 public/assets/fonts/fontawesome-webfont.woff mode change 100755 => 100644 public/assets/fonts/fontawesome-webfont.woff2 mode change 100755 => 100644 public/assets/imgs/.gitignore mode change 100755 => 100644 public/assets/imgs/default-logo.png mode change 100755 => 100644 public/assets/imgs/icon_user_1.png mode change 100755 => 100644 public/assets/imgs/icon_user_2.png mode change 100755 => 100644 public/assets/js/.gitignore mode change 100755 => 100644 public/assets/js/app.js mode change 100755 => 100644 public/assets/js/bootstrap.min.js mode change 100755 => 100644 public/assets/js/jquery.js mode change 100755 => 100644 public/assets/js/plugins/autoNumeric.min.js mode change 100755 => 100644 public/assets/js/plugins/fullcalendar.min.js mode change 100755 => 100644 public/assets/js/plugins/gcal.js mode change 100755 => 100644 public/assets/js/plugins/jquery-ui.min.js mode change 100755 => 100644 public/assets/js/plugins/jquery.datetimepicker.js mode change 100755 => 100644 public/assets/js/plugins/metisMenu/metisMenu.js mode change 100755 => 100644 public/assets/js/plugins/metisMenu/metisMenu.min.js mode change 100755 => 100644 public/assets/js/plugins/moment.min.js mode change 100755 => 100644 public/assets/js/plugins/morris/morris-data.js mode change 100755 => 100644 public/assets/js/plugins/morris/morris.min.js mode change 100755 => 100644 public/assets/js/plugins/morris/raphael.min.js mode change 100755 => 100644 public/assets/js/plugins/noty.js mode change 100755 => 100644 public/assets/js/plugins/rangeslider.min.js mode change 100755 => 100644 public/assets/js/plugins/select2.min.js mode change 100755 => 100644 public/assets/js/plugins/sortable.min.js mode change 100755 => 100644 public/assets/js/plugins/vue-resource.min.js mode change 100755 => 100644 public/assets/js/plugins/vue.min.js mode change 100755 => 100644 public/assets/js/sb-admin-2.js mode change 100755 => 100644 public/favicon.ico mode change 100755 => 100644 public/index.php mode change 100755 => 100644 public/mix-manifest.json mode change 100755 => 100644 public/robots.txt mode change 100755 => 100644 public/screenshots/pmo-dashboard-01.jpg mode change 100755 => 100644 public/screenshots/pmo-install-free-pmo.jpg mode change 100755 => 100644 public/screenshots/pmo-job-tasks-01.jpg mode change 100755 => 100644 public/screenshots/pmo-project-detail-01.jpg mode change 100755 => 100644 public/screenshots/pmo-project-jobs-01.jpg mode change 100755 => 100644 public/screenshots/pmo-testing-01.jpg mode change 100755 => 100644 public/screenshots/pmo-yearly-report-01.jpg mode change 100755 => 100644 public/web.config diff --git a/public/.htaccess b/public/.htaccess old mode 100755 new mode 100644 diff --git a/public/assets/.gitignore b/public/assets/.gitignore old mode 100755 new mode 100644 diff --git a/public/assets/css/.gitignore b/public/assets/css/.gitignore old mode 100755 new mode 100644 diff --git a/public/assets/css/app.css b/public/assets/css/app.css old mode 100755 new mode 100644 diff --git a/public/assets/css/bootstrap-theme.min.css b/public/assets/css/bootstrap-theme.min.css old mode 100755 new mode 100644 diff --git a/public/assets/css/bootstrap.min.css b/public/assets/css/bootstrap.min.css old mode 100755 new mode 100644 diff --git a/public/assets/css/font-awesome.min.css b/public/assets/css/font-awesome.min.css old mode 100755 new mode 100644 diff --git a/public/assets/css/plugins/dataTables.bootstrap.css b/public/assets/css/plugins/dataTables.bootstrap.css old mode 100755 new mode 100644 diff --git a/public/assets/css/plugins/fullcalendar.min.css b/public/assets/css/plugins/fullcalendar.min.css old mode 100755 new mode 100644 diff --git a/public/assets/css/plugins/fullcalendar.print.css b/public/assets/css/plugins/fullcalendar.print.css old mode 100755 new mode 100644 diff --git a/public/assets/css/plugins/jquery-ui.min.css b/public/assets/css/plugins/jquery-ui.min.css old mode 100755 new mode 100644 diff --git a/public/assets/css/plugins/jquery.datetimepicker.css b/public/assets/css/plugins/jquery.datetimepicker.css old mode 100755 new mode 100644 diff --git a/public/assets/css/plugins/metisMenu/metisMenu.css b/public/assets/css/plugins/metisMenu/metisMenu.css old mode 100755 new mode 100644 diff --git a/public/assets/css/plugins/metisMenu/metisMenu.min.css b/public/assets/css/plugins/metisMenu/metisMenu.min.css old mode 100755 new mode 100644 diff --git a/public/assets/css/plugins/morris.css b/public/assets/css/plugins/morris.css old mode 100755 new mode 100644 diff --git a/public/assets/css/plugins/rangeslider.css b/public/assets/css/plugins/rangeslider.css old mode 100755 new mode 100644 diff --git a/public/assets/css/plugins/select2.min.css b/public/assets/css/plugins/select2.min.css old mode 100755 new mode 100644 diff --git a/public/assets/css/plugins/social-buttons.css b/public/assets/css/plugins/social-buttons.css old mode 100755 new mode 100644 diff --git a/public/assets/css/plugins/timeline.css b/public/assets/css/plugins/timeline.css old mode 100755 new mode 100644 diff --git a/public/assets/css/sb-admin-2.css b/public/assets/css/sb-admin-2.css old mode 100755 new mode 100644 diff --git a/public/assets/fonts/FontAwesome.otf b/public/assets/fonts/FontAwesome.otf old mode 100755 new mode 100644 diff --git a/public/assets/fonts/fontawesome-webfont.eot b/public/assets/fonts/fontawesome-webfont.eot old mode 100755 new mode 100644 diff --git a/public/assets/fonts/fontawesome-webfont.svg b/public/assets/fonts/fontawesome-webfont.svg old mode 100755 new mode 100644 diff --git a/public/assets/fonts/fontawesome-webfont.ttf b/public/assets/fonts/fontawesome-webfont.ttf old mode 100755 new mode 100644 diff --git a/public/assets/fonts/fontawesome-webfont.woff b/public/assets/fonts/fontawesome-webfont.woff old mode 100755 new mode 100644 diff --git a/public/assets/fonts/fontawesome-webfont.woff2 b/public/assets/fonts/fontawesome-webfont.woff2 old mode 100755 new mode 100644 diff --git a/public/assets/imgs/.gitignore b/public/assets/imgs/.gitignore old mode 100755 new mode 100644 diff --git a/public/assets/imgs/default-logo.png b/public/assets/imgs/default-logo.png old mode 100755 new mode 100644 diff --git a/public/assets/imgs/icon_user_1.png b/public/assets/imgs/icon_user_1.png old mode 100755 new mode 100644 diff --git a/public/assets/imgs/icon_user_2.png b/public/assets/imgs/icon_user_2.png old mode 100755 new mode 100644 diff --git a/public/assets/js/.gitignore b/public/assets/js/.gitignore old mode 100755 new mode 100644 diff --git a/public/assets/js/app.js b/public/assets/js/app.js old mode 100755 new mode 100644 diff --git a/public/assets/js/bootstrap.min.js b/public/assets/js/bootstrap.min.js old mode 100755 new mode 100644 diff --git a/public/assets/js/jquery.js b/public/assets/js/jquery.js old mode 100755 new mode 100644 diff --git a/public/assets/js/plugins/autoNumeric.min.js b/public/assets/js/plugins/autoNumeric.min.js old mode 100755 new mode 100644 diff --git a/public/assets/js/plugins/fullcalendar.min.js b/public/assets/js/plugins/fullcalendar.min.js old mode 100755 new mode 100644 diff --git a/public/assets/js/plugins/gcal.js b/public/assets/js/plugins/gcal.js old mode 100755 new mode 100644 diff --git a/public/assets/js/plugins/jquery-ui.min.js b/public/assets/js/plugins/jquery-ui.min.js old mode 100755 new mode 100644 diff --git a/public/assets/js/plugins/jquery.datetimepicker.js b/public/assets/js/plugins/jquery.datetimepicker.js old mode 100755 new mode 100644 diff --git a/public/assets/js/plugins/metisMenu/metisMenu.js b/public/assets/js/plugins/metisMenu/metisMenu.js old mode 100755 new mode 100644 diff --git a/public/assets/js/plugins/metisMenu/metisMenu.min.js b/public/assets/js/plugins/metisMenu/metisMenu.min.js old mode 100755 new mode 100644 diff --git a/public/assets/js/plugins/moment.min.js b/public/assets/js/plugins/moment.min.js old mode 100755 new mode 100644 diff --git a/public/assets/js/plugins/morris/morris-data.js b/public/assets/js/plugins/morris/morris-data.js old mode 100755 new mode 100644 diff --git a/public/assets/js/plugins/morris/morris.min.js b/public/assets/js/plugins/morris/morris.min.js old mode 100755 new mode 100644 diff --git a/public/assets/js/plugins/morris/raphael.min.js b/public/assets/js/plugins/morris/raphael.min.js old mode 100755 new mode 100644 diff --git a/public/assets/js/plugins/noty.js b/public/assets/js/plugins/noty.js old mode 100755 new mode 100644 diff --git a/public/assets/js/plugins/rangeslider.min.js b/public/assets/js/plugins/rangeslider.min.js old mode 100755 new mode 100644 diff --git a/public/assets/js/plugins/select2.min.js b/public/assets/js/plugins/select2.min.js old mode 100755 new mode 100644 diff --git a/public/assets/js/plugins/sortable.min.js b/public/assets/js/plugins/sortable.min.js old mode 100755 new mode 100644 diff --git a/public/assets/js/plugins/vue-resource.min.js b/public/assets/js/plugins/vue-resource.min.js old mode 100755 new mode 100644 diff --git a/public/assets/js/plugins/vue.min.js b/public/assets/js/plugins/vue.min.js old mode 100755 new mode 100644 diff --git a/public/assets/js/sb-admin-2.js b/public/assets/js/sb-admin-2.js old mode 100755 new mode 100644 diff --git a/public/favicon.ico b/public/favicon.ico old mode 100755 new mode 100644 diff --git a/public/index.php b/public/index.php old mode 100755 new mode 100644 diff --git a/public/mix-manifest.json b/public/mix-manifest.json old mode 100755 new mode 100644 diff --git a/public/robots.txt b/public/robots.txt old mode 100755 new mode 100644 diff --git a/public/screenshots/pmo-dashboard-01.jpg b/public/screenshots/pmo-dashboard-01.jpg old mode 100755 new mode 100644 diff --git a/public/screenshots/pmo-install-free-pmo.jpg b/public/screenshots/pmo-install-free-pmo.jpg old mode 100755 new mode 100644 diff --git a/public/screenshots/pmo-job-tasks-01.jpg b/public/screenshots/pmo-job-tasks-01.jpg old mode 100755 new mode 100644 diff --git a/public/screenshots/pmo-project-detail-01.jpg b/public/screenshots/pmo-project-detail-01.jpg old mode 100755 new mode 100644 diff --git a/public/screenshots/pmo-project-jobs-01.jpg b/public/screenshots/pmo-project-jobs-01.jpg old mode 100755 new mode 100644 diff --git a/public/screenshots/pmo-testing-01.jpg b/public/screenshots/pmo-testing-01.jpg old mode 100755 new mode 100644 diff --git a/public/screenshots/pmo-yearly-report-01.jpg b/public/screenshots/pmo-yearly-report-01.jpg old mode 100755 new mode 100644 diff --git a/public/web.config b/public/web.config old mode 100755 new mode 100644