<?php
namespace Notaris\AdminBundle\Entity;
use Doctrine\ORM\EntityRepository;
/**
* SubsiteModuleRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class SubsiteModuleRepository extends EntityRepository
{
/**
* @param $subsite
* @return mixed
*/
public function getModuleCount($subsite)
{
$em = $this->getEntityManager();
$qb = $em->createQueryBuilder();
$qb->select('count(m.id)');
$qb->from('NotarisAdminBundle:SubsiteModule', 'm')
->where('m.subsite = :subsite AND m.isActive = 1')
->setParameter('subsite', $subsite);
return $qb->getQuery()->getSingleScalarResult();
}
/**
* @param $slug
* @return mixed
*/
public function getMaxPosition($slug)
{
$em = $this->getEntityManager();
$con = $em->getConnection();
$sql = "SELECT MAX(m.position_num) as max
FROM subsite_module m
INNER JOIN subsite s ON s.id = m.subsite_id
WHERE s.slug = :slug";
$stmt = $con->prepare($sql);
$stmt->bindValue('slug', $slug);
$stmt = $stmt->execute();
return $stmt->fetchOne();
}
public function findAllCenterFromSubsite($subsite, $locale){
$query = $this->getEntityManager()
->createQuery(
"SELECT sm FROM
NotarisAdminBundle:SubsiteModule sm
WHERE sm.subsite = :subsite
AND sm.locale = :locale
AND sm.position = 'CENTER'
AND sm.publicationDate <= :now
AND sm.isActive = true
ORDER BY sm.position_num ASC"
)
->setParameter('now', new \DateTime('now'))
->setParameter('subsite', $subsite )
->setParameter('locale', $locale);
$modules = $query->getResult();
if($modules){
return $modules;
}
return false;
}
public function findAllRightFromSubsite($subsite, $locale){
$query = $this->getEntityManager()
->createQuery(
"SELECT sm FROM
NotarisAdminBundle:SubsiteModule sm
WHERE sm.subsite = :subsite
AND sm.locale = :locale
AND sm.position = 'RIGHT'
AND sm.publicationDate <= :now
AND sm.isActive = true
ORDER BY sm.position_num ASC"
)
->setParameter('now', new \DateTime('now'))
->setParameter('subsite', $subsite )
->setParameter('locale', $locale);
$modules = $query->getResult();
if($modules){
return $modules;
}
return false;
}
}