Viewing File: /usr/local/cpanel/whostmgr/docroot/cgi/ncssl/source/src/Repository/CertificateRepository.php
<?php
namespace App\Repository;
use App\Entity\Certificate;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* @extends ServiceEntityRepository<Certificate>
*
* @method Certificate|null find($id, $lockMode = null, $lockVersion = null)
* @method Certificate|null findOneBy(array $criteria, array $orderBy = null)
* @method Certificate[] findAll()
* @method Certificate[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class CertificateRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Certificate::class);
}
public function getAllPendingInstallation(UserInterface $user, int $maxCertificateInstallationAttempts): array
{
$qb = $this->createQueryBuilder('c');
$query = $qb->select()
->leftJoin('c.user', 'u')
->add('where',
$qb->expr()->andX(
$qb->expr()->orX(
$qb->expr()->eq('c.status', ':inProgressStatus'),
$qb->expr()->andX(
$qb->expr()->eq('c.status', ':activeStatus'),
$qb->expr()->isNull('c.cpanelId')
)
),
$qb->expr()->eq('u.id', ':userId'),
$qb->expr()->lt('c.failedInstallationAttempts', ':maxCertificateInstallationAttempts')
)
)
->setParameters([
'inProgressStatus' => Certificate::STATUS_INPROGRESS,
'activeStatus' => Certificate::STATUS_ACTIVE,
'userId' => $user->getId(),
'maxCertificateInstallationAttempts' => $maxCertificateInstallationAttempts
])
->getQuery()
;
return $query->getResult();
}
public function removePreviousCertificate(Certificate $certificate): void
{
$qb = $this->createQueryBuilder('c');
$query = $qb->delete()
->add('where',
$qb->expr()->andX(
$qb->expr()->eq('c.host', ':host'),
$qb->expr()->eq('c.user', ':userId'),
$qb->expr()->neq('c.id', ':currentId')
)
)
->setParameters([
'host' => $certificate->getHost(),
'userId' => $certificate->getUser()->getId(),
'currentId' => $certificate->getId(),
])
->getQuery();
$query->execute();
}
/**
* @param int $userId
* @param bool $isArrayResult
*
* @return array
*/
public function getCertificatesByUserId(int $userId): array
{
$qb = $this->createQueryBuilder('c');
$query = $qb->select()
->leftJoin('c.user', 'u')
->add('where',
$qb->expr()->eq('u.id', ':userId')
)
->setParameters([
'userId' => $userId
])
->getQuery()
;
return $query->getResult();
}
/**
* @param string $userName
*
* @return array
*/
public function getCertificatesByUserName(string $userName): array
{
$qb = $this->createQueryBuilder('c');
$query = $qb->select()
->leftJoin('c.user', 'u')
->add('where',
$qb->expr()->eq('u.name', ':userName')
)
->addOrderBy('c.ncId', 'ASC')
->setParameters([
'userName' => $userName
])
->getQuery()
;
return $query->getArrayResult();
}
/**
* @param int $userId
* @param string $userNcLogin
*
* @return array
*/
public function getCertificatesForLocalDbUpdate(int $userId, string $userNcLogin): array
{
$qb = $this->createQueryBuilder('c');
$query = $qb->select()
->leftJoin('c.user', 'u')
->add('where',
$qb->expr()->andX(
$qb->expr()->eq('u.id', ':userId'),
$qb->expr()->eq('u.ncLogin', ':userNcLogin')
)
)
->setParameters([
'userId' => $userId,
'userNcLogin' => $userNcLogin
])
->getQuery()
;
return $query->getArrayResult();
}
/**
* @param int $id
* @param int $userId
*
* @return void
*/
public function deleteById(int $id, int $userId): void
{
$qb = $this->createQueryBuilder('c');
$query = $qb->delete()
->add('where',
$qb->expr()->andX(
$qb->expr()->eq('c.id', ':id'),
$qb->expr()->eq('c.user', ':userId')
)
)
->setParameters([
'id' => $id,
'userId' => $userId,
])
->getQuery();
$query->execute();
}
public function updateToggle(int $certificateId, bool $status): void
{
if ($certificateId === 0) {
throw new \InvalidArgumentException('Certificate Id is empty');
}
$qb = $this->createQueryBuilder('c');
$qb->update()
->set('c.autoRedirect', ':status')
->where('c.ncId = :certificateId')
->setParameter('status', $status)
->setParameter('certificateId', $certificateId)
->getQuery()
->execute();
}
}
Back to Directory
File Manager