<?php
namespace Customize\Controller\Block;
use Eccube\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
function url2link($body, $link_title = null)
{
$pattern = '/(?<!href=")https?:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:@&=+$,%#]+/';
$body = preg_replace_callback($pattern, function ($matches) use ($link_title) {
$link_title = $link_title ?: $matches[0];
return '<a href="' . $matches[0] . '" target="_blank">' . $link_title . '</a>';
}, $body);
return $body;
}
class ZenNewsController extends AbstractController
{
/**
* @var EntityManagerInterface
*/
protected $entityManager;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
/**
* @Route("/block/zen_news", name="block_zen_news")
* @Template("user_data/zen_news.twig")
*/
public function index(Request $request, SessionInterface $session)
{
$id = $session->get('blb_id2', '0'); // 'default_value'は値がない場合のデフォルト
$category = '';
// SQLクエリを実行してデータを取得
$connection = $this->entityManager->getConnection();
$sql = 'SELECT * FROM `blb_information` WHERE `view`=1 AND `id`=' . $id;
$stmt = $connection->prepare($sql);
$result = $stmt->executeQuery();
$newsList = $result->fetchAllAssociative();
$news = array();
if (count($newsList)) {
$newsList[0]['text1'] = nl2br(url2link($newsList[0]['text1']));
if (file_exists('up_images/news/' . $newsList[0]['id'] . '/1.jpg')) {
$newsList[0]['image'] = '../up_images/news/' . $newsList[0]['id'] . '/1.jpg';
} else {
$newsList[0]['image'] = '';
}
$news = $newsList[0];
$category = $news['category'];
}
// テンプレートにデータを渡してレンダリング
/*
return [
'NewsList' => $newsList
];
*/
return $this->render('Block/zen_news.twig', [
'Category' => $category,
'News' => $news,
]);
}
}