Files
kupshop/admin/main.php
2025-08-02 16:30:27 +02:00

165 lines
4.6 KiB
PHP

<?php
use KupShop\AdminBundle\AdminList\FiltersStorage;
use KupShop\KupShopBundle\Util\Compat\ServiceContainer;
$main_class = 'Main';
class Main extends Frame
{
use FiltersStorage;
protected $template = 'main.tpl';
protected $menu = [];
public function get_vars()
{
$vars = parent::get_vars();
$dbcfg = Settings::getDefault();
$pageVars['title'] = 'Admin | '.$dbcfg['index_title'];
$menuCls = new AdminBarMenu();
$menu = $menuCls->getMenu();
$pageVars['menu'] = $this->getMenu($menu);
$pageVars['object'] = $this;
$pageVars['left'] = $this->decodeUrl(getVal('l', null, ''));
$pageVars['right'] = $this->decodeUrl(getVal('r', null, 'launch.php?s=board.php'));
global $cfg;
$links = [];
$domain = substr($cfg['Addr']['print'], 0, -1);
$domain = substr($domain, strrpos($domain, '.', -5) + 1);
$links['email'] = 'https://mail.wpj.cz/';
$links['mailadmin'] = "http://mailadmin.{$domain}";
if ($domain == 'kupshop.cz') {
$domain = substr($cfg['Addr']['print'], 0, -1);
}
$hash = md5(date('Y-m-d').'wpj_wpj');
$hash = base64_encode(json_encode(['url' => $domain, 'hash' => $hash]));
$links['klient'] = "http://klient.wpj.cz/list/{$hash}";
$vars['links'] = $links;
$pageVars['filters'] = $this->getFiltersFavorite();
$vars['body'] = $pageVars;
return $vars;
}
public function decodeUrl($url)
{
if (substr($url, 0, 2) != 's:') {
return $url;
}
$url = str_replace(':', '=', $url);
$url = str_replace('|', '&', $url);
return "launch.php?{$url}";
}
public function encodeUrl($url)
{
if ($url === null) {
return '';
}
if (substr($url, 0, 2) != 's=') {
return $url;
}
$url = str_replace('=', ':', $url);
$url = str_replace('&', '|', $url);
return $url;
}
public function getMenu(&$menu, $level = 0)
{
foreach ($menu as &$item) {
if (!is_array($item)) {
continue;
}
if (isset($item['submenu'])) {
$item['level'] = $level;
$this->getMenu($item['submenu'], $level + 1);
$visible = UserRights::hasRights($item['name']);
if (!$visible) {
$item['visible'] = false;
continue;
}
$item['superadmin'] = UserRights::isOnlySuperadmin($item['name']);
// Pokud je nejaka polozka v submenu prvku true, zobrazuji prvek
foreach ($item['submenu'] as $submenu_item) {
$submenu_item['superadmin'] = UserRights::isOnlySuperadmin($submenu_item['name'] ?? null);
if (isset($submenu_item['visible'])) {
if ($submenu_item['visible'] == true) {
$item['visible'] = true;
break;
}
}
}
} else {
$visible = UserRights::hasRights($item['name']);
if ($visible) {
$menu['visible'] = true;
$item['visible'] = true;
} else {
$item['visible'] = false;
}
$item['superadmin'] = UserRights::isOnlySuperadmin($item['name']);
}
}
return $menu;
}
private function checkDomain()
{
if (isBeta()) {
return;
}
$fallback = true;
$request = \KupShop\KupShopBundle\Util\Compat\SymfonyBridge::getCurrentRequest();
$domainContext = ServiceContainer::getService(\KupShop\KupShopBundle\Context\DomainContext::class);
// https is missing so add it and redirect
if ($request->getScheme() != 'https') {
redirect('https://'.$request->getHost().$request->getRequestUri());
}
if (array_search($request->getHost(), $domainContext->getSupported()) !== false) {
return;
}
$wwwHost = 'www.'.$request->getHost();
if (array_search($wwwHost, $domainContext->getSupported()) !== false) {
// www is missing so add it and redirect
$url = 'https://'.$wwwHost.$request->getRequestUri();
$fallback = false;
redirect($url);
}
// fallback
if ($fallback) {
$url = "https://{$domainContext->getActiveId()}{$request->getRequestUri()}";
redirect($url);
}
}
}