PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.17.0
GiveWP – Donation Plugin and Fundraising Platform v4.17.0
4.17.0 4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 All 256 releases
give / src / DonationSpam / Akismet / Actions / ValidateDonationOnFinalSubmission.php

ValidateDonationOnFinalSubmission.php in GiveWP – Donation Plugin and Fundraising Platform 4.17.0, at src/DonationSpam/Akismet/Actions/ValidateDonationOnFinalSubmission.php

62 lines 1.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Give\DonationSpam\Akismet\Actions;
4
5 use Give\DonationSpam\Exceptions\SpamDonationException;
6
7 /**
8 * Handles the givewp_donation_form_fields_validated action by running the Akismet spam check, but
9 * only for the final submission so Akismet isn't called on every step (which looks like a spam flood).
10 *
11 * @since 4.16.0
12 */
13 class ValidateDonationOnFinalSubmission
14 {
15 /**
16 * @var ValidateDonation
17 */
18 protected $validateDonation;
19
20 /**
21 * @since 4.16.0
22 */
23 public function __construct(ValidateDonation $validateDonation)
24 {
25 $this->validateDonation = $validateDonation;
26 }
27
28 /**
29 * The Akismet enabled/configured check lives here rather than on boot so it only runs when a
30 * donation is actually validated, not on every request.
31 *
32 * @since 4.16.0
33 *
34 * @throws SpamDonationException
35 */
36 public function __invoke(array $data, bool $isFinalSubmission = true): void
37 {
38 if (!$isFinalSubmission || !$this->isAkismetEnabledAndConfigured()) {
39 return;
40 }
41
42 ($this->validateDonation)(
43 $data['email'] ?? '',
44 $data['comment'] ?? '',
45 $data['firstName'] ?? '',
46 $data['lastName'] ?? ''
47 );
48 }
49
50 /**
51 * @since 4.16.0
52 */
53 protected function isAkismetEnabledAndConfigured(): bool
54 {
55 return
56 give_check_akismet_key()
57 && give_is_setting_enabled(
58 give_get_option('akismet_spam_protection', 'enabled')
59 );
60 }
61 }
62