<?php
namespace App\Controller;
use App\Services\CheckwebsitesettingService;
use App\Services\GeneralSendMailService;
use MultilingualBundle\Service\DocumentLookupService;
use Pimcore\Controller\FrontendController;
use Pimcore\Model\DataObject;
use Pimcore\Translation\Translator;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\Routing\Annotation\Route;
use FtpClient\FtpClient;
class ContentController extends BaseController
{
protected $checkwebsitesettingService;
protected $inotherlang;
public function __construct(CheckwebsitesettingService $checkwebsitesettingService, DocumentLookupService $inotherlang){
$this->checkwebsitesettingService = $checkwebsitesettingService;
$this->inotherlang = $inotherlang;
}
/**
* @Template
* @param Request $request
* @return array
*/
public function defaultAction(Request $request)
{
// check if Type is page, snippet, email
// if($request->get('type') == 'snippet' || $request->get('type') == 'email'){
// // Change controller
// /** @var \Pimcore\Model\Document $document */
// $document = $this->document;
//
// $document->save();
// }
// $documentInfo = $this->document;
//
// print_r($documentInfo->getProperty('language'));
// print_r($documentInfo);
// die();
return [];
}
/**
* @param Request $request
*
* @return Response
*/
public function homepageAction(Request $request)
{
$currentLanguage = $request->attributes->get('_locale');
// Load Groups
$groupList = new DataObject\ProductGroup\Listing();
$groupList->setOrderKey(['orderList', 'oms']);
$groupList->setOrder('asc');
$groupList->setCondition("visible = :visible", ["visible" => "1"]); // Only visible on website
// only show required groups
$groupListGroups = [];
/** @var \Pimcore\Model\DataObject\ProductGroup $group */
foreach($groupList as $group){
$dependencies = $group->getDependencies();
$requiredBy = $dependencies->getRequiredBy();
if(!$requiredBy){
$groupListGroups[] = $group;
}
}
// Load Promotion Articles
$productList = new DataObject\ProductArticle\Listing();
$productList->setCondition("promotion = :promotion", ["promotion" => '1']);
// Load News
if ($this->checkwebsitesettingService->check("news_document", "document")) {
$getNewsPage = \Pimcore\Model\WebsiteSetting::getByName("news_document");
$getNewsConfig = $getNewsPage->getData();
$newsPage = $this->inotherlang->getLocalizedDocument($getNewsConfig, $currentLanguage);
}
if($newsPage){
$requestPage = 0;
$requestArticles = 3;
$news = [];
$getchildNewsDocs = $newsPage->getChildren();
if($getchildNewsDocs){
foreach ($getchildNewsDocs as $getchildNewsDoc){
if($getchildNewsDoc->getEditable('publicationDate') != ''){
$childTimeStamp = $getchildNewsDoc->getEditable('publicationDate')->getData()->timestamp;
}
$news[$childTimeStamp.'-'.$getchildNewsDoc->getId()] = $getchildNewsDoc;
}
}
krsort($news);
$news = array_slice($news, $requestPage, $requestArticles);
}
// Load Over-ons
if ($this->checkwebsitesettingService->check("overons_document", "document")) {
$getOverOnsPage = \Pimcore\Model\WebsiteSetting::getByName("overons_document");
$getOverOnsPageConfig = $getOverOnsPage->getData();
$overOnsPage = $this->inotherlang->getLocalizedDocument($getOverOnsPageConfig, $currentLanguage);
}
if($overOnsPage){
if($overOnsPage->hasChildren()) {
$getchildOverOnsDocs = $overOnsPage->getChildren();
}
}
return $this->render('content/homepage.html.twig',[
"productsGroups" => $groupListGroups,
"overons" => $getchildOverOnsDocs,
"productPromotion" => $productList,
"news" => $news
]);
}
}