5
5
use Illuminate \Http \Request ;
6
6
use Fuelviews \LaravelForms \Contracts \LaravelFormsHandlerService ;
7
7
use Illuminate \Routing \Controller ;
8
+ use Illuminate \Support \Carbon ;
9
+ use Spatie \GoogleTagManager \GoogleTagManager ;
8
10
9
- class LaravelFormSubmitController extends Controller
11
+ class LaravelFormsSubmitController extends Controller
10
12
{
11
13
protected LaravelFormsHandlerService $ formHandler ;
12
14
@@ -15,18 +17,11 @@ public function __construct(LaravelFormsHandlerService $formHandler)
15
17
$ this ->formHandler = $ formHandler ;
16
18
}
17
19
18
- public function handle (Request $ request )
20
+ public function handle (Request $ request ): \ Illuminate \ Http \ RedirectResponse
19
21
{
20
- // Check for UTM parameters and handle their absence
21
- $ gclid = $ request ->input ('gclid ' , 'gclid ' ); // Provide a default value or handle it differently
22
-
23
- \Log::info ('Parameters ' , [
24
- 'gclid ' => $ gclid ,
25
- ]);
26
-
27
- /*if ($this->isSpamRequest($request)) {
28
- return redirect()->to('https://yelp.com');
29
- }*/
22
+ if ($ this ->isSpamRequest ($ request )) {
23
+ return $ this ->redirectSpam ();
24
+ }
30
25
31
26
$ validatedData = $ request ->validate ([
32
27
'firstName ' => 'required|min:2|max:24 ' ,
@@ -44,7 +39,6 @@ public function handle(Request $request)
44
39
'utm_term ' => 'nullable|string ' ,
45
40
'utm_content ' => 'nullable|string ' ,
46
41
]);
47
-
48
42
$ validatedData ['ip ' ] = $ request ->ip ();
49
43
50
44
$ data = [
@@ -56,10 +50,14 @@ public function handle(Request $request)
56
50
$ result = $ this ->formHandler ->handle ($ data );
57
51
58
52
if ($ result ['status ' ] === 'success ' ) {
53
+ app (GoogleTagManager::class)->flash ('event ' , $ data ['gtmEventName ' ], [
54
+ 'event_label ' => $ data ['gtmEventName ' ],
55
+ ]);
56
+
59
57
return redirect ()->route ('thank-you ' )->with ('status ' , 'success ' );
60
- } else {
61
- return redirect ()->route ('thank-you ' )->with ('status ' , 'failure ' )->with ('error ' , $ result ['error ' ] ?? 'An unknown error occurred. ' );
62
58
}
59
+
60
+ return redirect ()->route ('thank-you ' )->with ('status ' , 'failure ' );
63
61
}
64
62
65
63
private function getApiUrl ($ formKey , $ lastSubmission )
@@ -73,17 +71,26 @@ private function getApiUrl($formKey, $lastSubmission)
73
71
return false ;
74
72
}
75
73
76
- /* if (app()->isProduction() && ! config('app.debug') ? 'production_url' : 'development_url' && $lastSubmission && now()->diffInMinutes($lastSubmission) < 60) {
77
- return redirect(route('home') );
78
- }*/
74
+ if (app ()->isProduction () && !config ('app.debug ' ) && $ lastSubmission && now ()->diffInMinutes (Carbon:: parse ( $ lastSubmission) ) < 60 ) {
75
+ return redirect ()-> back ( );
76
+ }
79
77
80
78
return $ url ;
81
79
}
82
80
83
- protected function isSpamRequest (Request $ request )
81
+ protected function isSpamRequest (Request $ request ): bool
84
82
{
85
83
return ! is_null ($ request ->input ('_gotcha ' )) ||
86
84
! is_null ($ request ->input ('is_spam ' )) ||
87
85
$ request ->has ('fakeSubmitClicked ' );
88
86
}
87
+
88
+ protected function redirectSpam (): \Illuminate \Http \RedirectResponse
89
+ {
90
+ $ redirects = config ('forms.spam_redirects ' , []);
91
+
92
+ $ randomRedirect = array_rand ($ redirects );
93
+
94
+ return redirect ()->to ($ redirects [$ randomRedirect ]);
95
+ }
89
96
}
0 commit comments