Newer
Older
<?php
/**
* This file contains QUI\TemplateCologne\Utils
*/
namespace QUI\TemplateCologne;
use QUI;
/**
* Class Utils
*/
class Utils
{
/**
* Get user avatar. If no avatar available return false.
*
* @param $User QUI\Interfaces\Users\User

Michael Danielczok
committed
* @return QUI\Projects\Media\Image|false
* @throws QUI\Exception
*
*/
public static function getAvatar($User)
{
if (!$User instanceof QUI\Interfaces\Users\User) {
throw new QUI\Exception([
QUI::getLocale()->get(
'quiqqer/template-cologne',
'exception.user.required'
)
]);
}
$result = QUI::getEvents()->fireEvent('userGetAvatar', [$User]);
foreach ($result as $Entry) {
if ($Entry instanceof QUI\Interfaces\Projects\Media\File) {
return $Entry;
}
}
$avatar = $User->getAttribute('avatar');
if (!QUI\Projects\Media\Utils::isMediaUrl($avatar)) {
return false;
}
try {
return QUI\Projects\Media\Utils::getImageByUrl($avatar);
} catch (QUI\Exception $Exception) {
}
return false;
}

Michael Danielczok
committed
/**

Michael Danielczok
committed
* Returns config. If a cache exists, it will be returned.
*

Michael Danielczok
committed
* @param $params
* @return array|bool|object|string
* @throws QUI\Exception
*/
public static function getConfig($params)
{
/** @var $Site \QUI\Projects\Site */
$Site = $params['Site'];

Michael Danielczok
committed
try {
return QUI\Cache\Manager::get(
'quiqqer/templateCologne/' . $Site->getId()

Michael Danielczok
committed
);
} catch (QUI\Exception $Exception) {
}

Michael Danielczok
committed
$config = [];
/* @var $Project QUI\Projects\Project */
/* @var $Template QUI\Template() */
/* @var $Template QUI\Template() */

Michael Danielczok
committed
$Project = $params['Project'];
$Template = $params['Template'];
/**
* no header?
* no breadcrumb?
* Body Class
*
* own site type
*/
$header = 'hide';
$pageTitle = 'breadcrumb'; // where to show page title: in header, in breadcrumb or both?

Michael Danielczok
committed
$showBreadcrumb = false;
$siteType = 'no-sidebar';
switch ($Template->getLayoutType()) {
case 'layout/startPage':
$header = $Project->getConfig('templateCologne.settings.headerStartPage');
$pageTitle = $Project->getConfig('templateCologne.settings.pageTitleStartPage');

Michael Danielczok
committed
$showBreadcrumb = $Project->getConfig('templateCologne.settings.showBreadcrumbStartPage');
$siteType = 'layout-start-page';

Michael Danielczok
committed
break;
case 'layout/noSidebar':
$header = $Project->getConfig('templateCologne.settings.headerNoSidebar');
$pageTitle = $Project->getConfig('templateCologne.settings.pageTitleNoSidebar');

Michael Danielczok
committed
$showBreadcrumb = $Project->getConfig('templateCologne.settings.showBreadcrumbNoSidebar');
$siteType = 'layout-no-sidebar';
break;
case 'layout/noSidebarThin':
$header = $Project->getConfig('templateCologne.settings.headerNoSidebarThin');
$pageTitle = $Project->getConfig('templateCologne.settings.pageTitleNoSidebarThin');
$showBreadcrumb = $Project->getConfig('templateCologne.settings.showBreadcrumbNoSidebarThin');
$siteType = 'layout-no-sidebar';

Michael Danielczok
committed
break;
case 'layout/rightSidebar':
$header = $Project->getConfig('templateCologne.settings.headerRightSidebar');
$pageTitle = $Project->getConfig('templateCologne.settings.pageTitleRightSidebar');

Michael Danielczok
committed
$showBreadcrumb = $Project->getConfig('templateCologne.settings.showBreadcrumbRightSidebar');
$siteType = 'layout-right-sidebar';

Michael Danielczok
committed
break;
case 'layout/leftSidebar':
$header = $Project->getConfig('templateCologne.settings.headerLeftSidebar');
$pageTitle = $Project->getConfig('templateCologne.settings.pageTitleLeftSidebar');

Michael Danielczok
committed
$showBreadcrumb = $Project->getConfig('templateCologne.settings.showBreadcrumbLeftSidebar');
$siteType = 'layout-left-sidebar';

Michael Danielczok
committed
break;
}

Michael Danielczok
committed
/* site own show header */
switch ($Site->getAttribute('templateCologne.header')) {
case 'afterNav':
case 'beforeContent':

Michael Danielczok
committed
case 'hide':
$header = $Site->getAttribute('templateCologne.header');

Michael Danielczok
committed
}

Michael Danielczok
committed
// basket style
if ($Project->getConfig('templateCologne.settings.basketStyle')) {
$basketStyle = $Project->getConfig('templateCologne.settings.basketStyle');
}

Michael Danielczok
committed
// basket open
$basketOpen = 2;

Michael Danielczok
committed
switch ($Project->getConfig('templateCologne.settings.basketOpen')) {
case '0':
case '1':
case '2':
$basketOpen = $Project->getConfig('templateCologne.settings.basketOpen');

Michael Danielczok
committed
}

Michael Danielczok
committed
$settingsCSS = include 'settings.css.php';
/**
* Categories Menu
*/
$showCategoryMenu = false;
if ($Project->getConfig('templateCologne.settings.showCategoryMenu')) {
$showCategoryMenu = $Project->getConfig('templateCologne.settings.showCategoryMenu');
}
if ($showCategoryMenu) {
$CategoriesMenu = new QUI\TemplateCologne\Controls\Menu\Categories([
'showDescFor' => $Project->getConfig('templateCologne.settings.showCategoryShortFor')
]);
$config['categoriesMenu'] = QUI\ControlUtils::parse($CategoriesMenu);
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
// predefined footer
$config += self::getPredefinedFooter($Project);
$config += [
'header' => $header,
'pageTitle' => $pageTitle,
'showBreadcrumb' => $showBreadcrumb,
'settingsCSS' => '<style>' . $settingsCSS . '</style>',
'typeClass' => 'type-' . str_replace(['/', ':'], '-', $Site->getAttribute('type')),
'siteType' => $siteType,
'basketStyle' => $basketStyle,
'basketOpen' => $basketOpen,
'showCategoryMenu' => $showCategoryMenu
];
// set cache
QUI\Cache\Manager::set(
'quiqqer/templateCologne/' . $Site->getId(),
$config
);
return $config;
}
private static function getPredefinedFooter($Project)
{
$lang = $Project->getLang();
* Predefined footer: short text
*/
$shortText = false;
if ($Project->getConfig('templateCologne.settings.predefinedFooter.shortText')) {
$shortText = [];
$titles = json_decode($Project->getConfig(
'templateCologne.settings.predefinedFooter.shortText.title'
), true);
$title = false;
if (isset($titles[$lang])) {
$title = $titles[$lang];
}
$shortText['title'] = $title;
}
/**
* Predefined footer: url list
*/
$urlList = false;
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
if ($Project->getConfig('templateCologne.settings.predefinedFooter.urlList')) {
$urlList = [];
$titles = json_decode($Project->getConfig(
'templateCologne.settings.predefinedFooter.urlList.title'
), true);
$title = false;
if (isset($titles[$lang])) {
$title = $titles[$lang];
}
$siteIds = $Project->getConfig('templateCologne.settings.predefinedFooter.urlList.sites');
$sites = [];
if ($siteIds) {
$sites = QUI\Projects\Site\Utils::getSitesByInputList($Project, $siteIds, [
'where' => [
'active' => 1
],
'limit' => 10,
'order' => $Project->getConfig('templateCologne.settings.predefinedFooter.urlList.sites.order')
]);
}
$sitesData = [];
foreach ($sites as $Site) {
$sitesData[] = [
'title' => $Site->getAttribute('title'),
'url' => $Site->getUrlRewritten()
];
}
$urlList['title'] = $title;
$urlList['sites'] = $sitesData;
$urlList['productSearch'] = false;
$urlList['legalNotes'] = false;
$urlList['privacyPolicy'] = false;
$urlList['generalTermsAndConditions'] = false;
if ($Project->getConfig('templateCologne.settings.predefinedFooter.urlList.showStandardSites')) {
/** productSearch */
$productSearch = $Project->getSites([
'where' => [
'type' => [
'type' => 'IN',
'value' => 'quiqqer/products:types/search'
]
],
'limit' => 1
]);
if (count($productSearch)) {
$urlList['productSearch'] = [
'title' => $productSearch[0]->getAttribute('title'),
'url' => $productSearch[0]->getUrlRewritten()
];
}
/** legal notes (Impressum) */
$legalNotes = $Project->getSites([
'where' => [
'type' => [
'type' => 'IN',
'value' => 'quiqqer/sitetypes:types/legalnotes'
]
],
'limit' => 1
]);
if (count($legalNotes)) {
$urlList['legalNotes'] = [
'title' => $legalNotes[0]->getAttribute('title'),
'url' => $legalNotes[0]->getUrlRewritten()
];
}
/** privacy policy (Datenschutzerklärung) */
$privacyPolicy = $Project->getSites([
'where' => [
'type' => [
'type' => 'IN',
'value' => 'quiqqer/sitetypes:types/privacypolicy'
]
],
'limit' => 1
]);
if (count($privacyPolicy)) {
$urlList['privacyPolicy'] = [
'title' => $privacyPolicy[0]->getAttribute('title'),
'url' => $privacyPolicy[0]->getUrlRewritten()
];
}
/** general terms and conditinos (AGB) */
$generalTermsAndConditions = $Project->getSites([
'where' => [
'type' => [
'type' => 'IN',
'value' => 'quiqqer/sitetypes:types/generalTermsAndConditions'
]
],
'limit' => 1
]);
if (count($generalTermsAndConditions)) {
$urlList['generalTermsAndConditions'] = [
'title' => $generalTermsAndConditions[0]->getAttribute('title'),
'url' => $generalTermsAndConditions[0]->getUrlRewritten()
];
}
}
}
/**
* Featured products
*/
$featuredProducts = false;
if ($Project->getConfig('templateCologne.settings.predefinedFooter.featuredProducts')) {
$featuredProducts['Control'] = new QUI\ProductBricks\Controls\FeaturedProducts([
'featured1.categoryId' => $Project->getConfig(
'templateCologne.settings.predefinedFooter.featuredProducts.category'
)
]);
$titles = json_decode($Project->getConfig(
'templateCologne.settings.predefinedFooter.featuredProducts.title'
), true);
$title = false;
if (isset($titles[$lang])) {
$title = $titles[$lang];
}
$featuredProducts['title'] = $title;
}
/**
* Predefined footer: Payments Control

Michael Danielczok
committed
if ($Project->getConfig('templateCologne.settings.predefinedFooter.payments')) {
$paymentsData['PaymentsControl'] = new \QUI\TemplateCologne\Controls\Payments([

Michael Danielczok
committed
'template' => $Project->getConfig('templateCologne.settings.predefinedFooter.payments.layout')
]);
$titles = json_decode($Project->getConfig(

Michael Danielczok
committed
'templateCologne.settings.predefinedFooter.payments.title'
), true);
$title = false;
if (isset($titles[$lang])) {
$title = $titles[$lang];
}
$paymentsData['title'] = $title;
}
'urlList' => $urlList,
'featuredProducts' => $featuredProducts,
'paymentsData' => $paymentsData

Michael Danielczok
committed
];
}