PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.3.2
GiveWP – Donation Plugin and Fundraising Platform v4.3.2
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 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / DonationSpam / Akismet / Actions / ValidateDonation.php
give / src / DonationSpam / Akismet / Actions Last commit date
ValidateDonation.php 1 year ago
ValidateDonation.php
64 lines
1 <?php
2
3 namespace Give\DonationSpam\Akismet\Actions;
4
5 use Give\DonationSpam\Akismet\API;
6 use Give\DonationSpam\Akismet\DataTransferObjects\CommentCheckArgs;
7 use Give\DonationSpam\Akismet\DataTransferObjects\SpamContext;
8 use Give\DonationSpam\EmailAddressWhiteList;
9 use Give\DonationSpam\Exceptions\SpamDonationException;
10 use Give\Log\Log;
11
12 /**
13 * @since 3.15.0
14 */
15 class ValidateDonation
16 {
17 /**
18 * @var API
19 */
20 protected $akismet;
21
22 /**
23 * @var EmailAddressWhiteList
24 */
25 protected $whitelist;
26
27 /**
28 * @since 3.15.0
29 */
30 public function __construct(API $akismet, EmailAddressWhiteList $whitelist)
31 {
32 $this->akismet = $akismet;
33 $this->whitelist = $whitelist;
34 }
35
36 /**
37 * @since 3.22.0 replaced params to $email, $comment, $firstName, $lastName
38 * @since 3.15.0
39 *
40 * @param string $email
41 * @param string $comment
42 * @param string $firstName
43 * @param string|null $lastName
44 * @throws SpamDonationException
45 */
46 public function __invoke(string $email, string $comment, string $firstName, string $lastName): void
47 {
48 if(!$this->whitelist->validate($email)) {
49
50 $args = CommentCheckArgs::make($comment, $email, $firstName);
51 $response = $this->akismet->commentCheck($args);
52 $spam = 'true' === $response[1];
53
54 if($spam) {
55 $message = "This donor's email ($firstName $lastName - $email) has been flagged as SPAM";
56 if(!give_akismet_is_email_logged($email)) {
57 Log::spam($message, (array) new SpamContext($args, $response));
58 }
59 throw new SpamDonationException($message);
60 }
61 }
62 }
63 }
64