![]() 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 Doctrine\ORM\Tools\Pagination\Paginator; use Mautic\CoreBundle\Entity\CommonRepository; /** * @extends CommonRepository<LeadDevice> */ class LeadDeviceRepository extends CommonRepository { /** * {@inhertidoc}. * * @return Paginator */ public function getEntities(array $args = []) { $q = $this ->createQueryBuilder($this->getTableAlias()) ->select($this->getTableAlias()); $args['qb'] = $q; return parent::getEntities($args); } public function getTableAlias(): string { return 'd'; } /** * @return array */ public function getDevice($lead, $deviceNames = null, $deviceBrands = null, $deviceModels = null, $deviceOss = null, $deviceId = null) { $sq = $this->_em->getConnection()->createQueryBuilder(); $sq->select('es.id as id, es.device as device') ->from(MAUTIC_TABLE_PREFIX.'lead_devices', 'es'); if (null !== $deviceNames) { if (!is_array($deviceNames)) { $deviceNames = [$deviceNames]; } foreach ($deviceNames as $key => $deviceName) { $sq->andWhere( $sq->expr()->eq('es.device', ':device'.$key) ) ->setParameter('device'.$key, $deviceName); } } if (null !== $deviceBrands) { if (!is_array($deviceBrands)) { $deviceBrands = [$deviceBrands]; } foreach ($deviceBrands as $key => $deviceBrand) { $sq->andWhere( $sq->expr()->eq('es.device_brand', ':deviceBrand'.$key) ) ->setParameter('deviceBrand'.$key, $deviceBrand); } } if (null !== $deviceModels) { if (!is_array($deviceModels)) { $deviceModels = [$deviceModels]; } foreach ($deviceModels as $key => $deviceModel) { $sq->andWhere( $sq->expr()->eq('es.device_model', ':deviceModel'.$key) ) ->setParameter('deviceModel'.$key, $deviceModel); } } if (null !== $deviceOss) { if (!is_array($deviceOss)) { $deviceOss = [$deviceOss]; } foreach ($deviceOss as $key => $deviceOs) { $sq->andWhere( $sq->expr()->eq('es.device_os_name', ':deviceOs'.$key) ) ->setParameter('deviceOs'.$key, $deviceOs); } } if (null !== $deviceId) { $sq->andWhere( $sq->expr()->eq('es.id', $deviceId) ); } elseif (null !== $lead) { $sq->andWhere( $sq->expr()->eq('es.lead_id', $lead->getId()) ); } // get totals $device = $sq->executeQuery()->fetchAllAssociative(); return (!empty($device)) ? $device[0] : []; } /** * @param string $trackingId * * @return LeadDevice|null */ public function getByTrackingId($trackingId) { /** @var LeadDevice $leadDevice */ $leadDevice = $this->findOneBy([ 'trackingId' => $trackingId, ]); return $leadDevice; } /** * Check if there is at least one device with filled tracking code assigned to Lead. */ public function isAnyLeadDeviceTracked(Lead $lead): bool { $alias = $this->getTableAlias(); $qb = $this->createQueryBuilder($alias); $qb->where( $qb->expr()->andX( $qb->expr()->eq($alias.'.lead', ':lead'), $qb->expr()->isNotNull($alias.'.trackingId') ) ) ->setParameter('lead', $lead); $devices = $qb->getQuery()->getResult(); return !empty($devices); } public function getLeadDevices(Lead $lead): array { $qb = $this->getEntityManager()->getConnection()->createQueryBuilder(); return $qb->select('*') ->from(MAUTIC_TABLE_PREFIX.'lead_devices', 'es') ->where('lead_id = :leadId') ->setParameter('leadId', (int) $lead->getId()) ->orderBy('date_added', 'desc') ->executeQuery() ->fetchAllAssociative(); } /** * Updates lead ID (e.g. after a lead merge). */ public function updateLead($fromLeadId, $toLeadId): void { $q = $this->getEntityManager()->getConnection()->createQueryBuilder(); $q->update(MAUTIC_TABLE_PREFIX.'lead_devices') ->set('lead_id', (int) $toLeadId) ->where('lead_id = '.(int) $fromLeadId) ->executeStatement(); } }