Skip to content

Commit 664d155

Browse files
committed
Fix issues with md5 saving
1 parent 438687b commit 664d155

File tree

3 files changed

+25
-10
lines changed

3 files changed

+25
-10
lines changed

src/Blueprints/RedirectBlueprint.php

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,9 @@ public function __invoke()
2727
'validate' => ['required', 'string', function (string $attribute, $value, Closure $fail) {
2828
$selectedSite = Session::get('statamic.cp.selected-site', Site::current()->handle());
2929

30-
$existing = Redirect::query()
31-
->where('source', $value)
32-
->when(request()->route('id'), fn ($query) => $query->where('id', '!=', request()->route('id')))
33-
->where('site', $selectedSite)
34-
->first();
30+
$existing = Redirect::findByUrl($selectedSite, $value);
3531

36-
if ($existing) {
32+
if ($existing && $existing->id() !== request()->route('id')) {
3733
$fail(__("This source already has a redirect associated with it."));
3834
}
3935
}],

src/Controllers/RedirectController.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ public function store(Request $request)
9393
$redirect = Redirect::make()
9494
->locale($selectedSite)
9595
->source($request->get('source'))
96+
->source_md5(md5($request->get('source')))
9697
->destination($request->get('destination'))
9798
->enabled($request->get('enabled'))
9899
->type((int) $request->get('type'))
@@ -130,6 +131,7 @@ public function update($id, Request $request)
130131
$redirect
131132
->locale($selectedSite)
132133
->source($request->get('source'))
134+
->source_md5(md5($request->get('source')))
133135
->destination($request->get('destination'))
134136
->enabled($request->get('enabled'))
135137
->type((int) $request->get('type'))

src/Eloquent/Redirects/RedirectRepository.php

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,25 @@ public function findByUrl(string $siteHandle, string $url): ?Redirect
3636
->where('site', $siteHandle)
3737
->where(function (RedirectQueryBuilder $query) use ($url) {
3838
$query
39-
->orWhere('source', $url)
40-
->orWhere('source', str($url)->start('/'))
41-
->orWhere('source', str($url)->finish('/'))
42-
->orWhere('source', str($url)->start('/')->finish('/'));
39+
->orWhere(function (RedirectQueryBuilder $query) use ($url) {
40+
$query->where('source_md5', md5($url))
41+
->where('source', $url);
42+
})
43+
->orWhere(function (RedirectQueryBuilder $query) use ($url) {
44+
$source = str($url)->start('/');
45+
$query->where('source_md5', md5($source))
46+
->where('source', $source);
47+
})
48+
->orWhere(function (RedirectQueryBuilder $query) use ($url) {
49+
$source = str($url)->finish('/');
50+
$query->where('source_md5', md5($source))
51+
->where('source', $source);
52+
})
53+
->orWhere(function (RedirectQueryBuilder $query) use ($url) {
54+
$source = str($url)->start('/')->finish('/');
55+
$query->where('source_md5', md5($source))
56+
->where('source', $source);
57+
});
4358
})
4459
->where('match_type', MatchTypeEnum::EXACT)
4560
->orderBy('order')
@@ -104,6 +119,7 @@ public static function fromModel(Model $model)
104119
return (new Redirect)
105120
->id($model->id)
106121
->source($model->source)
122+
->source_md5(md5($model->source))
107123
->destination($model->destination)
108124
->type($model->type)
109125
->matchType($model->match_type)
@@ -117,6 +133,7 @@ private function toModel(Redirect $redirect)
117133
{
118134
$properties = [
119135
'source' => $redirect->source(),
136+
'source_md5' => md5($redirect->source()),
120137
'destination' => $redirect->destination(),
121138
'match_type' => $redirect->matchType(),
122139
'type' => $redirect->type(),

0 commit comments

Comments
 (0)