From 9cd6e0945db93f37fb6f039994046818338023fb Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Mon, 16 Jul 2018 11:10:01 +0800 Subject: [PATCH] booleanify `public` property --- app/Http/Controllers/SkinlibController.php | 18 +++++++++--------- app/Models/Closet.php | 2 +- app/Models/Texture.php | 4 ++-- .../2016_11_18_133939_create_all_tables.php | 2 +- .../assets/src/js/__tests__/skinlib.test.js | 12 ++++++------ resources/assets/src/js/skinlib/index.js | 2 +- resources/assets/src/js/skinlib/operations.js | 2 +- tests/ModelsTest/ClosetTest.php | 2 +- tests/SkinlibControllerTest.php | 12 ++++++------ 9 files changed, 28 insertions(+), 28 deletions(-) diff --git a/app/Http/Controllers/SkinlibController.php b/app/Http/Controllers/SkinlibController.php index 51787cd4..4ee3eb78 100644 --- a/app/Http/Controllers/SkinlibController.php +++ b/app/Http/Controllers/SkinlibController.php @@ -86,12 +86,12 @@ class SkinlibController extends Controller if ($anonymous) { // Show public textures only to anonymous visitors - $query = $query->where('public', 1); + $query = $query->where('public', true); } else { // Show private textures when show uploaded textures of current user if ($uploader != $this->user->uid && !$this->user->isAdmin()) { $query = $query->where(function ($innerQuery) { - $innerQuery->where('public', '=', '1')->orWhere('uploader', '=', $this->user->uid); + $innerQuery->where('public', true)->orWhere('uploader', '=', $this->user->uid); }); } } @@ -132,7 +132,7 @@ class SkinlibController extends Controller abort(404, trans('skinlib.show.deleted').trans('skinlib.show.contact-admin')); } - if ($texture->public == "0") { + if (!$texture->public) { if (is_null($this->user) || ($this->user->uid != $texture->uploader && !$this->user->isAdmin())) abort(403, trans('skinlib.show.private')); } @@ -171,11 +171,11 @@ class SkinlibController extends Controller $t->likes = 1; $t->hash = bs_hash_file($request->file('file')); $t->size = ceil($request->file('file')->getSize() / 1024); - $t->public = ($request->input('public') == 'true') ? "1" : "0"; + $t->public = $request->input('public') == 'true'; $t->uploader = $this->user->uid; $t->upload_at = Utils::getTimeFormatted(); - $cost = $t->size * (($t->public == "1") ? Option::get('score_per_storage') : Option::get('private_score_per_storage')); + $cost = $t->size * ($t->public ? Option::get('score_per_storage') : Option::get('private_score_per_storage')); $cost += option('score_per_closet_item'); if ($this->user->getScore() < $cost) @@ -187,7 +187,7 @@ class SkinlibController extends Controller foreach ($results as $result) { // if the texture already uploaded was set to private, // then allow to re-upload it. - if ($result->type == $t->type && $result->public == "1") { + if ($result->type == $t->type && $result->public) { return json(trans('skinlib.upload.repeated'), 0, [ 'tid' => $result->tid ]); @@ -229,7 +229,7 @@ class SkinlibController extends Controller if (option('return_score')) { if ($u = $users->get($result->uploader)) { - if ($result->public == 1) { + if ($result->public) { $u->setScore( $result->size * option('score_per_storage'), 'plus' ); @@ -256,7 +256,7 @@ class SkinlibController extends Controller if ($t->uploader != $this->user->uid && !$this->user->isAdmin()) return json(trans('skinlib.no-permission'), 1); - $score_diff = $t->size * (option('private_score_per_storage') - option('score_per_storage')) * ($t->public == 1 ? -1 : 1); + $score_diff = $t->size * (option('private_score_per_storage') - option('score_per_storage')) * ($t->public ? -1 : 1); if ($users->get($t->uploader)->getScore() + $score_diff < 0) { return json(trans('skinlib.upload.lack-score'), 1); } @@ -274,7 +274,7 @@ class SkinlibController extends Controller if ($t->setPrivacy(!$t->public)) { return json([ 'errno' => 0, - 'msg' => trans('skinlib.privacy.success', ['privacy' => ($t->public == "0" ? trans('general.private') : trans('general.public'))]), + 'msg' => trans('skinlib.privacy.success', ['privacy' => (!$t->public ? trans('general.private') : trans('general.public'))]), 'public' => $t->public ]); } diff --git a/app/Models/Closet.php b/app/Models/Closet.php index b94bad7e..87bc2f55 100644 --- a/app/Models/Closet.php +++ b/app/Models/Closet.php @@ -63,7 +63,7 @@ class Closet return true; } - if ($t->public == 0 && $t->uploader != $uid && !app('users')->get($uid)->isAdmin()) { + if (!$t->public && $t->uploader != $uid && !app('users')->get($uid)->isAdmin()) { return true; } diff --git a/app/Models/Texture.php b/app/Models/Texture.php index 61ced018..e5334ca9 100644 --- a/app/Models/Texture.php +++ b/app/Models/Texture.php @@ -19,12 +19,12 @@ class Texture extends Model 'likes' => 'integer', 'size' => 'integer', 'uploader' => 'integer', - 'public' => 'integer', + 'public' => 'boolean', ]; public function setPrivacy($public) { - $this->public = $public ? "1" : "0"; + $this->public = $public; return $this->save(); } diff --git a/database/migrations/2016_11_18_133939_create_all_tables.php b/database/migrations/2016_11_18_133939_create_all_tables.php index 623d2126..673754d3 100644 --- a/database/migrations/2016_11_18_133939_create_all_tables.php +++ b/database/migrations/2016_11_18_133939_create_all_tables.php @@ -49,7 +49,7 @@ class CreateAllTables extends Migration $table->string('hash', 64); $table->integer('size'); $table->integer('uploader'); - $table->integer('public'); + $table->tinyInteger('public'); $table->dateTime('upload_at'); }); diff --git a/resources/assets/src/js/__tests__/skinlib.test.js b/resources/assets/src/js/__tests__/skinlib.test.js index 7e09eca1..5a55b776 100644 --- a/resources/assets/src/js/__tests__/skinlib.test.js +++ b/resources/assets/src/js/__tests__/skinlib.test.js @@ -58,7 +58,7 @@ describe('tests for "index" module', () => { tid: 1, name: 'name', type: 'steve', - public: 0 + public: false }]); expect($('#skinlib-paginator').css('display')).not.toBe('none'); expect($('.item').attr('tid')).toBe('1'); @@ -75,7 +75,7 @@ describe('tests for "index" module', () => { tid: 1, name: 'name', type: 'steve', - public: 0, + public: false, liked: true }]); expect($('a.more.like').attr('title')).toBe('skinlib.removeFromCloset'); @@ -88,7 +88,7 @@ describe('tests for "index" module', () => { tid: 1, name: 'name', type: 'steve', - public: 0, + public: false, liked: false }]); expect($('a.more.like').attr('title')).toBe('skinlib.addToCloset'); @@ -101,7 +101,7 @@ describe('tests for "index" module', () => { tid: 1, name: 'name', type: 'steve', - public: 1, + public: true, liked: false }]); expect($('small.more').hasClass('hide')).toBe(true); @@ -560,8 +560,8 @@ describe('tests for "operations" module', () => { it('change privacy', async () => { const fetch = jest.fn() - .mockReturnValueOnce(Promise.resolve({ errno: 0, msg: 'success', public: '0' })) - .mockReturnValueOnce(Promise.resolve({ errno: 0, msg: 'success' })) + .mockReturnValueOnce(Promise.resolve({ errno: 0, msg: 'success', public: false })) + .mockReturnValueOnce(Promise.resolve({ errno: 0, msg: 'success', public: true })) .mockReturnValueOnce(Promise.resolve({ errno: 1, msg: 'warning' })) .mockReturnValueOnce(Promise.reject()); window.fetch = fetch; diff --git a/resources/assets/src/js/skinlib/index.js b/resources/assets/src/js/skinlib/index.js index 9922f727..ec718c94 100644 --- a/resources/assets/src/js/skinlib/index.js +++ b/resources/assets/src/js/skinlib/index.js @@ -120,7 +120,7 @@ function renderSkinlibItemComponent(item) { - + ${ trans('skinlib.private') } diff --git a/resources/assets/src/js/skinlib/operations.js b/resources/assets/src/js/skinlib/operations.js index dc4c962f..e4723fe2 100644 --- a/resources/assets/src/js/skinlib/operations.js +++ b/resources/assets/src/js/skinlib/operations.js @@ -179,7 +179,7 @@ async function changePrivacy(tid) { if (errno === 0) { toastr.success(msg); - if (result.public === '0') { + if (!result.public) { $(`a:contains("${trans('skinlib.setAsPrivate')}")`).html(trans('skinlib.setAsPublic')); } else { $(`a:contains("${trans('skinlib.setAsPublic')}")`).html(trans('skinlib.setAsPrivate')); diff --git a/tests/ModelsTest/ClosetTest.php b/tests/ModelsTest/ClosetTest.php index 7609e56c..843907c0 100644 --- a/tests/ModelsTest/ClosetTest.php +++ b/tests/ModelsTest/ClosetTest.php @@ -25,7 +25,7 @@ class ClosetTest extends TestCase $other = factory(User::class)->create(); $texture = factory(Texture::class)->create([ 'uploader' => $other->uid, - 'public' => 0 + 'public' => true ]); $user = factory(User::class)->create(); $closet = new Closet($user->uid); diff --git a/tests/SkinlibControllerTest.php b/tests/SkinlibControllerTest.php index 0b1ee51f..00f60d83 100644 --- a/tests/SkinlibControllerTest.php +++ b/tests/SkinlibControllerTest.php @@ -37,7 +37,7 @@ class SkinlibControllerTest extends TestCase 'hash' => $texture->hash, 'size' => $texture->size, 'uploader' => $texture->uploader, - 'public' => $texture->public ? 1 : 0, + 'public' => $texture->public, 'upload_at' => $texture->upload_at->format('Y-m-d H:i:s') ]; }) @@ -374,7 +374,7 @@ class SkinlibControllerTest extends TestCase 'hash' => $texture->hash, 'size' => $texture->size, 'uploader' => $texture->uploader, - 'public' => $texture->public ? 1 : 0, + 'public' => $texture->public, 'upload_at' => $texture->upload_at->format('Y-m-d H:i:s') ]); } @@ -605,8 +605,8 @@ class SkinlibControllerTest extends TestCase $this->assertEquals('steve', $t->type); $this->assertEquals(1, $t->likes); $this->assertEquals(1, $t->size); - $this->assertEquals('1', $t->public); $this->assertEquals($user->uid, $t->uploader); + $this->assertTrue($t->public); // Upload a duplicated texture $user = factory(User::class)->create(); @@ -744,7 +744,7 @@ class SkinlibControllerTest extends TestCase ->assertJson([ 'errno' => 0, 'msg' => trans('skinlib.privacy.success', ['privacy' => trans('general.private')]), - 'public' => 0 + 'public' => false ]); $this->assertEquals(0, Texture::find($texture->tid)->public); @@ -769,7 +769,7 @@ class SkinlibControllerTest extends TestCase ->assertJson([ 'errno' => 0, 'msg' => trans('skinlib.privacy.success', ['privacy' => trans('general.private')]), - 'public' => 0 + 'public' => false ]); $this->assertEquals(0, User::find($uploader->uid)->score); @@ -783,7 +783,7 @@ class SkinlibControllerTest extends TestCase ->assertJson([ 'errno' => 0, 'msg' => trans('skinlib.privacy.success', ['privacy' => trans('general.private')]), - 'public' => 0 + 'public' => false ]); $this->assertEquals(0, Player::find($player->pid)->tid_steve); }