Spaces:
No application file
No application file
| namespace Mautic\PluginBundle\Entity; | |
| use Doctrine\ORM\Query; | |
| use Mautic\CoreBundle\Cache\ResultCacheHelper; | |
| use Mautic\CoreBundle\Cache\ResultCacheOptions; | |
| use Mautic\CoreBundle\Entity\CommonRepository; | |
| /** | |
| * @extends CommonRepository<Integration> | |
| */ | |
| class IntegrationRepository extends CommonRepository | |
| { | |
| /** | |
| * @return mixed[] | |
| */ | |
| public function getIntegrations(): array | |
| { | |
| $query = $this->createQueryBuilder('i') | |
| ->join('i.plugin', 'p') | |
| ->getQuery(); | |
| $this->enableCache($query); | |
| $services = $query->getResult(); | |
| $results = []; | |
| foreach ($services as $s) { | |
| $results[$s->getName()] = $s; | |
| } | |
| return $results; | |
| } | |
| /** | |
| * Get core (no plugin) integrations. | |
| * | |
| * @return mixed[] | |
| */ | |
| public function getCoreIntegrations(): array | |
| { | |
| $query = $this->createQueryBuilder('i') | |
| ->getQuery(); | |
| $this->enableCache($query); | |
| $services = $query->getResult(); | |
| $results = []; | |
| foreach ($services as $s) { | |
| $results[$s->getName()] = $s; | |
| } | |
| return $results; | |
| } | |
| public function findOneByName(string $name): ?Integration | |
| { | |
| $query = $this->createQueryBuilder('i') | |
| ->where('i.name = :name') | |
| ->setParameter('name', $name) | |
| ->setMaxResults(1) | |
| ->getQuery(); | |
| $this->enableCache($query); | |
| return $query->getOneOrNullResult(); | |
| } | |
| private function enableCache(Query $query): void | |
| { | |
| ResultCacheHelper::enableOrmQueryCache($query, new ResultCacheOptions(Integration::CACHE_NAMESPACE)); | |
| } | |
| } | |