![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/app/bundles/LeadBundle/Entity/ |
<?php namespace Mautic\LeadBundle\Entity; use Mautic\CoreBundle\Entity\CommonRepository; /** * @extends CommonRepository<ListLead> */ class ListLeadRepository extends CommonRepository { /** * Updates lead ID (e.g. after a lead merge). */ public function updateLead($fromLeadId, $toLeadId): void { // First check to ensure the $toLead doesn't already exist $results = $this->_em->getConnection()->createQueryBuilder() ->select('l.leadlist_id') ->from(MAUTIC_TABLE_PREFIX.'lead_lists_leads', 'l') ->where('l.lead_id = '.$toLeadId) ->executeQuery() ->fetchAllAssociative(); $lists = []; foreach ($results as $r) { $lists[] = $r['leadlist_id']; } $q = $this->_em->getConnection()->createQueryBuilder(); $q->update(MAUTIC_TABLE_PREFIX.'lead_lists_leads') ->set('lead_id', (int) $toLeadId) ->where('lead_id = '.(int) $fromLeadId); if (!empty($lists)) { $q->andWhere( $q->expr()->notIn('leadlist_id', $lists) )->executeStatement(); // Delete remaining leads as the new lead already belongs $this->_em->getConnection()->createQueryBuilder() ->delete(MAUTIC_TABLE_PREFIX.'lead_lists_leads') ->where('lead_id = '.(int) $fromLeadId) ->executeStatement(); } else { $q->executeStatement(); } } /** * @param mixed[] $filters */ public function getContactsCountBySegment(int $segmentId, array $filters = []): int { $qb = $this->createQueryBuilder('ll'); $qb->select('count(ll.list) as count') ->where('ll.list = :segmentId') ->setParameter('segmentId', $segmentId); foreach ($filters as $colName => $val) { $entityFieldName = lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $colName)))); $qb->andWhere(sprintf('ll.%s=:%s', $entityFieldName, $entityFieldName)); $qb->setParameter($entityFieldName, $val); } return (int) $qb->getQuery()->getSingleScalarResult(); } }