<?php
namespace IUTUDC\WebsiteBundle\Twig;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\EntityManagerInterface;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
use IUTUDC\WebsiteBundle\Entity\FormationContinue;
use App\Entity\NewsTag;
use App\Entity\Pages\NewsPage;
class FunctionTwigExtension extends AbstractExtension
{
/**
* @var EntityManagerInterface
*/
protected $manager;
/**
* @param EntityManagerInterface $manager
*/
public function __construct(EntityManagerInterface $manager)
{
$this->manager = $manager;
}
public function getFunctions()
{
return array(
new TwigFunction('get_formations', array($this, 'getFormations')),
new TwigFunction('get_Formations_Continue', array($this, 'getFormationsContinue')),
new TwigFunction('get_last_news', array($this, 'getLastNews')),
new TwigFunction('get_news_by_tag_alumni', array($this, 'getNewsByTagAlumni')),
new TwigFunction('get_annee_de_promotion', array($this, 'getAnneeDePromotion')),
new TwigFunction('get_bg_color', array($this, 'getBgColor')),
new TwigFunction('get_public_cible', array($this, 'getPublicCible'))
);
}
public function getFormations()
{
$formations = $this->manager->getRepository('App\Entity\Pages\FormationsPage')->getArticles();
return $formations;
}
public function getFormationsContinue()
{
$formations = $this->manager->getRepository(FormationContinue::class)->findAll();
return $formations;
}
public function getLastNews()
{
return $this->manager->getRepository('App\Entity\Pages\NewsPage')->getLastArticles();
}
public function getNewsByTagAlumni()
{
// $tag = $this->manager->getRepository(NewsTag::class)->findOneByName('Alumni');
$news = $this->manager->getRepository(NewsPage::class)->getAlumniArticles();
return $news;
}
public function getAnneeDePromotion()
{
$year = [];
for ($i=2005; $i <= date('Y'); $i++)
{
$year[$i] = $i;
}
return new ArrayCollection($year);
}
public function getBgColor($formation)
{
$color = '';
switch ($formation->getUri()) {
case 'genie-informatique':
$color = '#0d8acc';
break;
case 'habitat-et-son-environnement':
$color = '#0d5b84';
break;
case 'tourisme-hotellerie':
$color = '#68c62b';
break;
case 'gestion-administration':
$color = '#535353';
break;
case 'statistiques':
$color = '#ccc717';
break;
case 'commerce':
$color = '#cc780d';
break;
}
return $color;
}
public function getPublicCible($value)
{
$array = array_unique(array_filter(array_map('trim', explode(',', $value))));
return $array;
}
}