Skip to content
This repository was archived by the owner on May 7, 2019. It is now read-only.

Commit 2f5d61c

Browse files
Totally refactor caching so models pretty much handle their own caching with no outside interference
1 parent ebe73b7 commit 2f5d61c

File tree

13 files changed

+143
-151
lines changed

13 files changed

+143
-151
lines changed

app/Http/Controllers/Account/AccountController.php

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,19 @@
22

33
namespace App\Http\Controllers\Account;
44

5+
use App\Helpers;
56
use App\Http\Controllers\Controller;
67
use App\Http\Requests;
78
use App\Models\Upload;
89
use App\Models\User;
910
use Auth;
10-
use Cache;
11-
use App\Helpers;
1211
use Illuminate\Http\Request;
1312
use Illuminate\Mail\Message;
1413
use Mail;
1514
use Teapot\StatusCode;
1615

1716
class AccountController extends Controller
1817
{
19-
public function __construct()
20-
{
21-
parent::__construct();
22-
$userUploadCount = Cache::rememberForever('uploads_count:' . Auth::id(), function () {
23-
return Auth::user()->uploads->count();
24-
});
25-
26-
$userUploadTotalSize = Cache::rememberForever('uploads_size:' . Auth::id(), function () {
27-
return Auth::user()->uploads->sum('size');
28-
});
29-
30-
$userStorageQuota = Helpers::formatBytes(Cache::get('uploads_size:' . Auth::id()));
31-
if (config('upste.user_storage_quota') > 0 && !Auth::user()->isPrivilegedUser()) {
32-
$userStorageQuota = sprintf("%s / %s", $userStorageQuota, Helpers::formatBytes(config('upste.user_storage_quota')));
33-
}
34-
35-
view()->share(compact('userUploadCount', 'userUploadTotalSize', 'userStorageQuota'));
36-
}
37-
3818
public function getIndex()
3919
{
4020
return view('account.index');

app/Http/Controllers/Admin/AdminController.php

Lines changed: 5 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,14 @@
1010
use App\Helpers;
1111
use Illuminate\Mail\Message;
1212
use Mail;
13-
use Storage;
14-
use View;
1513

1614
class AdminController extends Controller
1715
{
1816
public function __construct()
1917
{
20-
parent::__construct();
2118
if (config('upste.require_user_approval')) {
2219
$requestCount = User::whereEnabled(false)->count();
23-
View::share('requestCount', $requestCount);
20+
view()->share('requestCount', $requestCount);
2421
}
2522
}
2623

@@ -42,18 +39,7 @@ public function getRequests()
4239

4340
public function getUsers()
4441
{
45-
$users = User::whereEnabled(true)->with('uploads')->paginate(Auth::user()->preferences->pagination_items);
46-
47-
foreach ($users as $user) {
48-
Cache::rememberForever('uploads_count:' . $user->id, function () use ($user) {
49-
return $user->uploads->count();
50-
});
51-
52-
Cache::rememberForever('uploads_size:' . $user->id, function () use ($user) {
53-
return $user->uploads->sum('size');
54-
});
55-
}
56-
42+
$users = User::whereEnabled(true)->paginate(Auth::user()->preferences->pagination_items);
5743
return view('admin.users', compact('users'));
5844
}
5945

@@ -79,17 +65,6 @@ public function postUserDelete(User $user)
7965
return redirect()->back();
8066
}
8167

82-
// Reimplemented here to allow CASCADE to do it's job, as opposed to using $upload->forceDelete()
83-
foreach ($user->uploads as $upload) {
84-
if (Storage::exists("uploads/" . $upload->name)) {
85-
Storage::delete("uploads/" . $upload->name);
86-
}
87-
88-
if (Storage::exists("thumbnails/" . $upload->name)) {
89-
Storage::delete("thumbnails/" . $upload->name);
90-
}
91-
}
92-
9368
$user->forceDelete();
9469
flash()->success(trans('messages.admin.deleted_user', ['name' => $user->name]));
9570

@@ -108,20 +83,14 @@ public function getUploads(User $user)
10883
{
10984
$allUploads = $user->uploads();
11085
$uploads = $allUploads->orderBy('created_at', 'desc')->paginate(Auth::user()->preferences->pagination_items);
111-
$uploadsTotalCount = Cache::rememberForever('uploads_count:' . $user->id, function () use ($allUploads) {
112-
return $allUploads->count();
113-
});
114-
115-
$uploadsTotalSize = Helpers::formatBytes(Cache::rememberForever('uploads_size:' . $user->id, function () use ($allUploads) {
116-
return $allUploads->sum('size');
117-
}));
11886

119-
return view('admin.uploads', compact('uploads', 'user', 'uploadsTotalCount', 'uploadsTotalSize'));
87+
return view('admin.uploads', compact('uploads', 'user'));
12088
}
12189

12290
public function postUserAccept(User $user)
12391
{
124-
$user->fill(['enabled' => true])->save();
92+
$user->enabled = true;
93+
$user->save();
12594

12695
$loginRoute = route('login');
12796
Mail::queue(['text' => 'emails.user.account_accepted'], compact('user', 'loginRoute'), function (Message $message) use ($user) {
@@ -130,7 +99,6 @@ public function postUserAccept(User $user)
13099
});
131100

132101
flash()->success(trans('messages.admin.account_accepted', ['name' => $user->name]));
133-
Helpers::invalidateCache();
134102

135103
return redirect()->back();
136104
}

app/Http/Controllers/Api/UploadController.php

Lines changed: 9 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,14 @@ public function post(Request $request)
3232
}
3333

3434
if ($uploadedFile->getSize() >= config('upste.upload_limit')) {
35-
return response()->json([trans(
36-
'messages.upload_too_large',
37-
['limit' => Helpers::formatBytes(config('upste.upload_limit'))]
38-
)], StatusCode::REQUEST_ENTITY_TOO_LARGE);
35+
$responseMsg = trans('messages.upload_too_large', ['limit' => Helpers::formatBytes(config('upste.upload_limit'))]);
36+
return response()->json($responseMsg, StatusCode::REQUEST_ENTITY_TOO_LARGE);
3937
}
4038

4139
// If this upload would hit the quota defined in .env, reject it.
42-
if (config('upste.user_storage_quota') > 0 && !Auth::user()->isPrivilegedUser() &&
43-
(Cache::get('uploads_size:' . Auth::id()) + $uploadedFile->getSize()) >= config('upste.user_storage_quota')) {
44-
return response()->json([trans(
45-
'messages.reached_upload_limit',
46-
['limit' => Helpers::formatBytes(config('upste.user_storage_quota'))]
47-
)], StatusCode::FORBIDDEN);
40+
if (config('upste.user_storage_quota') > 0 && !$request->user()->isPrivilegedUser() && ($request->user()->getUploadsSize() + $uploadedFile->getSize()) >= config('upste.user_storage_quota')) {
41+
$responseMsg = trans('messages.reached_upload_limit', ['limit' => Helpers::formatBytes(config('upste.user_storage_quota'))]);
42+
return response()->json($responseMsg, StatusCode::FORBIDDEN);
4843
}
4944

5045
$ext = strtolower($uploadedFile->getClientOriginalExtension());
@@ -56,10 +51,11 @@ public function post(Request $request)
5651
$originalName = $uploadedFile->getClientOriginalName();
5752

5853
// Check to see if we already have this file for this user.
59-
$existing = Upload::whereOriginalHash($originalHash)->whereUserId(Auth::id())->first();
54+
$existing = Upload::whereOriginalHash($originalHash)->whereUserId($request->user()->id)->first();
6055
if ($existing) {
6156
$result = [
62-
'url' => route('files.get', $existing)
57+
'url' => route('files.get', $existing),
58+
'delete_url' => route('account.uploads.delete', $existing),
6359
];
6460

6561
$existing->original_name = $originalName;
@@ -74,7 +70,7 @@ public function post(Request $request)
7470
} while (Upload::whereName($newName)->first() || $newName === 'index.php');
7571

7672
$upload = new Upload([
77-
'user_id' => Auth::id(),
73+
'user_id' => $request->user()->id,
7874
'name' => $newName,
7975
'original_name' => $originalName,
8076
'original_hash' => $originalHash
@@ -129,17 +125,4 @@ public function post(Request $request)
129125

130126
return response()->json($result, StatusCode::CREATED, [], JSON_UNESCAPED_SLASHES);
131127
}
132-
133-
public function get(Request $request)
134-
{
135-
$user = Auth::user();
136-
137-
if (Cache::get('uploads_count:' . $user->id) !== 0) {
138-
$uploads = $user->uploads->slice(0, $request->input('limit', Helpers::PAGINATION_DEFAULT_ITEMS));
139-
140-
return response()->json($uploads, StatusCode::CREATED, [], JSON_UNESCAPED_SLASHES);
141-
}
142-
143-
return response()->json([trans('messages.no_uploads_found')], StatusCode::NOT_FOUND, [], JSON_UNESCAPED_SLASHES);
144-
}
145128
}

app/Http/Controllers/Auth/AuthController.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ class AuthController extends Controller
3838
*/
3939
public function __construct()
4040
{
41-
parent::__construct();
4241
$this->redirectPath = route('index');
4342
}
4443

app/Http/Controllers/Auth/PasswordController.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ class PasswordController extends Controller
3030
*/
3131
public function __construct()
3232
{
33-
parent::__construct();
3433
$this->redirectTo = route('account');
3534
}
3635

@@ -55,7 +54,7 @@ public function sendResetLinkEmail(Request $request)
5554
$broker = $this->getBroker();
5655

5756
$passwordRoute = route('account.password.email');
58-
view()->composer('emails.user.password_reset', function($view) use ($passwordRoute) {
57+
view()->composer('emails.user.password_reset', function ($view) use ($passwordRoute) {
5958
$view->with(compact('passwordRoute'));
6059
});
6160

app/Http/Controllers/Controller.php

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,11 @@
22

33
namespace App\Http\Controllers;
44

5-
use Cache;
6-
use DB;
7-
use Helpers;
85
use Illuminate\Foundation\Bus\DispatchesJobs;
96
use Illuminate\Foundation\Validation\ValidatesRequests;
107
use Illuminate\Routing\Controller as BaseController;
118

129
class Controller extends BaseController
1310
{
1411
use DispatchesJobs, ValidatesRequests;
15-
16-
public function __construct()
17-
{
18-
$userCount = Cache::rememberForever('users', function () {
19-
return DB::table('users')->where('enabled', true)->count();
20-
});
21-
22-
$uploadCount = Cache::rememberForever('uploads', function () {
23-
return DB::table('uploads')->count();
24-
});
25-
26-
$uploadTotalSize = Cache::rememberForever('uploads_total_size', function () {
27-
return DB::table('uploads')->sum('size');
28-
});
29-
30-
view()->share(compact('userCount', 'uploadCount', 'uploadTotalSize'));
31-
}
3212
}

app/Http/helpers.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ class Helpers
2020
public static function invalidateCache()
2121
{
2222
if (Auth::check()) {
23-
Cache::forget('uploads_count:' . Auth::id());
24-
Cache::forget('uploads_size:' . Auth::id());
23+
Auth::user()->invalidateCache();
2524
}
2625

2726
Cache::forget('users');
@@ -127,4 +126,9 @@ public static function shouldThumbnail(UploadedFile $file)
127126

128127
return false;
129128
}
130-
}
129+
130+
public static function properize($string)
131+
{
132+
return $string . ends_with($string, 's') ? '\'' : 's';
133+
}
134+
}

0 commit comments

Comments
 (0)