You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.4 KiB
91 lines
2.4 KiB
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/* For licensing terms, see /license.txt */
|
|
|
|
namespace Chamilo\CoreBundle\Repository;
|
|
|
|
use Chamilo\CoreBundle\Entity\Language;
|
|
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
|
use Doctrine\Common\Collections\Collection;
|
|
use Doctrine\ORM\QueryBuilder;
|
|
use Doctrine\Persistence\ManagerRegistry;
|
|
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
|
|
|
|
class LanguageRepository extends ServiceEntityRepository
|
|
{
|
|
public function __construct(
|
|
ManagerRegistry $registry,
|
|
private readonly ParameterBagInterface $parameterBag,
|
|
) {
|
|
parent::__construct($registry, Language::class);
|
|
}
|
|
|
|
public function getAllAvailable($excludeDefaultLocale = false): QueryBuilder
|
|
{
|
|
$qb = $this->createQueryBuilder('l');
|
|
$qb
|
|
->where(
|
|
$qb->expr()->eq('l.available', true)
|
|
)
|
|
/*->andWhere(
|
|
$qb->expr()->isNull('l.parent')
|
|
)*/
|
|
;
|
|
|
|
if ($excludeDefaultLocale) {
|
|
$qb
|
|
->andWhere($qb->expr()->neq('l.isocode', ':iso_en'))
|
|
->setParameter('iso_en', $this->parameterBag->get('locale'))
|
|
;
|
|
}
|
|
|
|
return $qb;
|
|
}
|
|
|
|
public function getAllAvailableToArray(): array
|
|
{
|
|
$languages = $this->getAllAvailable()->getQuery()->getResult();
|
|
|
|
$list = [];
|
|
|
|
/** @var Language $language */
|
|
foreach ($languages as $language) {
|
|
$list[$language->getIsocode()] = $language->getOriginalName();
|
|
}
|
|
|
|
return $list;
|
|
}
|
|
|
|
/**
|
|
* Get all the sub languages that are made available by the admin.
|
|
*
|
|
* @return Collection|Language[]
|
|
*/
|
|
public function findAllSubLanguages()
|
|
{
|
|
$qb = $this->createQueryBuilder('l');
|
|
$qb->select('l')
|
|
->where(
|
|
$qb->expr()->eq('l.available', true)
|
|
)
|
|
->andWhere(
|
|
$qb->expr()->isNotNull('l.parent')
|
|
)
|
|
;
|
|
|
|
return $qb->getQuery()->getResult();
|
|
}
|
|
|
|
public function findByIsoCode(string $isoCode): ?Language
|
|
{
|
|
$qb = $this->createQueryBuilder('l');
|
|
$qb->where('l.isocode = :isoCode')
|
|
->setParameter('isoCode', $isoCode)
|
|
->setMaxResults(1)
|
|
;
|
|
|
|
return $qb->getQuery()->getSingleResult();
|
|
}
|
|
}
|
|
|