Spaces:
No application file
No application file
| namespace Mautic\SmsBundle\Helper; | |
| use Doctrine\ORM\EntityManager; | |
| use libphonenumber\PhoneNumberFormat; | |
| use Mautic\CoreBundle\Helper\CoreParametersHelper; | |
| use Mautic\CoreBundle\Helper\PhoneNumberHelper; | |
| use Mautic\LeadBundle\Entity\DoNotContact as DoNotContactEntity; | |
| use Mautic\LeadBundle\Entity\LeadRepository; | |
| use Mautic\LeadBundle\Model\DoNotContact; | |
| use Mautic\LeadBundle\Model\LeadModel; | |
| use Mautic\PluginBundle\Helper\IntegrationHelper; | |
| use Mautic\SmsBundle\Form\Type\ConfigType; | |
| use Mautic\SmsBundle\Model\SmsModel; | |
| class SmsHelper | |
| { | |
| public function __construct( | |
| protected EntityManager $em, | |
| protected LeadModel $leadModel, | |
| protected PhoneNumberHelper $phoneNumberHelper, | |
| protected SmsModel $smsModel, | |
| protected IntegrationHelper $integrationHelper, | |
| private DoNotContact $doNotContact, | |
| private CoreParametersHelper $coreParametersHelper | |
| ) { | |
| } | |
| public function unsubscribe($number) | |
| { | |
| $number = $this->phoneNumberHelper->format($number, PhoneNumberFormat::E164); | |
| /** @var LeadRepository $repo */ | |
| $repo = $this->em->getRepository(\Mautic\LeadBundle\Entity\Lead::class); | |
| $args = [ | |
| 'filter' => [ | |
| 'force' => [ | |
| [ | |
| 'column' => 'mobile', | |
| 'expr' => 'eq', | |
| 'value' => $number, | |
| ], | |
| ], | |
| ], | |
| ]; | |
| $leads = $repo->getEntities($args); | |
| if (!empty($leads)) { | |
| $lead = array_shift($leads); | |
| } else { | |
| // Try to find the lead based on the given phone number | |
| $args['filter']['force'][0]['column'] = 'phone'; | |
| $leads = $repo->getEntities($args); | |
| if (!empty($leads)) { | |
| $lead = array_shift($leads); | |
| } else { | |
| return false; | |
| } | |
| } | |
| return $this->doNotContact->addDncForContact($lead->getId(), 'sms', DoNotContactEntity::UNSUBSCRIBED); | |
| } | |
| public function getDisableTrackableUrls(): bool | |
| { | |
| return $this->coreParametersHelper->get(ConfigType::SMS_DISABLE_TRACKABLE_URLS); | |
| } | |
| } | |