<?php
namespace App\Repository\Events;
use Doctrine\ORM\Query;
use App\Entity\Events\Events;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @method Events|null find($id, $lockMode = null, $lockVersion = null)
* @method Events|null findOneBy(array $criteria, array $orderBy = null)
* @method Events[] findAll()
* @method Events[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class EventsRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Events::class);
}
public function findByRange($startrange, $endrange, $status = 'inactive') {
return $this->createQueryBuilder('e')
->andWhere('e.start_day >= :starts AND e.start_day <= :ends AND e.status = :status')
->setParameter('starts', $startrange)
->setParameter('ends', $endrange)
->setParameter('status', $status)
->addOrderBy('e.start_day', 'ASC')
->setMaxResults(500)
->getQuery()
->getResult(Query::HYDRATE_ARRAY)
;
}
public function testGrouping($token) {
return $this->createQueryBuilder('e')
->andWhere('e.token = :token')
->setParameter('token', $token)
->orderBy('e.start_day', 'ASC')
->setMaxResults(1)
->getQuery()
->getOneOrNullResult()
;
}
public function xtestGrouping($name, $city, $state) {
return $this->createQueryBuilder('e')
->andWhere('e.name = :name')
->setParameter('name', $name)
->andWhere('e.city = :city')
->setParameter('city', $city)
->andWhere('e.state = :state')
->setParameter('state', $state)
->orderBy('e.start_day', 'ASC')
->setMaxResults(1)
->getQuery()
->getOneOrNullResult()
;
}
public function findByToken($name, $city, $startday) {
return $this->createQueryBuilder('e')
->andWhere('e.token = :token')
->setParameter('token', $this->makeSswToken($name, $city, 4))
->andWhere('e.city = :city')
->setParameter('city', $city)
->andWhere('e.start_day = :startday')
->setParameter('startday', $startday)
->orderBy('e.start_day', 'ASC')
->setMaxResults(1)
->getQuery()
->getOneOrNullResult()
;
}
public function makeSswToken($title = "", $city, $wcnt = 5) {
// Creates a slugged token for comparisons
$stopwords = array("a","about","actually","almost","ain't","aren't","also","although","always","am","an","and","any","are","as","at","be","became","become","but","by","can","could","did","do","does","each","either","else","for","from","had","has","have","hence","how","i","if","in","is","it","its","just","may","maybe","me","might","mine","must","my","mine","must","my","neither","nor","not","of","oh","ok","or","that","the", "then","when","where","whereas","wherever","whenever","whether","which","while","who","whom","whoever","whose","why","will","with","within","without","would","yes","yet","you","your");
//echo $title." now ";
$title = html_entity_decode(strip_tags($title));
$title = strtolower(str_replace("'s",'', $title));
$title = preg_replace("#[[:punct:]]#", "", $title);
$words = explode(' ', trim($title));
foreach ($words as $k => $word) {
if (strlen($word) <= 3) {
unset($words[$k]);
}
if (in_array(strtolower($word), $stopwords)) {
unset($words[$k]);
}
}
$words = array_slice(array_unique($words), 0, $wcnt);
if(!empty($city)) {
array_push($words, preg_replace('/[[:space:]]+/', '-', trim($city)));
}
$preslug = implode('-', $words);
$result = strtolower(preg_replace('/[^a-zA-Z0-9-]/','', $preslug));
//echo $result."<br>";
return $result;
}
// /**
// * @return Events[] Returns an array of Events objects
// */
/*
public function findByExampleField($value)
{
return $this->createQueryBuilder('e')
->andWhere('e.exampleField = :val')
->setParameter('val', $value)
->orderBy('e.id', 'ASC')
->setMaxResults(10)
->getQuery()
->getResult()
;
}
*/
/*
public function findOneBySomeField($value): ?Events
{
return $this->createQueryBuilder('e')
->andWhere('e.exampleField = :val')
->setParameter('val', $value)
->getQuery()
->getOneOrNullResult()
;
}
*/
}