<?php
namespace App\Controller;
use DateTime;
use App\Entity\Api\Article;
use Score\BaseBundle\Services\SeoUrl;
use Score\CmsBundle\Services\PageManager;
use Score\CmsBundle\Services\StatManager;
use Score\CmsBundle\Entity\Multisite\Site;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpKernel\KernelInterface;
use Score\CmsBundle\Entity\Article as EntityArticle;
use Symfony\Component\Console\Output\BufferedOutput;
use Score\CmsBundle\Entity\Multisite\SiteItemArticle;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Score\BaseBundle\Services\AdjacencyArrayTreeManager;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use League\HTMLToMarkdown\HtmlConverter;
class PublicController extends AbstractController
{
/**
* @Route("/", name="default_in_homepage")
* @Route("/{seoid}", name="default_in_subpage", requirements={"seoid"="^(?!login$|logout$|registration$|api/|user/|clanky/|udalosti/|file/|admin/|cookies$|vyhladavanie|_profiler/).+"}, condition="!request.isXmlHttpRequest()")
*/
public function subpageAction(PageManager $pageManager, $seoid = null, $cmsTemplate = true)
{
throw $this->createNotFoundException('Not found');
}
protected function updateEventSearch($event, $seoUrl)
{
$text = $event->getName().' '.$event->getTeaser().' '.$event->getContent().' '.$event->getContactPerson();
$search = strip_tags(mb_strtolower($seoUrl->removeDiacritic($text)));
$event->setSearch($search);
}
protected function updatePageSearch($page, $seoUrl)
{
$text = $page->getName().' '.$page->getTitle().' '.$page->getContent().' '.$page->getSeoId();
foreach($page->getPageBlocks() as $pb) {
$text .= $pb->getBlock()->getContent();
// TODO dorobit aj Texty a Widgety v html blokoch(aj opacne?)
}
$search = strip_tags(mb_strtolower($seoUrl->removeDiacritic($text)));
$page->setSearch($search);
}
protected function duplicateMenu()
{
}
/**
* @Route("/pl", name="post_install")
*/
public function postInstallAction(KernelInterface $kernel, SeoUrl $seoUrl)
{
$this->duplicateMenu();
exit;
// echo dirname(__DIR__);
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery('SELECT u FROM \Score\CmsBundle\Entity\Event\Event u');
$events = $query->getResult();
foreach($events as $event)
{
$this->updateEventSearch($event, $seoUrl);
$em->persist($event);
}
$query = $em->createQuery('SELECT u FROM \Score\CmsBundle\Entity\Page\Page u');
$pages= $query->getResult();
foreach($pages as $page)
{
$this->updatePageSearch($page, $seoUrl);
$em->persist($page);
}
$em->flush();
exit;
/*
$em = $this->getDoctrine()->getManager();
$site1 = new Site();
$site1->setName('INSPIRE');
$site1->setUrl('inspire.gov.sk');
$em->persist($site1);
$site2 = new Site();
$site2->setName('Geoportal');
$site2->setUrl('geoportal.gov.sk');
$em->persist($site2);
$site3 = new Site();
$site3->setName('RPI');
$site3->setUrl('rpi.gov.sk');
$em->persist($site3);
$em->flush();
*/
}
private function importArticles()
{
$em = $this->getDoctrine()->getManager();
$file = dirname(__DIR__).'/news_final.csv';
//$siteRepository = $em ->getRepository(SiteItemArticle::class);
$siteRepository = $em ->getRepository(Site::class);
$inspireSite = $siteRepository->findOneBy(['name' => 'INSPIRE']);
$row = 1;
if (($handle = fopen($file , "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
//var_dump($data);
$article = new EntityArticle();
$article->setName($data[7]);
$article->setBody($data[14]);
$article->setPublished(1);
$article->setCreatedBy(1);
$article->setIcon('/bundles/scorecms/idsk/img/default-image.png');
$article->setPriority(20);
$article->setAuthor('Tím Inspire');
$article->setPublishedFrom(new \DateTime($data[3]));
$article->setSlug($data[6]);
//$article->setSiteItemArticle([$articleSite]);
//$article->setSearch();
$article->setCategory('standard');
$article->setVisibility(true);
$article->setCreatedAt(new \DateTime($data[2]));
$search = strip_tags(mb_strtolower($seoUrl->removeDiacritic($article->getName().' '.$article->getTeaser().' '.$article->getBody().' '.$article->getAuthor())));
$article->setSearch($search);
$em->persist($article);
$articleSite = new SiteItemArticle();
$articleSite->setSite($inspireSite);
$articleSite->setArticle($article);
$em->persist($articleSite);
$em->flush();
/*
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
*/
}
fclose($handle);
}
}
}