Server IP : 172.67.158.161 / Your IP : 3.144.42.205 Web Server : LiteSpeed System : Linux business53.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : giankuin ( 1871) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/self/root/home/giankuin/thietke365.net/wp-content/plugins/mailpoet/lib/Subscribers/ |
Upload File : |
<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing namespace MailPoet\Subscribers; if (!defined('ABSPATH')) exit; use MailPoet\Entities\SubscriberEntity; use MailPoetVendor\Doctrine\ORM\EntityManager; class SubscriberPersonalDataEraser { /** @var SubscribersRepository */ private $subscribersRepository; /** @var EntityManager */ private $entityManager; /** @var SubscriberCustomFieldRepository */ private $subscriberCustomFieldRepository; public function __construct( SubscribersRepository $subscribersRepository, EntityManager $entityManager, SubscriberCustomFieldRepository $subscriberCustomFieldRepository ) { $this->subscribersRepository = $subscribersRepository; $this->entityManager = $entityManager; $this->subscriberCustomFieldRepository = $subscriberCustomFieldRepository; } public function erase($email) { if (empty($email)) { return [ 'items_removed' => false, 'items_retained' => false, 'messages' => [], 'done' => true, ]; } $subscriber = $this->subscribersRepository->findOneBy(['email' => trim($email)]); $itemRemoved = false; $itemsRetained = true; if ($subscriber) { $this->eraseCustomFields($subscriber); $this->anonymizeSubscriberData($subscriber); $itemRemoved = true; $itemsRetained = false; } return [ 'items_removed' => $itemRemoved, 'items_retained' => $itemsRetained, 'messages' => [], 'done' => true, ]; } private function eraseCustomFields(SubscriberEntity $subscriber) { $customFields = $this->subscriberCustomFieldRepository->findBy(['subscriber' => $subscriber]); foreach ($customFields as $customField) { $customField->setValue(''); $this->entityManager->persist($customField); } $this->entityManager->flush(); } private function anonymizeSubscriberData(SubscriberEntity $subscriber) { $subscriber->setEmail(sprintf('deleted-%[email protected]', bin2hex(random_bytes(12)))); // phpcs:ignore $subscriber->setFirstName('Anonymous'); $subscriber->setLastName('Anonymous'); $subscriber->setStatus(SubscriberEntity::STATUS_UNSUBSCRIBED); $subscriber->setSubscribedIp('0.0.0.0'); $subscriber->setConfirmedIp('0.0.0.0'); $subscriber->setUnconfirmedData(''); $this->entityManager->persist($subscriber); $this->entityManager->flush(); } }