Skip to content
This repository was archived by the owner on Jan 3, 2023. It is now read-only.

Commit 947e8fd

Browse files
committed
- remove Ancestors & Descendants cache as it was cuzing lots of issues
and cant find away to properly clear the cache for them - some fixes & cleanup
1 parent c3d62da commit 947e8fd

25 files changed

+218
-140
lines changed

src/Controllers/Admin/MenusController.php

+10-6
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22

33
namespace ctf0\SimpleMenu\Controllers\Admin;
44

5-
use ctf0\SimpleMenu\Controllers\Admin\Traits\MenuOps;
6-
use ctf0\SimpleMenu\Controllers\BaseController;
5+
use Illuminate\Http\Request;
76
use ctf0\SimpleMenu\Models\Menu;
87
use ctf0\SimpleMenu\Models\Page;
9-
use Illuminate\Http\Request;
8+
use Illuminate\Support\Facades\Cache;
9+
use ctf0\SimpleMenu\Controllers\BaseController;
10+
use ctf0\SimpleMenu\Controllers\Admin\Traits\MenuOps;
1011

1112
class MenusController extends BaseController
1213
{
@@ -51,7 +52,7 @@ public function store(Request $request)
5152

5253
$this->clearCache();
5354

54-
return redirect()->route('admin.menus.index');
55+
return redirect()->route($this->crud_prefix.'.menus.index');
5556
}
5657

5758
/**
@@ -117,10 +118,13 @@ public function update($id, Request $request)
117118
*/
118119
public function destroy($id)
119120
{
120-
Menu::find($id)->delete();
121+
$menu = Menu::find($id);
122+
$menu->pages()->detach();
123+
$menu->delete();
121124

125+
Cache::forget('sm-pages');
122126
$this->clearCache();
123127

124-
return redirect()->route('admin.menus.index');
128+
return redirect()->route($this->crud_prefix.'.menus.index');
125129
}
126130
}

src/Controllers/Admin/PagesController.php

+9-6
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22

33
namespace ctf0\SimpleMenu\Controllers\Admin;
44

5-
use ctf0\SimpleMenu\Controllers\Admin\Traits\PageOps;
6-
use ctf0\SimpleMenu\Controllers\BaseController;
7-
use ctf0\SimpleMenu\Models\Page;
85
use Illuminate\Http\Request;
6+
use ctf0\SimpleMenu\Models\Page;
97
use Spatie\Permission\Models\Role;
8+
use Illuminate\Support\Facades\Cache;
9+
use ctf0\SimpleMenu\Controllers\BaseController;
10+
use ctf0\SimpleMenu\Controllers\Admin\Traits\PageOps;
1011

1112
class PagesController extends BaseController
1213
{
@@ -60,7 +61,7 @@ public function store(Request $request)
6061

6162
$this->clearCache();
6263

63-
return redirect()->route('admin.pages.index');
64+
return redirect()->route($this->crud_prefix.'.pages.index');
6465
}
6566

6667
/**
@@ -102,9 +103,10 @@ public function update($id, Request $request)
102103
$page->syncPermissions($permissions);
103104
$page->syncMenus($menus);
104105

106+
Cache::forget('sm-menus');
105107
$this->clearCache();
106108

107-
return redirect()->route('admin.pages.index');
109+
return redirect()->route($this->crud_prefix.'.pages.index');
108110
}
109111

110112
/**
@@ -118,8 +120,9 @@ public function destroy($id)
118120
{
119121
Page::find($id)->delete();
120122

123+
Cache::forget('sm-menus');
121124
$this->clearCache();
122125

123-
return redirect()->route('admin.pages.index');
126+
return redirect()->route($this->crud_prefix.'.pages.index');
124127
}
125128
}

src/Controllers/Admin/PermissionsController.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public function store(Request $request)
4545

4646
Permission::create($request->all());
4747

48-
return redirect()->route('admin.permissions.index');
48+
return redirect()->route($this->crud_prefix.'.permissions.index');
4949
}
5050

5151
/**
@@ -78,7 +78,7 @@ public function update($id, Request $request)
7878

7979
Permission::find($id)->update($request->all());
8080

81-
return redirect()->route('admin.permissions.index');
81+
return redirect()->route($this->crud_prefix.'.permissions.index');
8282
}
8383

8484
/**
@@ -92,6 +92,6 @@ public function destroy($id)
9292
{
9393
Permission::find($id)->delete();
9494

95-
return redirect()->route('admin.permissions.index');
95+
return redirect()->route($this->crud_prefix.'.permissions.index');
9696
}
9797
}

src/Controllers/Admin/RolesController.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public function store(Request $request)
5050

5151
$role->givePermissionTo($permissions);
5252

53-
return redirect()->route('admin.roles.index');
53+
return redirect()->route($this->crud_prefix.'.roles.index');
5454
}
5555

5656
/**
@@ -88,7 +88,7 @@ public function update($id, Request $request)
8888
$role->update($request->except('permissions'));
8989
$role->syncPermissions($permissions);
9090

91-
return redirect()->route('admin.roles.index');
91+
return redirect()->route($this->crud_prefix.'.roles.index');
9292
}
9393

9494
/**
@@ -102,6 +102,6 @@ public function destroy($id)
102102
{
103103
Role::find($id)->delete();
104104

105-
return redirect()->route('admin.roles.index');
105+
return redirect()->route($this->crud_prefix.'.roles.index');
106106
}
107107
}

src/Controllers/Admin/Traits/MenuOps.php

+7-5
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
namespace ctf0\SimpleMenu\Controllers\Admin\Traits;
44

5+
use Illuminate\Http\Request;
56
use ctf0\SimpleMenu\Models\Menu;
67
use ctf0\SimpleMenu\Models\Page;
7-
use Illuminate\Http\Request;
88
use Illuminate\Support\Facades\Cache;
99

1010
trait MenuOps
@@ -18,7 +18,7 @@ trait MenuOps
1818
*/
1919
public function getMenuPages($id)
2020
{
21-
$pages = cache('sm-menus')->find($id)->pages()->orderBy('pivot_order', 'asc')->get()->each(function ($item) {
21+
$pages = collect(Menu::with('pages')->find($id)->pages)->sortBy('pivot_order')->each(function ($item) {
2222
$item['from'] = 'pages';
2323
});
2424

@@ -76,7 +76,10 @@ public function removeChild(Request $request)
7676
protected function saveListToDb($list)
7777
{
7878
foreach ($list as $one) {
79-
$this->findPage($one->id)->makeChildOf($this->findPage($one->parent_id));
79+
$parent = $this->findPage($one->parent_id);
80+
81+
$this->findPage($one->id)->makeChildOf($parent);
82+
$parent->touch();
8083

8184
if ($one->children) {
8285
$this->saveListToDb($one->children);
@@ -95,7 +98,6 @@ protected function clearSelfAndNests($id)
9598
{
9699
$page = $this->findPage($id);
97100
$page->clearSelfAndDescendants();
98-
Cache::forget('sm-pages');
99101
}
100102

101103
protected function findPage($id)
@@ -105,6 +107,6 @@ protected function findPage($id)
105107

106108
protected function clearCache()
107109
{
108-
Cache::forget('sm-menus');
110+
return Cache::forget('sm-menus');
109111
}
110112
}

src/Controllers/Admin/Traits/PageOps.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,6 @@ protected function cleanEmptyTranslations($request)
8181

8282
protected function clearCache()
8383
{
84-
Cache::forget('sm-pages');
84+
return Cache::forget('sm-pages');
8585
}
8686
}

src/Controllers/Admin/UsersController.php

+6-6
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
namespace ctf0\SimpleMenu\Controllers\Admin;
44

55
use App\User;
6-
use ctf0\SimpleMenu\Controllers\BaseController;
76
use Illuminate\Http\Request;
87
use Spatie\Permission\Models\Role;
8+
use ctf0\SimpleMenu\Controllers\BaseController;
99

1010
class UsersController extends BaseController
1111
{
@@ -16,7 +16,7 @@ class UsersController extends BaseController
1616
*/
1717
public function index()
1818
{
19-
$users = $this->userModel->all();
19+
$users = cache('sm-users');
2020

2121
return view("{$this->adminPath}.users.index", compact('users'));
2222
}
@@ -58,7 +58,7 @@ public function store(Request $request)
5858
$user->assignRole($roles);
5959
$user->givePermissionTo($permissions);
6060

61-
return redirect()->route('admin.users.index');
61+
return redirect()->route($this->crud_prefix.'.users.index');
6262
}
6363

6464
/**
@@ -70,7 +70,7 @@ public function store(Request $request)
7070
*/
7171
public function edit($id)
7272
{
73-
$user = $this->userModel->find($id);
73+
$user = cache('sm-users')->find($id);
7474
$roles = Role::get()->pluck('name', 'name');
7575
$permissions = cache('spatie.permission.cache')->pluck('name', 'name');
7676

@@ -102,7 +102,7 @@ public function update($id, Request $request)
102102
$user->syncRoles($roles);
103103
$user->syncPermissions($permissions);
104104

105-
return redirect()->route('admin.users.index');
105+
return redirect()->route($this->crud_prefix.'.users.index');
106106
}
107107

108108
/**
@@ -120,6 +120,6 @@ public function destroy($id)
120120

121121
$this->userModel->find($id)->delete();
122122

123-
return redirect()->route('admin.users.index');
123+
return redirect()->route($this->crud_prefix.'.users.index');
124124
}
125125
}

src/Controllers/BaseController.php

+4-1
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,15 @@ class BaseController extends Controller
99
protected $templatePath;
1010
protected $adminPath;
1111
protected $userModel;
12+
protected $crud_prefix;
1213

1314
public function __construct()
1415
{
1516
$fw = config('simpleMenu.framework');
1617
$this->adminPath = "SimpleMenu::admin.{$fw}";
17-
$this->userModel = app(config('simpleMenu.userModel'));
1818
$this->templatePath = config('simpleMenu.templatePath');
19+
$this->crud_prefix = config('simpleMenu.crud_prefix');
20+
21+
$this->userModel = app(config('simpleMenu.userModel'));
1922
}
2023
}

src/Models/Page.php

+3-18
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ class Page extends Node
1515
protected $guard_name = 'web';
1616
protected $appends = ['nests'];
1717
protected $hidden = ['children'];
18+
protected $with = ['menuNames'];
1819
public $translatable = ['title', 'body', 'desc', 'prefix', 'url'];
1920

2021
public function menuNames()
@@ -55,32 +56,16 @@ public function syncMenus($menus)
5556
return $this->menuNames()->sync($menus);
5657
}
5758

58-
/**
59-
* override Baum\Node\getAncestors().
60-
*
61-
* @param array $columns [description]
62-
*
63-
* @return [type] [description]
64-
*/
65-
public function getAncestors($columns = ['*'])
66-
{
67-
return Cache::rememberForever(LaravelLocalization::getCurrentLocale()."-{$this->route_name}_ancestors", function () use ($columns) {
68-
return $this->ancestors()->get($columns);
69-
});
70-
}
71-
7259
/**
7360
* Descendants.
7461
*
7562
* @return [type] [description]
7663
*/
7764
public function getNestsAttribute()
7865
{
79-
return Cache::rememberForever(LaravelLocalization::getCurrentLocale()."-{$this->route_name}_nests", function () {
80-
$childs = array_flatten(current($this->getDescendants()->toHierarchy()));
66+
$childs = array_flatten(current($this->getDescendants()->toHierarchy()));
8167

82-
return count($childs) ? $childs : null;
83-
});
68+
return count($childs) ? $childs : null;
8469
}
8570

8671
/**

src/Observers/PageObserver.php

+8-13
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,16 @@ class PageObserver
1313
/**
1414
* Listen to the Page saved event.
1515
*/
16-
public function saved(Page $page)
16+
public function saving(Page $page)
1717
{
1818
return $this->cleanData($page);
1919
}
2020

2121
/**
2222
* Listen to the Page deleted event.
2323
*/
24-
public function deleted(Page $page)
24+
public function deleting(Page $page)
2525
{
26-
$page->roles()->detach();
27-
$page->permissions()->detach();
28-
2926
return $this->cleanData($page);
3027
}
3128

@@ -39,25 +36,23 @@ public function deleted(Page $page)
3936
protected function cleanData($page)
4037
{
4138
$route_name = $page->route_name;
39+
$locales = SimpleMenu::AppLocales();
40+
$menus = Menu::pluck('name');
4241

4342
// clear page session
4443
session()->forget($route_name);
4544

4645
// remove the route file
4746
File::delete(config('simpleMenu.routeListPath'));
4847

49-
foreach (SimpleMenu::AppLocales() as $code) {
50-
// clear menu cache
51-
cache('sm-menus')->pluck('name')->each(function ($name) use ($code) {
48+
foreach ($locales as $code) {
49+
foreach ($menus as $name) {
50+
// clear menu cache
5251
Cache::forget("{$name}Menu-{$code}Pages");
53-
});
52+
}
5453

5554
// clear page cache
5655
Cache::forget("$code-$route_name");
57-
58-
// clear ancestors & nests cache
59-
Cache::forget("$code-{$route_name}_ancestors");
60-
Cache::forget("$code-{$route_name}_nests");
6156
}
6257
}
6358
}

0 commit comments

Comments
 (0)