108 lines
2.6 KiB
PHP
Executable File
108 lines
2.6 KiB
PHP
Executable File
<?php
|
|
|
|
namespace MauticPlugin\MauticFocusBundle\Entity;
|
|
|
|
use Mautic\CoreBundle\Entity\CommonRepository;
|
|
use Mautic\ProjectBundle\Entity\ProjectRepositoryTrait;
|
|
|
|
/**
|
|
* @extends CommonRepository<Focus>
|
|
*/
|
|
class FocusRepository extends CommonRepository
|
|
{
|
|
use ProjectRepositoryTrait;
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function findByForm($formId)
|
|
{
|
|
return $this->findBy(
|
|
[
|
|
'form' => (int) $formId,
|
|
]
|
|
);
|
|
}
|
|
|
|
public function getEntities(array $args = [])
|
|
{
|
|
$alias = $this->getTableAlias();
|
|
|
|
$q = $this->_em
|
|
->createQueryBuilder()
|
|
->select($alias)
|
|
->from(Focus::class, $alias, $alias.'.id');
|
|
|
|
if (empty($args['iterable_mode'])) {
|
|
$q->leftJoin($alias.'.category', 'c');
|
|
}
|
|
|
|
$args['qb'] = $q;
|
|
|
|
return parent::getEntities($args);
|
|
}
|
|
|
|
/**
|
|
* @param \Doctrine\ORM\QueryBuilder|\Doctrine\DBAL\Query\QueryBuilder $q
|
|
*/
|
|
protected function addCatchAllWhereClause($q, $filter): array
|
|
{
|
|
return $this->addStandardCatchAllWhereClause($q, $filter, ['f.name', 'f.website']);
|
|
}
|
|
|
|
/**
|
|
* @param \Doctrine\ORM\QueryBuilder|\Doctrine\DBAL\Query\QueryBuilder $q
|
|
*/
|
|
protected function addSearchCommandWhereClause($q, $filter): array
|
|
{
|
|
return match ($filter->command) {
|
|
$this->translator->trans('mautic.project.searchcommand.name'),
|
|
$this->translator->trans('mautic.project.searchcommand.name', [], null, 'en_US') => $this->handleProjectFilter(
|
|
$this->_em->getConnection()->createQueryBuilder(),
|
|
'focus_id',
|
|
'focus_projects_xref',
|
|
$this->getTableAlias(),
|
|
$filter->string,
|
|
$filter->not
|
|
),
|
|
default => $this->addStandardSearchCommandWhereClause($q, $filter),
|
|
};
|
|
}
|
|
|
|
/**
|
|
* @return string[]
|
|
*/
|
|
public function getSearchCommands(): array
|
|
{
|
|
return array_merge([
|
|
'mautic.project.searchcommand.name',
|
|
], $this->getStandardSearchCommands());
|
|
}
|
|
|
|
/**
|
|
* @return array<array<string>>
|
|
*/
|
|
protected function getDefaultOrder(): array
|
|
{
|
|
return [
|
|
[$this->getTableAlias().'.name', 'ASC'],
|
|
];
|
|
}
|
|
|
|
public function getTableAlias(): string
|
|
{
|
|
return 'f';
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function getFocusList($currentId)
|
|
{
|
|
$q = $this->createQueryBuilder('f');
|
|
$q->select('partial f.{id, name, description}')->orderBy('f.name');
|
|
|
|
return $q->getQuery()->getArrayResult();
|
|
}
|
|
}
|