<?php
namespace App\Controller\RCS;
use Symfony\Component\Routing\Annotation\Route;
use App\Utils\CategoryHelper;
use App\Utils\ContentHelper;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class CategoryController extends DefaultController
{
/**
* @Route("/category/newsroom", name="newsroom-redirect")
*/
public function newsroomredirect(
Request $request,
ContentHelper $helper
) {
return $this->redirectToRoute("catchall", [
"slug" => "news-room",
]);
}
/**
* @Route("/category/rcs-influencers", name="influencers-redirect")
*/
public function influencersredirect(
Request $request,
ContentHelper $helper
) {
$page = $helper->getPageBySlug("rcs-influencers");
return $this->defaultRender("content/content.html.twig", [
"content" => $page,
"meta" => [
"title" => $page->getTitle(),
],
]);
}
/**
* @Route("/category/ebooks/{slug}", name="ebooks")
*/
public function ebookRedirect(
Request $request,
CategoryHelper $helper,
ContentHelper $content_helper,
$slug = ""
) {
//Silly exception since the 'downloads' category is called 'misfits'
if($slug == "downloads") {
$slug = "ebooks-misfits";
$category = $helper->getCategoriesBySlug($slug, "ebook-category");
$ebooks = $content_helper->getEbooksByCategory($category[0]);
return $this->defaultRender("content/tmpl/ebooks-list.html.twig",[
"eBooks" => $ebooks,
"title" => "Downloads",
"showSortSelect" => true,
"meta" => [
"title" => "Downloads",
"breadcrumbs" => [
[
"title" => "eBooks",
"href" => "/ebooks",
],
[
"title" =>"Downloads",
"href" => "/category/ebooks/{$slug}",
],
],
]
]);
}
$category = $helper->getCategoriesBySlug($slug, "ebook-category");
$ebooks = $content_helper->getEbooksByCategory($category[0]);
return $this->defaultRender("content/tmpl/ebooks-list.html.twig",[
"eBooks" => $ebooks,
"title" => $category[0],
"meta" => [
"title" => $category[0],
"breadcrumbs" => [
[
"title" => "eBooks",
"href" => "/ebooks",
],
[
"title" => $category[0],
"href" => "/category/ebooks/{$slug}",
],
],
]
]);
}
/**
* @Route("/category/webinars/{slug}/{page}", name="webinars")
*/
public function webinarCategories(
Request $request,
CategoryHelper $helper,
ContentHelper $content_helper,
$slug = "",
$page = 1
) {
//Todo: combine this and partner-webinars into generals webinar index route
$length = 10;
$includeChildren = false;
$categories = $helper->getCategoriesBySlug($slug, "webinar-type");
$category = $categories[0];
$webinars = $content_helper->getContentByCategories(8, $categories, $length, $page, "", $includeChildren);
$total = $content_helper->countContentByCategories(8, $categories, $includeChildren);
return $this->defaultRender("content/post.html.twig", [
"category" => $category,
"posts" => $webinars,
"total" => $total,
"length" => $length,
"page" => $page,
"meta" => [
"breadcrumbs" => [
[
"title" => "RCS Webinar Series",
"href" => "/rcs-webinar-series",
],
[
"title" => $category,
"href" => "/category/webinars/{$slug}",
],
],
]
]);
}
/**
* @Route("/category/partner-webinars/{slug}/{page}", name="partner-webinars")
*/
public function partnerWebinarCategories(
Request $request,
CategoryHelper $helper,
ContentHelper $content_helper,
$slug = "",
$page = 1
) {
$length = 10;
$includeChildren = false;
$categories = $helper->getCategoriesBySlug($slug, "partner-webdinar-type");
$category = $categories[0];
$webinars = $content_helper->getContentByCategories(8, $categories, $length, $page, "", $includeChildren);
$total = $content_helper->countContentByCategories(8, $categories, $includeChildren);
return $this->defaultRender("content/post.html.twig", [
"category" => $category,
"posts" => $webinars,
"total" => $total,
"length" => $length,
"page" => $page,
"meta" => [
"breadcrumbs" => [
[
"title" => "Partner Webinars",
"href" => "/partner-webinars",
],
[
"title" => $category,
"href" => "/category/partner-webinars/{$slug}",
],
],
]
]);
}
/**
* @Route("/category/{category_slug1}/{category_slug2}/{page}",
* name="category",
* defaults={"category_slug1": "", "category_slug2": "", "page": 0}
* )
*/
public function index(
Request $request,
CategoryHelper $helper,
ContentHelper $content_helper,
$category_slug1 = "",
$category_slug2 = "",
$page = 0
) {
$includeChildren = false;
$breadcrumbs = [];
if (!empty($category_slug2)) {
if (is_numeric($category_slug2)) {
$includeChildren = true;
$page = $category_slug2;
$categories = $helper->getCategoriesBySlug($category_slug1);
$category = $categories[0];
$breadcrumbs[] = [
"title" => $category->getTitle(),
"href" => "/category/{$category->getSlug()}",
];
}
else {
// $page = $page;
$categories_sub = $helper->getCategoriesBySlug($category_slug1);
$categories = $helper->getCategoriesBySlug($category_slug2);
$category_sub = $categories_sub[0];
$category = $categories[0];
$breadcrumbs[] = [
"title" => $category_sub->getTitle(),
"href" => "/category/{$category_sub->getSlug()}",
];
$breadcrumbs[] = [
"title" => $category->getTitle(),
"href" => "/category/{$category_sub->getSlug()}/{$category->getSlug()}",
];
}
}
else {
$categories = $helper->getCategoriesBySlug($category_slug1);
$category = $categories[0];
$breadcrumbs[] = [
"title" => $category->getTitle(),
"href" => "/category/{$category->getSlug()}",
];
}
if (empty($page)) {
$page = 1;
}
// always including children ...
$includeChildren = true;
$length = 10;
//$posts = $content_helper->getPostsByCategory($category, $length, $page, "", $includeChildren);
//$total = $content_helper->countPostsByCategory($category, $includeChildren);
$posts = $content_helper->getPostsByCategories($categories, $length, $page, "", $includeChildren);
$total = $content_helper->countPostsByCategories($categories, $includeChildren);
$root = array ("/category");
$root[] = $category_slug1;
if (!empty($category_slug2) && !is_numeric($category_slug2)) {
$root[] = $category_slug2;
}
//$content_helper->addImpressions($request, $posts);
return $this->defaultRender("content/post.html.twig", [
"category" => $category,
"posts" => $posts,
"total" => $total,
"length" => $length,
"page" => $page,
// set custom meta elements
"meta" => [
"breadcrumbs" => $breadcrumbs,
"root" => implode("/", $root),
]
]);
}
}